Master-Prompt-Ergebnis vom 2026-09-05 (Epic-Übersicht, vollständige Kachel- Liste, Abhängigkeitsgraph, MVP-Abgrenzung, Details zu den ersten 20 Kacheln) aus dem Chat in Dateien überführt statt nur im Gespräch zu bleiben. 00_index.md: Decisions Required, Epic-Übersicht, vollständige Kachel-Tabelle, Abhängigkeitsgraph, MVP-Abgrenzung. 01_foundation.md / 02_identity.md / 03_digital_file.md: Detailspezifikation je Kachel (Ziel/Beschreibung/Datenmodell/Rechte/Akzeptanzkriterien/Tests/DoD), jeweils mit Abgleich gegen den aktuellen MABEA-Ist-Stand. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KC8HYvv6UkCVYheYiTw9DD
6.2 KiB
6.2 KiB
Epic 01 — Foundation
Details zu FOUND-001 … FOUND-006. Übersichtstabelle mit allen FOUND-Kacheln (auch die noch
nicht detaillierten) siehe 00_index.md.
FOUND-001 — Repo & Projektstruktur
- Modul: Foundation
- Ziel: Einheitliche, nachvollziehbare Code-Basis, auf der alle weiteren Kacheln aufbauen.
- Beschreibung: Verzeichnisstruktur Backend/Frontend, Namenskonventionen, Formatierungs-/Lint-Regeln, Basis-README.
- Benutzerwert: Keiner direkt (Entwickler-Infrastruktur), aber Voraussetzung für alles.
- Abhängigkeiten: keine
- Datenmodell: keins
- Backend: Grundgerüst (App-Einstiegspunkt, Router-Registrierung leer)
- Frontend: Grundgerüst (Build-Tooling, leere Startseite)
- Mobile: noch nicht relevant
- QR-Code: nein
- Seriennummer: nein
- Inventarnummer: nein
- Akte: nein
- Rechte: keine (noch kein Auth)
- Audit: nein
- Akzeptanzkriterien: Repo klont sich, Backend startet, Frontend baut, Lint läuft ohne Fehler.
- Tests: Smoke-Test „App startet"
- DoD: lauffähiges leeres Grundgerüst, dokumentiert im README.
FOUND-002 — DB-Grundgerüst + Migrationen
- Ziel: Versionierte, reproduzierbare Datenbankstruktur.
- Beschreibung: PostgreSQL-Anbindung, Migrationstool (z.B. Alembic), erste leere Migration.
- Benutzerwert: indirekt (Datenintegrität/Nachvollziehbarkeit für alle Module).
- Abhängigkeiten: FOUND-001
- Datenmodell: Migrations-Metatabelle (vom Tool selbst verwaltet)
- Backend: DB-Session-Handling, Connection-Pool
- Frontend: —
- Mobile: —
- QR-Code / Seriennummer / Inventarnummer / Akte: nein
- Rechte: keine
- Audit: nein
- Akzeptanzkriterien: Migration lässt sich anwenden und zurückrollen, DB-Verbindung aus App funktioniert.
- Tests: Migrations-Up/Down-Test gegen Testdatenbank.
- DoD: Migration reproduzierbar auf frischer DB, CI führt sie aus.
FOUND-003 — Authentication
- Ziel: Sichere Anmeldung als Basis für jede weitere Rechteprüfung.
- Beschreibung: Login mit Passwort (gehashed), Token-Ausgabe (JWT o.ä.), Token-Validierung.
- Benutzerwert: Jeder Nutzer kann sich anmelden — Grundvoraussetzung für alles Weitere.
- Abhängigkeiten: FOUND-002
- Datenmodell:
benutzer(login, passwort_hash, aktiv) - Backend: POST /auth/login, Token-Decode-Dependency
- Frontend: Login-Seite
- Mobile: gleicher Login-Flow
- QR-Code/Seriennummer/Inventarnummer: nein
- Akte: nein
- Rechte: noch keine Rollen, nur „angemeldet/nicht angemeldet"
- Audit: Login-Fehlversuche protokollieren (Brute-Force-Erkennung, optional P2)
- Akzeptanzkriterien: korrektes Passwort → Token; falsches Passwort → 401; abgelaufener Token → 401.
- Tests: Login erfolgreich/fehlgeschlagen, Token-Ablauf.
- DoD: Login funktioniert clientseitig und serverseitig, Passwort niemals im Klartext gespeichert/geloggt.
FOUND-004 — Authorization-Grundgerüst
- Ziel: Zentrale Stelle, an der jeder Endpunkt Rechte prüfen kann.
- Beschreibung: Rollen-Modell (fest, kein granulares System — das kommt erst in Personnel/Readiness-Phase oder eigener späterer Kachel), Dependency/Middleware für Rollenprüfung.
- Benutzerwert: Schützt sensible Aktionen (z.B. nur Materialwart darf Material anlegen).
- Abhängigkeiten: FOUND-003
- Datenmodell:
rolle,benutzer_rolle - Backend: require_roles()-Dependency
- Frontend: Rollenbasiertes Ein-/Ausblenden von UI-Elementen
- Mobile: gleiches Prinzip
- Akte/QR/SN/Inv: nein
- Rechte: dies IST das Rechte-Grundgerüst
- Audit: Rollenänderungen protokollieren
- Akzeptanzkriterien: Endpunkt ohne passende Rolle → 403; mit passender Rolle → 200.
- Tests: je Rolle ein Zugriffstest.
- DoD: mind. 2 Rollen (z.B. Administrator, Helfer) funktionieren nachweisbar unterschiedlich.
FOUND-005 — API-Grundgerüst
- Ziel: Konsistente API für alle künftigen Module.
- Beschreibung: Einheitliches Fehlerformat, Versionierungs-Präfix (
/api/v1), OpenAPI-Dokumentation automatisch. - Benutzerwert: indirekt — konsistente, vorhersehbare API für Frontend/Mobile/ Drittsysteme.
- Abhängigkeiten: FOUND-002
- Datenmodell: keins
- Backend: Fehler-Handler, Health-Endpoint
- Frontend: generischer API-Client mit einheitlicher Fehlerbehandlung
- Mobile: gleicher Client
- Akte/QR/SN/Inv: nein
- Rechte: keine (Health-Endpoint öffentlich)
- Audit: nein
- Akzeptanzkriterien:
/healthantwortet 200, ein absichtlich provozierter Fehler liefert einheitliches JSON-Fehlerformat. - Tests: Health-Check-Test, Fehlerformat-Test.
- DoD: OpenAPI-Doku ist unter
/docserreichbar.
FOUND-006 — Logging & Audit-Grundgerüst
- Ziel: Jede sicherheits-/fachlich relevante Aktion muss später nachvollziehbar sein.
- Beschreibung: Zentrale Audit-Tabelle (append-only), generische Log-Funktion (wer/wann/was/alter Wert/neuer Wert).
- Benutzerwert: Nachvollziehbarkeit für Zugführer/Administrator, Vertrauenswürdigkeit des Systems.
- Abhängigkeiten: FOUND-002
- Datenmodell:
audit_log(id, zeitpunkt, benutzer_id, ereignistyp, entitaet_typ, entitaet_id, alter_wert, neuer_wert) - Backend: log()-Service-Funktion, von anderen Modulen aufrufbar
- Frontend: Änderungslog-Ansicht (rudimentär, volle UI evtl. später eigene Kachel)
- Mobile: —
- Akte/QR/SN/Inv: nein direkt, aber Grundlage für FILE-005/007
- Rechte: Lesen nur privilegierte Rollen
- Audit: ist selbst das Audit-System
- Akzeptanzkriterien: eine Testaktion erzeugt einen Log-Eintrag mit korrektem Vorher/Nachher-Wert.
- Tests: Log-Eintrag wird bei simulierter Aktion erzeugt und ist abrufbar.
- DoD: mind. ein reales Ereignis (z.B. Login) wird bereits geloggt.
MABEA-Ist-Stand-Abgleich: FOUND-001…006 sind in MABEA vollständig vorhanden
(FastAPI-Grundgerüst, Alembic-Migrationen, JWT-Login, require_roles()-Dependency,
einheitliches Fehlerformat + /docs, historie-Tabelle als Audit-Log). FOUND-007…012
(Konfiguration/Docker/CI/Backup/Tests/Doku) ebenfalls größtenteils vorhanden
(app_settings.py, .env, Gitea-CI ci.yml, pytest, README/DEVLOG) — kein Nachholbedarf
in diesem Epic.