Files
talktime/features/PROJ-15-media-cleanup.md
T
patrickandClaude Sonnet 5 bbf7a5c80d docs: spec System-Admin-Panel (PROJ-13..PROJ-18), rebuilt from synapse-admin
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
2026-09-12 20:49:36 +02:00

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

  • Requires: PROJ-13 (SYSTEM_ADMIN-Rolle)
  • Requires: PROJ-9 (Synapse-Integration)

User Stories

  1. 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.
  2. Als SYSTEM_ADMIN will ich alten, ungenutzten Media-Cache (remote/federierte Medien, die lokal zwischengespeichert wurden) gezielt löschen können.
  3. 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-Host
  • POST /api/system-admin/media/purge-cache — Parameter: before (Datum, Standard-Vorschlag: 30 Tage), löst purge_media_cache bei 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", kein organizationId-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_cache betrifft 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.