#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Genereert alle Mercury-upgrade deliverables (Asbest Golden Standard niveau)."""
import os, sys
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from jvg_build import build_docx, build_xlsx
from kd_kwik_a import A
from kd_kwik_b import B
from f0_kwik import F0
from gs_kwik_a import GA
from gs_kwik_b import GB
from gs_kwik_d import GD
from gs_kwik_c import GC
from va_kwik_a import VA1
from va_kwik_b import VA2
from mx_kwik import MX_ROWS
from au_kwik_a import AUDIT_A
from au_kwik_b import AUDIT_B, AUDIT_V3_EXTRA

BASE = "/root/projects/jg/2026-audit-koole-mercury-003057/deliverables"
DATE = "24-08-2026"

def meta(title, subtitle, footer, sub2=None, refline=None, refline2=None, doctag="JvG CONSULTANCY \u2014 HSEQ"):
    m = {"title": title, "subtitle": subtitle, "footer": footer, "doctag": doctag}
    for k, v in (("sub2", sub2), ("refline", refline), ("refline2", refline2)):
        if v:
            m[k] = v
    return m

# ---------- 1. Kennisdossier ----------
d = build_docx(A + B, meta("KENNISDOSSIER", "Kwik (Mercury) \u2014 Veilige Omgang",
    f"JvG Consultancy \u2014 Kwik Kennisdossier v1.0 \u2014 {DATE} \u2014 Vertrouwelijk",
    sub2="Audit Project: Koole 003.057 / Wintershall Decommissioning",
    refline='Gebaseerd op MSD 003.057 "Safe Handling of Mercury" Rev 1 (12-05-2026)',
    refline2="Documentreferentie: JvG-KD-KWK-2026-002"))
d.save(f"{BASE}/Kwik_Kennisdossier_v1.0.docx")

# ---------- 2. Conformiteitsmatrix (XLSX) ----------
sum_rows = [
    ("COMPLIANCE AUDIT KWIK 003.057 \u2014 SAMENVATTING", ""),
    ("", ""),
    ("Overall Verdict:", "VOLDOENDE MET AFWIJKINGEN"),
    ("", ""),
    ("Risiconiveau", "Aantal"),
    ("ROOD (Kritiek)", "6"),
    ("ORANJE (Substantieel)", "17"),
    ("GROEN (Minor/Conform)", "11"),
    ("Totaal matrixregels", "34"),
    ("", ""),
    ("Herziening vereist v\u00f3\u00f3r uitvoering", "R-01, R-02, R-03"),
    ("Brondocument", "MSD 003.057 Rev 1 (12-05-2026)"),
    ("Auditdatum", DATE),
    ("Auditor", "JvG Consultancy (Tier 3)"),
]
hdr = ["#", "Kader", "Eis / Vereiste", "Bron", "Procedure Ref.", "Status", "Risico", "Toelichting"]
build_xlsx([
    ("Conformiteitsmatrix", hdr, MX_ROWS, [5, 16, 38, 24, 20, 12, 10, 44]),
    ("Samenvatting", ["Kenmerk", "Waarde"], sum_rows, [34, 60]),
], f"{BASE}/Conformiteitsmatrix_Kwik_v1.0.xlsx")

# ---------- 3. Fase0 Proposal ----------
d = build_docx(F0, meta("FASE 0 DELIVERABLE PROPOSAL", "Kwik Compliance Audit \u2014 Koole 003.057",
    f"JvG Consultancy \u2014 Fase 0 Voorstel \u2014 {DATE} \u2014 Vertrouwelijk",
    sub2="Wintershall Decommissioning / Small Piece Removal \u2014 Offshore Noordzee",
    refline="Project: 2026-audit-koole-mercury-003057",
    refline2="Ter besluitvorming: Go / No-Go"))
d.save(f"{BASE}/Fase0_Deliverable_Proposal_Mercury_Audit_003.057.docx")

# ---------- 4. Golden Standard Audit v2.0 ----------
d = build_docx(GA + GB + GD + GC, meta("GOLDEN STANDARD AUDIT", "Kwik \u2014 Koole 003.057",
    f"JvG Consultancy \u2014 Golden Standard Audit Kwik 003.057 v2.0 \u2014 {DATE} \u2014 Vertrouwelijk",
    sub2="Diepgaande toetsing per wetsartikel \u2014 Wintershall Decommissioning",
    refline='Brondocument: MSD 003.057 "Safe Handling of Mercury" Rev 1 (12-05-2026)',
    refline2="Format: Golden Standard Audit Asbest 003.059 v2.0"))
d.save(f"{BASE}/Golden_Standard_Audit_Kwik_003057_v2.0.docx")

# ---------- 5. Tekstueel Verbeteradvies v3.0 ----------
va_intro = [
("h1", "1. Inleiding en Leeswijzer"),
("p", "Dit Tekstueel Verbeteradvies bevat gedetailleerde, direct toepasbare tekstverbetervoorstellen voor de Koole-procedure MSD 003.057 \u2018Safe Handling of Mercury\u2019 (Rev 1, 12-05-2026). Elk voorstel volgt een vast stramien: locatie in het brondocument, beschrijving van de huidige situatie, analyse van de tekortkoming, voorgestelde (her)formulering en onderbouwing. De voorstellen zijn nummered T-01 t/m T-24 en gekoppeld aan de bevindingen R-01 t/m R-12 uit de Compliance Audit v3.0 en de regels uit de Conformiteitsmatrix."),
("t", ["Prioriteit", "Betekenis", "Aantal voorstellen"], [
["P1", "Wettelijk verplicht \u2014 opnemen in spoedrevisie v\u00f3\u00f3r projectuitvoering", "7"],
["P2", "Aanbevolen \u2014 opnemen in eerstvolgende herzieningsronde", "13"],
["P3", "Best practice / documentbeheer", "2"],
["Totaal", "\u2014", "24 (met ca. 48 teksttabellen)"],
]),
("h2", "1.1 Werkwijze"),
("n", "Elk voorstel is herleidbaar naar wetsartikel, AI-blad of norm."),
("n", "Voorgestelde teksten zijn in het Engels (taal van het brondocument), de analyse in het Nederlands."),
("n", "Prioriteiten sluiten aan op de R-nummers van de audit; koppelingen zijn per voorstel vermeld."),
("n", "Na implementatie: doorloop de cross-reference checklist in hoofdstuk 4."),
]
va_items = VA1 + VA2

va = list(va_intro)
va.append(("h1", "2. Voorstellen per Locatie in het Brondocument"))
for (tid, loc, thema, prio, huidige, analyse, kop, tekst, rationale) in va_items:
    va += [
      ("h2", f"{tid} \u2014 {loc}: {thema}"),
      ("t", ["Kenmerk", "Waarde"], [
        ["Voorstel-ID", tid],
        ["Locatie", loc],
        ["Thema", thema],
        ["Prioriteit", prio],
        ["Koppeling audit", "Zie analyse en rationale"],
      ]),
      ("pb", "Huidige situatie: ", huidige),
      ("pb", "Analyse: ", analyse),
      ("pb", "Voorgestelde plaatsing: ", kop + "."),
      ("t", ["Voorgestelde tekst (EN)"], [[tekst]]),
      ("pb", "Onderbouwing: ", rationale),
      ("p", "Status voor de redacteur: " + ("SPOED \u2014 Rev 2 v\u00f3\u00f3r projectuitvoering." if prio == "P1" else "Opnemen in eerstvolgende herzieningsronde.")),
    ]
va += [
("h1", "3. Implementatievolgorde"),
("t", ["Volgorde", "Voorstellen", "Revisie", "Rationale"], [
["1", "T-03, T-05, T-06, T-09, T-10, T-19, T-21", "Rev 2 (spoed)", "CMR-regime + ADR \u2014 wettelijk verplicht (R-01/R-02/R-03)"],
["2", "T-01, T-04, T-07, T-08, T-11, T-12, T-13, T-16, T-23", "Rev 3", "Governance, CLP, RPE en EMVI"],
["3", "T-02, T-14, T-15, T-17, T-18, T-20, T-22", "Rev 3", "Ondersteunende verbeteringen"],
["4", "T-24", "Rev 3", "Documentbeheer"],
]),
("h1", "4. Cross-Reference Checklist na Implementatie"),
("n", "Controleer dat elke R-bevinding uit de audit afgedekt is door minimaal \u00e9\u00e9n T-voorstel."),
("n", "Controleer dat sectienummers en verwijzingen in de herziene tekst consistent zijn (o.a. nieuwe paragrafen 6A/6B)."),
("n", "Controleer dat Annex I-flowchart de registratiestap bevat en Annex II de fit-test-verwijzing."),
("n", "Controleer dat de referentielijst alle nieuw toegevoegde bronnen bevat."),
("n", "Voer een consistente datumnotatie door (DD-MM-YYYY)."),
("n", "Laat de herziene procedure opnieuw toetsen tegen de Conformiteitsmatrix_Kwik_v1.0.xlsx."),
("pi", "Kwik Tekstueel Verbeteradvies v3.0 \u2014 JvG Consultancy \u2014 24-08-2026 \u2014 Vertrouwelijk."),
]
d = build_docx(va, meta("TEKSTUEEL VERBETERADVIES", "Kwik \u2014 Koole 003.057",
    f"JvG Consultancy \u2014 Tekstueel Verbeteradvies v3.0 \u2014 {DATE} \u2014 Vertrouwelijk",
    sub2="Gedetailleerde tekstverbetervoorstellen per sectie van MSD 003.057",
    refline="Koppeling: Compliance Audit v3.0 (R-01 t/m R-12) \u00b7 Conformiteitsmatrix v1.0",
    refline2="Iteratie: v1.0 (audit-notities) \u2192 v2.0 (structuur) \u2192 v3.0 (deze uitgave)"))
d.save(f"{BASE}/Kwik_Tekstueel_Verbeteradvies_v3.0.docx")

# ---------- 6. Compliance Audit v2.0 en v3.0 ----------
d = build_docx(AUDIT_A + AUDIT_B, meta("COMPLIANCE AUDIT", "Kwik \u2014 Koole 003.057",
    f"JvG Consultancy \u2014 Compliance Audit Kwik 003.057 v2.0 \u2014 {DATE} \u2014 Vertrouwelijk",
    sub2="Document-based compliance audit \u2014 diepgaand",
    refline='Brondocument: MSD 003.057 "Safe Handling of Mercury" Rev 1 (12-05-2026)',
    refline2="Iteratie v1.0 \u2192 v2.0 (integrale brontekst)"))
d.save(f"{BASE}/Compliance_Audit_Kwik_003057_v2.0.docx")

d = build_docx(AUDIT_A + AUDIT_B + AUDIT_V3_EXTRA, meta("COMPLIANCE AUDIT", "Kwik \u2014 Koole 003.057",
    f"JvG Consultancy \u2014 Compliance Audit Kwik 003.057 v3.0 \u2014 {DATE} \u2014 Vertrouwelijk",
    sub2="Document-based compliance audit \u2014 diepgaand \u2014 met reviewverwerking en juridische verdieping",
    refline='Brondocument: MSD 003.057 "Safe Handling of Mercury" Rev 1 (12-05-2026)',
    refline2="Iteratie v1.0 \u2192 v2.0 \u2192 v3.0 (Golden Standard-niveau)"))
d.save(f"{BASE}/Compliance_Audit_Kwik_003057_v3.0.docx")

print("Mercury deliverables gegenereerd.")
