Iteration 2: Assets & BIA als gemeinsames Modul

- App-Shell mit Seitennavigation (alle 12 Module, kommende ausgegraut),
  shadcn/ui-Setup (Base-UI-Variante) mit hellem Theme
- Asset-Inventar: filterbare Liste (Suche/Typ/Status), Anlegen/Bearbeiten/
  Löschen, Detailansicht mit Schutzbedarf (C/I/A 1–4), Abhängigkeiten
  (beide Richtungen, hinzufügen/entfernen), zugeordneten Prozessen mit
  Primär-/Sekundär-Rolle und Platzhalter für zugeordnete Risiken
- Prozesse & BIA: Liste mit Kritikalität/RTO/MTD, Prozess-Detail mit
  Asset-Zuordnung nach Rolle (primär/sekundär), BIA-Formular
  (RTO/RPO/MTD, Schadenshöhe je Schutzziel, Kritikalität nach Max-Prinzip)
- Server-Actions mit Zod-Validierung, requirePermission und Audit-Log
  für jede schreibende Aktion; Tenant-Guard um upsert-Injektion erweitert
- Prisma: Asset, AssetRelation, Process, ProcessAsset, BiaEntry
  inkl. RLS-Policies; Seed mit Beispiel-Assets, Prozessen und BIA
- Im Browser verifiziert: CRUD, Relationen, BIA-Speichern, Audit-Einträge

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Martin
2026-07-02 12:35:19 +02:00
co-authored by Claude Fable 5
parent 880afed391
commit 392bb246cf
41 changed files with 6085 additions and 149 deletions
+121 -1
View File
@@ -1,7 +1,34 @@
{
"common": {
"appName": "ISMS-Tool",
"logout": "Abmelden"
"logout": "Abmelden",
"create": "Anlegen",
"save": "Speichern",
"cancel": "Abbrechen",
"edit": "Bearbeiten",
"delete": "Löschen",
"back": "Zurück",
"search": "Suchen…",
"actions": "Aktionen",
"add": "Hinzufügen",
"remove": "Entfernen",
"none": "—",
"comingSoon": "Bald verfügbar",
"confirmDelete": "Wirklich löschen?"
},
"nav": {
"dashboard": "Dashboard",
"assetsBia": "Assets & BIA",
"risks": "Risikoanalyse",
"soa": "SoA & Controls",
"measures": "Maßnahmen",
"incidents": "Vorfälle",
"policies": "Richtlinien",
"chat": "ISMS-Chat",
"dependencies": "Abhängigkeiten",
"evidence": "Nachweise",
"suppliers": "Lieferanten",
"review": "Management-Review"
},
"login": {
"title": "Anmelden",
@@ -19,5 +46,98 @@
"tenant": "Mandant",
"roles": "Rollen",
"placeholder": "Die Modul-Dashboards (Risiken, Aufgaben, SoA-Erfüllungsgrad) folgen in den nächsten Iterationen."
},
"assets": {
"title": "Assets & BIA",
"tabAssets": "Assets",
"tabProcesses": "Prozesse & BIA",
"newAsset": "Neues Asset",
"name": "Name",
"description": "Beschreibung",
"type": "Typ",
"status": "Status",
"owner": "Owner",
"location": "Standort",
"tags": "Tags (kommagetrennt)",
"protection": "Schutzbedarf",
"confidentiality": "Vertraulichkeit",
"integrity": "Integrität",
"availability": "Verfügbarkeit",
"allTypes": "Alle Typen",
"allStatus": "Alle Status",
"empty": "Keine Assets gefunden.",
"detailTitle": "Asset-Details",
"relations": "Abhängigkeiten",
"relationHint": "Dieses Asset hängt ab von:",
"relationReverseHint": "Von diesem Asset hängen ab:",
"addRelation": "Abhängigkeit hinzufügen",
"processes": "Zugeordnete Prozesse",
"linkedRisks": "Zugeordnete Risiken",
"linkedRisksPlaceholder": "Risiken werden mit dem Risiko-Modul (Iteration 3) verknüpft und erscheinen dann hier.",
"editTitle": "Asset bearbeiten",
"createTitle": "Asset anlegen",
"deleted": "Asset gelöscht",
"inheritedNote": "Vererbter Schutzbedarf aus Prozessen (Max-Prinzip) wird bei der BIA berücksichtigt."
},
"assetType": {
"INFORMATION": "Information",
"SYSTEM": "System",
"APPLICATION": "Anwendung",
"LOCATION": "Standort",
"SUPPLIER": "Lieferant",
"PERSON": "Person/Rolle",
"DATA": "Datenkategorie"
},
"assetStatus": {
"ACTIVE": "Aktiv",
"PLANNED": "Geplant",
"RETIRED": "Ausgemustert"
},
"processes": {
"newProcess": "Neuer Prozess",
"name": "Name",
"description": "Beschreibung",
"owner": "Owner",
"criticality": "Kritikalität",
"assets": "Zugeordnete Assets",
"empty": "Keine Prozesse gefunden.",
"detailTitle": "Prozess-Details",
"createTitle": "Prozess anlegen",
"editTitle": "Prozess bearbeiten",
"primaryAssets": "Primäre Assets",
"primaryHint": "Das im Prozess erzeugte/verantwortete Ergebnis-Asset.",
"secondaryAssets": "Sekundäre Assets",
"secondaryHint": "Unterstützende Assets (Systeme, Anwendungen, Personen, Lieferanten).",
"assignAsset": "Asset zuordnen",
"role": "Rolle",
"linkedRisks": "Zugeordnete Risiken",
"linkedRisksPlaceholder": "Risiken werden mit dem Risiko-Modul (Iteration 3) verknüpft und erscheinen dann hier.",
"bia": "Business Impact Analyse",
"rto": "RTO (Stunden)",
"rpo": "RPO (Stunden)",
"mtd": "MTD/MTPD (Stunden)",
"rtoLong": "Recovery Time Objective — max. Zeit bis zur Wiederherstellung",
"rpoLong": "Recovery Point Objective — max. tolerierbarer Datenverlust",
"mtdLong": "Maximum Tolerable Downtime — max. tolerierbarer Ausfall",
"impact": "Schadenshöhe je Schutzziel (14)",
"notes": "Anmerkungen / Schadensszenarien",
"biaSaved": "BIA gespeichert",
"noBia": "Noch keine BIA erfasst."
},
"processRole": {
"PRIMARY": "Primär",
"SECONDARY": "Sekundär"
},
"criticality": {
"1": "Niedrig",
"2": "Mittel",
"3": "Hoch",
"4": "Sehr hoch"
},
"protectionLevel": {
"1": "Normal",
"2": "Erhöht",
"3": "Hoch",
"4": "Sehr hoch"
}
}