Commit Graph
14 Commits
Author SHA1 Message Date
MartinandClaude Opus 4.8 7afd7f6acf Iteration Teil A: Dark-Theme (zentrale Token-Umstellung)
Referenz: docs/ISMS-Abhaengigkeitskarte-GEFIM.html

- Zentrale Theme-Definition in globals.css auf das dunkle GEFIM-Muster:
  Flächen (--bg-0/1, --panel, --elevated), Text (--txt/--muted),
  Marke (aufgehelltes Violett #7d6fd6), Status (--ok/warn/risk/info),
  Verläufe (--grad-primary/--grad-critical), Glow-Ambiente auf dem Body,
  Fokus-Ring, Punktraster-Utility
- Alle shadcn-Tokens (background/card/popover/primary/muted/border/
  sidebar …) auf Dunkelwerte gemappt; neue semantische Flächen-Tokens
  (panel/elevated/surface-soft/band/band-text/band-brd) ergänzt
- Hardcodierte Hex projektweit auf Tokens umgestellt: Panel-/Band-
  Flächen, Status-Pillen (Alpha-Tints), Tags, Trend-/Prioritätsfarben,
  Kanban, Login-Fehler, Topbar, Filter-Tabs
- GEFIM-Logo als weißes Negativ auf Dunkel (Sidebar + Login)
- Ampel-Segmentbalken/Score-Skala bleiben als semantische Statusfarben

Dark ist Default; Light-Mode später über dieselben Token-Namen möglich.
Verifiziert: Dashboard, Risiko-Detail, Asset-Bearbeiten dunkel & lesbar.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 08:55:35 +02:00
MartinandClaude Opus 4.8 1b13af46db Feinschliff Risiko/Bewertung: Ampelfarben, Titel, Skala, Legende
- Detail-Popups einheitlich: Name/Bezeichner steht immer im Titel
  (Risiko "R-001 · <Name>", Maßnahme "M-001 · <Name>", Prozess <Name>)
- Bewertungsbalken (Schutzbedarf/Schadenshöhe) + Score-Pillen als
  einheitliche Ampel: 1 grün, 2 gelb, 3 orange, 4 rot; Risiko-Pillen
  folgen exakt der Heatmap-Skala (medium = gelb statt blau, elevated =
  orange) — Restrisiko-Pille jetzt korrekt gelb
- Risiko-Detailkarte: Farbskala von der Mitte nach oben verschoben;
  alle Detail-/Bearbeiten-Popups etwas breiter (max-w-4xl)
- CiaGauge-Beschriftung vereinheitlicht: VER/INT/VFB erscheint einmal
  pro Tabelle als Spaltenüberschrift (Asset-Liste + Popup-Tabellen),
  keine Labels mehr pro Zeile; Standalone-Gauges in Detailkarten
  behalten die Labels

Verifiziert: alle vier Ampelfarben im DOM, Restrisiko-Pille gelb,
Legende in Tabellenköpfen, Titel mit Name.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 20:28:48 +02:00
MartinandClaude Opus 4.8 430aaab024 GUI-Bausteine: CiaGauge, SegmentedRating, Prozess-Dialog aufgeräumt
Referenz: docs/ISMS-GUI-Verbesserungen-GEFIM.html

- CiaGauge: Schutzbedarf/Schadenshöhe als 4er-Segmentbalken (Farblogik
  1–4) statt Zahlen-Quadrate — einheitlich in allen Tabellen/Karten;
  in Detailkarten mit VER/INT/VFB-Labels
- SegmentedRating: 1–4 anklickbare, farbige Stufen-Buttons (Client-
  Komponente mit Hidden-Input + HTML-form-Association) für Asset-
  Schutzbedarf und BIA-Schadenshöhe statt Dropdowns
- Prozess-Bearbeiten aufgeräumt: Sprungnavigation (Grunddaten/Assets/
  BIA), genau EIN Speichern-Button (Stammdaten + BIA in einer Action
  saveProcessAll, Felder per form-Attribut verbunden), Löschen ins
  ⋯-Überlaufmenü verschoben; Asset-Zuordnung als entfernbare Chips mit
  Segmentbalken

Verifiziert: kombiniertes Speichern (Name + BIA-Schadenshöhe in einem
Vorgang, Kritikalität neu berechnet), SegmentedRating-Wert korrekt
übernommen, ⋯-Menü mit Löschen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 20:00:39 +02:00
MartinandClaude Opus 4.8 5fb4b3cbf4 Risiko-Bearbeiten: Maßnahmen in voller Breite, Brutto→Rest visualisiert
- Maßnahmen-Bereich unterhalb der Stammdaten über die komplette Breite
  (Tabelle mit ID, Titel, editierbarer Minderung je Dimension)
- Zwei Aktionen als aufklappbare Buttons: "Maßnahme hinzufügen"
  (bestehende auswählen) und "Neue Maßnahme erstellen" (legt an und
  verknüpft direkt mit dem Risiko, Rest-Risiko wird neu berechnet)
- Risiko-Detail: Brutto→Rest als zwei farbig abgesetzte Karten (rot/
  orange) mit Pfeil, großer Score-Zahl und Level-Chip; darunter
  Farbskala (grün→rot) mit Markern für Brutto und Rest (Referenz:
  docs/ISMS-GUI-Verbesserungen-GEFIM.html)

Verifiziert: neue Maßnahme -0,75 → Rest 1,75 × 4 = 7; Skala/Karten
korrekt gerendert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 19:46:37 +02:00
MartinandClaude Fable 5 dfe27de51f Risiko-Minderung dezimal + editierbar, Bedrohungs-/Schwachstellen-Kataloge
- Minderung je Maßnahmen-Verknüpfung jetzt dezimal (0,00–4,00 statt
  ganzer Punkte): mehrere Maßnahmen summieren sich, bis eine Dimension
  einen vollen Punkt sinkt; Rest-Risiko entsprechend dezimal (z. B.
  2,5 × 4 = 10), gerundet auf 2 Nachkommastellen, lokalisierte Anzeige
- Minderung bereits verknüpfter Maßnahmen direkt im Risiko-Bearbeiten
  editierbar (Eingabefelder je Verknüpfung + Speichern-Button);
  Komma-Eingaben werden akzeptiert
- Globale Kataloge Bedrohungen/Schwachstellen (je 15 Einträge, Seed):
  Eingabefelder schlagen per datalist Katalogwerte vor, Freitext bleibt
  weiterhin möglich (SPEC §5 Threat/Vulnerability)
- Schema: reduction*/residual* auf Float, Threat-/Vulnerability-Modelle

Verifiziert: −1 + −0,5 Minderung → Rest 2,5 × 4 = 10 · Erhöht (DB +
Anzeige), Neuberechnung auch beim Entfernen einer Verknüpfung.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 16:55:27 +02:00
MartinandClaude Fable 5 668e587881 Iteration 4 (Maßnahmen) + Risikoanalyse nachgeschärft
Risikoanalyse:
- Risiko direkt aus dem Asset-Popup erstellbar ("+ Risiko erstellen"
  → Anlege-Popup mit vorverknüpftem Asset)
- Brutto-/Rest-Risiko detailliert: Eintrittswahrscheinlichkeit und
  Schaden als beschriftete Werte (X × Y = Score-Pille)
- Rest-Risiko wird NICHT mehr manuell erfasst, sondern automatisch aus
  den verknüpften Maßnahmen berechnet (Minderung je Dimension, Summe,
  Untergrenze 1; src/server/risk-calc.ts); Neuberechnung bei jeder
  Änderung an Bewertung oder Maßnahmen-Verknüpfungen
- Risikoregister unterhalb der Heatmap in voller Breite

Maßnahmen-Modul (SPEC §4.4):
- Measure/RiskMeasure-Schema mit RLS, laufende Nummer (M-001),
  Status/Priorität/Owner/Fälligkeit
- Kanban-Board mit Drag-and-Drop (dnd-kit): Karten zwischen Offen /
  In Umsetzung / Erledigt verschieben aktualisiert den Status per
  Server-Action inkl. Audit-Log; überfällige Karten rot markiert
- Maßnahmen-Popups (Detail read-only / Bearbeiten / Anlegen) nach
  App-Muster; Detail zeigt verknüpfte Risiken mit Minderung
- Im Risiko-Bearbeiten: bestehende Maßnahme verknüpfen ODER neue
  Maßnahme direkt anlegen & verknüpfen (jeweils mit Minderung
  Wahrscheinlichkeit/Schaden); "Notwendige Maßnahmen" im Risiko-Detail
  jetzt echt
- Seed: 4 Beispiel-Maßnahmen, Rest-Risiken daraus berechnet

Verifiziert im Browser: DnD-Statuswechsel (beide Richtungen, Audit-
Einträge), Rest-Risiko-Berechnung (R-001: 4×5=20 → 2×4=8), Risiko-
Anlage aus dem Asset inkl. automatischer Verknüpfung.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 16:07:59 +02:00
MartinandClaude Fable 5 df634e356d Iteration 3: Risikoanalyse + Menü-Trennung + Prozesskategorie
- Risiko-Modul (SPEC §4.2): Risk/RiskAsset-Schema mit RLS, laufende
  Nummer je Mandant (R-001), Brutto-/Rest-Bewertung (5×5), Behandlung,
  Status, Owner- und Prozess-Bezug, n:m betroffene Assets
- /risks im Mockup-Layout: 5×5-Heatmap (Farb-Bänder + R-Chips, Legende,
  Achsen) und Risikoregister mit Score-Pillen, Behandlungs-Tags, Status
- Risiko-Popups nach App-Muster: Read-only-Detail (Bewertungs-Band
  Brutto vs. Rest, betroffene Assets, Maßnahmen-Platzhalter für
  Iteration 4), Bearbeiten im Popup (Bewertung, Assets verknüpfen,
  Löschen), Anlegen; Server-Actions mit Zod, RBAC und Audit-Log
- Menü aufgetrennt: eigene Punkte "Asset-Inventar", "Business Impact
  Analyse" und "Risikoanalyse" (Modul-Tabs entfernt)
- Prozesskategorie (Kernprozess/Managementprozess/Unterstützender
  Prozess): Schema-Feld, Formulare, Listen-Spalte, Popup-Tag
- Asset-Detail-Popup optisch ans Prozess-Popup angeglichen (Stammdaten-
  Karte mit violettem Rand, Abhängigkeiten-Tabelle, Risiken-Band)
- "Zugeordnete Risiken" jetzt echt: im Asset-Popup (verknüpfte Risiken)
  und im Prozess-Popup (direkt + über Assets aggregiert); Dashboard-KPI
  "Offene Risiken" mit echten Zahlen; Seed mit 4 Beispiel-Risiken

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 15:43:25 +02:00
MartinandClaude Fable 5 c5a1f0095b Assets & Prozesse: Detail/Bearbeiten/Anlegen als Popups
- Wiederverwendbares, serverseitig gerendertes Modal (searchParams-
  gesteuert: ?detail= / ?edit= / ?new=1) — Browser-Zurück schließt,
  kein Client-State nötig
- Assets: Read-only-Detail-Popup (Stammdaten, C/I/A, Abhängigkeiten,
  Prozesse, Risiken-Platzhalter), Bearbeiten-Popup (Formular +
  Abhängigkeiten verwalten + Löschen), Anlegen-Popup
- Prozesse: "Bearbeiten" wechselt jetzt innerhalb des Popups in den
  Editiermodus (Stammdaten, Asset-Zuordnung, BIA, Löschen) statt auf
  die alte Detailseite zu springen; Anlegen ebenfalls als Popup
- Server-Actions leiten auf die Popup-URLs zurück (Speichern im
  Bearbeiten-Popup → Detail-Popup; BIA-/Zuordnungs-Änderungen lassen
  das Popup offen); BIA-Formular remountet nach dem Speichern (key)
- Alte Routen (/assets/[id], /assets/new, /processes/[id], …) leiten
  auf die Popup-URLs um

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 14:59:21 +02:00
MartinandClaude Fable 5 9997597663 Assets & BIA optisch 1:1 ans Mockup angeglichen
- Neue Mockup-Bausteine (mockup-ui.tsx): PageHead mit Crumb/Untertitel,
  KPI-Kapseln, C/I/A-Quadrate in Mockup-Farben, Tag-Chips, Owner-Chips
  mit Mini-Avatar ("kein Owner" als rote Pille), Status-/Kritikalitäts-
  Pillen, Pillen-Filter-Tabs
- Asset-Inventar wie im Mockup: Seitenkopf mit Zähler-Untertitel und
  Ghost-Buttons (Excel-Import/Export, deaktiviert bis zur Funktion),
  4 KPI-Kapseln (gesamt, hoher Schutzbedarf, ohne Owner, Lieferanten),
  Typ-Filter als Pillen-Tabs + Filtersuche in der Tabellenkarte,
  Abhängigkeiten-Spalte
- BIA-Seite wie im Mockup: "Kritikalität der Prozesse" mit RTO/RPO/MTD
  und Kritikalitäts-Pillen; Prozess-Detail als schließbares, schreib-
  geschütztes Popup (?detail=id, serverseitig gerendert): primäres Asset
  mit violettem Kartenrand, Sekundär-Tabelle, BIA-Kennzahlen-Band,
  Bearbeiten-Button führt zur Editier-Seite
- Tabellenköpfe uppercase/muted, Zeilen-Hover wie im Mockup; Asset-
  Detail und Prozess-Editier-Seite auf die neuen Bausteine umgestellt

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 14:40:42 +02:00
MartinandClaude Fable 5 0befcc6a2c GUI ans Mockup-Design angepasst (GEFIM-Branding)
- GEFIM-Farbwelt aus dem Mockup als shadcn-Theme: Violett #5d52a3 als
  Primärfarbe, Magenta/Hellblau-Akzente, Ink-Text, #f5f6fa-Hintergrund,
  Verlaufs-Utilities (bg-grad, bg-grad-soft), Karten-Schatten
- Fonts Poppins (Überschriften/Buttons) + Open Sans (Text), self-hosted
  über next/font — kein Google-CDN-Aufruf zur Laufzeit (DSGVO)
- Sidebar mit extrahiertem GEFIM-Logo (public/gefim-logo.png), aktive
  Navigation in Violett wie im Prototyp
- Sticky Topbar mit globaler Suche (leitet vorerst auf die Asset-Suche),
  Nutzer-Info und Verlaufs-Avatar mit Initialen; Logout in die Topbar
- Primär-Buttons mit Verlaufshintergrund, Level-Badges als Pillen in
  Mockup-Farben, Login-Seite im GEFIM-Look
- Dashboard im Mockup-Stil: KPI-Karten (Assets, Prozesse, kritische
  Prozesse, Risiken-Platzhalter) und Letzte-Aktivitäten-Feed aus dem
  echten Audit-Log

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 13:51:11 +02:00
MartinandClaude Fable 5 392bb246cf 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>
2026-07-02 12:35:19 +02:00
MartinandClaude Fable 5 880afed391 Iteration 1: Auth (lokale Accounts), RBAC, RLS-Policies, i18n
- Auth.js v5 mit Credentials-Provider: Argon2id-Verifikation, JWT-Session
  mit Mandanten-Kontext, Rollen und Permissions; Login-/Logout-Flow (deutsch)
- RBAC-Katalog (28 Permissions, 5 Rollen-Blueprints) mit serverseitigem
  requirePermission; Seed legt Demo-Mandant und 4 Demo-Nutzer an
- Route-Gate über Next-16-proxy.ts (UX-Ebene), autoritative Prüfung
  serverseitig via requireSession/requirePermission
- Prisma-Migrationen: init + Row-Level-Security-Policies (zweite
  Verteidigungslinie, Scharfschaltung in Härtungs-Iteration dokumentiert)
- i18n-Gerüst mit next-intl (de aktiv, en vorbereitet), Audit-Log-Helper
- Login/Logout end-to-end im Browser verifiziert; Build/Lint/Typecheck grün

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 12:09:54 +02:00
MartinandClaude Fable 5 87e933b3c0 Projekt-Fundament: Spec, Docker-Stack, Prisma-Basis, Tenant-Guard
- docs/SPEC.md (v1.2: Assets & BIA als ein Modul, Risiko-Detailansicht
  mit Maßnahmen/betroffenen Assets, Risiko-Verknüpfungen in allen
  Detailansichten) + UI-Mockup als Referenz
- Docker-Compose: app, worker, postgres (pgvector), redis, minio, mailhog
- Prisma 7: Fundament-Schema (Tenant, User, RBAC, AuditLog), prisma.config.ts,
  pg-Treiberadapter
- Tenant-Guard (src/server/db.ts): erzwungene Mandanten-Isolation für
  alle tenant-gebundenen Modelle
- AGENTS.md/README mit Projektregeln (Isolation, RBAC, Audit-Log, i18n, Lizenz)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 11:43:37 +02:00
msolarczek 394c05aa08 Initial commit from Create Next App 2026-07-02 11:26:45 +02:00