From 4317df802b05f15206c7c43752089bd5b49cee11 Mon Sep 17 00:00:00 2001 From: patrick Date: Sat, 12 Sep 2026 21:02:08 +0200 Subject: [PATCH] docs(PROJ-14): add technical design for Synapse room overview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit No new TalkTime DB table — reads Synapse's room list directly and cross-references the existing chat_rooms table for team/org attribution. Delete goes straight to Synapse. Status set to In Progress. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_0143yYvjesjHndBACoweyK67 --- features/INDEX.md | 2 +- features/PROJ-14-synapse-raum-uebersicht.md | 36 +++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/features/INDEX.md b/features/INDEX.md index a13a700..973c3a0 100644 --- a/features/INDEX.md +++ b/features/INDEX.md @@ -25,7 +25,7 @@ | PROJ-11 | Chat (Matrix Client-Server API) | Deployed | [PROJ-11-chat.md](PROJ-11-chat.md) | 2026-09-11 | | PROJ-12 | Automatische Löschfrist für ausgetretene Mitglieder (DSGVO) | Planned | [PROJ-12-mitglieder-loeschfrist.md](PROJ-12-mitglieder-loeschfrist.md) | 2026-09-11 | | PROJ-13 | SYSTEM_ADMIN-Rolle | In Review | [PROJ-13-system-admin-rolle.md](PROJ-13-system-admin-rolle.md) | 2026-09-12 | -| PROJ-14 | Synapse Raum-Übersicht (System-Admin) | Planned | [PROJ-14-synapse-raum-uebersicht.md](PROJ-14-synapse-raum-uebersicht.md) | 2026-09-12 | +| PROJ-14 | Synapse Raum-Übersicht (System-Admin) | In Progress | [PROJ-14-synapse-raum-uebersicht.md](PROJ-14-synapse-raum-uebersicht.md) | 2026-09-12 | | PROJ-15 | Media-Cleanup (System-Admin) | Planned | [PROJ-15-media-cleanup.md](PROJ-15-media-cleanup.md) | 2026-09-12 | | PROJ-16 | Federation-Status (System-Admin) | Planned | [PROJ-16-federation-status.md](PROJ-16-federation-status.md) | 2026-09-12 | | PROJ-17 | Nachricht melden (Chat) | Planned | [PROJ-17-nachricht-melden.md](PROJ-17-nachricht-melden.md) | 2026-09-12 | diff --git a/features/PROJ-14-synapse-raum-uebersicht.md b/features/PROJ-14-synapse-raum-uebersicht.md index 60ecc3b..c141d96 100644 --- a/features/PROJ-14-synapse-raum-uebersicht.md +++ b/features/PROJ-14-synapse-raum-uebersicht.md @@ -31,3 +31,39 @@ Liste aller Matrix-Räume auf der angebundenen Synapse-Instanz für SYSTEM_ADMIN ## Non-Goals - Raum-Inhalte einsehen (Nachrichten lesen) — reine Metadaten-Übersicht, kein Nachrichten-Zugriff für Admin - Raum-Einstellungen ändern (Name, History-Visibility) über dieses Panel — nur Übersicht + Löschen + +## Tech Design (Solution Architect) + +### A) Komponenten-Struktur + +``` +System-Admin-Bereich (NEU, "/system-admin") +└── Seite "Räume" + ├── Tabelle: Raumname | Mitglieder | Zuordnung (Verein/Team oder "nicht zugeordnet") | Erstellt am | Aktion + ├── "Weiter"/"Zurück"-Paginierung (analog Mitgliederliste aus PROJ-3) + └── Löschen-Bestätigungsdialog (analog Mitglied-Löschen aus PROJ-3) +``` + +Erste Unterseite im neuen System-Admin-Bereich — die Navigation dorthin (aktuell ein Button, der ins Leere zeigt, siehe PROJ-13) bekommt jetzt ein echtes Ziel. + +### B) Datenfluss (in einfachen Worten) + +Es wird **keine** neue Tabelle in der TalkTime-Datenbank angelegt. Der Ablauf: + +1. Backend fragt Synapse nach der Liste aller Räume (Name, Mitgliederzahl, Erstellungsdatum) — das ist reine Server-Information, die Synapse selbst schon führt. +2. Backend gleicht diese Liste gegen die bereits vorhandene TalkTime-Tabelle ab, in der steht, welcher Matrix-Raum zu welchem Team/Verein gehört (dieselbe Tabelle, die auch der Chat aus PROJ-11 nutzt). +3. Ergebnis: eine kombinierte Liste, die sowohl "reine Synapse-Info" als auch "TalkTime-Zuordnung, falls vorhanden" zeigt. +4. Löschen eines Raums geht direkt an Synapse; falls der Raum in der TalkTime-Zuordnung stand, wird dieser Eintrag ebenfalls entfernt, damit keine verwaiste Zuordnung auf einen nicht mehr existierenden Raum zurückbleibt. + +### C) Tech-Entscheidungen (Begründung) + +- **Keine eigene Datenspeicherung der Raumliste:** Synapse ist bereits die "Quelle der Wahrheit" für Räume — eine Kopie in TalkTime pflegen hieße, zwei Datenstände synchron halten zu müssen, ohne echten Nutzen. +- **Zugriffsschutz über die in PROJ-13 gebaute Prüfung:** Kein neuer Berechtigungsmechanismus, konsistent mit allen anderen System-Admin-Funktionen. +- **Löschen bricht Chat für aktive Teams bewusst nicht automatisch ab:** Ein Löschen-Button, der aktive Team-Chats stillschweigend verschont, wäre für einen Admin verwirrend ("warum lässt sich das nicht löschen?"). Stattdessen: löschen ist möglich, aber mit deutlicher Warnung vorher. + +### D) Abhängigkeiten (neue Pakete) + +Keine — nutzt die bestehende Synapse-Anbindung aus PROJ-9/PROJ-11. + +### Offene Voraussetzung +Erfordert PROJ-13 (Berechtigungsprüfung) als Grundlage — bereits umgesetzt.