"""Render dev/tmp_report_payload.json (from smoke_recon_v2_report.exs) through
the real V2 report writer — closes the Elixir→Python seam without CloudI.

Run: services\\recon_engine_py\\.venv\\Scripts\\python dev\\render_report_payload.py
"""

import io
import sys
import json
import base64
from pathlib import Path

REPO_ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(REPO_ROOT / "services" / "recon_report_py"))

import openpyxl  # noqa: E402
from report_v2 import build_report_v2  # noqa: E402

payload = json.loads((REPO_ROOT / "dev" / "tmp_report_payload.json").read_text(encoding="utf-8"))

b64 = build_report_v2(payload)
wb = openpyxl.load_workbook(io.BytesIO(base64.b64decode(b64)))

assert wb.sheetnames[0] == "Summary", wb.sheetnames
assert "BankCard-GW-Matched" in wb.sheetnames, wb.sheetnames

summary = wb["Summary"]
flat = [c.value for row in summary.iter_rows() for c in row if c.value is not None]
assert summary["A1"].value == "Sahyadri Hospitals", summary["A1"].value
assert any(str(v).startswith("Unit-wise") for v in flat), "tenant location label not used"
assert any("exact-4key" in str(v) for v in flat), "tier breakdown missing"

matched = wb["BankCard-GW-Matched"]
assert matched.max_row == 3, f"expected 2 data rows, got {matched.max_row - 1}"

print("sheets:", wb.sheetnames)
print("SMOKE R3 (Python side) PASSED")
