- CLAUDE.md header/description now match actual project (TalkTime), not starter-kit template - Retro-documented already-built MVP features as PROJ-1..PROJ-10 in features/INDEX.md - Corrected PROJ-9: Matrix User Provisioning, room sync and reconciliation were already implemented, not just health-check - Added PROJ-11 requirements spec for basic chat (Matrix Client-Server API, team scope, text-only MVP) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0143yYvjesjHndBACoweyK67
2.6 KiB
2.6 KiB
PROJ-9: Synapse-Integration (Health Check, User Provisioning, Raum-Sync)
Status: Deployed Created: 2026-09-11 (retro-dokumentiert, gebaut in 5e6ee2c; Korrektur 2026-09-11 — Provisioning/Sync war bereits gebaut, initiale Retro-Doku war unvollständig)
Summary
Vollständige Synapse-Anbindung: Health-Check, automatische Matrix-User-Provisionierung bei Einladungsannahme, automatische Team-Raum-Anlage/-Zuordnung, Mitgliederstatus-Sync über Outbox-Queue mit Retry+Backoff, periodische Reconciliation. Admin-Token bleibt serverseitig (PRD-Constraint).
Built
backend/src/services/synapse.ts— Synapse Admin/Client-API-Wrapper (healthCheck,createUser,getUser,deactivateUser,reactivateUser,createRoom,addUserToRoom,removeUserFromRoom)backend/src/services/sync-worker.ts— Outbox-Queue (sync_jobs-Tabelle) mit vier Jobtypen (provision_matrix_user,create_team_room,join_team_room,leave_team_room), exponentiellem Backoff (1min→30min, max. 5 Versuche), 30s-Poll-Worker,runReconciliation()alle 10min (vergleicht lokalen Mitgliederstatus gegen Synapse, loggt Abweichungen in Audit-Log statt automatisch zu korrigieren)backend/src/routes/synapse.ts—GET /api/synapse/health- Trigger-Stellen:
backend/src/routes/invitations.ts(Provisionierung bei Einladungsannahme),backend/src/routes/teams.ts(Raum-Anlage + Join/Leave bei Team-Zuordnung) - Schema:
members.matrixUserId,chat_rooms(matrixRoomId, scope, department/team-Zuordnung),sync_jobs(status/attempts/lastError)
Acceptance Criteria
- Backend kann Synapse-Erreichbarkeit prüfen
- Synapse Admin Token verlässt Backend nie
- Neues Mitglied bekommt bei Einladungsannahme automatisch Matrix-Account (Localpart-Kollision wird durch Suffix aufgelöst)
- Neue Mannschaft bekommt automatisch Matrix-Raum
- Mitglied wird bei Team-Zuordnung automatisch in Raum aufgenommen/entfernt
- Fehlgeschlagene Sync-Jobs werden mit Backoff wiederholt (max. 5 Versuche, dann
failed) - Reconciliation-Job erkennt Abweichungen zwischen TalkTime- und Synapse-Status
Open Items
- Grundlegender Chat (eigene Oberfläche via Matrix Client-Server API, Nachrichten senden/lesen) — noch nicht gebaut, siehe PROJ-11
- Manueller Resync-Trigger in der UI bei erkannten Reconciliation-Abweichungen (PRD P1) fehlt noch
- Abteilungs-weite Räume (
chat_rooms.scope) — Schema unterstützt es, Provisionierungs-Logik existiert bisher nur fürteam-Scope
Notes
Korrigierte Retro-Spec. Ursprüngliche Version dieser Datei unterschätzte den Baufortschritt — Provisioning/Raum-Sync/Reconciliation liefen bereits produktiv.