# -*- coding: utf-8 -*-
import os

SKILL = '/Users/liuxinyuan/.hermes/skills/guizang-ppt-skill'
OUT = '/Users/liuxinyuan/Desktop/Hermes输出-工作类/对外物料/客户宣讲_20260921/demo'
os.makedirs(OUT, exist_ok=True)

slides_a = '''<section class="slide hero dark">
  <div class="chrome">
    <div>客户宣讲 · 2026.09</div>
    <div>Vol.01</div>
  </div>
  <div class="frame" style="display:grid; gap:4vh; align-content:center; min-height:80vh">
    <div class="kicker" data-anim>宝锐生物 · 诊断原料</div>
    <h1 class="h-hero" data-anim>诊断原料</h1>
    <h2 class="h-sub" data-anim>整体解决方案</h2>
    <p class="lead" style="max-width:60vw" data-anim>
      分子诊断原料 · 从体系到货号的一站式对接
    </p>
    <div class="meta-row" data-anim>
      <span>守护生命健康，缔造美好生活</span>
    </div>
  </div>
  <div class="foot">
    <div>珠海宝锐生物科技有限公司</div>
    <div>— 2026 —</div>
  </div>
</section>

<section class="slide light">
  <div class="chrome">
    <div>宝锐 · 核心能力</div>
    <div>Data · 02 / 02</div>
  </div>
  <div class="frame" style="padding-top:3vh">
    <div class="kicker" data-anim>四个数字，四种能力。</div>
    <h2 class="h-xl" data-anim>宝锐特色能力</h2>
    <p class="lead" style="margin-bottom:2vh" data-anim>快速 · 冻干 · NA 控制 · 规模。</p>
    <div class="grid-6" style="margin-top:2vh">
      <div class="stat-card" data-anim>
        <div class="stat-label">qRT-PCR</div>
        <div class="stat-nb">20 <span class="stat-unit">min</span></div>
        <div class="stat-note">检测用时低至 20 分钟</div>
      </div>
      <div class="stat-card" data-anim>
        <div class="stat-label">Freeze-dried</div>
        <div class="stat-nb">18 <span class="stat-unit">月</span></div>
        <div class="stat-note">25℃ 常温放置</div>
      </div>
      <div class="stat-card" data-anim>
        <div class="stat-label">NA Residue</div>
        <div class="stat-nb">&lt;8×10⁻⁴</div>
        <div class="stat-note">宿主核酸残留 copies/U</div>
      </div>
      <div class="stat-card" data-anim>
        <div class="stat-label">Speed</div>
        <div class="stat-nb">1kb<span class="stat-unit">/10s</span></div>
        <div class="stat-note">扩增速率</div>
      </div>
      <div class="stat-card" data-anim>
        <div class="stat-label">Multiplex</div>
        <div class="stat-nb">4<span class="stat-unit">通道</span></div>
        <div class="stat-note">4 靶标多重检测</div>
      </div>
      <div class="stat-card" data-anim>
        <div class="stat-label">Campus</div>
        <div class="stat-nb">2.6<span class="stat-unit">万㎡</span></div>
        <div class="stat-note">总部园区 2026 投用</div>
      </div>
    </div>
  </div>
  <div class="foot">
    <div>口径以宝锐官方资料为准</div>
    <div>Core Capability</div>
  </div>
</section>'''

slides_b = '''<section class="slide accent" data-animate="hero" data-slide-id="cover">
  <div class="canvas-card">
    <canvas class="ascii-bg" aria-hidden="true"></canvas>
    <div class="chrome-min">
      <div class="l">宝锐生物 · 客户宣讲</div>
      <div class="r">SS · 2026.09 · 01 / 02</div>
    </div>
    <div style="flex:1;padding:0;display:grid;grid-template-rows:auto 1fr auto;gap:2.6vh">
      <div data-anim="kicker" class="t-meta" style="color:rgba(255,255,255,.78);letter-spacing:.22em">DIAGNOSTIC RAW MATERIALS</div>
      <h1 data-anim="title" style="align-self:center;font-family:var(--sans),var(--sans-zh);font-weight:200;font-size:min(11.6vw,19vh);line-height:.94;letter-spacing:-.025em;color:#fff">诊断原料<br/><span style="font-style:italic;font-weight:300">整体解决方案</span></h1>
      <div data-anim="bottom" style="display:grid;grid-template-rows:auto auto;gap:1.6vh;border-top:1px solid rgba(255,255,255,.22);padding-top:2vh">
        <div data-anim="lead" class="lead" style="max-width:52ch;color:rgba(255,255,255,.86)">分子诊断原料 · 从体系到货号的一站式对接。</div>
        <div style="display:flex;justify-content:space-between;align-items:end">
          <div class="t-meta" style="color:rgba(255,255,255,.6)">珠海宝锐生物科技有限公司</div>
          <div class="t-meta" style="color:rgba(255,255,255,.6)">→ swipe / arrow keys</div>
        </div>
      </div>
    </div>
  </div>
</section>

<section class="slide light" data-animate="tower-grow" data-slide-id="kpi">
  <div class="canvas-card">
    <div class="chrome-min">
      <div class="l">宝锐 · 核心能力</div>
      <div class="r">02 / 02</div>
    </div>
    <div style="flex:1;display:flex;flex-direction:column;gap:4vh;padding:0">
      <div>
        <div class="t-meta" style="letter-spacing:.22em;margin-bottom:1.6vh">CORE CAPABILITY</div>
        <h2 style="font-family:var(--sans),var(--sans-zh);font-weight:200;font-size:min(5vw,9vh);line-height:1;letter-spacing:-.02em;color:var(--text-primary)">四个数字，<span style="font-style:italic;font-weight:300">四种能力</span></h2>
      </div>
      <div class="kpi-tower-row">
        <div class="tower-col">
          <i data-lucide="timer"></i>
          <span class="num-mega">20<span style="font-size:.4em">min</span></span>
          <span class="lbl">快速扩增</span>
          <div class="bar-tower" style="--h:30vh"></div>
        </div>
        <div class="tower-col">
          <i data-lucide="snowflake"></i>
          <span class="num-mega">18<span style="font-size:.4em">月</span></span>
          <span class="lbl">常温冻干</span>
          <div class="bar-tower" style="--h:34vh"></div>
        </div>
        <div class="tower-col">
          <i data-lucide="shield-check"></i>
          <span class="num-mega">&lt;8×10⁻⁴</span>
          <span class="lbl">NA 残留</span>
          <div class="bar-tower" style="--h:26vh"></div>
        </div>
        <div class="tower-col">
          <i data-lucide="building-2"></i>
          <span class="num-mega">2.6万<span style="font-size:.4em">㎡</span></span>
          <span class="lbl">总部园区</span>
          <div class="bar-tower" style="--h:22vh"></div>
        </div>
      </div>
    </div>
  </div>
</section>'''

notes = '''[
  { id: 'cover', title: '封面', minutes: 1, purpose: '亮出宝锐诊断原料的整体定位', talk: ['自我介绍 + 一句话：今天讲行业往哪走 / 宝锐有什么 / 怎么接上你项目'] },
  { id: 'kpi', title: '核心能力', minutes: 2, purpose: '四个数字让客户记住宝锐的四种能力', talk: ['20min 快速、18月冻干、NA 控制、2.6万㎡规模，逐个点一下即可'] }
]'''

# 风格 A
ta = open(f'{SKILL}/assets/template.html').read()
ta = ta.replace('[必填] 替换为 PPT 标题 · Deck Title', '宝锐诊断原料 · 客户宣讲 DEMO（风格A 电子杂志风）')
ta = ta.replace('<!-- SLIDES_HERE -->', slides_a)
ta = ta.replace('const SPEAKER_NOTES = [', 'const SPEAKER_NOTES = ' + notes + ';\nwindow.__NOTES_IGNORED__ = [')
out_a = f'{OUT}/风格A_电子杂志风_demo.html'
open(out_a, 'w').write(ta)
print('A 生成:', out_a, len(ta), 'bytes')

# 风格 B
tb = open(f'{SKILL}/assets/template-swiss.html').read()
tb = tb.replace('[必填] 替换为 PPT 标题 · Deck Title', '宝锐诊断原料 · 客户宣讲 DEMO（风格B 瑞士国际主义风）')
marker = '<!-- SLIDES_HERE'
idx = tb.find(marker)
after1 = tb.find('</section>', idx)
after2 = tb.find('</section>', after1 + 1)
tb = tb[:idx] + slides_b + tb[after2 + len('</section>'):]
tb = tb.replace('const SPEAKER_NOTES = [', 'const SPEAKER_NOTES = ' + notes + ';\nwindow.__NOTES_IGNORED__ = [', 1)
out_b = f'{OUT}/风格B_瑞士国际主义风_demo.html'
open(out_b, 'w').write(tb)
print('B 生成:', out_b, len(tb), 'bytes')
