Register-Konsolidierung: 4 Register in Fachmodule überführt

REG-EXT-SERVICES, REG-SW-WHITELIST, REG-CRIT-SERVICES und REG-PROJECTS werden
nicht mehr als generische Register geführt (Dokument + ManagedRegister + Zeilen
werden beim Import entfernt). REG-NET bleibt, reduziert auf ein Referenz-/
Speicherort-Feld (Netzplan extern, Datei-Upload folgt separat).

resolveLink biegt die stillgelegten {{LINK:REG-…}} auf die Module um:
Lieferanten/IT-Services, Lieferanten/Software, Assets/kritische Dienste,
Assets/Projekte. Seed-Texte bleiben unangetastet; _verify.py = OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-24 10:13:06 +02:00
co-authored by Claude Opus 4.8
parent 0806030bd9
commit 150a1d9dae
2 changed files with 25 additions and 11 deletions
+16 -11
View File
@@ -114,20 +114,20 @@ const GENERIC_REGISTERS: {
{ code: "REG-AUDIT-PLAN", title: "Audit-Programm-Register", orderIdx: 907,
description: "Auditprogramm mit Zeitplan, Umfang, geprüften Controls, Prüfern und Ergebnissen (R03 / VA-15).",
columns: [{ key: "zeitplan", label: "Zeitplan" }, { key: "umfang", label: "Umfang" }, { key: "controls", label: "Geprüfte Controls" }, { key: "pruefer", label: "Prüfer" }, { key: "ergebnisse", label: "Ergebnisse" }] },
{ code: "REG-EXT-SERVICES", title: "Register externe IT-/Cloud-/KI-Dienste", orderIdx: 908,
description: "Externe/Cloud-/KI-Dienste mit Schutzbedarf, Datenlokation, Verschlüsselung, Exit und Freigabe (R13/VA-10 + R02/VA-08).",
columns: [{ key: "dienst", label: "Dienst" }, { key: "schutzbedarf", label: "Schutzbedarf" }, { key: "datenlokation", label: "Datenlokation (EU)" }, { key: "verschluesselung", label: "Verschlüsselung" }, { key: "exit", label: "Exit-Strategie" }, { key: "freigabe", label: "Freigabestatus" }, { key: "freigeber", label: "Freigeber" }], supplierLink: true, assetLink: true },
{ code: "REG-SW-WHITELIST", title: "Register Software-Whitelist", orderIdx: 909,
description: "Zugelassene Software mit Version/Patch-Stand, Quelle/Lieferant, Freigabestatus und Review (R02 1.3.4).",
columns: [{ key: "software", label: "Software" }, { key: "version", label: "Version/Patch-Stand" }, { key: "freigabe", label: "Freigabestatus" }, { key: "freigeber", label: "Freigeber" }, { key: "review", label: "Review" }], supplierLink: true, assetLink: true },
{ code: "REG-CRIT-SERVICES", title: "Register kritischer IT-Dienste", orderIdx: 910,
description: "Kritische IT-Dienste mit BIA-Einstufung, RTO/RPO, Abhängigkeiten und Wiederanlaufreihenfolge (R04 5.2.8 / VA-02).",
columns: [{ key: "dienst", label: "Kritischer IT-Dienst" }, { key: "bia", label: "BIA-Einstufung" }, { key: "rto", label: "RTO" }, { key: "rpo", label: "RPO" }, { key: "abhaengigkeiten", label: "Abhängigkeiten" }, { key: "wiederanlauf", label: "Wiederanlaufreihenfolge" }], assetLink: true },
// REG-NET bleibt ein leichtgewichtiges Register: der Netzplan ist ein extern gepflegtes
// Dokument, daher nur Referenz/Speicherort statt Tabelleninhalt (Datei-Upload folgt separat).
{ code: "REG-NET", title: "Netz-/Netzdienste-Register", orderIdx: 911,
description: "Netzplan/Segmentierung, Netzdienste, Zonen und Review-Turnus (R09 5.1.2 / R10 5.2.7 / VA-07).",
columns: [{ key: "bezeichnung", label: "Netzplan/Segment" }, { key: "netzdienst", label: "Netzdienst" }, { key: "zone", label: "Zone" }, { key: "review", label: "Review" }] },
description: "Verweis auf den (extern gepflegten) Netzplan sowie Netzdienste/Zonen und Review-Turnus (R09 5.1.2 / R10 5.2.7 / VA-07).",
columns: [{ key: "netzplan", label: "Netzplan (Speicherort/Referenz)" }, { key: "netzdienst", label: "Netzdienst" }, { key: "zone", label: "Zone" }, { key: "review", label: "Review" }] },
];
// GAP-Konsolidierung: Diese Register wurden in die Fachmodule überführt und werden
// daher stillgelegt (Dokument + ManagedRegister + Zeilen entfernt). Die zugehörigen
// {{LINK:…}} zeigen jetzt auf die Module (siehe resolveLink):
// REG-EXT-SERVICES → Lieferanten/IT-Services · REG-SW-WHITELIST → Lieferanten/Software
// REG-CRIT-SERVICES → Assets (kritische Dienste) · REG-PROJECTS → Assets (Projekte)
const RETIRED_REGISTERS = ["REG-EXT-SERVICES", "REG-SW-WHITELIST", "REG-CRIT-SERVICES", "REG-PROJECTS"];
export async function importManaged(prisma: PrismaClient, tenantId: string) {
// Idempotent: alte Datensätze pro Mandant entfernen
await prisma.handlingRule.deleteMany({ where: { tenantId } });
@@ -171,6 +171,11 @@ export async function importManaged(prisma: PrismaClient, tenantId: string) {
});
}
// Stillgelegte Register entfernen (in Fachmodule überführt). RegisterRow hängt per
// Cascade an ManagedRegister; das Bibliotheks-Dokument wird ebenfalls entfernt.
await prisma.managedRegister.deleteMany({ where: { tenantId, code: { in: RETIRED_REGISTERS } } });
await prisma.policyDocument.deleteMany({ where: { tenantId, code: { in: RETIRED_REGISTERS } } });
// Krypto-Register
for (let i = 0; i < CRYPTO.length; i++) {
const c = CRYPTO[i];
+9
View File
@@ -62,6 +62,15 @@ export function resolveLink(target: string): { href: string; label: string } {
return { href: "/policies?view=coverage", label: "ISA-Mapping-Matrix" };
case "BASELINE":
return { href: "/policies/BASELINE", label: "Technische Sicherheits-Baseline" };
// In Fachmodule überführte Register (GAP-Konsolidierung) — kein eigenes Dokument mehr.
case "REG-EXT-SERVICES":
return { href: "/suppliers?tab=services", label: "IT-Services (Lieferantenmodul)" };
case "REG-SW-WHITELIST":
return { href: "/suppliers?tab=software", label: "Software-Freigaben (Lieferantenmodul)" };
case "REG-CRIT-SERVICES":
return { href: "/assets?view=critical", label: "Kritische IT-Dienste (Assetinventar)" };
case "REG-PROJECTS":
return { href: "/assets?type=PROJECT", label: "Projekte (Assetinventar)" };
default:
return { href: q(code), label: anchor ? `${code} §${anchor}` : code };
}