Rollenstruktur und englische Fachbegriffe festgelegt
Der Discord-Server hat drei Sorten Rollen, die Dokumente kannten nur eine: Zugehörigkeit (AfiS, Personalabteilung) als Türsteher, Rangrollen für die Rechte, Zugangsrollen für die Freigabestufe. Das bestehende RoleMapping trägt das fast, es fehlt nur der Türsteher. Die beiden Felder dafür kommen mit Phase 1, die Struktur ist in docs/13-entscheidungen.md festgehalten. Die Freigabestufen heißen jetzt wie die Zugangsrollen: Unclassified, Restricted Access, Confidential Access, Sensitive Access, Critical Operations, Executive Oversight. Fachbegriffe der Domäne bleiben englisch, auch in einer deutschen Oberfläche. Die Bezeichnungen sind damit Daten in ClearanceLevelConfig, nicht mehr Oberflächentext in lib/i18n/de.ts: sie sind im Adminbereich änderbar, und was der Leiter ändern kann, gehört nicht in eine Übersetzungsdatei. StampMark bekommt den Namen hereingereicht. Vier neue Tests prüfen den Zustand, den der Seed herstellt, gegen die Datenbank statt gegen eine Konstante im Code. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
dfc47f91c4
commit
dbca57cedf
@@ -55,6 +55,53 @@ nicht über die Volltextsuche. **Phase 7 muss das auflösen**, sinnvollerweise
|
||||
Vektorspalten je Stufe. Diese Entscheidung ist bewusst konservativ getroffen, weil ein Leck
|
||||
hier schwerer zu bemerken ist als eine Lücke.
|
||||
|
||||
## Rollen auf dem Discord
|
||||
|
||||
Die Dokumente kennen genau eine Sorte Rolle: `RoleMapping` trägt Stufe **und** Rechte, die
|
||||
Auflösung nimmt das Maximum der Stufen und die Vereinigung der Rechte. Auf dem Server gibt es
|
||||
aber drei Sorten mit verschiedener Bedeutung:
|
||||
|
||||
| Sorte | Beispiele | Wirkung |
|
||||
|---|---|---|
|
||||
| Zugehörigkeit | `AfiS`, `Personalabteilung` | Türsteher. Ohne eine davon kein Login |
|
||||
| Rang | `Director of internal Security` … `Probationary Agent` | Bestimmt die **Rechte** |
|
||||
| Zugang | `Executive Oversight` … `Restricted Access` | Bestimmt die **Freigabestufe** |
|
||||
|
||||
Das bestehende Modell trägt das fast: Zugangsrollen bekommen eine Stufe und keine Rechte,
|
||||
Rangrollen Rechte und Stufe 0, Maximum und Vereinigung ergeben das Richtige. Was fehlt, ist
|
||||
der Türsteher. `RoleMapping` bekommt deshalb in Phase 1 zwei Felder:
|
||||
|
||||
- `grantsMembership` — diese Rolle berechtigt zur Anmeldung
|
||||
- `category` — nur für die Gruppierung im Adminbereich, damit dort drei Abschnitte stehen
|
||||
statt einer Liste aus achtzehn Rollen
|
||||
|
||||
Anmeldeprüfung damit: Mitglied der Guild **und** (eine Rolle mit `grantsMembership` **oder**
|
||||
in `BOOTSTRAP_ADMIN_IDS`). Notfall-Admins umgehen die AfiS-Rolle, müssen aber Mitglied der
|
||||
Guild bleiben — sonst bliebe die Hintertür auch nach einem Rauswurf offen.
|
||||
|
||||
Rangrollen bekommen im Auslieferungszustand **keine** Rechte. Das Rollen-Mapping entsteht
|
||||
vollständig im Adminbereich, nichts wird nach Rollennamen geraten.
|
||||
|
||||
### Umzug vom Test- auf den echten Server
|
||||
|
||||
Entwickelt wird gegen einen Test-Discord mit nachgebauten Rollen. Rollen-IDs sind pro Server
|
||||
eindeutig, beim Umzug ist das gesamte `RoleMapping` deshalb wertlos. Das ist kein Fehler,
|
||||
sondern eine Anforderung an Phase 1: die Adminseite muss ein neu erkanntes `DISCORD_GUILD_ID`
|
||||
verkraften und beim Übernehmen anbieten, die alte Zuordnung **anhand der Rollennamen**
|
||||
vorzuschlagen. `RoleMapping.label` wird dafür ohnehin aus Discord gespiegelt.
|
||||
|
||||
## Sprache der Fachbegriffe
|
||||
|
||||
`CLAUDE.md` verlangt eine deutsche Oberfläche. Die Begriffe der Domäne heißen auf dem Discord
|
||||
aber englisch, und genau so werden sie im Rollenspiel gesprochen. Sie bleiben deshalb
|
||||
englisch: Rollennamen, Dienstgrade und die Bezeichnungen der Freigabestufen.
|
||||
|
||||
Aus `docs/01-produkt.md` wird damit `Sensitive Access` statt `Geheim`. Die Bezeichnungen sind
|
||||
Daten in `ClearanceLevelConfig`, nicht Oberflächentexte in `lib/i18n/de.ts` — sie sind im
|
||||
Adminbereich änderbar, und ein Text, den der Leiter ändern kann, gehört nicht in eine
|
||||
Übersetzungsdatei. `lib/i18n/de.ts` behält nur das Gerüst („Freigabestufe", „Geschwärzt,
|
||||
ab Stufe 4 sichtbar").
|
||||
|
||||
## Prisma 7
|
||||
|
||||
Die Dokumente nennen nur „Prisma + PostgreSQL 16". Eingesetzt wird Prisma 7, die
|
||||
|
||||
Reference in New Issue
Block a user