#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""把酶学知识平台合并进蛋白工作台 v5，输出一个自包含 HTML。"""
import json, pathlib, re

ROOT=pathlib.Path('/Users/liuxinyuan/Desktop/Hermes输出-工作类')
V5=ROOT/'工具/蛋白结构与性能工作台_v5_交互重做_20261031_V01.html'
PLATFORM=ROOT/'工具/酶学知识平台_20261031_V01.html'
OUT=ROOT/'工具/宝锐酶学工作台_合并版_20261031_V01.html'

v5=V5.read_text(encoding='utf-8')
platform=PLATFORM.read_text(encoding='utf-8')

# 平台嵌入 iframe 时隐藏“返回工作台”链接（外层有统一关闭按钮）
platform=platform.replace('</head>','<style>.toplinks{display:none!important}</style></head>',1)
# JSON 内嵌，防止 </script> 截断
pd=json.dumps(platform,ensure_ascii=False).replace('</','<\\/')

# 把外链入口改成按钮
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, 'platform link not found'
v5=v5.replace(old,new,1)
v5=v5.replace('<title>蛋白结构与性能关联工作台 · 交互重做</title>','<title>宝锐酶学工作台 · 结构 / 突变 / 知识平台</title>',1)

overlay='''
<div id="platformOverlay" 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="platformClose" 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">酶学知识平台</b><span style="color:#6b7684">方法 · 路径 · 实验 · 文献约束模拟</span>
    <span style="margin-left:auto;color:#8a96a6">按 Esc 也可关闭</span>
  </div>
  <iframe id="platformFrame" title="酶学知识平台" style="width:100%;height:calc(100% - 40px);border:0;display:block"></iframe>
</div>
<script type="application/json" id="platformHTML">__PLATFORM_JSON__</script>
<script>
(function(){
  var overlay=document.getElementById('platformOverlay');
  var frame=document.getElementById('platformFrame');
  var btn=document.getElementById('platformBtn');
  var close=document.getElementById('platformClose');
  function open(){
    if(!frame.getAttribute('srcdoc')){
      try{ frame.srcdoc=JSON.parse(document.getElementById('platformHTML').textContent); }
      catch(e){ frame.srcdoc='<p style="font-family:sans-serif;padding:20px">平台内容加载失败：'+e+'</p>'; }
    }
    overlay.style.display='block';
    document.body.style.overflow='hidden';
  }
  function hide(){ overlay.style.display='none'; document.body.style.overflow=''; }
  if(btn) btn.addEventListener('click',open);
  if(close) close.addEventListener('click',hide);
  document.addEventListener('keydown',function(e){ if(e.key==='Escape') hide(); });
  try{ if(/[?&]platform=1/.test(location.search)) setTimeout(open,260); }catch(e){}
})();
</script>
'''.replace('__PLATFORM_JSON__',pd)

assert '</body>' in v5
v5=v5.replace('</body>',overlay+'\n</body>',1)
OUT.write_text(v5,encoding='utf-8')
print('WROTE',OUT,'MB',round(OUT.stat().st_size/1024/1024,3))
print('platform bytes',len(platform),'json bytes',len(pd))
