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:
+17
-1
@@ -68,9 +68,25 @@ function loadConfig() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Sauvegarde la configuration dans le fichier YAML
|
* Sauvegarde la configuration dans le fichier YAML
|
||||||
|
* Ne sauvegarde PAS les IDs (ils sont générés dynamiquement)
|
||||||
*/
|
*/
|
||||||
function saveConfig(config) {
|
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');
|
writeFileSync(configPath, yamlContent, 'utf8');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,20 @@
|
|||||||
# PTT Live - Configuration
|
# 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
|
# Configuration audio globale
|
||||||
audio:
|
audio:
|
||||||
sampleRate: 48000
|
sampleRate: 48000
|
||||||
frameSize: 20 # ms
|
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
|
defaultBitrate: 96 # kbps
|
||||||
|
|
||||||
# Jitter buffer
|
|
||||||
jitterBufferMs: 40
|
jitterBufferMs: 40
|
||||||
|
|
||||||
# Configuration des groupes
|
# Configuration des groupes
|
||||||
# Format simplifié : nom du groupe + canaux
|
|
||||||
groups:
|
groups:
|
||||||
- name: "Production"
|
- name: "Production"
|
||||||
audioBitrate: 96 # optionnel, sinon utilise defaultBitrate
|
audioBitrate: 96
|
||||||
channels:
|
channels:
|
||||||
- name: "Principal"
|
- name: "Principal"
|
||||||
audioInput: 0 # Index device CoreAudio/JACK
|
audioInput: 0
|
||||||
audioOutput: 0
|
audioOutput: 0
|
||||||
- name: "Backup"
|
- name: "Backup"
|
||||||
audioInput: 1
|
audioInput: 1
|
||||||
@@ -36,7 +27,7 @@ groups:
|
|||||||
audioOutput: 2
|
audioOutput: 2
|
||||||
|
|
||||||
- name: "Sonorisation"
|
- name: "Sonorisation"
|
||||||
audioBitrate: 128 # Qualité supérieure pour les ingénieurs son
|
audioBitrate: 128
|
||||||
channels:
|
channels:
|
||||||
- name: "Principal"
|
- name: "Principal"
|
||||||
audioInput: 3
|
audioInput: 3
|
||||||
@@ -49,14 +40,11 @@ groups:
|
|||||||
server:
|
server:
|
||||||
host: "0.0.0.0"
|
host: "0.0.0.0"
|
||||||
port: 3000
|
port: 3000
|
||||||
|
|
||||||
# LiveKit
|
|
||||||
livekit:
|
livekit:
|
||||||
url: "ws://localhost:7880"
|
url: "ws://localhost:7880"
|
||||||
# API key/secret dans .env (LIVEKIT_API_KEY, LIVEKIT_API_SECRET)
|
|
||||||
|
|
||||||
# Logging
|
# Logging
|
||||||
logging:
|
logging:
|
||||||
level: "debug" # debug, info, warn, error
|
level: "debug"
|
||||||
logLatency: true
|
logLatency: true
|
||||||
logAudioStats: true
|
logAudioStats: true
|
||||||
|
|||||||
Reference in New Issue
Block a user