GAP WP2.1: Inline-VA-Verweise + Verify-Fix (F17)

Umsetzung aus dem GAP-Report Runde 2 (Umsetzungsanleitung), Etappe 1.

- WP2.1 (F3–F9, F19, N4, N7, N9): In 14 IMPL-Blöcken den zuständigen VA-Verweis
  inline ergänzt ({{LINK:VA-xx}}) — R02 1.3.1/1.3.2→VA-08, R03 1.4.1→VA-09,
  R04 1.6.1/1.6.2→VA-01 & 1.6.3→VA-02, R05 2.1.3→VA-12, R08 4.1.1/4.1.3/4.2.1→VA-03,
  R09 5.1.2→VA-07, R10 5.2.1→VA-04 & 5.2.6→VA-06, R13 6.1.2/6.1.3→VA-10.
  Damit verweisen alle 23 Controls mit zuständiger VA inline (zuvor 8).
- WP2.3/F17: _verify.py lief nicht (KeyError 'implementation' — Feld existiert nicht
  in mapping.json). Gefixt via .get(): Umsetzungstext wird zur Laufzeit über
  impl_anchor aus der .md aufgelöst (Variante 2 der Anleitung).

Verifiziert: _verify.py Render-Probleme 0, Mapping beidseitig sauber, keine neuen
Befunde (einzig vorbestehendes IMPL 3.1.3 = WP1.3/E2, ISB-Scope). Nicht-destruktiver
Re-Import in den Demo-Mandanten (8 Dokumente aktualisiert, Status/Anforderungen
erhalten); Browser: R02 rendert „(siehe VA-08)" als klickbaren Deep-Link.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 20:19:05 +02:00
co-authored by Claude Opus 4.8
parent 742277f4b4
commit 522508aaf3
10 changed files with 341 additions and 16 deletions
+3 -1
View File
@@ -43,7 +43,9 @@ for fp in glob.glob(os.path.join(BASE,"richtlinien/*.md")):
for m in re.findall(r"<!-- (REQ|IMPL) ([0-9.\-A-Za-z]+) -->",open(fp,encoding="utf-8").read()): fa.add(m[0]+" "+m[1])
ma=set()
for a in d["anforderungen"]: ma.add(a["req_anchor"]); ma.add(a["impl_anchor"])
leftover_hb=any("{{" in a["requirement"] or "{{" in a["implementation"] for a in d["anforderungen"])
# F17: mapping.json enthaelt kein 'implementation'-Feld; der Umsetzungstext wird zur
# Laufzeit ueber impl_anchor (Control-IMPL-Block) aus der jeweiligen .md aufgeloest.
leftover_hb=any("{{" in a["requirement"] or "{{" in a.get("implementation","") for a in d["anforderungen"])
print("Render-Probleme:",problems)
print("mapping-Anker ohne Datei:",sorted(ma-fa))
print("Datei-Anker ohne mapping:",sorted(fa-ma))