Files
spiele-redaktion/AGENTS.md
Flo Hartmann 83d574d95c Plugin audit-log: Protokolltabelle, öffentliche API und Admin-Ansicht
- Eigene Migration 0001_audit_eintraege (Tabelle audit_eintraege: Akteur,
  Aktion, Objekttyp/-ID, Alt/Neu + Details als JSON, optionale IP, Zeitstempel)
- Öffentliche Plugin-API: await log(actor, action, objekt_typ, objekt_id,
  details, ip_adresse) bzw. log_sync() für synchrone Routen; andere Plugins
  holen die API über request.app.state.registry.get("audit-log")
- Admin-Ansicht /audit-log (nur Admin): Filter nach Benutzer, Aktionstyp und
  Zeitraum, Paginierung (25/Seite), deutsche UI, Alt/Neu-JSON-Darstellung
- Tests: Logging-Funktion (Actor-Varianten, alt/neu-Extraktion), Migration,
  Filter-Querys, Paginierung, Nur-Admin-Zugriff (13 neue Tests)
- Loader-Test angepasst: voll implementierte Plugins tragen keinen
  Platzhalter-Text mehr
- AGENTS.md: Status aktualisiert

Verifiziert: HEAD + diese Änderungen = 58 Tests grün (uv run pytest)
2026-08-21 19:02:50 +00:00

24 lines
1.1 KiB
Markdown

# Spiele-Redaktion
## Ziel
Multi-User-Webanwendung „KI-Assistenz für Spielemagazin-Redaktionen": Neuheitenliste (BGG), Dedup-Prüfungen, Planungsliste, Archivierung, Erinnerungen, Benachrichtigungen (E-Mail/Telegram/In-App), Audit-Log, Export.
## Status
Kern mit Plugin-System/Auth/Migrationen fertig; `audit-log` vollständig
implementiert; `neuheiten`/`benachrichtigung` in Arbeit; übrige Plugins Stubs.
Live-Status: README.md → „Projekt-Fortschritt“.
## Struktur
| Pfad | Inhalt |
|------|--------|
| PROMPT.md | Ursprünglicher Projekt-Prompt (freigegebene Fassung) |
## Konventionen
- Stack: FastAPI + Plugin-Architektur (Entry-Points/Namensraum-Pakete), SQLite→Postgres-fähig, HTMX + Jinja2 + Tailwind + Alpine.js
- Jede Funktion = Plugin mit eigener Migration/Routen/Templates; Kern schlank
- UI: Deutsch. Rollen: Admin/Redakteur vs. Rezensent
- Deployment: Docker/Podman Compose, portabel (Lab → Kundenhardware)
## Für KI-Agenten
Zuerst PROMPT.md lesen — enthält die vollständigen Anforderungen. Plugin-Kontrakt nicht umgehen: keine Feature-Logik im Kern.