"""Generate a static release-check report from labeled sample response fixtures."""

import csv
import html
from pathlib import Path

root = Path(__file__).parent
with (root / "checks.csv").open(newline="") as source:
    checks = list(csv.DictReader(source))

findings = []
for check in checks:
    status = int(check["http_status"])
    size = float(check["transfer_kb"])
    severity = "fail" if status >= 400 else "review" if size > 500 else "pass"
    finding = f"HTTP {status}. Replace the link or restore the page." if severity == "fail" else f"{size:,.0f} KB exceeds the 500 KB review budget." if severity == "review" else "Response and transfer size within budget."
    findings.append({**check, "severity": severity, "finding": finding})

with (root / "findings.csv").open("w", newline="") as output:
    writer = csv.DictWriter(output, fieldnames=list(findings[0]))
    writer.writeheader()
    writer.writerows(findings)

rows = "\n".join(
    f'<tr data-severity="{row["severity"]}"><td><span class="status {row["severity"]}">{row["severity"].upper()}</span></td>'
    f'<td><code>{html.escape(row["path"])}</code><small>{html.escape(row["finding"])}</small></td>'
    f'<td>{row["http_status"]}</td><td>{float(row["transfer_kb"]):,.0f} KB</td><td>{html.escape(row["owner"])}</td></tr>'
    for row in findings
)
replacements = {
    "ROWS": rows,
    "COUNT": str(len(findings)),
    "PASS": str(sum(row["severity"] == "pass" for row in findings)),
    "REVIEW": str(sum(row["severity"] == "review" for row in findings)),
    "FAIL": str(sum(row["severity"] == "fail" for row in findings)),
}
report = (root / "template.html").read_text()
for key, value in replacements.items():
    report = report.replace("{{" + key + "}}", value)
(root / "index.html").write_text(report)
print(f"Generated index.html and findings.csv from {len(findings)} sample checks.")
