Six single-responsibility specs covering the synapse-admin feature set the user wants rebuilt into TalkTime: a new SYSTEM_ADMIN role (platform- wide, DB-only for MVP — no UI to grant it), room overview, media cache cleanup (manual trigger only), federation status (mostly a no-op display since federation is disabled), message reporting in chat, and the admin moderation view for those reports. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0143yYvjesjHndBACoweyK67
3.1 KiB
3.1 KiB
PROJ-15: Media-Cleanup (System-Admin)
Status: Planned Created: 2026-09-12
Summary
Manuelles Aufräumen alter/verwaister Medien-Dateien auf Synapse — nachgebaut aus synapse-admin's Media-Verwaltung. Nutzt Synapse Admin API (POST /_synapse/admin/v1/purge_media_cache, DELETE /_synapse/admin/v1/media/<server>/<media_id>). Bewusst nur manueller Trigger (kein Zeitplan), da PROJ-11 aktuell keine Medien-Anhänge unterstützt (P2 laut PRD) — betrifft also v.a. Avatare/Profilbilder und den Media-Cache.
Dependencies
User Stories
- Als SYSTEM_ADMIN will ich sehen, wie viel Speicherplatz der Synapse-Media-Store aktuell belegt, um einschätzen zu können ob Aufräumen nötig ist.
- Als SYSTEM_ADMIN will ich alten, ungenutzten Media-Cache (remote/federierte Medien, die lokal zwischengespeichert wurden) gezielt löschen können.
- Als SYSTEM_ADMIN will ich vor dem Löschen sehen, wie viel dadurch freigegeben würde, bevor ich bestätige.
Acceptance Criteria
GET /api/system-admin/media/summary— SYSTEM_ADMIN-only, liefert Media-Store-Größe (falls über Synapse Admin API auslesbar) oder Dateisystem-Statistik vom Synapse-HostPOST /api/system-admin/media/purge-cache— Parameter:before(Datum, Standard-Vorschlag: 30 Tage), löstpurge_media_cachebei Synapse aus- Frontend zeigt vor dem Klick auf "Aufräumen" eine Vorschau/Warnung mit dem gewählten Stichtag, kein automatischer Sofort-Trigger ohne Bestätigungsdialog
- Ergebnis der Aufräum-Aktion (Anzahl gelöschter Medien, falls von Synapse zurückgegeben) wird angezeigt
- Aktion wird im Audit-Log vermerkt (
action: "system.media_purged", keinorganizationId-Bezug möglich — neues optionales Feld oder System-weite Audit-Kategorie klären in Architektur)
Edge Cases
- Synapse Admin API für Media-Größe nicht verfügbar/nicht dokumentiert für die genutzte Synapse-Version → Fallback: nur Purge-Aktion anbieten, keine Vorab-Größenanzeige, das im UI klar kommunizieren statt falsche Zahlen zu zeigen
purge_media_cachebetrifft nur den Remote-Media-Cache (von föderierten Servern zwischengespeicherte Bilder), nicht lokal hochgeladene Medien — da Federation komplett deaktiviert ist (siehe PRD-Constraint), ist der praktische Nutzen dieser Aktion aktuell gering. Muss im UI-Text ehrlich kommuniziert werden, damit kein falscher Eindruck entsteht ("räumt alles auf")- Sehr kurzes
before-Datum (z.B. heute) → Bestätigungsdialog warnt zusätzlich bei ungewöhnlich aggressiven Werten
Non-Goals
- Löschen einzelner, konkreter Medien-Dateien nach ID (synapse-admin kann das; hier zunächst nur der pauschale Cache-Purge, da für TalkTime ohne Medien-Feature kaum relevant)
- Automatischer/geplanter Cleanup — nur manueller Trigger im MVP
Notes
Praktischer Nutzen ist aktuell begrenzt, solange PROJ-11 keine Medien-Anhänge hat und Federation aus ist — Feature ist v.a. Vorbereitung für P2 (Medien-Anhänge laut PRD-Roadmap). Architektur-Skill sollte das gegenüber dem Nutzer transparent machen.