#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Genereert de checklists DOCX (CHECKLISTS_V1.0)."""
import sys; sys.path.insert(0, "/root/projects/jg/2026-audit-koole-chromium-vi/working")
from docx_helpers import *
from report_data_rest import PROPOSALS, MATRIX
from docx import Document
from docx.shared import Pt, Cm, RGBColor

OUT = "/root/projects/jg/2026-audit-koole-chromium-vi/deliverables/checklists/003.056_CrVI_Checklists_v1.0.docx"
CB = "\u2610"  # checkbox

doc = Document()
style_base(doc)
sec = doc.sections[0]
sec.top_margin = Cm(2.4); sec.bottom_margin = Cm(2.2)
sec.left_margin = Cm(2.0); sec.right_margin = Cm(2.0)

cover(doc, "WERKCHECKLISTS",
      "Chromium VI Checklists",
      "Herzieningschecklist, juridische compliance checklist en prioriteringsmatrix — Rev A/Rev 1",
      [["Project", "2026-audit-koole-chromium-vi (Wintershall / Koole offshore decommissioning)"],
       ["Doel", "Ondersteuning van de redacteur bij herziening van 003.056 Chromium VI Exposure Control Procedure"],
       ["Basis", "Compliance Audit v1.0 (24-08-2026) — bevindingen B1\u2013B18, voorstellen H1\u2013H12"],
       ["Eigenaar", "QHSE Manager KOO B.V. / redacteur brondocument"],
       ["Datum", "24 augustus 2026"],
       ["Versie / status", "v1.0 — Definitief"],
       ["Classificatie", "Vertrouwelijk"]])

header_footer(doc, "Cr(VI) Checklists — Herziening 003.056", "003.056 Cr(VI) Checklists")

# ================= DEEL 1 =================
h1(doc, "Deel 1 — Herzieningschecklist voor de redacteur (H1\u2013H12)")
body(doc, "Doorloop alle voorstellen bij de eerstvolgende herziening. H1\u2013H5 (P1) zijn wettelijk verplicht en moeten vóór projectuitvoering zijn opgenomen. Vink af en noteer de sectie in het brondocument waar het voorstel is verwerkt.")
rows = []
for pnr, tekst, kader, prio in PROPOSALS:
    rows.append([pnr, prio, tekst, CB, CB, CB])
make_table(doc, ["#", "Prio", "Actie", "Verwerkt in §", "Review OK", "Datum"], rows,
           widths=[1.0, 1.4, 9.2, 2.2, 1.8, 1.6], size=8.5, color_cols={1: prio_color})
doc.add_paragraph()
body(doc, "Afronding: pas na afronding van H1\u2013H12 de revision log aan (section + description of change) en verstijg de revisiestatus conform H12.", size=9, italic=True)
doc.add_page_break()

# ================= DEEL 2 =================
h1(doc, "Deel 2 — Juridische compliance checklist")
body(doc, "Toetsingskader voor de herziene procedure. Elke regel moet aantoonbaar zijn in de proceduretekst, de project-RI&E of een gekoppeld document.")

legal = [
["J1", "Arbobesluit art. 4.2 lid 1", "Blootstelling beoordeeld: aard, mate, duur + hoeveelheden, aantal betrokkenen, arbeidsvorm gedocumenteerd", "P1"],
["J2", "Arbobesluit art. 4.2 lid 4", "Meetstrategie conform NEN-EN 689; meetprocedures conform NEN-EN 482; toetsing aan 1 µg/m³", "P1"],
["J3", "Arbobesluit art. 4.10a", "(P)AGO aangeboden vóór aanvang blootstellingswerkzaamheden en periodiek daarna; rol bedrijfsarts opgenomen", "P1"],
["J4", "Arbobesluit art. 4.10c", "Blootstellings- en meetgegevens 40 jaar bewaard en beschikbaar (incl. overdracht bij projecteinde)", "P1"],
["J5", "Arbobesluit art. 4.13", "RI&E-registratie met tox-elementen; vervangings-/bronmaatregelafweging met onderbouwing gedocumenteerd; OR/PVT betrokken bij plan van aanpak", "P1"],
["J6", "Arbobesluit art. 4.15", "Lijst van (mogelijk) blootgestelde werknemers en subcontractors bijgehouden; inzage- en afschriftrecht geregeld", "P1"],
["J7", "Arbobesluit art. 4.21", "Protocol abnormale blootstelling: onmiddellijke informatie aan betrokkenen, onderzoek oorzaak, informering OR/PVT", "P2"],
["J8", "REACH (EG) 1907/2006, Bijlage XIV", "Autorisatiestatus Cr(VI)-verbindingen bepaald; geen gebruik van niet-geautoriseerde Cr(VI)-producten (bijv. primers, passiveringsmiddelen)", "P2"],
["J9", "Bal; Wet milieubeheer / LAP", "Cr(VI)-gecontamineerd afval geklassificeerd, gescheiden, geëtiketteerd en via erkende afzender-ontvanger afgevoerd (incl. zeetransport)", "P2"],
["J10", "SER-grenswaardenlijst", "Grenswaarde 1 µg/m³ (8-uurs TGG) vermeld én gebruikt als toetskader voor metingen en beheersmaatregelen", "P2"],
["J11", "Richtlijn (EU) 2017/2398", "Verwijzing opgenomen in referentielijst (reeds aanwezig in §6) en inhoudelijk verwerkt", "P2"],
["J12", "Arbo-Informatiebladen 67, 31, 18, 77", "Opgenomen in referentielijst als toetsingskader voor revisies", "P2"],
["J13", "Beheersregime Chroom-6", "Operationeel vertaald naar beheersmaatregelenmatrix per activiteit of subparagraaf-verwijzing", "P2"],
["J14", "Documentbeheer / ISO 9001-logica", "Eén consistente revisie-aanduiding; gevulde revision log; consistente datums; interne referenties gedateerd/geversioneerd", "P2"],
]
make_table(doc, ["#", "Wettelijk kader", "Verplicht element", "Prio", "Aanwezig", "Bewijs"], legal,
           widths=[1.0, 3.4, 8.2, 1.4, 1.7, 1.7], size=8.5, color_cols={3: prio_color})
doc.add_paragraph()
body(doc, "Beoordelingsschaal aanwezig: C = conform aangetoond · D = deels (verbetering nodig) · N = niet aanwezig · N.v.t. = niet van toepassing (met onderbouwing).", size=9, italic=True)
doc.add_page_break()

# ================= DEEL 3 =================
h1(doc, "Deel 3 — P1/P2 prioriteringsmatrix")
h2(doc, "3.1 Definities")
make_table(doc, ["Klasse", "Definitie", "Actietermijn"], [
    ["P1 — Kritiek", "Wettelijk verplicht element ontbreekt volledig", "Vóór projectuitvoering / eerstvolgende revisie"],
    ["P2 — Verbetering", "Verplicht of verwacht element onvolledig uitgewerkt", "Zelfde of opvolgende revisie"],
    ["Conform", "Voldoet aan de eis", "Geen actie; borgen bij revisies"]],
    widths=[3.6, 8.4, 5.4], size=10, color_cols={0: prio_color})
doc.add_paragraph()

h2(doc, "3.2 Matrix: bevindingen \u00d7 prioriteit \u00d7 voorstel")
rows = []
for m in MATRIX:
    nr, eis, bron, _, klasse = m
    # koppel bevinding aan voorstel
    mapping = {"B1": "H1", "B2": "H2", "B3": "H3", "B4": "H5", "B5": "H4", "B6": "H6",
               "B8": "H7", "B9": "H8", "B10": "H9", "B11": "H10", "B12": "H11",
               "B13": "H1", "B14": "H12", "B7": "\u2014", "B15": "\u2014", "B16": "\u2014",
               "B17": "\u2014", "B18": "\u2014"}
    rows.append([nr, eis, klasse, mapping.get(nr, "\u2014")])
make_table(doc, ["Bevinding", "Eis", "Klasse", "Voorstel"], rows,
           widths=[2.0, 10.2, 2.6, 2.6], size=8.5, color_cols={2: prio_color})
doc.add_paragraph()

h2(doc, "3.3 Verwerkingsvolgorde (aanbevolen)")
volgorde = [
    "Stap 1 (P1): H1 meetstrategie \u2192 H2 AGO \u2192 H4 exposure register \u2192 H3 bewaarregeling \u2192 H5 RI&E-koppeling — als één wettelijk pakket verwerken.",
    "Stap 2 (P2, inhoudelijk): H6 calamiteitenprotocol \u2192 H11 maatregelenhiërarchie \u2192 H8 afvalstroom \u2192 H7 REACH \u2192 H9 AI-bladen \u2192 H10 beheersregime.",
    "Stap 3 (P2, documentair): H12 versieconsistentie — als afsluiting, inclusief gevulde revision log voor alle verwerkte voorstellen.",
]
for s in volgorde:
    bullet(doc, s)

cp = doc.core_properties
cp.title = "003.056 Cr(VI) Checklists v1.0"
cp.author = "JvG Consultancy"
cp.subject = "Herzieningschecklist en juridische compliance checklist Chromium VI Exposure Control Procedure"
cp.keywords = "chroom-6; checklist; Arbobesluit; herziening; H1-H12; prioritering"
cp.category = "HSEQ Compliance"
cp.comments = "Basis: Compliance Audit v1.0 (24-08-2026) — technical_writer (HQ_04)"

doc.save(OUT)
print("OK:", OUT)
