#!/usr/bin/env python3
"""Generate HSEQ Dashboard Master Blueprint v2.0 DOCX."""

from docx import Document
from docx.shared import Pt, Inches, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.enum.section import WD_ORIENT
from docx.oxml.ns import qn, nsdecls
from docx.oxml import parse_xml
import os

DARK_BLUE = RGBColor(0x0A, 0x16, 0x28)
NAVY = RGBColor(0x1B, 0x2A, 0x4A)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT_GRAY = RGBColor(0xF2, 0xF2, 0xF2)

doc = Document()

# --- Page setup ---
for section in doc.sections:
    section.top_margin = Cm(2.5)
    section.bottom_margin = Cm(2.5)
    section.left_margin = Cm(2.5)
    section.right_margin = Cm(2.5)

# --- Styles ---
style = doc.styles['Normal']
font = style.font
font.name = 'Calibri'
font.size = Pt(11)
font.color.rgb = DARK_BLUE
style.paragraph_format.line_spacing = 1.15
style.paragraph_format.space_after = Pt(6)

for level in range(1, 4):
    hs = doc.styles[f'Heading {level}']
    hs.font.name = 'Calibri'
    hs.font.color.rgb = NAVY
    hs.font.bold = True
    if level == 1:
        hs.font.size = Pt(20)
        hs.paragraph_format.space_before = Pt(24)
        hs.paragraph_format.space_after = Pt(12)
    elif level == 2:
        hs.font.size = Pt(16)
        hs.paragraph_format.space_before = Pt(18)
        hs.paragraph_format.space_after = Pt(8)
    else:
        hs.font.size = Pt(13)
        hs.paragraph_format.space_before = Pt(12)
        hs.paragraph_format.space_after = Pt(6)


def add_header_footer(doc):
    for section in doc.sections:
        header = section.header
        hp = header.paragraphs[0]
        hp.text = "JvG Consultancy -- Master Blueprint v2.0 -- Vertrouwelijk"
        hp.style.font.size = Pt(8)
        hp.style.font.color.rgb = RGBColor(0x88, 0x88, 0x88)
        hp.alignment = WD_ALIGN_PARAGRAPH.CENTER
        footer = section.footer
        fp = footer.paragraphs[0]
        fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
        run = fp.add_run()
        fldChar1 = parse_xml(f'<w:fldChar {nsdecls("w")} w:fldCharType="begin"/>')
        run._r.append(fldChar1)
        run2 = fp.add_run()
        instrText = parse_xml(f'<w:instrText {nsdecls("w")} xml:space="preserve"> PAGE </w:instrText>')
        run2._r.append(instrText)
        run3 = fp.add_run()
        fldChar2 = parse_xml(f'<w:fldChar {nsdecls("w")} w:fldCharType="end"/>')
        run3._r.append(fldChar2)


def add_styled_table(doc, headers, rows):
    table = doc.add_table(rows=1 + len(rows), cols=len(headers))
    table.style = 'Table Grid'
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    # Header row
    for i, h in enumerate(headers):
        cell = table.rows[0].cells[i]
        cell.text = h
        for p in cell.paragraphs:
            for r in p.runs:
                r.font.bold = True
                r.font.color.rgb = WHITE
                r.font.size = Pt(10)
                r.font.name = 'Calibri'
        shading = parse_xml(f'<w:shd {nsdecls("w")} w:fill="1B2A4A"/>')
        cell._tc.get_or_add_tcPr().append(shading)
    # Data rows
    for ri, row_data in enumerate(rows):
        for ci, val in enumerate(row_data):
            cell = table.rows[ri + 1].cells[ci]
            cell.text = str(val)
            for p in cell.paragraphs:
                for r in p.runs:
                    r.font.size = Pt(10)
                    r.font.name = 'Calibri'
            if ri % 2 == 1:
                shading = parse_xml(f'<w:shd {nsdecls("w")} w:fill="F2F2F2"/>')
                cell._tc.get_or_add_tcPr().append(shading)
    return table


def add_bullet(doc, text, bold_prefix=None):
    p = doc.add_paragraph(style='List Bullet')
    if bold_prefix:
        r = p.add_run(bold_prefix)
        r.bold = True
        r.font.size = Pt(11)
        r.font.name = 'Calibri'
        p.add_run(text).font.size = Pt(11)
    else:
        p.add_run(text).font.size = Pt(11)


# ============================================================
# TITLE PAGE
# ============================================================
for _ in range(6):
    doc.add_paragraph()

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run("HSEQ Intelligence Dashboard")
r.font.size = Pt(32)
r.font.color.rgb = NAVY
r.font.bold = True
r.font.name = 'Calibri'

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run("Master Blueprint v2.0")
r.font.size = Pt(24)
r.font.color.rgb = NAVY
r.font.name = 'Calibri'

doc.add_paragraph()

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run("Strategische Roadmap: Van Info-Platform naar\nVolwaardig HSEQ Management Systeem")
r.font.size = Pt(16)
r.font.color.rgb = DARK_BLUE
r.font.name = 'Calibri'
r.italic = True

for _ in range(6):
    doc.add_paragraph()

for line in ["JvG Consultancy", "April 2026", "", "VERTRouwELIJK"]:
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    r = p.add_run(line)
    r.font.size = Pt(14) if line == "JvG Consultancy" else Pt(12)
    r.font.color.rgb = NAVY
    r.font.name = 'Calibri'
    if line == "VERTRouwELIJK":
        r.bold = True

doc.add_page_break()

# ============================================================
# 2. EXECUTIVE SUMMARY
# ============================================================
doc.add_heading('Executive Summary', level=1)

doc.add_paragraph(
    "Het HSEQ Intelligence Dashboard staat op een keerpunt. Wat begon als een informatieve kennisbank "
    "met FAQ-pagina's en basisfuncties, moet transformeren tot een volwaardig HSEQ management platform "
    "dat concurreert met marktleiders als Intelex, SmartQHSE (ARIA) en DEKRA. Deze upgrade is niet "
    "luxe maar noodzaak: de markt eist actieve documentgeneratie, approval workflows, training integratie "
    "en AI-gedreven advies op bedrijfsniveau."
)

doc.add_heading('Waarom deze upgrade', level=2)
doc.add_paragraph(
    "De huidige diensten (Arbo, BRZO, Milieu, KAM, Training, Energie) bieden uitsluitend "
    "informatieve content. Gebruikers kunnen lezen maar niet DOEN. Marktonderzoek toont aan dat "
    "alle marktleiders een deliverable lifecycle hanteren: INPUT, BUILD, APPROVE, INTEGRATE, TRACK. "
    "Zonder deze cyclus blijft het dashboard een bibliotheek in plaats van een werkinstrument."
)

doc.add_heading('Wat het oplevert', level=2)
add_bullet(doc, "AI-gedreven generatie van bedrijfsspecifieke documenten (RI&E, ARIE, MAPP, toolbox talks)")
add_bullet(doc, "Goedkeuringsworkflows met audit trail en versiebeheer")
add_bullet(doc, "Cross-module integratie: documenten ankelen automatisch door in modules")
add_bullet(doc, "Safety Maturity Model met assessment en roadmap")
add_bullet(doc, "ARIA-level HSEQ Advisor met contextueel, generatief en analytisch vermogen")
add_bullet(doc, "Competitieve positie tegenover Intelex, DEKRA en SmartQHSE door BRZO/Seveso specialisatie")

doc.add_heading('Tijdlijn indicatie', level=2)
doc.add_paragraph(
    "12-weken implementatie in 6 fases, van Deliverable Lifecycle (week 1-2) tot Testing en Polish (week 10-12). "
    "Elke fase levert bruikbare functionaliteit op die direct in productie kan worden genomen."
)

doc.add_page_break()

# ============================================================
# 3. VISIE & POSITIONERING
# ============================================================
doc.add_heading('Visie & Positionering', level=1)

doc.add_heading('Current State', level=2)
doc.add_paragraph(
    "Het dashboard biedt zes diensten (Arbo & Veiligheid, BRZO/Seveso, Milieu & Omgeving, KAM Management, "
    "Training & Opleiding, Energie & Proces) als informatieve pagina's met FAQ-secties. De HSEQ Advisor "
    "biedt een RAG-gebaseerde chat met 7 categorieen. Er is een eLearning creator (basisniveau). "
    "Het dashboard leest als een digitale encyclopedie: kennis is aanwezig, maar actie ontbreekt."
)

doc.add_heading('Target State', level=2)
doc.add_paragraph(
    "Een volwaardig HSEQ management platform dat bedrijven ondersteunt bij het gehele spectrum: "
    "van risicoanalyse en documentgeneratie tot goedkeuring, implementatie en opvolging. Elke dienst "
    "produceert bruikbare deliverables via een gestandaardiseerde lifecycle. De HSEQ Advisor fungeert "
    "als contextueel AI-assistent die bedrijfsdata kent en proactief adviseert. Het platform onderscheidt "
    "zich door diepe BRZO/Seveso expertise, Nederlandse wetgeving als basis en een use-case-gedreven aanpak."
)

doc.add_heading('Concurrentieanalyse', level=2)
add_styled_table(doc,
    ["Platform", "Sterkte", "Zwakte vs Ons"],
    [
        ["Intelex", "Do-it-all platform, application builder, document control", "Geen BRZO/Seveso specialisatie, VS-focus"],
        ["SmartQHSE ARIA", "52+ AI tools, contextueel, 144+ landen", "Generiek, geen Nederlandse wetgeving focus"],
        ["DEKRA", "BRZO/Seveso expert, PHA/HAZOP, PHAST modeling", "Geen AI advisor, geen self-service platform"],
        ["EHS Insight", "Training integratie, 50K+ courses", "Geen Seveso, beperkte AI"],
        ["Cority", "Occupational health, ESG", "Complex, enterprise-only pricing"],
        ["AssurX", "CAPA lifecycle, root cause analysis", "Geen documentgeneratie, beperkte AI"],
    ]
)

doc.add_paragraph()
doc.add_heading('Onze Unieke Waarde', level=2)
add_bullet(doc, "BRZO/Seveso specialisatie: ", "BRZO/Seveso specialisatie: ")
add_bullet(doc, "Nederlandse wetgeving als primaire context (Arbowet, BRZO, Wm, Wabo)")
add_bullet(doc, "AI Advisor met bedrijfscontextueel begrip")
add_bullet(doc, "Van generieke FAQ naar bedrijfsspecifieke deliverables")
add_bullet(doc, "Self-service platform met enterprise-grade workflows")
add_bullet(doc, "Modulaire opbouw: start klein, schaal naar volledig HSEQ management")

doc.add_page_break()

# ============================================================
# 4. PLATFORM ARCHITECTUUR
# ============================================================
doc.add_heading('Platform Architectuur', level=1)

doc.add_heading('Modules + Diensten + Tools Overzicht', level=2)
doc.add_paragraph(
    "Het platform bestaat uit 5 kernmodules, 6 diensten en een HSEQ Advisor met gespecialiseerde tools:"
)

add_styled_table(doc,
    ["Component", "Omschrijving"],
    [
        ["Module 1: Arbo & Veiligheid", "VBS, risicobeheer, PBM, inspecties, incidenten"],
        ["Module 2: Risico & Compliance", "RI&E, ARIE, HAZOP, risicoscenario's, BRZO compliance"],
        ["Module 3: PtW & Operaties", "Permit to Work, MoC, LOTO, isolatiecertificaten"],
        ["Module 4: Data & Analytics", "Incidents, milieumetingen, KPI's, dashboards, trendanalyse"],
        ["Module 5: Training & Audits", "Training matrix, competenties, audit programma, certificeringen"],
        ["Dienst: Arbo & Veiligheid", "RI&E generator, PBM checklist, werkplekinspectie, jaarverslag"],
        ["Dienst: BRZO/Seveso", "MAPP, ARIE, veiligheidsrapport, VBS compliance, noodscenario's"],
        ["Dienst: Milieu & Omgeving", "MER screening, emissie monitoring, afvalstroom, vergunningen"],
        ["Dienst: KAM Management", "ISO self-assessment, gap analyse, audit programma, verbeterplan"],
        ["Dienst: Training & Opleiding", "AI training advies, eLearning creator, training matrix, toolbox talks"],
        ["Dienst: Energie & Proces", "Energie-audit, PSSR, MoC, proces HAZOP"],
        ["HSEQ Advisor", "Contextueel AI met tools: RI&E gen, ARIE gen, maturity scan, mock audit"],
    ]
)

doc.add_paragraph()
doc.add_heading('Data Flow Diagram (tekstueel)', level=2)
flow = """
Gebruiker --> Dienst (input formulier) --> Build Engine (AI/template) --> Deliverable (draft)
    |
    v
Approval Workflow --> Reviewer --> Approved? --> Ja: Auto-Integratie --> Modules
                                                --> Nee: Revisie --> Build Engine
    |
    v
Modules --> KPI's --> Dashboard --> HSEQ Advisor (context)
    |
    v
Tracking --> Deadlines --> Escalatie --> Rapportage
"""
p = doc.add_paragraph()
r = p.add_run(flow)
r.font.name = 'Courier New'
r.font.size = Pt(9)

doc.add_heading('Cross-Module Integratie Matrix', level=2)
add_styled_table(doc,
    ["Dienst", "Module 1", "Module 2", "Module 3", "Module 4", "Module 5"],
    [
        ["Arbo & Veiligheid", "VBS", "RI&E", "-", "Incidents", "Training"],
        ["BRZO/Seveso", "VBS", "RI&E Stoffen", "PtW", "Noodscenario", "-"],
        ["Milieu", "-", "-", "-", "Metingen", "-"],
        ["KAM", "PBZO", "-", "-", "-", "Audits"],
        ["Training", "-", "-", "PtW checks", "-", "Competenties"],
        ["Energie & Proces", "-", "HAZOP", "MoC/PtW", "-", "-"],
    ]
)

doc.add_paragraph()
doc.add_heading('Database Architectuur', level=2)
doc.add_paragraph(
    "De database volgt een relationeel model met core tabellen per module, uitgebreid met "
    "deliverable lifecycle tabellen (zie sectie 10). Centrale tabellen: companies, users, roles, "
    "modules, services, tools, deliverables, deliverable_approvals, safety_maturity_assessments, "
    "advisor_sessions. Elke module heeft eigen tabellen (risks, incidents, permits, trainings, audits) "
    "met foreign keys naar deliverables voor traceerbaarheid."
)

doc.add_page_break()

# ============================================================
# 5. DIENSTEN TRANSFORMATIE
# ============================================================
doc.add_heading('Diensten Transformatie -- De Kern', level=1)
doc.add_paragraph(
    "Deze sectie beschrijft per dienst de transformatie van informatieve content naar actieve "
    "documentgeneratie met gestructureerde input, deliverables en cross-module integratie. "
    "Alle diensten volgen de INPUT, BUILD, APPROVE, INTEGRATE, TRACK lifecycle."
)

# 5.1
doc.add_heading('5.1 Arbo & Veiligheid', level=2)
add_styled_table(doc, ["Aspect", "Detail"], [
    ["Current State", "Informatieve pagina met FAQ over arbowetgeving, PBM's en risico-inventarisatie"],
    ["Target State", "Volledige arbo toolkit: RI&E generator, risicoanalyse, PBM checklist, inspectie app, jaarverslag"],
])
doc.add_paragraph()
doc.add_paragraph("Functies in target state:").bold = False
add_bullet(doc, "RI&E Generator: ", "RI&E Generator: ")
add_bullet(doc, "Bedrijfsspecifieke risico-inventarisatie op basis van sector, bedrijfsgrootte en risicoprofiel")
add_bullet(doc, "Arbo risicoanalyse tool: kwantitatieve beoordeling per werkplek en taak")
add_bullet(doc, "PBM checklist generator: op basis van geidentificeerde risico's")
add_bullet(doc, "Werkplekinspectie app: mobiele checklists met foto-upload en directe acties")
add_bullet(doc, "Arbo jaarverslag generator: samenvatting van metingen, incidenten, acties en trends")

doc.add_paragraph()
p = doc.add_paragraph()
r = p.add_run("Input vragen: ")
r.bold = True
p.add_run("Sector (SBI-code), aantal medewerkers, risicoprofiel (fysiek, chemisch, biologisch, psychosociaal, ergonomisch), "
           "bestaande RI&E aanwezig (ja/nee, datum), recente incidenten, bijzondere omstandigheden (hitte, kou, geluid, trilling).")

p = doc.add_paragraph()
r = p.add_run("Deliverables: ")
r.bold = True
p.add_run("RI&E document, risicoscore matrix, PBM matrix, actieplan met prioriteiten, arbo jaarverslag.")

p = doc.add_paragraph()
r = p.add_run("Integratie: ")
r.bold = True
p.add_run("RI&E acties --> Module 2 (risicobeheer), incidenten --> Module 4, PBM eisen --> Module 5 (training), "
           "werkplekinspecties --> Module 4 (trend data).")

# 5.2
doc.add_heading('5.2 BRZO / Seveso', level=2)
add_styled_table(doc, ["Aspect", "Detail"], [
    ["Current State", "FAQ over BRZO, Seveso richtlijn, scope en classificatie"],
    ["Target State", "Volledige BRZO toolkit: MAPP, ARIE, veiligheidsrapport, VBS compliance, inspectie prep"],
])
doc.add_paragraph()
doc.add_paragraph("Functies in target state:")
add_bullet(doc, "MAPP Generator: Major Accident Prevention Policy op basis van bedrijfscontext")
add_bullet(doc, "ARIE Generator: Algemene Risicoanalyse met stoffen, installaties en scenario's")
add_bullet(doc, "Veiligheidsrapport Generator: volledig BRZO-rapport voor upper tier bedrijven")
add_bullet(doc, "VBS-elementen compliance tracker: voortgang per VBS-element --> Module 1")
add_bullet(doc, "BRZO inspectie voorbereiding: checklist op basis van historische inspecties")
add_bullet(doc, "Noodscenario planning: scenario's met evacuatie- en bestrijdingsplannen")

doc.add_paragraph()
p = doc.add_paragraph()
r = p.add_run("Input vragen: ")
r.bold = True
p.add_run("BRZO status (upper/lower tier), stoffenlijst met hoeveelheden, installatie-overzicht, "
           "bestaande MAPP/ARIE documentatie, laatste inspectie, MAH-beslissingen, omgevingsfactoren.")

p = doc.add_paragraph()
r = p.add_run("Deliverables: ")
r.bold = True
p.add_run("MAPP document, ARIE rapport, veiligheidsrapport, inspectie-checklist, noodscenario's, "
           "VBS compliance rapport.")

p = doc.add_paragraph()
r = p.add_run("Integratie: ")
r.bold = True
p.add_run("ARIE risicoscenario's --> Module 2 (RI&E stoffen), noodscenario's --> Module 4, "
           "VBS --> Module 1, veiligheidsmaatregelen --> Module 3 (PtW).")

# 5.3
doc.add_heading('5.3 Milieu & Omgeving', level=2)
add_styled_table(doc, ["Aspect", "Detail"], [
    ["Current State", "Informatieve pagina over milieuwetgeving en vergunningen"],
    ["Target State", "Milieu toolkit: rapportage, emissie monitoring, afvalstroom, MER screening"],
])
doc.add_paragraph()
doc.add_paragraph("Functies in target state:")
add_bullet(doc, "Milieueffectrapportage generator: op basis van activiteiten en emissiebronnen")
add_bullet(doc, "Emissie monitoring dashboard: real-time overzicht --> Module 4")
add_bullet(doc, "Afvalstroom management: registratie, sortering, afvoer --> Module 4")
add_bullet(doc, "MER screening tool: bepaal of MER verplicht is voor project/activiteit")
add_bullet(doc, "Vergunningsaanvraag support: assistentie bij Wabo/Wm aanvragen")

doc.add_paragraph()
p = doc.add_paragraph()
r = p.add_run("Input vragen: ")
r.bold = True
p.add_run("Vergunningstype, activiteiten, emissiebronnen (lucht, water, geluid, bodem), "
           "afvalstromen, bestaande vergunningen.")

p = doc.add_paragraph()
r = p.add_run("Deliverables: ")
r.bold = True
p.add_run("Milieurapport, emissie-overzicht, afvalbalans, MER screening uitslag.")

p = doc.add_paragraph()
r = p.add_run("Integratie: ")
r.bold = True
p.add_run("Emissiedata --> Module 4 (milieumetingen), afvaldata --> Module 4 (afval KPI's).")

# 5.4
doc.add_heading('5.4 KAM Management', level=2)
add_styled_table(doc, ["Aspect", "Detail"], [
    ["Current State", "Informatieve pagina over KAM en ISO standaarden"],
    ["Target State", "KAM toolkit: ISO self-assessment, gap analyse, audit programma, verbeterplan"],
])
doc.add_paragraph()
doc.add_paragraph("Functies in target state:")
add_bullet(doc, "ISO 9001/14001/45001 self-assessment: per clause beoordeling")
add_bullet(doc, "Gap analyse tool: identificeer afwijkingen tussen huidige en vereiste status")
add_bullet(doc, "Audit programma generator: jaarplanning op basis van risico's en prioriteiten")
add_bullet(doc, "Management review template: gestructureerde review voor directie")
add_bullet(doc, "Continu verbetering tracker: PDCA-cyclus met acties en effectmeting")

doc.add_paragraph()
p = doc.add_paragraph()
r = p.add_run("Input vragen: ")
r.bold = True
p.add_run("Welke ISO standaarden, huidige certificeringen, maturity level, scope, aantal locaties.")

p = doc.add_paragraph()
r = p.add_run("Deliverables: ")
r.bold = True
p.add_run("Gap analyse rapport, audit programma, management review template, verbeterplan.")

p = doc.add_paragraph()
r = p.add_run("Integratie: ")
r.bold = True
p.add_run("Gap analyse --> Module 5 (audits), PBZO-elementen --> Module 1, verbeteracties --> CAPA systeem.")

# 5.5
doc.add_heading('5.5 Training & Opleiding', level=2)
add_styled_table(doc, ["Aspect", "Detail"], [
    ["Current State", "Info + FAQ + eLearning creator (basis)"],
    ["Target State", "Volledige training suite: AI advies, eLearning creator, matrix, competenties, toolbox talks"],
])
doc.add_paragraph()
doc.add_paragraph("Functies in target state:")
add_bullet(doc, "Bedrijfsspecifiek training advies (AI-scan): analyseer risico's en bepaal benodigde trainingen")
add_bullet(doc, "eLearning module creator: genereer modules per risico-aspect (volgens Ecesis best practice)")
add_bullet(doc, "Training matrix beheer: per rol, locatie, risico-expositie --> Module 5")
add_bullet(doc, "Competentie assessment tool: beoordeel en track medewerker competenties")
add_bullet(doc, "Toolbox talk generator: genereer toolbox talks op basis van actuele thema's")
add_bullet(doc, "Trainingskalender planner: planning op basis van verloopdata en risicoprofiel")

doc.add_paragraph()
p = doc.add_paragraph()
r = p.add_run("Input vragen: ")
r.bold = True
p.add_run("Bedrijfsrisico's, medewerker rollen, bestaande trainingen, certificeringseisen, "
           "verloopdata, incidenten.")

p = doc.add_paragraph()
r = p.add_run("Deliverables: ")
r.bold = True
p.add_run("Training advies rapport, eLearning modules, training matrix, certificaten, toolbox talks, "
           "trainingskalender.")

p = doc.add_paragraph()
r = p.add_run("Integratie: ")
r.bold = True
p.add_run("Training matrix --> Module 5 (competenties), certificeringen --> Module 3 (PtW checks), "
           "training gaps --> HSEQ Advisor (proactieve waarschuwingen).")

# 5.6
doc.add_heading('5.6 Energie & Proces', level=2)
add_styled_table(doc, ["Aspect", "Detail"], [
    ["Current State", "Informatieve pagina over energiemanagement en procesveiligheid"],
    ["Target State", "Energie/proces toolkit: energie-audit, PSSR, MoC, proces HAZOP"],
])
doc.add_paragraph()
doc.add_paragraph("Functies in target state:")
add_bullet(doc, "Energie-audit tool: EED-verplichte energie-audit met besparingsadvies")
add_bullet(doc, "Procesveiligheid assessment: beoordeling van procesinstallaties")
add_bullet(doc, "Pre-Start Safety Review (PSSR) generator: checklist voor opstart veiligheid")
add_bullet(doc, "Management of Change: beheer veranderingen aan processen --> Module 3")
add_bullet(doc, "Proces HAZOP tool: gestructureerde hazard en operability studie")

doc.add_paragraph()
p = doc.add_paragraph()
r = p.add_run("Input vragen: ")
r.bold = True
p.add_run("Procesinstallaties, energiestromen, bestaande PSSR, recente wijzigingen, "
           "procesbeschrijvingen, P&ID's.")

p = doc.add_paragraph()
r = p.add_run("Deliverables: ")
r.bold = True
p.add_run("Energie-audit rapport, PSSR rapport, MoC documentatie, HAZOP studie.")

p = doc.add_paragraph()
r = p.add_run("Integratie: ")
r.bold = True
p.add_run("HAZOP bevindingen --> Module 2 (risicobeheer), MoC --> Module 3 (PtW), "
           "energiebesparing --> Module 4 (KPI's).")

doc.add_page_break()

# ============================================================
# 6. HSEQ ADVISOR UPGRADE
# ============================================================
doc.add_heading('HSEQ Advisor Upgrade -- Diepgaand Advies', level=1)

doc.add_heading('Current State', level=2)
doc.add_paragraph(
    "De HSEQ Advisor is een RAG-gebaseerde chatbot met 7 categorieen. Het beantwoordt vragen "
    "op basis van geuploade documentatie maar genereert geen documenten, kent geen bedrijfscontext "
    "en heeft geen analytisch vermogen."
)

doc.add_heading('Target State: ARIA-Level AI Assistant', level=2)
doc.add_paragraph(
    "De upgraded HSEQ Advisor is een contextueel, generatief en analytisch AI-assistent die "
    "het niveau van SmartQHSE ARIA benadert en op specifieke gebieden overstijgt door BRZO/Seveso "
    "specialisatie."
)

doc.add_paragraph("Kernvermogens:")
add_bullet(doc, "Contextueel: ", "Contextueel: ")
add_bullet(doc, "Kent bedrijfsspecifieke data (medewerkers, stoffen, trainingen, incidenten, risico's)")
add_bullet(doc, "Antwoorden zijn gebaseerd op de actuele situatie van de organisatie, niet op generieke content")
add_bullet(doc, "Generatief: ", "Generatief: ")
add_bullet(doc, "Kan volledige documenten genereren (RI&E, ARIE, MAPP, toolbox talks, inspectiechecklists)")
add_bullet(doc, "Documenten zijn bedrijfsspecifiek en direct bruikbaar")
add_bullet(doc, "Analytisch: ", "Analytisch: ")
add_bullet(doc, "Kan data analyseren en trends identificeren (incidentpatronen, compliance gaps, training needs)")
add_bullet(doc, "Advisor modus: ", "Advisor modus: ")
add_bullet(doc, "Proactief advies gebaseerd op compliance gaps en deadlines")
add_bullet(doc, "Waarschuwingen voor verlopende certificeringen, openstaande acties, aankomende audits")
add_bullet(doc, "Audit mode: ", "Audit mode: ")
add_bullet(doc, "Kan mock-audit uitvoeren ter voorbereiding op ILT inspectie")
add_bullet(doc, "Photo analysis: ", "Photo analysis: ")
add_bullet(doc, "Afbeelding van werksituatie --> geautomatiseerde risicoanalyse met aanbevelingen")

doc.add_heading('Nieuwe Tools', level=2)
add_styled_table(doc, ["Tool", "Functie", "Input", "Output"],
    [
        ["Genereer RI&E", "Company scan --> volledig RI&E", "Bedrijfsgegevens, sector, risico's", "RI&E document (draft)"],
        ["Genereer ARIE", "Stoffen + installaties --> ARIE", "Stoffenlijst, installaties, scenario's", "ARIE document (draft)"],
        ["Safety Maturity Scan", "Beoordeel volwassenheidsniveau", "Organisatie data, processen, cultuur", "Maturity rapport + roadmap"],
        ["Mock Audit", "Simuleer ILT inspectie", "Bedrijfsprofiel, scope, normen", "Audit rapport met findings"],
        ["Trend Analyse", "Identificeer trends", "Incidents, training, compliance data", "Trend rapport met grafieken"],
    ]
)

doc.add_page_break()

# ============================================================
# 7. DELIVERABLE LIFECYCLE MANAGEMENT
# ============================================================
doc.add_heading('Deliverable Lifecycle Management', level=1)

doc.add_paragraph(
    "Alle marktleiders (Intelex, Cority, AssurX) hanteren een gestructureerde deliverable lifecycle. "
    "Dit systeem is de ruggengraat van de platformupgrade."
)

doc.add_heading('Lifecycle Stadia', level=2)
add_styled_table(doc, ["Stadium", "Status", "Acties", "Verantwoordelijke"],
    [
        ["1. Input", "drafting", "Gebruiker vult formulier in", "Gebruiker"],
        ["2. Build", "draft", "AI/template genereert document", "Systeem"],
        ["3. Review", "in_review", "Reviewer beoordeelt draft", "Reviewer"],
        ["4. Approve/Reject", "approved / rejected", "Goedkeuring of revisie", "Approver"],
        ["5. Publish", "published", "Document beschikbaar in platform", "Systeem"],
        ["6. Integrate", "integrated", "Auto-ankering in modules", "Systeem"],
        ["7. Track", "tracking", "Opvolging acties, deadlines", "Eigenaar"],
    ]
)

doc.add_paragraph()
doc.add_heading('UI Workflow', level=2)
doc.add_paragraph(
    "Preview --> Review --> Approve/Reject --> Publish. Na goedkeuring start automatisch de integratie "
    "in relevante modules. De gebruiker ziet een statusbalk met voortgang. Revisies creeren een nieuwe "
    "versie met diff-view. Elk document heeft een audit trail: wie, wanneer, wat gewijzigd."
)

doc.add_heading('Versiebeheer', level=2)
doc.add_paragraph(
    "Elk deliverable heeft een versienummer (v1.0, v1.1, v2.0). Minor versies voor correcties, "
    "major versies voor inhoudelijke wijzigingen. Eerdere versies blijven beschikbaar voor audit doeleinden. "
    "Expiratie: documenten kunnen een geldigheidsduur hebben met automatische waarschuwing bij verloop."
)

doc.add_page_break()

# ============================================================
# 8. SAFETY MATURITY MODEL
# ============================================================
doc.add_heading('Safety Maturity Model Integration', level=1)

doc.add_paragraph(
    "Gebaseerd op het Avetta Safety Culture Maturity Model biedt het platform een assessment tool "
    "die het huidige volwassenheidsniveau van een organisatie bepaalt en een roadmap genereert naar het "
    "volgende niveau."
)

doc.add_heading('5-Level Model', level=2)
add_styled_table(doc, ["Level", "Naam", "Kenmerken", "KPI's"],
    [
        ["1", "Reactive", "Actie na incidenten, geen systeem, ad-hoc", "Incident ratio, MTTR"],
        ["2", "Compliant", "Regels en procedures aanwezig, compliance focus", "Audit score, procedure coverage"],
        ["3", "Proactive", "Risicomanagement, voorspelling, leading indicators", "Near-miss ratio, inspection completion"],
        ["4", "Collaborative", "Veiligheid = gedeelde verantwoordelijkheid", "Participatie ratio, safety meetings"],
        ["5", "Transformative", "Veiligheid = kernwaarde, continuous improvement", "TRIR trend, safety culture score"],
    ]
)

doc.add_paragraph()
doc.add_paragraph("Functionaliteit:")
add_bullet(doc, "Assessment tool: vragenlijst per niveau met scoring")
add_bullet(doc, "Visualisatie: radar chart per dimensie (leiderschap, systemen, cultuur, competentie, metrics)")
add_bullet(doc, "Roadmap generator: gespecificeerd advies per niveau met prioriteiten")
add_bullet(doc, "Benchmarking: vergelijk met sectorgemiddelden")
add_bullet(doc, "Tracking: her-assessment na 6/12 maanden met voortgangsmeting")

doc.add_page_break()

# ============================================================
# 9. IMPLEMENTATIE ROADMAP
# ============================================================
doc.add_heading('Implementatie Roadmap', level=1)

doc.add_paragraph(
    "De implementatie verloopt in 6 fases over 12 weken. Elke fase levert bruikbare functionaliteit "
    "die direct in productie kan worden genomen. Een iteratieve aanpak minimaliseert risico en "
    "maximaliseert feedback-mogelijkheden."
)

add_styled_table(doc, ["Fase", "Periode", "Onderwerpen", "Opgeleverd"],
    [
        ["1", "Week 1-2", "Deliverable Lifecycle systeem", "DB schema, approval workflow, versiebeheer, audit trail"],
        ["2", "Week 2-4", "Training & Opleiding dienst", "AI training advies, eLearning creator, matrix, toolbox talks"],
        ["3", "Week 4-6", "BRZO/Seveso dienst", "MAPP, ARIE, veiligheidsrapport, VBS tracker, inspectie prep"],
        ["4", "Week 6-8", "Overige diensten", "Arbo, Milieu, KAM, Energie transformatie"],
        ["5", "Week 8-10", "HSEQ Advisor upgrade", "Contextueel AI, tools, audit mode, photo analysis"],
        ["6", "Week 10-12", "Testing & Polish", "Integration testing, UAT, performance, documentatie"],
    ]
)

doc.add_paragraph()
doc.add_heading('Succescriteria per fase', level=2)
add_bullet(doc, "Fase 1: Deliverable kan worden aangemaakt, gereviewed, goedgekeurd en gepubliceerd met volledige audit trail")
add_bullet(doc, "Fase 2: Training advies gegenereerd op basis van bedrijfsrisico's, eLearning module bruikbaar")
add_bullet(doc, "Fase 3: MAPP en ARIE gegenereerd voor testbedrijf, VBS compliance tracker operationeel")
add_bullet(doc, "Fase 4: Alle 6 diensten produceren deliverables via lifecycle systeem")
add_bullet(doc, "Fase 5: Advisor kent bedrijfscontext, genereert documenten, voert mock audit uit")
add_bullet(doc, "Fase 6: Geen kritieke bugs, load test succesvol, gebruikersdocumentatie compleet")

doc.add_page_break()

# ============================================================
# 10. DATABASE SCHEMA EXTENSIES
# ============================================================
doc.add_heading('Database Schema Extensies', level=1)

doc.add_paragraph(
    "De volgende tabellen worden toegevoegd aan het bestaande databaseschema ter ondersteuning "
    "van de deliverable lifecycle, safety maturity model en uitgebreide advisor sessies."
)

doc.add_heading('deliverables', level=2)
add_styled_table(doc, ["Kolom", "Type", "Beschrijving"], [
    ["id", "UUID", "Primary key"],
    ["company_id", "UUID", "FK naar companies"],
    ["service_id", "UUID", "FK naar services (Arbo, BRZO, etc.)"],
    ["type", "VARCHAR", "Type deliverable (RI&E, ARIE, MAPP, etc.)"],
    ["title", "VARCHAR", "Titel van het document"],
    ["status", "ENUM", "draft, in_review, approved, rejected, published, integrated, archived"],
    ["version", "VARCHAR", "Versienummer (v1.0, v1.1, etc.)"],
    ["content", "JSONB", "Document content (gestructureerd)"],
    ["input_data", "JSONB", "Originele input formulier data"],
    ["created_by", "UUID", "FK naar users"],
    ["published_at", "TIMESTAMP", "Datum van publicatie"],
    ["expires_at", "TIMESTAMP", "Vervaldatum (optioneel)"],
    ["created_at", "TIMESTAMP", "Aanmaakdatum"],
    ["updated_at", "TIMESTAMP", "Laatste wijziging"],
])

doc.add_paragraph()
doc.add_heading('deliverable_approvals', level=2)
add_styled_table(doc, ["Kolom", "Type", "Beschrijving"], [
    ["id", "UUID", "Primary key"],
    ["deliverable_id", "UUID", "FK naar deliverables"],
    ["reviewer_id", "UUID", "FK naar users"],
    ["action", "ENUM", "approved, rejected, revision_requested"],
    ["comments", "TEXT", "Feedback/commentaar"],
    ["reviewed_at", "TIMESTAMP", "Review datum"],
])

doc.add_paragraph()
doc.add_heading('safety_maturity_assessments', level=2)
add_styled_table(doc, ["Kolom", "Type", "Beschrijving"], [
    ["id", "UUID", "Primary key"],
    ["company_id", "UUID", "FK naar companies"],
    ["level", "INTEGER", "Score 1-5"],
    ["scores", "JSONB", "Scores per dimensie (leadership, systems, culture, competence, metrics)"],
    ["recommendations", "JSONB", "Adviezen en roadmap"],
    ["assessed_by", "UUID", "FK naar users (of AI)"],
    ["assessed_at", "TIMESTAMP", "Beoordelingsdatum"],
    ["next_assessment", "DATE", "Geplande her-assessment"],
])

doc.add_paragraph()
doc.add_heading('advisor_sessions (uitgebreid)', level=2)
add_styled_table(doc, ["Kolom", "Type", "Beschrijving"], [
    ["id", "UUID", "Primary key"],
    ["company_id", "UUID", "FK naar companies"],
    ["user_id", "UUID", "FK naar users"],
    ["mode", "ENUM", "chat, advisor, audit, photo_analysis"],
    ["context", "JSONB", "Bedrijfscontext die in deze sessie actief is"],
    ["tools_used", "JSONB", "Welke tools zijn gebruikt in deze sessie"],
    ["deliverables_generated", "JSONB", "Deliverable IDs gegenereerd in sessie"],
    ["messages", "JSONB", "Volledige gespreksgeschiedenis"],
    ["started_at", "TIMESTAMP", "Start sessie"],
    ["ended_at", "TIMESTAMP", "Einde sessie"],
])

doc.add_page_break()

# ============================================================
# 11. BIJLAGEN
# ============================================================
doc.add_heading('Bijlagen', level=1)

doc.add_heading('Bijlage A: Concurrentie Matrix', level=2)
add_styled_table(doc,
    ["Feature", "JvG Dashboard", "Intelex", "ARIA", "DEKRA", "EHS Insight"],
    [
        ["AI Documentgeneratie", "Ja (gepland)", "Beperkt", "Ja (52+ tools)", "Nee", "Beperkt"],
        ["BRZO/Seveso", "Ja (specialisatie)", "Nee", "Beperkt", "Ja (expert)", "Nee"],
        ["Nederlandse wetgeving", "Ja (primaire focus)", "Nee", "Beperkt", "Beperkt", "Nee"],
        ["Approval Workflows", "Ja (gepland)", "Ja", "Nee", "Nee", "Ja"],
        ["Training Matrix", "Ja (gepland)", "Ja", "Nee", "Nee", "Ja"],
        ["CAPA Lifecycle", "Ja (gepland)", "Ja", "Beperkt", "Beperkt", "Ja"],
        ["Safety Maturity", "Ja (gepland)", "Nee", "Beperkt", "Nee", "Nee"],
        ["Photo Analysis", "Ja (gepland)", "Nee", "Ja", "Nee", "Nee"],
        ["Mock Audit", "Ja (gepland)", "Nee", "Nee", "Nee", "Nee"],
        ["Self-Service Pricing", "Ja", "Enterprise", "Freemium", "Enterprise", "Enterprise"],
    ]
)

doc.add_paragraph()
doc.add_heading('Bijlage B: API Endpoint Mapping', level=2)
add_styled_table(doc, ["Endpoint", "Method", "Functie"], [
    ["/api/deliverables", "GET", "Lijst deliverables (filterbaar op status, type, company)"],
    ["/api/deliverables", "POST", "Maak nieuw deliverable aan"],
    ["/api/deliverables/:id", "GET", "Haal deliverable op"],
    ["/api/deliverables/:id/approve", "POST", "Keur deliverable goed"],
    ["/api/deliverables/:id/reject", "POST", "Wijs deliverable af"],
    ["/api/deliverables/:id/publish", "POST", "Publiceer goedgekeurd deliverable"],
    ["/api/deliverables/:id/versions", "GET", "Versiegeschiedenis"],
    ["/api/maturity/assess", "POST", "Start maturity assessment"],
    ["/api/maturity/:id", "GET", "Haal assessment resultaat op"],
    ["/api/advisor/sessions", "POST", "Start advisor sessie"],
    ["/api/advisor/sessions/:id/message", "POST", "Verstuur bericht naar advisor"],
    ["/api/advisor/tools/:tool", "POST", "Activeer specifieke tool"],
    ["/api/services/:service/generate", "POST", "Genereer deliverable voor dienst"],
    ["/api/services/:service/input-schema", "GET", "Haal input formulier schema op"],
])

doc.add_paragraph()
doc.add_heading('Bijlage C: Afkortingenlijst', level=2)
add_styled_table(doc, ["Afkorting", "Volledig"], [
    ["ARIE", "Algemene Risicoanalyse Inrichtingen en Bedrijven"],
    ["BRZO", "Besluit Risico's Zware Ongevallen"],
    ["CAPA", "Corrective and Preventive Action"],
    ["EED", "Energy Efficiency Directive"],
    ["ESG", "Environmental, Social, Governance"],
    ["HAZOP", "Hazard and Operability Study"],
    ["HSEQ", "Health, Safety, Environment, Quality"],
    ["ILT", "Inspectie Leefomgeving en Transport"],
    ["KAM", "Kwaliteit, Arbeidsomstandigheden, Milieu"],
    ["LOPA", "Layer of Protection Analysis"],
    ["MAPP", "Major Accident Prevention Policy"],
    ["MER", "Milieueffectrapportage"],
    ["MoC", "Management of Change"],
    ["PBZO", "Periodiek Bedrijfsveiligheidsonderzoek"],
    ["PBM", "Persoonlijke Beschermingsmiddelen"],
    ["PHA", "Process Hazard Analysis"],
    ["PSSR", "Pre-Start Safety Review"],
    ["PtW", "Permit to Work"],
    ["QRA", "Quantitative Risk Assessment"],
    ["RI&E", "Risico-Inventarisatie en -Evaluatie"],
    ["RAG", "Retrieval-Augmented Generation"],
    ["TRIR", "Total Recordable Incident Rate"],
    ["VBS", "Veiligheidsbeheerssysteem"],
    ["Wabo", "Wet algemene bepalingen omgevingsrecht"],
    ["Wm", "Wet milieubeheer"],
])

# --- Header/Footer ---
add_header_footer(doc)

# --- Save ---
output_path = "/root/projects/jg/HSEQ-Intelligence-Monitor/docs/HSEQ_Dashboard_Master_Blueprint_v2.0.docx"
doc.save(output_path)
size = os.path.getsize(output_path)
print(f"Saved: {output_path}")
print(f"Size: {size:,} bytes ({size/1024:.1f} KB)")
