#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Build report_template.html from the proven 2026-09-05 report by tokenizing
volatile fields (title / cycle dates / data array / verification bar)."""
import io, re, sys

src = "/data/www/files/weekly_opportunity_20260905.html"
dst = "/data/www/files/report_template.html"
lines = io.open(src, encoding="utf-8").read().split("\n")

out = []
replaced_data = False
for ln in lines:
    if ln.startswith("var allProjects = ["):
        out.append("var allProjects = __PROJECTS_JSON__;")
        replaced_data = True
        continue
    out.append(ln)
assert replaced_data, "data line not found"

html = "\n".join(out)

subs = [
    ("<title>2026年9月 第1周 商业机会资讯</title>",
     "<title>__TITLE__</title>"),
    ("<h1>2026年9月 第1周 商业机会资讯</h1>",
     "<h1>__TITLE__</h1>"),
    ('<div class="meta">数据周期：2026-08-05 至 2026-09-05　|　信息类型：设计标 / 意向公开 / 招标公告 / 中标公告 / 预算表　|　生成时间：2026-08-29</div>',
     '<div class="meta">数据周期：__CYCLE_START__ 至 __CYCLE_END__　|　信息类型：设计标 / 意向公开 / 招标公告 / 中标公告 / 预算表　|　生成时间：__GEN_DATE__</div>'),
    ("'<div class=\"it\"><span class=\"k\">链接验证通过率</span><span class=\"v\">100% (23/23)</span></div>'",
     "'<div class=\"it\"><span class=\"k\">链接验证通过率</span><span class=\"v\">__V_RATE__</span></div>'"),
    ("'<div class=\"it\"><span class=\"k\">截图留存</span><span class=\"v\">23/23条</span></div>'",
     "'<div class=\"it\"><span class=\"k\">截图留存</span><span class=\"v\">__V_SHOTS__</span></div>'"),
    ("'<div class=\"it\"><span class=\"k\">文本快照</span><span class=\"v\">23/23条</span></div>'",
     "'<div class=\"it\"><span class=\"k\">文本快照</span><span class=\"v\">__V_SNAPS__</span></div>'"),
    ("'<div class=\"it\"><span class=\"k\">数据周期</span><span class=\"v\">2026-08-05 ~ 2026-09-05</span></div>'",
     "'<div class=\"it\"><span class=\"k\">数据周期</span><span class=\"v\">__CYCLE_START__ ~ __CYCLE_END__</span></div>'"),
    ("'<div class=\"it\"><span class=\"k\">截图目录</span><span class=\"v\">/screenshots/20260905/</span></div>'",
     "'<div class=\"it\"><span class=\"k\">截图目录</span><span class=\"v\">/screenshots/__DATE_DIR__/</span></div>'"),
    ("'<div class=\"it\"><span class=\"k\">快照目录</span><span class=\"v\">/snapshots/20260905/</span></div>'",
     "'<div class=\"it\"><span class=\"k\">快照目录</span><span class=\"v\">/snapshots/__DATE_DIR__/</span></div>'"),
    ('<div class="region-hd ot"><div class="t">其他地区</div><div class="d">甘肃等 · ',
     '<div class="region-hd ot"><div class="t">其他地区</div><div class="d">重庆 / 云南 / 甘肃等 · '),
]
for a, b in subs:
    if a not in html:
        print("MISS:", a[:70])
    html = html.replace(a, b)

io.open(dst, "w", encoding="utf-8").write(html)
print("template written:", dst, len(html), "bytes")
print("tokens:", sorted(set(re.findall(r"__[A-Z_]+__", html))))
