refactor: M2-Call-Pilot – Module call_signaling + voice_channel mit Fassaden (Entscheidung 2)

- CallSignalingService/callSignalingProvider und VoiceChannelService/
  voiceChannelProvider als einzige oeffentliche Schnittstellen
- voip_manager.dart / livekit_call_manager.dart in ihre Module verschoben,
  Logik unangetastet (nur Klassen-Koepfe, @override, Imports, Provider-Namen)
- Alle Konsumenten entkoppelt; Kompositions-Punkt matrix_client.dart als
  dokumentierte Ausnahme. analyze sauber, 29 Tests gruen, Windows-Start ok.
  Call-Klick-/Geraetetest steht aus (PROGRESS.md)
This commit is contained in:
Bernd Steckmeister
2026-07-06 12:42:59 +02:00
parent f64398d3c6
commit 3c7eb9ddca
20 changed files with 383 additions and 53 deletions
+16
View File
@@ -1,5 +1,21 @@
# M2 Modul-Schnitt (Entwurf)
> **STATUS 2026-07-06: Pilot (Schritt 1) UMGESETZT.** Die Module
> `call_signaling` (`lib/features/call_signaling/`: `CallSignalingService`
> + `callSignalingProvider` + Implementierung `voip_manager.dart`) und
> `voice_channel` (`lib/features/voice_channel/`: `VoiceChannelService` +
> `voiceChannelProvider` + Implementierung `livekit_call_manager.dart`)
> existieren; ALLE Konsumenten (Shell, Call-UI, Rooms-Panel, Chat-Header,
> Settings) gehen nur noch über die Provider/Interfaces, kein direkter
> Implementierungs-Import mehr (einzige dokumentierte Ausnahme:
> Kompositions-Punkt `matrix_client.dart`). Bewusste Abweichungen vom
> Entwurf unten (Verhaltensgleichheit vor Schönheit, heiliger Call-Pfad):
> ChangeNotifier statt Streams, Methodennamen wie im Bestand
> (`startCall`/`hangUp` statt `join`/`leave`), `CallSession`/LiveKit-`Room`
> bleiben in den Schnittstellen sichtbar, weil die UI direkt rendert.
> Echter Call-/Voice-Channel-Test steht aus (Gerät bzw. Klick-Test)
> siehe PROGRESS.md 2026-07-06. Schritte 25 unten sind weiter offen.
Stand: 2026-07-03. Reine Schnittstellen-Planung, noch kein Umbau. Grundlage:
Ist-Analyse in `PROGRESS.md` (Eintrag „M2: Ist-Analyse der Architektur
geschrieben"). Leitprinzip (Bernd, `CLAUDE.md`): jedes Modul muss sich in