From c3b6af7d3054d510f1fdc3417b2685f920a70c7e Mon Sep 17 00:00:00 2001 From: Benoit Date: Sun, 24 May 2026 22:29:59 +0200 Subject: [PATCH] fix: saveConfig ne sauvegarde plus les IDs dans le YAML MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problème : les IDs étaient sauvegardés dans config.yaml alors qu'ils doivent être générés dynamiquement. Solution : - saveConfig() nettoie maintenant les IDs avant sauvegarde - Suppression récursive des 'id' pour groupes et canaux - config.yaml restauré sans IDs (format propre) - Les IDs sont uniquement en mémoire après loadConfig() Garantit : - config.yaml reste lisible et maintenable - Pas de conflit d'IDs - Source de vérité = nom du groupe/canal - IDs cohérents et prévisibles (slugify) --- server/api/admin.js | 18 +++++++++++++++++- server/config/config.yaml | 22 +++++----------------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/server/api/admin.js b/server/api/admin.js index c10b84c..bda34c3 100644 --- a/server/api/admin.js +++ b/server/api/admin.js @@ -68,9 +68,25 @@ function loadConfig() { /** * Sauvegarde la configuration dans le fichier YAML + * Ne sauvegarde PAS les IDs (ils sont générés dynamiquement) */ function saveConfig(config) { - const yamlContent = YAML.stringify(config); + // Nettoyer les IDs avant de sauvegarder + const cleanConfig = { + ...config, + groups: config.groups.map(group => { + const { id, ...groupWithoutId } = group; + return { + ...groupWithoutId, + channels: group.channels ? group.channels.map(channel => { + const { id: channelId, ...channelWithoutId } = channel; + return channelWithoutId; + }) : [] + }; + }) + }; + + const yamlContent = YAML.stringify(cleanConfig); writeFileSync(configPath, yamlContent, 'utf8'); } diff --git a/server/config/config.yaml b/server/config/config.yaml index ce29466..5a1f2aa 100644 --- a/server/config/config.yaml +++ b/server/config/config.yaml @@ -1,29 +1,20 @@ # PTT Live - Configuration -# Phase 1: Configuration basique (1 groupe, support multi-canaux) +# Format simplifié : nom du groupe + canaux (les IDs sont générés automatiquement) # Configuration audio globale audio: sampleRate: 48000 frameSize: 20 # ms - - # Qualité Opus configurable - # Voix économique: 32-64 kbps (WiFi limité) - # Voix standard: 96 kbps (défaut) - # Voix HD: 128-192 kbps - # Musique: 256-320 kbps defaultBitrate: 96 # kbps - - # Jitter buffer jitterBufferMs: 40 # Configuration des groupes -# Format simplifié : nom du groupe + canaux groups: - name: "Production" - audioBitrate: 96 # optionnel, sinon utilise defaultBitrate + audioBitrate: 96 channels: - name: "Principal" - audioInput: 0 # Index device CoreAudio/JACK + audioInput: 0 audioOutput: 0 - name: "Backup" audioInput: 1 @@ -36,7 +27,7 @@ groups: audioOutput: 2 - name: "Sonorisation" - audioBitrate: 128 # Qualité supérieure pour les ingénieurs son + audioBitrate: 128 channels: - name: "Principal" audioInput: 3 @@ -49,14 +40,11 @@ groups: server: host: "0.0.0.0" port: 3000 - - # LiveKit livekit: url: "ws://localhost:7880" - # API key/secret dans .env (LIVEKIT_API_KEY, LIVEKIT_API_SECRET) # Logging logging: - level: "debug" # debug, info, warn, error + level: "debug" logLatency: true logAudioStats: true