fix: saveConfig ne sauvegarde plus les IDs dans le YAML

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)
This commit is contained in:
2026-05-24 22:29:59 +02:00
parent 6e9dd738d7
commit c3b6af7d30
2 changed files with 22 additions and 18 deletions
+17 -1
View File
@@ -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');
}
+5 -17
View File
@@ -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