#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""构建独立「酶学知识平台」页面，并在蛋白工作台 v5 加入入口。"""
import json, pathlib, re, subprocess

ROOT=pathlib.Path('/Users/liuxinyuan/Desktop/Hermes输出-工作类')
V5=ROOT/'工具/蛋白结构与性能工作台_v5_交互重做_20261031_V01.html'
TPL=ROOT/'资料/enzyme_platform_template.html'
CSS=ROOT/'资料/enzyme_platform.css'
JS=ROOT/'资料/enzyme_platform.js'
DATA=ROOT/'数据/enzyme_knowledge_platform_20261031.json'
OUT=ROOT/'工具/酶学知识平台_20261031_V01.html'
CHECK=pathlib.Path('/Users/liuxinyuan/.hermes/profiles/zone-b/cache/scratch/enzyme_platform_check.js')

v5=V5.read_text(encoding='utf-8')
tpl=TPL.read_text(encoding='utf-8')
css=CSS.read_text(encoding='utf-8')
js=JS.read_text(encoding='utf-8')
data=json.loads(DATA.read_text(encoding='utf-8'))

# 品牌 CSS / header
m=re.search(r'/\* ===== bior-brand-v1.*?(?=</style>)', v5, re.S)
brand_css=m.group(0) if m else ''
start=v5.index('<div class="bior-header"')
end=v5.index('<div class="wrap">', start)
header=v5[start:end]
header=header.replace('蛋白结构与性能 · 4 酶 + 检索问答 + 突变','酶学知识平台 · 方法 · 路径 · 模拟')

data_json=json.dumps(data,ensure_ascii=False,separators=(',',':')).replace('</','<\\/')
html=tpl.replace('{{BRAND_CSS}}',brand_css).replace('{{PAGE_CSS}}',css).replace('{{HEADER}}',header).replace('{{DATA}}',data_json).replace('{{JS}}',js)
for token in ['{{BRAND_CSS}}','{{PAGE_CSS}}','{{HEADER}}','{{DATA}}','{{JS}}']:
    assert token not in html, token
OUT.write_text(html,encoding='utf-8')

# v5 加入入口（仅 v5；v4 保留旧交互）
if '酶学知识平台_20261031_V01.html' not in v5:
    old='<button class="qbtn" id="mutTabBtn" type="button">🧬 功能与突变位点</button>'
    if old in v5:
        add=old+'<a class="qbtn" href="酶学知识平台_20261031_V01.html" style="text-decoration:none;display:inline-flex;align-items:center">📚 酶学知识平台</a>'
        v5=v5.replace(old,add,1)
        V5.write_text(v5,encoding='utf-8')
        print('v5 entry added')

CHECK.write_text(js,encoding='utf-8')
r=subprocess.run(['node','--check',str(CHECK)],capture_output=True,text=True)
print('WROTE',OUT,'MB',round(OUT.stat().st_size/1024/1024,3))
print('node',r.returncode,r.stderr[-500:])
print('counts',data['meta']['counts'])
