#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Assembleert het HTML auditrapport uit templates + auditdata."""
import sys, html as H
sys.path.insert(0, "/root/projects/jg/2026-audit-koole-chromium-vi/working")
from report_data_findings import FINDINGS, CONFORM_DETAILS
from report_data_rest import MATRIX, PROPOSALS, SOURCES

W = "/root/projects/jg/2026-audit-koole-chromium-vi/working"
OUT = "/root/projects/jg/2026-audit-koole-chromium-vi/deliverables/html/003.056_CrVI_Compliance_Audit_en_Herzieningsvoorstel_v1.0.html"
LOGO = open("/root/projects/jg/assets/branding/logo-white-base64.txt").read().strip()

e = H.escape

def pc(k):
    k = str(k).replace("*", "")
    if k.startswith("P1"): return "p1"
    if k.startswith("P2"): return "p2"
    if "Conform" in k: return "cf"
    return ""

def table(headers, rows, color_last=False):
    th = "".join(f"<th>{h}</th>" for h in headers)
    tr = []
    for r in rows:
        if color_last:
            tds = "".join(f"<td>{e(c)}</td>" for c in r[:-1])
            tds += f'<td><span class="badge {pc(r[-1])}">{e(r[-1])}</span></td>'
        else:
            tds = "".join(f"<td>{e(c)}</td>" for c in r)
        tr.append(f"<tr>{tds}</tr>")
    return ('<div class="tablewrap"><table><thead><tr>' + th + '</tr></thead><tbody>'
            + "".join(tr) + '</tbody></table></div>')

LEGAL = table(["Aspect", "Beoordeling"], [
    ["Arbobesluit-artikelen (4.2, 4.10a, 4.10c, 4.13, 4.15, 4.21)", "Correct"],
    ["REACH Bijlage XIV — sunset dates 2017/2019", "Correct"],
    ["Bal — afvalstroomkader", "Correct"],
    ["AI-blad 77 — grenswaarde 1 µg/m³ per 1-3-2017", "Correct"],
    ["SER-grenswaarde — 1 µg/m³ (8-uurs TGG)", "Correct"],
    ["Eindoordeel juridische review", "Juridisch verifieerbaar — geen correcties noodzakelijk"]],
    color_last=True)

MATRIX_HTML = table(["#", "Eis", "Bron", "Bevinding brondocument", "Klasse"], MATRIX, color_last=True)
PROPOSALS_HTML = table(["#", "Voorstel", "Kader", "Prioriteit"], PROPOSALS, color_last=True)
SOURCES_HTML = "".join(f'<li id="src{i}"><strong>[{i}]</strong> {e(s)}</li>' for i, s in enumerate(SOURCES, 1))

FINDINGS_HTML = ""
for num, titel, klasse, eis, bev, clas in FINDINGS:
    FINDINGS_HTML += (f'<section class="finding {pc(klasse)}">'
                      f'<h3><span class="fnum">{num}</span> {e(titel)} '
                      f'<span class="badge {pc(klasse)}">{klasse}</span></h3>'
                      f'<p><strong>Eis:</strong> {e(eis)}</p>'
                      f'<p><strong>Bevinding:</strong> {e(bev)}</p>'
                      f'<p><strong>Classificatie:</strong> {e(clas)}</p></section>')
CONF_HTML = "".join(f'<p class="conf"><span class="fnum">{n}</span> {e(t)}</p>' for n, t in CONFORM_DETAILS)

page = (open(f"{W}/html_template_part1.html").read()
        + open(f"{W}/html_template_part2.html").read())
for k, v in {"{{LOGO}}": LOGO, "{{LEGAL}}": LEGAL, "{{MATRIX}}": MATRIX_HTML,
             "{{FINDINGS}}": FINDINGS_HTML, "{{CONF}}": CONF_HTML,
             "{{PROPOSALS}}": PROPOSALS_HTML, "{{SOURCES}}": SOURCES_HTML}.items():
    page = page.replace(k, v)
assert "{{" not in page, "onvervangen placeholder!"
open(OUT, "w").write(page)
print("OK:", OUT, f"({len(page)//1024} KB)")
