+7
−0
+29
−2
+1
−0
apps/api/src/adaptateurs/media.ts
0 → 100644
+229
−0
+87
−0
Loading
Lot L6. C'est le lot qui met à l'épreuve l'argument du §3 : LiveKit n'existe
que dans `adaptateurs/media.ts`, et le remplacer reviendrait à réécrire ce
fichier, pas l'application.
Une brique qui n'apporte aucune interface
Elle transporte des flux et rend des événements ; toute l'UI reste la nôtre.
C'est ce qui permettra un panneau de visioconférence flottant, qui survit à
la navigation, là où une application encapsulée obligerait à quitter l'appel
pour ouvrir un document. Les salles, les présences, le consentement, les
repères et la rétention sont notre état, projeté depuis notre journal — sans
quoi la visioconférence serait une zone d'ombre dans la boîte noire.
Le jeton ne confère jamais le droit d'enregistrer
Il porte la salle, l'identité, et l'administration pour un animateur — mais
`roomRecord` reste faux. Enregistrer passe par l'API, donc par le
consentement et par le journal. Un enregistrement ne peut pas commencer sans
que la salle en soit avertie.
Le consentement est une présence informée
Pas une case cochée : on retient qui était là au démarrage, le témoin
s'allume chez tous par le canal temps réel, et celui qui arrive en cours
d'enregistrement en est averti avant d'entrer. C'est cette liste qui fait foi
trois mois plus tard, pas une signature.
Supprimer efface le fichier, jamais la trace
Le journal conserve qu'un enregistrement a existé, qui l'a effacé et
pourquoi, et distingue la purge à l'échéance de la suppression décidée.
Cette dernière est réservée au directeur de crise et exige un motif
circonstancié. Un enregistrement qui disparaîtrait sans mention ferait douter
de tout le reste.
Le diagnostic explique au lieu de constater
« Impossible de rejoindre » n'aide personne à 23 h. Chaque contrôle dit ce
qui est bloqué et ce qu'il faut demander à qui — jusqu'à la conduite à tenir
quand même le relais sur 443 échoue : basculer sur un partage de connexion, et
le signaler, parce que c'est à vérifier avant la prochaine crise et non
pendant.
Marque-pages raccordés au rembobinage
L'instant est calculé par le serveur depuis le démarrage : le client n'a rien
à mesurer. Rembobiner à une séquence propose l'extrait correspondant (EB-19),
au lieu de faire chercher dans deux heures de vidéo.
Hors périmètre, et dit
Le partage d'écran, le panneau flottant et le repli audio automatique
(EF-802, EF-803, EF-805) vivent dans le navigateur : le serveur les rend
possibles, il ne les fait pas. Marqués comme tels dans le cahier des charges
plutôt que comptés pour acquis.
Composition
Le profil « complet » ajoute le serveur média et son enregistreur, isolé pour
que l'encodage ne dégrade jamais la main courante. Le relais TURN est
configuré et documenté : en production, son port TLS se publie sur 443, seul
chemin depuis un réseau d'entreprise verrouillé.
Vérification
`pnpm verif` passe de 307 à 341 contrôles. La conduite d'une réunion
s'éprouve sans serveur média, parce qu'aucune de ces règles ne lui appartient ;
la fabrication du jeton, elle, est vérifiée sur le vrai fournisseur.
Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com>