#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""把「酶学知识平台」和「宝锐产品谱系」合并进 v5 工作台，输出一个自包含 HTML。"""
import json,pathlib
ROOT=pathlib.Path('/Users/liuxinyuan/Desktop/Hermes输出-工作类')
V5=ROOT/'工具/蛋白结构与性能工作台_v5_交互重做_20261031_V01.html'
PLATFORM=ROOT/'工具/酶学知识平台_20261031_V01.html'
LINEAGE=ROOT/'工具/宝锐产品谱系_20261031_V01.html'
OUT=ROOT/'工具/宝锐酶学工作台_合并版_20261031_V02.html'

v5=V5.read_text(encoding='utf-8')
platform=PLATFORM.read_text(encoding='utf-8').replace('</head>','<style>.toplinks{display:none!important}</style></head>',1)
lineage=LINEAGE.read_text(encoding='utf-8')

def emb(s):
    return json.dumps(s,ensure_ascii=False).replace('</','<\\/')

# 入口：产品谱系 + 平台
mut='<button class="qbtn" id="mutTabBtn" type="button">🧬 功能与突变位点</button>'
assert mut in v5
add='<button class="qbtn" id="lineageBtn" type="button">🧬 宝锐产品谱系</button>'
if 'id="lineageBtn"' not in v5:
    v5=v5.replace(mut,mut+add,1)

old='<a class="qbtn" href="酶学知识平台_20261031_V01.html" style="text-decoration:none;display:inline-flex;align-items:center">📚 酶学知识平台</a>'
new='<button class="qbtn" id="platformBtn" type="button">📚 酶学知识平台</button>'
assert old in v5
v5=v5.replace(old,new,1)
v5=v5.replace('<title>蛋白结构与性能关联工作台 · 交互重做</title>','<title>宝锐酶学工作台 · 结构 / 突变 / 产品谱系</title>',1)

def overlay(name,title,sub):
    return f'''
<div id="{name}Overlay" style="display:none;position:fixed;inset:0;z-index:9999;background:#fff">
  <div style="height:40px;display:flex;align-items:center;gap:10px;padding:0 12px;background:#fff;border-bottom:1px solid #dbe5f3;font-size:12px;color:#172033">
    <button id="{name}Close" type="button" style="border:1px solid #1852B6;background:#1852B6;color:#fff;border-radius:999px;padding:5px 11px;font-size:11.5px;font-weight:800;cursor:pointer">← 返回工作台</button>
    <b style="color:#0d47a1">{title}</b><span style="color:#6b7684">{sub}</span>
    <span style="margin-left:auto;color:#8a96a6">按 Esc 也可关闭</span>
  </div>
  <iframe id="{name}Frame" title="{title}" style="width:100%;height:calc(100% - 40px);border:0;display:block"></iframe>
</div>
<script type="application/json" id="{name}HTML">__{name.upper()}_JSON__</script>
'''

blocks=overlay('lineage','宝锐产品谱系','1/2/3 代 · 修饰方式 · 主酶 mix').replace('__LINEAGE_JSON__',emb(lineage))
blocks+=overlay('platform','酶学知识平台','方法 · 路径 · 实验 · 文献约束模拟').replace('__PLATFORM_JSON__',emb(platform))

script='''
<script>
(function(){
  var items=[
    {btn:'lineageBtn',ov:'lineageOverlay',fr:'lineageFrame',cl:'lineageClose',json:'lineageHTML',param:'lineage'},
    {btn:'platformBtn',ov:'platformOverlay',fr:'platformFrame',cl:'platformClose',json:'platformHTML',param:'platform'}
  ];
  function open(it){
    var frame=document.getElementById(it.fr);
    if(!frame.getAttribute('srcdoc')){
      try{frame.srcdoc=JSON.parse(document.getElementById(it.json).textContent);}
      catch(e){frame.srcdoc='<p style="font-family:sans-serif;padding:20px">内容加载失败：'+e+'</p>';}
    }
    document.getElementById(it.ov).style.display='block';
    document.body.style.overflow='hidden';
  }
  function hide(it){document.getElementById(it.ov).style.display='none';document.body.style.overflow='';}
  items.forEach(function(it){
    var b=document.getElementById(it.btn),c=document.getElementById(it.cl);
    if(b)b.addEventListener('click',function(){open(it);});
    if(c)c.addEventListener('click',function(){hide(it);});
    try{if(new RegExp('[?&]'+it.param+'=1').test(location.search))setTimeout(function(){open(it);},260);}catch(e){}
  });
  document.addEventListener('keydown',function(e){if(e.key==='Escape')items.forEach(hide);});
  window.__BIORI_VIEWS=items;
})();
</script>
'''
assert '</body>' in v5
v5=v5.replace('</body>',blocks+script+'</body>',1)
OUT.write_text(v5,encoding='utf-8')
print('WROTE',OUT,'MB',round(OUT.stat().st_size/1024/1024,3))
print('lineage bytes',len(lineage),'platform bytes',len(platform))
