render-workshop-r12-delivery.py 5.4 KB

123456789101112131415161718192021222324252627282930313233
  1. import importlib.util
  2. import json
  3. import shutil
  4. from pathlib import Path
  5. ROOT=Path(__file__).resolve().parents[1]
  6. spec=importlib.util.spec_from_file_location('render_run',ROOT/'scripts/build-workshop-self-run.py')
  7. builder=importlib.util.module_from_spec(spec);spec.loader.exec_module(builder)
  8. out=builder.FINAL
  9. rerun=out/'rerun'
  10. builder.render_run(builder.BASE,'第一轮|按原手册完整自演',builder.BASE/'manual-source.json','<a href="../workshop-validated-final-20261110/index.html">查看优化后定稿与第二轮 ↗</a>')
  11. builder.render_run(rerun,'第二轮|使用r12定稿完整自演',rerun/'manual-source.json','<a href="../index.html">返回定稿与两轮比较</a><a href="../康师傅工作坊操作手册-r12本地定稿.html">操作手册</a>')
  12. shutil.copytree(builder.BASE,out/'first-run',dirs_exist_ok=True)
  13. p=out/'first-run/index.html'
  14. p.write_text(p.read_text('utf-8').replace('../workshop-validated-final-20261110/index.html','../index.html'),encoding='utf-8')
  15. shutil.copyfile(ROOT/'docs/workshop-final-local-20261110/康师傅工作坊操作手册-本地定稿.html',out/'first-run/使用的原手册.html')
  16. comparison=builder.markdown((out/'优化与两轮对比.md').read_text('utf-8'))
  17. html='''<!doctype html><html lang="zh-CN"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>康师傅工作坊|本地定稿与两轮演练</title><style>'''+builder.CSS+'''main{grid-template-columns:210px minmax(0,1fr)}.entry-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.entry-grid a{padding:18px;background:#f7f8f3;border:1px solid #dde3d6;border-radius:8px;text-decoration:none}.entry-grid b{display:block;font-size:18px}.entry-grid small{color:#727d6b}@media(max-width:850px){main{grid-template-columns:1fr}.entry-grid{grid-template-columns:1fr}} </style>
  18. <header><small>康师傅 · 产品创新工作坊 / 2026.11.10</small><h1>本地定稿与两轮演练</h1><p>Skill与操作手册已配套为 <b>r12-local-final</b>。完整记录、真实资料和修改依据一并保留。</p><p class="notice">同一助手自演两轮;资料读取与安装/计算真实执行,学员回应和业务条件模拟。不是独立评测或真实员工试验。</p></header>
  19. <main><nav><a href="#files">定稿文件</a><a href="#decision">这次研究的判断</a><a href="#comparison">修改与对比</a><a href="#checks">核验与边界</a></nav><div class="reading">
  20. <section class="summary" id="files"><div class="label">直接打开</div><h2>一套定稿,完整过程可查</h2><div class="entry-grid">
  21. <a href="康师傅工作坊操作手册-r12本地定稿.html"><b>操作手册 ↗</b><small>15节 · 单一路线 · 提示词展开 · 本地安装资源配套</small></a>
  22. <a href="康师傅工作坊Skill-r12本地定稿.zip"><b>Skill定稿包 ↗</b><small>44公开文件 · 运行授权脚本保持 · 包含本地安装器</small></a>
  23. <a href="rerun/index.html"><b>第二轮完整演练 ↗</b><small>最新提示词、逐章对话、产出和七类成果直达</small></a>
  24. <a href="first-run/index.html"><b>第一轮基线记录 ↗</b><small>用户指定原手册 · r10隔离安装 · 15节完整内容</small></a></div>
  25. <div class="tools"><a href="rerun/完整对话记录.md">第二轮完整对话</a><a href="first-run/完整对话记录.md">第一轮完整对话</a><a href="rerun/最小验证执行单.md">最小验证执行单</a><a href="installation/skills/ksf-workshop-runtime/SKILL.md">直接查看Skill入口</a><a href="本地定稿与两轮记录.zip">整套文件下载</a></div></section>
  26. <section class="summary" id="decision"><div class="label">案例结论</div><h2>先证明值得改的一步</h2><p class="decision">现品已有便利与口感的正向反馈。先观察现售碗装是否仍有具体问题,再决定是否比较信息引导;当前依据不支持直接选新沥水结构。</p><p>第二轮没有为显得更好而改产品结论。改进在于员工少重复回答、负责人更容易找到取舍、算例与事实更清楚,以及下一项观察已有可用工具。</p><div class="paths"><div><b>固定真实材料</b><br>7款商品、49评价、10条定向社媒;45评价可用,43独立文本。</div><div><b>保留全池</b><br>O1信息、O2投料、O3结构在V1–V3都有去向;研究线索不当已验证机会。</div><div><b>成果能阅读</b><br>市场、社媒、证言、候选卡、论证清单、买点与提案均有本地正文。</div></div></section>
  27. <section class="summary" id="comparison">'''+comparison+'''</section>
  28. <section class="resources" id="checks"><h2>核验记录</h2><div class="tools"><a href="核验结果.json">汇总核验</a><a href="内容与安装核验.json">安装/来源/计算检查</a><a href="浏览器核验.json">手册和报告页面检查</a><a href="定稿清单.json">版本及受保护文件</a><a href="优化与两轮对比.md">修改记录原文</a><a href="rerun/证据索引.html">真实原话与出处</a></div><p>企业账套待后续接入。本次没有生产业务写入;宿主自动加载、真实人员研究及业务保存/看板归属不计作通过。安装包当前支持完整r11-local严格升级,旧r10和未知改动版本安全停止;未覆盖员工电脑安装。</p></section>
  29. </div></main><footer>仅本地定稿;原手册留存,正式站点与已部署Skill未更改。</footer></html>'''
  30. (out/'index.html').write_text(html,encoding='utf-8')
  31. print(json.dumps({'ok':True,'root':str(out),'rounds':2,'stepsPerRound':15},ensure_ascii=False))