feat: support multi-groupes avec sélection dynamique (Phase 2.1)

- Ajout de 3 groupes dans config.yaml : Production, Technique, Sonorisation
- Nouvel endpoint API GET /groups pour lister les groupes disponibles
- Composant GroupSelector.jsx pour changer de groupe pendant la session
- Hook useLiveKit étendu avec fonction switchGroup() pour reconnexion
- Intégration dans App.jsx avec gestion du changement de groupe
- Chaque groupe = 1 room LiveKit distincte
- Qualité audio configurable par groupe (96-128 kbps)
This commit is contained in:
2026-05-23 09:32:51 +02:00
parent c863f045ae
commit 3181c62e57
7 changed files with 338 additions and 1 deletions
+24
View File
@@ -37,6 +37,30 @@ groups:
audioInput: 1
audioOutput: 1
- id: technique
name: "Équipe Technique"
description: "Techniciens, électriciens, machinistes"
audioBitrate: 96
channels:
- id: tech-main
name: "Technique général"
audioInput: 2
audioOutput: 2
- id: sonorisation
name: "Équipe Sonorisation"
description: "Ingénieurs son, retours"
audioBitrate: 128 # Qualité supérieure pour les ingénieurs son
channels:
- id: son-main
name: "Son principal"
audioInput: 3
audioOutput: 3
- id: son-retours
name: "Retours scène"
audioInput: 4
audioOutput: 4
# Configuration serveur
server:
host: "0.0.0.0"
+20
View File
@@ -205,6 +205,25 @@ app.get('/config', (req, res) => {
}
});
/**
* GET /groups
* Retourne la liste des groupes disponibles (simplifié)
*/
app.get('/groups', (req, res) => {
try {
const groups = config.groups.map(g => ({
id: g.id,
name: g.name,
description: g.description
}));
res.json({ groups });
} catch (error) {
log('error', 'Erreur GET /groups:', error);
res.status(500).json({ error: 'Groups unavailable' });
}
});
/**
* POST /token
* Génère un token LiveKit pour un client
@@ -287,6 +306,7 @@ app.get('/', (req, res) => {
phase: 'Phase 1 - MVP',
endpoints: [
'GET /config - Configuration groupes',
'GET /groups - Liste des groupes',
'POST /token - Générer token client',
'GET /health - Health check'
]