Fachdokumente nach docs/, Entscheidungen festgehalten

CLAUDE.md und README.md verweisen auf docs/, die Dateien lagen aber im
Wurzelverzeichnis. Verschoben.

docs/13-entscheidungen.md hält fest, wo die Dokumente sich widersprechen und
wie es aufgelöst wurde. Der wichtigste Punkt: 04-datenmodell.md verlangt eine
Regel, die jedes UPDATE auf CaseEntryVersion verwirft, 05-akten-und-vorlagen.md
verlangt, dass eine Umklassifizierung rückwirkend auf alle Versionen wirkt.
Beides zusammen geht nicht. Aufgelöst über einen Trigger, der die Tabelle
anhängend hält, aber das Anheben von minClearance zulässt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harlekin
2026-09-01 00:00:58 +02:00
co-authored by Claude Opus 5
commit 4446e3f0ac
16 changed files with 1919 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
# Produkt und Domäne
## Kontext
Die AfiS ist im Rollenspiel die interne Ermittlungsbehörde einer SCP-Foundation-Einrichtung.
Sie untersucht Korruption, Dienstvergehen und Sicherheitsvorfälle bei eigenem Personal.
Bisher organisiert sie sich über ein Discord-Forum, was für verknüpfte Akten und abgestufte
Sichtbarkeit nicht taugt.
Das System ersetzt das Forum, nicht Discord selbst. Discord bleibt der Ort für Identität,
Rollen und Benachrichtigungen.
## Nutzergruppen
| Gruppe | Typisches Verhalten | Wichtigste Ansicht |
|---|---|---|
| Ermittler | Legt Fälle an, schreibt Vermerke, lädt Belege hoch | Fallakte, eigene Fälle |
| Abteilungsleiter | Prüft, schließt Fälle ab, vergibt Rechte, exportiert | Dashboard, Rollenverwaltung |
| Beobachter mit niedriger Stufe | Liest mit, kommentiert im Chat | Fallliste, Chat |
| Administrator (du) | Betrieb, Vorlagen, Notfallzugriff | Adminbereich |
Der Abteilungsleiter ist ausdrücklich **nicht technisch**. Alles, was er regelmäßig braucht,
muss über die Oberfläche gehen. Keine Konfigurationsdateien, keine Datenbankeingriffe.
## Glossar
Verbindliche Zuordnung zwischen Fachbegriff und Code-Bezeichner.
| Deutsch (UI) | Code | Bedeutung |
|---|---|---|
| Fallakte | `Case` | Eine Ermittlung |
| Aktenzeichen | `caseNumber` | `AfiS-<Jahr>-<4-stellig>`, z. B. `AfiS-2026-0042` |
| Abschnitt | `CaseSection` | Aus der Vorlage erzeugtes, versioniertes Feld |
| Vermerk / Verlaufseintrag | `CaseEntry` | Chronologischer Eintrag, nur anhängend |
| Verlauf | `timeline` | Die Folge aller `CaseEntry` |
| Vorlage | `CaseTemplate` | Definiert Abschnitte einer Fallart |
| Fallart | `caseType` | Korruptionsverdacht, Dienstvergehen, Sicherheitsvorfall, Routineprüfung |
| Freigabestufe | `clearanceLevel` | 0 bis 5 |
| Klassifizierung | `classification` | Die Stufe eines Objekts |
| Schwärzung | `Redaction` | Für niedrigere Stufen unkenntlicher Bereich |
| Personalakte | `PersonnelFile` | Akte zu einer Person |
| Beteiligter | `CaseParticipant` | Ermittler, Zeuge oder Betroffener eines Falls |
| Aktenchat | `CaseChat` | Informelle Nachrichten zu einer Akte |
| Wiedervorlage | `dueAt` | Termin, zu dem der Fall wieder anzufassen ist |
| Zugriffsprotokoll | `AuditLog` | Wer hat wann was gelesen oder geändert |
## Freigabestufen
| Stufe | Bezeichnung | Existenz für niedrigere Stufen |
|---|---|---|
| 0 | Offen | sichtbar |
| 1 | Intern | sichtbar |
| 2 | Vertraulich | sichtbar, Inhalt gesperrt |
| 3 | Geheim | unsichtbar |
| 4 | Streng geheim | unsichtbar |
| 5 | Leitungssache | unsichtbar |
Die Spalte ganz rechts ist konfigurierbar (`ClearanceLevelConfig.hiddenBelow`), die Werte
oben sind der Auslieferungszustand.
## Nicht im Umfang
- Keine öffentliche Registrierung, kein Passwort-Login, keine E-Mail-Zustellung
- Kein mobiles Nativ-App-Ziel, aber die Weboberfläche muss auf dem Handy gut lesbar sein
- Keine Echtzeit-Zusammenarbeit im selben Textfeld (nur Konflikterkennung)
- Keine Volltextsuche in Anhängen (OCR) in Version 1