Explorar el Código

feat: 学习复盘报告 v1(48h采集230条+三问+9屏deck+交付物墙)

王慧程 hace 1 mes
commit
a72ea33ad7

+ 17 - 0
README.md

@@ -0,0 +1,17 @@
+# 学习复盘报告 · 王慧程(wanghuicheng-001)
+
+> 混沌AI院 AIPM 研修 · 48小时 Agent 工作复盘 · 2026-09-13
+> 由 skill-study-report 自动生成(采集 230 条工作痕迹 → 三问追问 → skill-present 级 HTML PPT)
+
+## 在线浏览
+- 直接打开 `report.html`(Gogs 网页预览不支持 SPA,建议克隆后本地打开或访问 Storage 链接)
+- 报告数据:`report-data.json`(含全部采集明细,可溯源)
+
+## 结构
+- `report.html` — 复盘报告(9屏翻页式 deck)
+- `deliverables/` — 交付物墙 iframe 嵌入的 HTML 成果
+- `lib/` — skill-present 全套独立运行时
+
+## 发布状态
+- Gogs: ✅ 本仓库
+- Storage: ⚠️ STS 云函数不可达,按技能降级策略走 Gogs 通道

+ 295 - 0
deliverables/9月销售过程管理分析报告-对比8月案例.html

@@ -0,0 +1,295 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>9月销售过程管理分析报告 v2 · 商机→动作→原因→扣分</title>
+<style>
+:root{--ink:#1f2937;--ink2:#4b5563;--ink3:#9ca3af;--line:#e5e7eb;--bg:#f6f8fb;--card:#fff;
+--red:#b91c1c;--red-bg:#fef2f2;--red-line:#fecaca;--green:#15803d;--green-bg:#f0fdf4;--green-line:#bbf7d0;
+--amber:#b45309;--amber-bg:#fffbeb;--accent:#1d4ed8;--accent-bg:#eff6ff;}
+*{box-sizing:border-box;margin:0;padding:0}
+body{font-family:-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);line-height:1.75}
+.wrap{max-width:1180px;margin:0 auto;padding:28px 20px 80px}
+.hero{background:linear-gradient(135deg,#0f2b5b,#1d4ed8);color:#fff;border-radius:16px;padding:32px 40px;margin-bottom:22px}
+.hero h1{font-size:25px}
+.hero .sub{margin-top:8px;font-size:13.5px;opacity:.92}
+.hero .tags{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
+.tag{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:3px 14px;font-size:12px}
+.flow{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:13px;flex-wrap:wrap}
+.flow .step{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.4);border-radius:8px;padding:4px 12px;font-weight:600}
+.flow .arr{opacity:.7}
+.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:22px}
+.kpi{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px}
+.kpi .v{font-size:26px;font-weight:700;color:var(--accent)}
+.kpi .v.red{color:var(--red)}.kpi .v.green{color:var(--green)}.kpi .v.amber{color:var(--amber)}
+.kpi .l{font-size:12px;color:var(--ink2);margin-top:2px}
+.kpi .d{font-size:11.5px;color:var(--ink3);margin-top:4px}
+.sec{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:26px 30px;margin-bottom:22px}
+.sec h2{font-size:19px;padding-bottom:10px;border-bottom:2px solid var(--accent);margin-bottom:16px}
+.sec h2 .no{display:inline-block;background:var(--accent);color:#fff;border-radius:8px;font-size:13px;padding:2px 10px;margin-right:10px;vertical-align:3px}
+.sec h3{font-size:15px;color:var(--accent);margin:18px 0 8px}
+.sec p,.sec li{font-size:13.5px;color:var(--ink2)}
+.sec li{margin:4px 0 4px 22px}
+table{width:100%;border-collapse:collapse;margin:10px 0;font-size:12.5px}
+th{background:#f1f5f9;padding:7px 9px;border:1px solid var(--line);text-align:left;font-weight:600;white-space:nowrap}
+td{padding:6px 9px;border:1px solid var(--line);vertical-align:middle}
+.bar{display:inline-block;height:13px;border-radius:3px;vertical-align:-2px;min-width:2px}
+.pill{display:inline-block;padding:1px 9px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap}
+.pill.warn{background:var(--red-bg);color:var(--red);border:1px solid var(--red-line)}
+.pill.watch{background:var(--amber-bg);color:var(--amber);border:1px solid #fde68a}
+.pill.ok{background:var(--green-bg);color:var(--green);border:1px solid var(--green-line)}
+.pill.mut{background:#f1f5f9;color:#64748b;border:1px solid #e2e8f0}
+.note{background:var(--amber-bg);border:1px solid #fde68a;border-radius:10px;padding:10px 14px;font-size:12.5px;color:#92400e;margin:10px 0}
+.insight{background:var(--accent-bg);border-left:4px solid var(--accent);border-radius:8px;padding:11px 15px;margin:12px 0;font-size:13.5px}
+.risk{background:var(--red-bg);border-left:4px solid var(--red);border-radius:8px;padding:11px 15px;margin:12px 0;font-size:13.5px}
+.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
+@media(max-width:860px){.grid2{grid-template-columns:1fr}}
+.muted{color:var(--ink3);font-size:12px}
+.red-t{color:var(--red);font-weight:700}.green-t{color:var(--green);font-weight:700}
+.assump{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;padding:10px 14px;font-size:12.5px;color:#475569;margin:14px 0}
+</style>
+</head>
+<body>
+<div class="wrap">
+
+<div class="hero">
+  <h1>9月销售过程管理分析报告(v2)</h1>
+  <div class="sub">商机(9-13快照)→ 销售动作(9/1~9/13累计)→ 未达成原因 → 绩效扣分 | 外勤签到作为拜访凭证专项分析</div>
+  <div class="flow">
+    <span class="step">① 商机分析</span><span class="arr">→</span>
+    <span class="step">② 动作管理</span><span class="arr">→</span>
+    <span class="step">②+ 外勤签到专项</span><span class="arr">→</span>
+    <span class="step">③ 未达成原因</span><span class="arr">→</span>
+    <span class="step">④ 绩效扣分</span>
+  </div>
+  <div class="tags" style="margin-top:12px">
+    <span class="tag">数据源:CRM商机50条 · 动作达成率表18人 · CRM外勤88次 · OA外勤21次</span>
+    <span class="tag">生成:数据分析助手 · 2026-09-13</span>
+  </div>
+</div>
+
+<div class="assump"><b>口径声明(先读我)</b>:①动作数据为9/1~9/13累计,月进度43.3%,达成率应对照43.3%评判而非100%;②9月预测总额413.6万含未分级297万(占71.8%,集中在东南亚窦珍珍1人),剔除未分级后国内盘子116.6万;③扣分为月中进度缺口,非月末定论;④外勤签到仅为9/7~9/13一周,是拜访动作的过程凭证而非全量。</div>
+
+<!-- ═══════════ 第一部分:商机 ═══════════ -->
+<section class="sec">
+  <h2><span class="no">一</span>商机分析(9月13日快照)</h2>
+
+  <h3>1.1 公司整体</h3>
+  <div class="kpis" style="margin-bottom:10px">
+    <div class="kpi"><div class="v">413.6万</div><div class="l">预测总额</div><div class="d">较8月稿227.6万 +82%</div></div>
+    <div class="kpi"><div class="v">50条</div><div class="l">商机总数</div><div class="d">客单价8.3万</div></div>
+    <div class="kpi"><div class="v red">297万</div><div class="l">未分级金额(占71.8%)</div><div class="d">11条 · 集中1人</div></div>
+    <div class="kpi"><div class="v amber">25/38</div><div class="l">9月应结单已逾期</div><div class="d">230.6万(占86%)</div></div>
+    <div class="kpi"><div class="v">39条</div><div class="l">9月预计结单</div><div class="d">正式客户占63%</div></div>
+  </div>
+  <div class="grid2">
+    <div>
+      <table>
+        <tr><th>结构维度</th><th>构成</th></tr>
+        <tr><td>等级</td><td>一级11条/68万 · 二级6条/6万 · 三级22条/42.6万 · <b class="red-t">未分级11条/297万</b></td></tr>
+        <tr><td>客户类型</td><td>正式客户31条(62%) · 潜在客户19条(38%)</td></tr>
+        <tr><td>阶段状态</td><td>进行中49 · 赢单1 · 推进率100%</td></tr>
+        <tr><td>阶段分布</td><td>明确需求48条 · 定制方案1条 · 赢单1条 —— <b>漏斗严重头重:97%停在「明确需求」,方案/报价/送样阶段几乎空转</b></td></tr>
+      </table>
+    </div>
+    <div>
+      <div class="risk"><b>⚠️ 风险1:预测盘子七成不可信。</b>297万未分级集中在窦珍珍1人(290万/8条,其中2笔100万大单结单日已过仍无进展)。若剔除,实际可信盘子仅116.6万。</div>
+      <div class="risk"><b>⚠️ 风险2:结单逾期已成片。</b>9月应结单38条中25条逾期(含2笔一级20万:全季酒店项目9/7到期未动),逾期金额230.6万——商机推进已经卡住,这是比动作缺口更紧急的信号。</div>
+    </div>
+  </div>
+
+  <h3>1.2 部门维度</h3>
+  <table>
+    <tr><th>部门</th><th>条数</th><th style="width:34%">预测金额</th><th>一级</th><th>二级</th><th>三级</th><th>未分级</th><th>参与人数</th><th>特征一句话</th></tr>
+    <tr><td>东南亚</td><td>15</td><td><span class="bar" style="width:200px;background:#ef4444"></span> 314.0万</td><td>0</td><td>0</td><td>4</td><td class="red-t">11</td><td>3</td><td>金额第一但全靠未分级,质量最差</td></tr>
+    <tr><td>上海分公司</td><td>3</td><td><span class="bar" style="width:27px"></span> 42.0万</td><td>2</td><td>1</td><td>0</td><td>0</td><td>1</td><td>3条全一级/二级,人均质量最高</td></tr>
+    <tr><td>华东战区</td><td>7</td><td><span class="bar" style="width:24px"></span> 37.0万</td><td>5</td><td>0</td><td>2</td><td>0</td><td>5</td><td>结构最健康,5人参与覆盖广</td></tr>
+    <tr><td>西北战区</td><td>16</td><td><span class="bar" style="width:8px"></span> 12.5万</td><td>1</td><td>4</td><td>11</td><td>0</td><td>2</td><td>条数第一/金额第五,客单价仅0.78万</td></tr>
+    <tr><td>华南战区</td><td>3</td><td><span class="bar" style="width:4px"></span> 5.8万</td><td>2</td><td>0</td><td>1</td><td>0</td><td>2</td><td>有一级储备但金额小</td></tr>
+    <tr><td>福州分公司</td><td>3</td><td><span class="bar" style="width:2px"></span> 1.8万</td><td>0</td><td>1</td><td>2</td><td>0</td><td>2</td><td>储备薄弱</td></tr>
+    <tr><td>华中华北东北</td><td>1</td><td>0.5万</td><td>0</td><td>0</td><td>1</td><td>0</td><td>1</td><td class="red-t">动作达成47.5%但商机几乎为零</td></tr>
+    <tr><td>西南战区</td><td>1</td><td>0</td><td>1</td><td>0</td><td>0</td><td>0</td><td>1</td><td class="red-t">有商机无金额</td></tr>
+    <tr><td>海外销管部</td><td>1</td><td>0</td><td>0</td><td>0</td><td>1</td><td>0</td><td>1</td><td class="red-t">空转</td></tr>
+  </table>
+
+  <h3>1.3 人员维度(TOP10)</h3>
+  <table>
+    <tr><th>排名</th><th>人员</th><th>部门</th><th>条数</th><th style="width:36%">预测金额</th><th>一级数</th><th>结构点评</th></tr>
+    <tr><td>1</td><td><b>窦珍珍</b></td><td>东南亚</td><td>10</td><td><span class="bar" style="width:210px;background:#ef4444"></span> 296.0万</td><td>0</td><td class="red-t">占全公司72%,全部未分级/三级,2笔百万级结单日已过</td></tr>
+    <tr><td>2</td><td>吴德春</td><td>上海</td><td>3</td><td><span class="bar" style="width:30px"></span> 42.0万</td><td>2</td><td>3条全一二级,但2笔20万全季项目已逾期6天</td></tr>
+    <tr><td>3</td><td>许辉龙</td><td>华东</td><td>1</td><td><span class="bar" style="width:14px"></span> 20.0万</td><td>1</td><td>单条一级20万,已逾期5天</td></tr>
+    <tr><td>4</td><td>郭招续</td><td>西北</td><td>13</td><td><span class="bar" style="width:9px"></span> 12.5万</td><td>1</td><td>条数第二,8条三级集中在「秋冬热饮测试」方向</td></tr>
+    <tr><td>5</td><td>向玉</td><td>东南亚</td><td>3</td><td>12.0万</td><td>0</td><td>—</td></tr>
+    <tr><td>6</td><td>张国华</td><td>华东</td><td>2</td><td>11.0万</td><td>0</td><td>—</td></tr>
+    <tr><td>7</td><td>许曼</td><td>东南亚</td><td>2</td><td>6.0万</td><td>0</td><td>—</td></tr>
+    <tr><td>8</td><td>余霭杭</td><td>华南</td><td>1</td><td>3.8万</td><td>0</td><td>—</td></tr>
+    <tr><td>9</td><td>李林炜</td><td>华东</td><td>1</td><td>3.0万</td><td>1</td><td>—</td></tr>
+    <tr><td>10</td><td>谭载译</td><td>华东</td><td>2</td><td>3.0万</td><td>2</td><td>—</td></tr>
+  </table>
+  <div class="insight"><b>商机→动作的传导预告:</b>华东战区商机结构最好(5条一级)但提案达成37.5%、技交0次;华中华北东北动作达成47.5%全公司第二,但商机在册仅1条0.5万——<b>商机储备与动作投入出现错配,进入第二部分动作分析</b>。</div>
+</section>
+
+<!-- ═══════════ 第二部分:动作管理 ═══════════ -->
+<section class="sec">
+  <h2><span class="no">二</span>销售动作管理(9月1日~9月13日累计,月进度43.3%)</h2>
+  <p>严格按《销售动作达成率表》五类动作统计,达成率=累计完成÷月目标。月进度基准线43.3%,<b>低于43.3%即落后进度</b>。</p>
+
+  <h3>2.1 公司整体达成(五类动作)</h3>
+  <table>
+    <tr><th>动作</th><th>累计完成/月目标</th><th style="width:42%">累计达成率</th><th>vs 月进度43.3%</th><th>判定</th></tr>
+    <tr><td><b>拜访</b></td><td>147/360</td><td><span class="bar red" style="width:150px"></span> <b>40.8%</b></td><td>-2.5pct</td><td><span class="pill mut">贴线</span></td></tr>
+    <tr><td><b>调品</b></td><td>42/90</td><td><span class="bar" style="width:171px;background:#22c55e"></span> <b>46.7%</b></td><td>+3.4pct</td><td><span class="pill ok">超前</span></td></tr>
+    <tr><td><b>提案(含客户邀约来访)</b></td><td>11/30</td><td><span class="bar red" style="width:135px"></span> <b>36.7%</b></td><td>-6.6pct</td><td><span class="pill warn">落后</span></td></tr>
+    <tr><td><b>技术交流会</b></td><td>14/15</td><td><span class="bar" style="width:342px;background:#22c55e"></span> <b>93.3%</b></td><td>+50pct</td><td><span class="pill ok">大幅超前</span></td></tr>
+    <tr><td><b>高层互访</b></td><td>0/15</td><td><span class="bar red" style="width:2px"></span> <b>0.0%</b></td><td class="red-t">-43.3pct</td><td><span class="pill warn">全零</span></td></tr>
+  </table>
+  <div class="insight"><b>整体判定:三类转化型动作两极分化。</b>技交93.3%证明组织活动能力没问题;高层互访全零+提案36.7%说明<b>「向客户高层要决策」和「把方案递到客户面前」两个关键转化环节基本停摆</b>——这与商机篇97%停在「明确需求」互相印证:不是没有机会,是机会推不动。</div>
+
+  <h3>2.2 部门维度(按五类动作)</h3>
+  <table>
+    <tr><th>部门</th><th>拜访</th><th>调品</th><th>提案</th><th>技交</th><th>高层</th><th>特征</th></tr>
+    <tr><td>西北战区</td><td class="green-t">70.0%</td><td class="green-t">120.0%</td><td>无目标</td><td>2次</td><td>0</td><td>基础动作全公司第一,但商机仅12.5万——干得多、盘子小</td></tr>
+    <tr><td>上海分公司</td><td>42.5%</td><td>40.0%</td><td class="green-t">125.0%</td><td>4次</td><td class="red-t">0/2</td><td>提案唯一超额部门,42万商机最扎实</td></tr>
+    <tr><td>大客户部</td><td>50.0%</td><td>60.0%</td><td class="red-t">0/2</td><td>0</td><td class="red-t">0/1</td><td>大客户部门却没有提案和高层互访,职能错位</td></tr>
+    <tr><td>华中华北东北</td><td>47.5%</td><td>30.0%</td><td class="red-t">0/6</td><td>6次</td><td class="red-t">0/3</td><td>拜访量大+技交6次活跃,提案/高层全零</td></tr>
+    <tr><td>福州分公司</td><td>32.5%</td><td class="green-t">110.0%</td><td>50.0%</td><td>0</td><td class="red-t">0/2</td><td>调品超额,其余平淡</td></tr>
+    <tr><td>华东战区</td><td>32.5%</td><td>40.0%</td><td>37.5%</td><td class="red-t">0</td><td class="red-t">0/4</td><td>商机结构最好但技交零场,5个经理均未达标</td></tr>
+    <tr><td>华南战区</td><td>40.0%</td><td class="red-t">26.7%</td><td class="red-t">0/6</td><td>2次</td><td class="red-t">0/3</td><td>调品、提案双垫底</td></tr>
+    <tr><td>西南战区</td><td class="red-t">25.0%</td><td class="red-t">0.0%</td><td>无目标</td><td>0</td><td>0</td><td>单人战区全面落后</td></tr>
+  </table>
+
+  <h3>2.3 个人维度(18人全景 · 红绿榜口径:全≥100%绿 / 任一&lt;100%红)</h3>
+  <table>
+    <tr><th>人员(档位)</th><th>部门</th><th>拜访</th><th>调品</th><th>提案</th><th>技交</th><th>高层</th><th>判定</th></tr>
+    <tr><td>郭招续(新)</td><td>西北</td><td>70%</td><td class="green-t">120%</td><td>—</td><td>—</td><td>—</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>陈智强(经理)</td><td>华中北</td><td class="green-t">75%</td><td class="red-t">0%</td><td class="red-t">0%</td><td>0次</td><td>0次</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>吴文鹏(经理)</td><td>上海</td><td>55%</td><td>20%</td><td>50%</td><td>0次</td><td>0次</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>刘斐(经理)</td><td>华南</td><td>55%</td><td class="red-t">0%</td><td class="red-t">0%</td><td>0次</td><td>0次</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>牛晓光(经理)</td><td>大客户</td><td>50%</td><td>60%</td><td class="red-t">0%</td><td>0次</td><td>0次</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>陈聿华(老)</td><td>福州</td><td>50%</td><td class="green-t">200%</td><td>50%</td><td>—</td><td>—</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>刘尧(老)</td><td>华中北</td><td>50%</td><td>20%</td><td>无目标</td><td>—</td><td>—</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>程靳(经理)</td><td>华中北</td><td>50%</td><td>40%</td><td class="red-t">0%</td><td>0次</td><td>0次</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>余霭杭(老)</td><td>华南</td><td>45%</td><td>80%</td><td class="red-t">0%</td><td>—</td><td>—</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>谭载译(经理)</td><td>华东</td><td>40%</td><td>40%</td><td class="red-t">0%</td><td>0次</td><td>0次</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>张玉兴(经理)</td><td>华东</td><td>35%</td><td>40%</td><td class="red-t">0%</td><td>0次</td><td>0次</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>许辉龙(经理)</td><td>华东</td><td>35%</td><td>20%</td><td>50%</td><td>0次</td><td>0次</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>吴德春(经理)</td><td>上海</td><td>30%</td><td>60%</td><td class="green-t">200%</td><td class="green-t">4次</td><td>0次</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>梁娅(新)</td><td>西南</td><td class="red-t">25%</td><td class="red-t">0%</td><td>—</td><td>—</td><td>—</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>曾林凯(老)</td><td>华南</td><td class="red-t">20%</td><td class="red-t">0%</td><td class="red-t">0%</td><td>—</td><td>—</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>李林炜(经理)</td><td>华东</td><td class="red-t">20%</td><td>20%</td><td class="green-t">100%</td><td>0次</td><td>0次</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>吴改革(经理)</td><td>华中北</td><td class="red-t">15%</td><td>60%</td><td class="red-t">0%</td><td class="green-t">6次</td><td>0次</td><td><span class="pill warn">红</span></td></tr>
+    <tr><td>吴瑞琳(老)</td><td>福州</td><td class="red-t">15%</td><td>20%</td><td>50%</td><td>—</td><td>—</td><td><span class="pill warn">红</span></td></tr>
+  </table>
+  <p class="muted">注:18人无一全达标(月中属正常,对照月进度43.3%看相对位置);「—」= 无考核目标;技交/高层为经理档考核项,次数为完成值。</p>
+</section>
+
+<!-- ═══════════ 第二部分+:外勤签到专项 ═══════════ -->
+<section class="sec">
+  <h2><span class="no">二+</span>外勤签到专项分析(拜访动作的过程凭证 · 9/7~9/13)</h2>
+  <p>外勤签到是「拜访」动作的落地凭证。CRM详单88次签到逐条核验,按「是否挂接客户对象」三分类:</p>
+  <div class="kpis" style="margin-bottom:10px">
+    <div class="kpi"><div class="v green">41次</div><div class="l">挂接客户的拜访签到</div><div class="d">可追溯 · 覆盖11人/32家客户</div></div>
+    <div class="kpi"><div class="v amber">10次</div><div class="l">未挂接但有业务描述</div><div class="d">如「拜访千里酥技术沟通」</div></div>
+    <div class="kpi"><div class="v red">37次</div><div class="l">无业务描述签到</div><div class="d">不可追溯 · 占42%</div></div>
+  </div>
+  <div class="grid2">
+    <div>
+      <h3>签到质量三分类</h3>
+      <table>
+        <tr><th>类型</th><th>次数</th><th>占比</th><th>管理含义</th></tr>
+        <tr><td>挂接客户(关联主对象=客户)</td><td>41</td><td>46.6%</td><td>可追溯到具体客户,可作为拜访凭证</td></tr>
+        <tr><td>未挂接+有业务描述</td><td>10</td><td>11.4%</td><td>实际在拜访但漏挂客户,需补录</td></tr>
+        <tr><td>未挂接+无描述</td><td class="red-t">37</td><td>42.0%</td><td class="red-t">无法核验用途,CRM过程数据失效</td></tr>
+      </table>
+      <div class="note">问题主体:郭招续22次+谭载译10次——两人合计占无描述签到的86%。签到最多的人恰恰是挂接最差的人,<b>勤奋被数据质量问题吃掉了</b>。</div>
+    </div>
+    <div>
+      <h3>有效客户拜访TOP5(挂接口径)</h3>
+      <table>
+        <tr><th>人员</th><th>部门</th><th>挂接拜访</th><th>去重客户</th></tr>
+        <tr><td>郭招续</td><td>西北</td><td>8</td><td>6家</td></tr>
+        <tr><td>程靳</td><td>华中北</td><td>7</td><td>5家</td></tr>
+        <tr><td>陈智强</td><td>华中北</td><td>6</td><td>4家</td></tr>
+        <tr><td>吴瑞琳</td><td>福州</td><td>6</td><td>3家</td></tr>
+        <tr><td>刘斐</td><td>华南</td><td>3</td><td>3家</td></tr>
+      </table>
+      <h3>与拜访动作的交叉验证</h3>
+      <p style="font-size:13px">动作表拜访147次(9/1~13)→ 折算周均79次;外勤挂接拜访41次(仅9/7~13一周)。<b>凭证覆盖率≈52%</b>:约一半的拜访动作有客户级签到凭证,另一半分散在未挂接/未签到中。OA渠道21次(6人使用)与8月稿「统一入口CRM」结论一致,双轨仍未收敛。</p>
+    </div>
+  </div>
+  <div class="insight"><b>专项结论:</b>签到管理的问题排序是 ①42%签到无业务信息(先治数据)→ ②双渠道并行(再治入口)→ ③签到量分布极度集中(郭招续30次占34%,最后才是量)。<b>建议:CRM移动端把「关联客户」设为签到必填项,一键消灭42%的无描述签到。</b></div>
+</section>
+
+<!-- ═══════════ 第三部分:未达成原因 ═══════════ -->
+<section class="sec">
+  <h2><span class="no">三</span>未达成原因分析(数据驱动的风险点与建议)</h2>
+
+  <h3>3.1 高层互访 0/15 —— 制度设计与执行现实脱节</h3>
+  <div class="risk"><b>风险:考核项形同虚设。</b>6个部门全部0完成。制度要求经理「技术交流会/高层会晤≥3次/季度」,但达成率表按「高层互访目标(月)=1~4次」设了15次月目标——<b>要么目标从未被认真对待,要么执行系统(谁出面、访谁、走什么流程)缺失</b>。连大客户部(职能最对口)也是0。</div>
+  <p><b>建议:</b>①本月内由销售中心定义「有效高层互访」标准(对象职级+议程+产出);②把高层互访与技术交流会合并执行(客户高层参会即同时计两项),降低执行门槛;③若确认暂不具备条件,应正式将月目标改为0并按季度考核,避免「永远全零的红榜」稀释考核严肃性。</p>
+
+  <h3>3.2 提案 36.7% —— 转化链路断裂点</h3>
+  <p>13人有提案目标、10人未达标,其中经理档9人(占经理层的75%)。结合商机篇「97%停在明确需求」:<b>提案是把「明确需求」推进到「定制方案/报价」的关键动作,提案停摆直接解释了漏斗空转和25条结单逾期</b>。反面参照:吴德春提案200%(2次)+技交4场,上海分公司42万商机全部推进到一二级——提案能力与商机质量正相关。</p>
+  <p><b>建议:</b>①经理层每人9月底前至少完成1次正式提案(对逾期商机客户优先);②把「提案」与商机阶段变更绑定:无提案记录的商机不得停留在「明确需求」超30天。</p>
+
+  <h3>3.3 拜访 40.8% —— 三类人三种病因</h3>
+  <table>
+    <tr><th>人群</th><th>代表</th><th>数据特征</th><th>病因假设(数据指向)</th><th>处方</th></tr>
+    <tr><td>低动作+低商机</td><td>吴瑞琳、梁娅、曾林凯</td><td>拜访≤25%、商机0条或无</td><td>投入不足或状态异常(吴瑞琳为8月全达标标杆,状态突变)</td><td>经理一对一辅导,查原因而非先扣分</td></tr>
+    <tr><td>高动作+低商机</td><td>郭招续、陈智强</td><td>拜访70~75%,但商机12.5万/0.5万</td><td>客户结构问题:在存量小客户里打转(郭招续8条三级全是「秋冬测试」)</td><td>调优客户结构,配一级商机目标</td></tr>
+    <tr><td>低动作+高商机</td><td>吴改革、吴德春</td><td>拜访15~30%,但商机在册(吴德春42万)</td><td>吃存量:有储备不拓新,漏斗2个月后断供</td><td>强制新商机录入指标</td></tr>
+  </table>
+
+  <h3>3.4 调品 46.7% —— 结构性空转</h3>
+  <p>梁娅、刘斐、曾林凯、陈智强4人目标内完成为0。同时商机表有19条潜在客户商机停留在「明确需求」——<b>调品是样品触达动作,是潜在客户转正式客户的第一步;调品为零+潜在商机停滞,说明新客户孵化链路整体熄火</b>。建议:调品任务与潜在客户商机一一配对,经理每周过一遍「潜在客户×调品记录」矩阵。</p>
+
+  <div class="insight"><b>四类动作缺口指向同一个根因:</b>不是团队不勤奋(拜访147次、技交14场、签到88次都在发生),而是<b>「动作→商机推进」的转化管理缺位</b>——提案0响应、高层0出面、调品不配对商机、商机逾期25条无人处理。管理重心应从「数动作次数」转向「盯动作对商机的结果」。</div>
+</section>
+
+<!-- ═══════════ 第四部分:绩效扣分 ═══════════ -->
+<section class="sec">
+  <h2><span class="no">四</span>绩效扣分(依据《销售动作管理制度》· 月中快照)</h2>
+  <p>扣分规则:新员工(拜访≥20/月、调品≥5/月,每少1次扣1分);老员工(另加提案≥2/月,每少1次扣1分);经理/总监(提案≥2/月、技交/高层,每少1次扣<b>2</b>分)。等级:≥5警示 / 3-4重点关注 / 1-2关注 / 0达标。</p>
+  <table>
+    <tr><th>排名</th><th>负责人</th><th>部门</th><th>档位</th><th>拜访缺口</th><th>调品缺口</th><th>提案缺口</th><th>技交/高层缺口</th><th>合计扣分</th><th>等级</th></tr>
+    <tr><td>1</td><td><b>曾林凯</b></td><td>华南</td><td>老员工</td><td>16</td><td>5</td><td>2</td><td>—</td><td class="red-t">-23</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>2</td><td><b>吴瑞琳</b></td><td>福州</td><td>老员工</td><td>17</td><td>4</td><td>1</td><td>—</td><td class="red-t">-22</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>3</td><td>梁娅</td><td>西南</td><td>新员工</td><td>15</td><td>5</td><td>—</td><td>—</td><td class="red-t">-20</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>4</td><td>刘尧</td><td>华中北</td><td>老员工</td><td>10</td><td>4</td><td>0</td><td>—</td><td class="red-t">-14</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>5</td><td>余霭杭</td><td>华南</td><td>新员工</td><td>11</td><td>1</td><td>—</td><td>—</td><td class="red-t">-12</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>6</td><td>陈聿华</td><td>福州</td><td>老员工</td><td>10</td><td>0</td><td>1</td><td>—</td><td class="red-t">-11</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>7</td><td>刘斐</td><td>华南</td><td>经理</td><td>—</td><td>—</td><td>2</td><td>2</td><td class="red-t">-12</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>8</td><td>张玉兴</td><td>华东</td><td>经理</td><td>—</td><td>—</td><td>2</td><td>2</td><td class="red-t">-12</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>9</td><td>谭载译</td><td>华东</td><td>经理</td><td>—</td><td>—</td><td>2</td><td>2</td><td class="red-t">-12</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>10</td><td>陈智强</td><td>华中北</td><td>经理</td><td>—</td><td>—</td><td>2</td><td>2</td><td class="red-t">-12</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>11</td><td>程靳</td><td>华中北</td><td>经理</td><td>—</td><td>—</td><td>2</td><td>2</td><td class="red-t">-12</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>12</td><td>牛晓光</td><td>大客户</td><td>经理</td><td>—</td><td>—</td><td>2</td><td>2</td><td class="red-t">-12</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>13</td><td>吴文鹏</td><td>上海</td><td>经理</td><td>—</td><td>—</td><td>1</td><td>2</td><td class="red-t">-10</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>14</td><td>许辉龙</td><td>华东</td><td>经理</td><td>—</td><td>—</td><td>1</td><td>2</td><td class="red-t">-10</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>15</td><td>李林炜</td><td>华东</td><td>经理</td><td>—</td><td>—</td><td>0</td><td>2</td><td class="red-t">-8</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>16</td><td>吴改革</td><td>华中北</td><td>经理</td><td>—</td><td>—</td><td>2</td><td>1</td><td class="red-t">-8</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>17</td><td>郭招续</td><td>西北</td><td>新员工</td><td>6</td><td>0</td><td>—</td><td>—</td><td class="red-t">-6</td><td><span class="pill warn">警示</span></td></tr>
+    <tr><td>18</td><td>吴德春</td><td>上海</td><td>经理</td><td>—</td><td>—</td><td>0</td><td>1</td><td class="red-t">-4</td><td><span class="pill watch">重点关注</span></td></tr>
+  </table>
+  <p class="muted">完整分项扣分见附件《销售动作绩效扣分明细表_2026年9月(截至9-13).xlsx》(经理档技交/高层合并列示)。泉州/海外/大客户部分成员无数据未纳入。合计-220分(18人),警示17人/重点关注1人。</p>
+  <div class="note">📌 <b>扣分与原因的连接</b>:与8月稿不同,本期扣分表不再是孤立的罚单——扣分TOP3(曾林凯/吴瑞琳/梁娅)全部落在第三部分「低动作+低商机」病因组;经理档扣分主因(提案+技交/高层缺口)正是第三部分3.1/3.2的两类断档。<b>扣分是果,原因分析是因,建议按原因开处方而非按分数罚款</b>。月中快照:9月底前补齐动作则扣分自动回落。</div>
+  <div class="note">📌 <b>口径提醒</b>:本表为月中快照,18人合计-220分、警示17人是「截至9/13的进度缺口」而非月末定论——9月还剩17天,若全员按进度补齐则扣分大幅回落。经理档技交/高层合并列示(缺口次数相加,每少1次扣2分)。</div>
+</section>
+
+<!-- 结论 -->
+<section class="sec">
+  <h2><span class="no">五</span>总结:一页看懂本月销售过程管理</h2>
+  <table>
+    <tr><th style="width:16%">层级</th><th>核心事实</th><th style="width:38%">下一步动作</th></tr>
+    <tr><td><b>商机层</b></td><td>413.6万盘子但71.8%未分级集中于1人;38条9月应结单中25条已逾期(230.6万);97%停在「明确需求」</td><td>①窦珍珍8条290万本周内完成分级;②25条逾期商机由各经理逐条给出推进/放弃结论</td></tr>
+    <tr><td><b>动作层</b></td><td>拜访40.8%贴线、调品46.7%超前、提案36.7%落后、技交93.3%超前、<b>高层互访0%</b></td><td>③提案为9月主抓动作:经理层人均≥1次,优先面向逾期商机客户</td></tr>
+    <tr><td><b>凭证层</b></td><td>签到88次中42%无业务描述不可追溯;拜访凭证覆盖率约52%</td><td>④CRM「关联客户」设为签到必填项,从源头治数据</td></tr>
+    <tr><td><b>绩效层</b></td><td>18人-220分、警示17人;扣分主因=提案断档+高层互访空转(经理档技交/高层合并后几乎人人挂科)</td><td>⑤高层互访:本月定义有效标准并与技术交流会合并执行;⑥警示级17人9/20前分层辅导(扣分≥10优先)回填</td></tr>
+  </table>
+  <p class="muted" style="margin-top:10px">报告:数据分析助手 v2 · 数据截至2026-09-13 · 结构:商机→动作管理→外勤签到专项→未达成原因→绩效扣分 · 上一版本(v1)存档于同名旧报告</p>
+</section>
+
+</div>
+</body>
+</html>

+ 372 - 0
deliverables/AI落地场景选题清单.html

@@ -0,0 +1,372 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>AI落地场景选题清单 · 王慧程(速品食品)</title>
+<style>
+  :root{
+    --ink:#1f2937; --ink-2:#4b5563; --ink-3:#6b7280; --line:#e5e7eb; --bg:#f8fafc; --card:#ffffff;
+    --green:#15803d; --green-bg:#f0fdf4; --green-line:#bbf7d0;
+    --yellow:#b45309; --yellow-bg:#fffbeb; --yellow-line:#fde68a;
+    --red:#b91c1c; --red-bg:#fef2f2; --red-line:#fecaca;
+    --accent:#1d4ed8; --accent-bg:#eff6ff;
+  }
+  *{box-sizing:border-box;margin:0;padding:0}
+  body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);line-height:1.6}
+  .wrap{max-width:1080px;margin:0 auto;padding:32px 20px 64px}
+  header{margin-bottom:28px}
+  h1{font-size:26px;font-weight:700;letter-spacing:.5px}
+  .sub{color:var(--ink-3);font-size:14px;margin-top:6px}
+  .sub b{color:var(--ink-2)}
+  .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0 24px}
+  .stat{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
+  .stat .num{font-size:26px;font-weight:700}
+  .stat .lbl{font-size:12px;color:var(--ink-3);margin-top:2px}
+  .filters{display:flex;flex-wrap:wrap;gap:20px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:20px;position:sticky;top:8px;z-index:10;box-shadow:0 1px 4px rgba(0,0,0,.04)}
+  .fgroup{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
+  .fgroup .flbl{font-size:13px;color:var(--ink-3);font-weight:600;white-space:nowrap}
+  .chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 14px;font-size:13px;cursor:pointer;color:var(--ink-2);transition:all .15s}
+  .chip:hover{border-color:var(--accent)}
+  .chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
+  .count{font-size:13px;color:var(--ink-3);margin-left:auto;white-space:nowrap}
+  .cards{display:grid;gap:16px}
+  .card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px 22px;transition:box-shadow .15s}
+  .card:hover{box-shadow:0 4px 14px rgba(0,0,0,.06)}
+  .card.star{border-color:var(--accent);border-width:1.5px}
+  .chead{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;margin-bottom:12px}
+  .cnum{font-size:12px;color:#fff;background:var(--ink-3);border-radius:6px;padding:2px 8px;font-weight:600;margin-top:3px}
+  .cname{font-size:17px;font-weight:700}
+  .badges{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
+  .badge{font-size:12px;border-radius:6px;padding:2px 9px;font-weight:600;white-space:nowrap}
+  .badge.star{background:var(--accent-bg);color:var(--accent);border:1px solid #bfdbfe}
+  .badge.imp-高{background:var(--red-bg);color:var(--red);border:1px solid var(--red-line)}
+  .badge.imp-中{background:var(--yellow-bg);color:var(--yellow);border:1px solid var(--yellow-line)}
+  .badge.imp-低{background:#f3f4f6;color:var(--ink-3);border:1px solid var(--line)}
+  .badge.d-绿{background:var(--green-bg);color:var(--green);border:1px solid var(--green-line)}
+  .badge.d-黄{background:var(--yellow-bg);color:var(--yellow);border:1px solid var(--yellow-line)}
+  .badge.d-红{background:var(--red-bg);color:var(--red);border:1px solid var(--red-line)}
+  .brief{font-size:14px;color:var(--ink-2);margin-bottom:14px}
+  .fields{display:grid;grid-template-columns:1fr 1fr;gap:6px 24px;margin-bottom:14px}
+  .field{font-size:13.5px;display:flex;gap:6px}
+  .field .k{color:var(--ink-3);white-space:nowrap;flex-shrink:0}
+  .field .v{color:var(--ink)}
+  .dims{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;padding:10px 12px;background:#fafafa;border-radius:8px;border:1px solid #f3f4f6}
+  .dim{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-2)}
+  .dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}
+  .dot.g{background:#22c55e}.dot.y{background:#f59e0b}.dot.r{background:#ef4444}
+  .note{font-size:13px;color:var(--ink-2);background:var(--bg);border-left:3px solid var(--line);padding:8px 12px;border-radius:0 6px 6px 0}
+  .note .hyp{color:var(--yellow);font-weight:600}
+  .empty{display:none;text-align:center;color:var(--ink-3);padding:48px 0;font-size:14px}
+  section.optimize{margin-top:36px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:24px 26px}
+  section.optimize h2{font-size:18px;margin-bottom:14px}
+  section.optimize h3{font-size:14.5px;margin:16px 0 8px;color:var(--accent)}
+  section.optimize p,section.optimize li{font-size:13.5px;color:var(--ink-2)}
+  section.optimize ul{padding-left:20px}
+  section.optimize li{margin:4px 0}
+  .legend{display:flex;gap:16px;font-size:12.5px;color:var(--ink-3);margin:8px 0 20px;flex-wrap:wrap}
+  .legend span{display:inline-flex;align-items:center;gap:5px}
+  @media (max-width:640px){
+    .stats{grid-template-columns:repeat(2,1fr)}
+    .fields{grid-template-columns:1fr}
+    .badges{margin-left:0}
+  }
+</style>
+</head>
+<body>
+<div class="wrap">
+  <header>
+    <h1>AI落地场景选题清单</h1>
+    <div class="sub">受评人:<b>王慧程 · 速品食品 · AI高级项目经理</b> | 生成日期:2026-09-12 | 范围约束:仅保留一下午可验证的文本 / 信息 / 数据自动化场景(不含 3D 建模、视频生成、图片生成)</div>
+  </header>
+
+  <div class="stats">
+    <div class="stat"><div class="num" id="stTotal">14</div><div class="lbl">拓展场景总数</div></div>
+    <div class="stat"><div class="num" id="stHigh">5</div><div class="lbl">高重要度场景</div></div>
+    <div class="stat"><div class="num" id="stGreen">9</div><div class="lbl">绿色易落地场景</div></div>
+    <div class="stat"><div class="num" id="stStar">4</div><div class="lbl">首推试点场景</div></div>
+  </div>
+
+  <div class="legend">
+    <span><span class="dot g"></span>✅ 绿:适合(建议试点)</span>
+    <span><span class="dot y"></span>⚠️ 黄:有挑战(需拆解/校准)</span>
+    <span><span class="dot r"></span>❌ 红:慎选</span>
+    <span style="margin-left:auto">评估依据:输入格式 · 步骤数 · 决策逻辑 · 输出形式 · 敏感等级 · 单次人工耗时(6维速查表)</span>
+  </div>
+
+  <div class="filters">
+    <div class="fgroup">
+      <span class="flbl">重要程度</span>
+      <button class="chip on" data-g="imp" data-v="all">全部</button>
+      <button class="chip" data-g="imp" data-v="高">高</button>
+      <button class="chip" data-g="imp" data-v="中">中</button>
+      <button class="chip" data-g="imp" data-v="低">低</button>
+    </div>
+    <div class="fgroup">
+      <span class="flbl">落地难易度</span>
+      <button class="chip on" data-g="dif" data-v="all">全部</button>
+      <button class="chip" data-g="dif" data-v="绿">✅ 绿</button>
+      <button class="chip" data-g="dif" data-v="黄">⚠️ 黄</button>
+      <button class="chip" data-g="dif" data-v="红">❌ 红</button>
+    </div>
+    <span class="count" id="count"></span>
+  </div>
+
+  <div class="cards" id="cards"></div>
+  <div class="empty" id="empty">当前筛选条件下没有场景,请调整筛选器。</div>
+
+  <section class="optimize">
+    <h2>📋 优化说明</h2>
+
+    <h3>一、推荐试点理由(高重要 + 绿色易落地)</h3>
+    <ul>
+      <li><b>⭐首推 1「经营分析报告自动生成(CRM销售过程管理周报)」</b>:企业自述的核心重复工作,每周必做且直接服务管理层经营决策;输入为结构化 CSV、指标公式固定,一下午可跑通"数据 → 洞察报告"全链路,是最能体现经营价值的试点。</li>
+      <li><b>⭐首推 2「AI项目周报与日结果自动生成」</b>:每周必做、模板固定、纯文本输入输出,是最容易跑通并当场演示的场景,适合作为建立信心的第一仗。</li>
+      <li><b>⭐首推 3「访谈纪要 → 结构化需求文档」</b>:直击职责1(20%权重)与内部交易关系里"需求反复澄清"的最大成本转嫁点;从 Markdown 笔记起步即可绿色落地,录音转写可用讯飞转写(Fmode /api/listen/transcribe)补齐为进阶版。</li>
+      <li><b>⭐首推 4「ROI 收益测算表自动生成」</b>:立项标准动作、公式可量化,AI 填表 + 人工核数字,产出直接服务于"不做伪需求"的岗位结果定义。</li>
+      <li>次选 6「会议行动项跟踪表」与 7「月度效果复盘报告」:同样是高重要+绿,可在试点成功后第二周接力铺开。</li>
+    </ul>
+
+    <h3>二、推理假设说明(可后续校验)</h3>
+    <ul>
+      <li><span class="hyp">【推理假设】</span>单次人工耗时(如经营周报 2~3 小时/周、需求文档 2~3 小时/次)基于同类 AI 项目经理岗位的行业经验估算,请以你的真实计时校准。</li>
+      <li><span class="hyp">【推理假设】</span>数据敏感等级按食品供应链行业与品牌客户合作的惯例推断(客户需求、销售数据、财务人时成本、合同类标为内部敏感);实际请按公司保密制度修正。</li>
+      <li><span class="hyp">【推理假设】</span>输入材料格式假设公司内部文档以 Word/飞书/钉钉 + Markdown 混合为主,CRM 数据可按周导出 CSV;若日常已习惯 Markdown/CSV 记录,绿色场景占比还会上升。</li>
+      <li><span class="hyp">【推理假设】</span>「AI项目周报、访谈纪要、ROI测算、复盘报告、供应商评审」等重复工作从你提供的职责表与自述(经营分析报告/CRM周报)中提取,未逐项确认频率,如与实际投入不符请反馈调整。</li>
+    </ul>
+
+    <h3>三、后续迭代方向</h3>
+    <ul>
+      <li><b>单场景 → 工作流串联</b>:试点验证后,把「CRM数据 → 经营周报」「访谈纪要 → 需求文档 → ROI 测算 → 立项文档初稿」串成流水线,覆盖职责1的完整动作链。</li>
+      <li><b>个人工具 → 组织资产</b>:场景 10(项目知识库问答)对应 XPS 6 级"复制系统"目标,试点成熟后沉淀为部门级 SOP。</li>
+      <li><b>效果追踪闭环</b>:每个试点用统一的《人时节省记录表》记录前后耗时,为月度复盘报告(场景 5)积累真实数据,形成"AI 用 AI 优化 AI 项目"的复利闭环。</li>
+      <li><b>敏感数据处理</b>:涉及客户与财务数据的场景,落地前先做脱敏规则约定(客户名代称、金额区间化)。</li>
+    </ul>
+  </section>
+</div>
+
+<script>
+const scenes = [
+  {
+    id:1, star:true, name:"经营分析报告自动生成(CRM销售过程管理周报)", imp:"高", dif:"绿",
+    brief:"企业自述最高频工作:把 CRM 导出的销售过程数据自动加工为周报——销售漏斗转化、商机进展、异常预警、下周期望,直接服务管理层经营决策。",
+    input:"CRM 销售数据导出(csv 🟢)+ 本周经营速记(md 🟢)",
+    output:"经营分析周报(漏斗指标/环比变化/异常名单/结论建议,Markdown+表格)",
+    steps:"4 步(数据清洗 → 指标计算 → 异常识别 → 报告组装)",
+    decision:"规则清晰:转化率/达成率等指标公式固定,异常阈值明确",
+    sensitivity:"内部敏感(销售与客户数据,试点时用脱敏/代称)",
+    time:"每周 2~3 小时 → 20 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","g"],["输出形式","g"],["敏感等级","y"],["人工耗时","g"]],
+    note:"优势:企业自述真实高频工作,输入为结构化 CSV,公式与阈值明确,是最贴合'数据驱动运营'职责的试点。风险:CRM 导出字段口径需先确认;敏感数据须脱敏处理。<span class='hyp'>【推理假设:CRM 可按周导出 CSV,字段含商机阶段/金额/负责人】</span>"
+  },
+  {
+    id:3, star:true, name:"AI项目周报与日结果自动生成", imp:"高", dif:"绿",
+    brief:"把每天散落的进展速记、阻塞与风险记录,按固定模板自动汇总为周报与日结果事实记录,对应职责2(35%权重)的最高频文字工作。",
+    input:"每日进展速记(txt/md 🟢可直接读取)+ 项目排期表(csv 🟢)",
+    output:"结构化周报(本周进展 / 阻塞项 / 风险对冲 / 下周计划)",
+    steps:"3 步(素材汇总 → 模板生成 → 人工校对)",
+    decision:"规则清晰:模板字段固定,要点归纳可量化",
+    sensitivity:"内部非敏感(项目进度信息)",
+    time:"每周 1.5~2 小时 → 5~10 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","g"],["输出形式","g"],["敏感等级","g"],["人工耗时","g"]],
+    note:"优势:重复度最高、模板最固定,一下午即可验证。风险:进展速记若写在聊天记录里需先归集为文本。<span class='hyp'>【推理假设:耗时按同类岗位经验估算】</span>"
+  },
+  {
+    id:4, star:true, name:"访谈纪要 → 结构化需求文档", imp:"高", dif:"绿",
+    brief:"把业务方/客户访谈的原始记录自动整理为标准需求文档(背景/痛点/目标/验收标准/ROI假设),减少'需求反复澄清'造成的重复解释成本。",
+    input:"访谈笔记(md 🟢);录音转写文本(🟠需先转录,可用讯飞转写补齐)",
+    output:"需求文档初稿(结构化 Markdown,含验收标准清单)",
+    steps:"4 步(原文清洗 → 要点抽取 → 模板组装 → 人工确认)",
+    decision:"少量模糊:业务术语到需求字段的映射需人工校准",
+    sensitivity:"内部敏感(客户需求信息,需脱敏:客户名代称)",
+    time:"每次 2~3 小时 → 30 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","y"],["输出形式","g"],["敏感等级","y"],["人工耗时","g"]],
+    note:"优势:直击职责1核心动作与最大成本转嫁点。风险:从录音直接起步属🟠预处理,建议先用 md 笔记验证再接转写。<span class='hyp'>【推理假设:访谈后整理耗时 2~3 小时/次】</span>"
+  },
+  {
+    id:5, star:true, name:"ROI 收益测算表自动生成", imp:"高", dif:"绿",
+    brief:"输入需求描述与人时成本数据,自动生成标准化 ROI 评估表(节省人时/年化成本/回收期),支撑'不做伪需求'的立项决策。",
+    input:"需求文档(md 🟢)+ 人时成本数据(csv 🟢)",
+    output:"ROI 评估表(结构化表格,含测算公式备注)",
+    steps:"3 步(参数提取 → 公式计算 → 结果组装)",
+    decision:"规则清晰:测算公式固定可量化,AI 提参 + 人工核数字",
+    sensitivity:"内部敏感(财务/人时成本数据)",
+    time:"每次 1~2 小时 → 15 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","g"],["输出形式","g"],["敏感等级","y"],["人工耗时","g"]],
+    note:"优势:公式明确、输出标准表格,评估结果最容易验收。风险:数字必须人工复核,避免 AI 计算幻觉。<span class='hyp'>【推理假设:现有 ROI 测算以 Excel 手工完成为主】</span>"
+  },
+  {
+    id:6, star:false, name:"会议行动项跟踪表", imp:"高", dif:"绿",
+    brief:"从跨部门协调会纪要中自动提取行动项(责任人/截止日/当前状态),生成跟踪清单,对应 XPS 2 级'推动决议形成'的日常动作。",
+    input:"会议纪要文本(md/txt 🟢)",
+    output:"行动项跟踪表(表格:事项/责任人/截止日/状态)",
+    steps:"2 步(要素抽取 → 表格生成)",
+    decision:"规则清晰:责任人与时间点为显式信息",
+    sensitivity:"内部非敏感",
+    time:"每次 30~60 分钟 → 5 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","g"],["输出形式","g"],["敏感等级","g"],["人工耗时","y"]],
+    note:"优势:链路最短(2步),适合作为 AI 提取类任务的入门验证。风险:纪要口语化时责任归属可能漏抽,需抽查。<span class='hyp'>【推理假设:会议纪要已有文本形态】</span>"
+  },
+  {
+    id:7, star:false, name:"月度 AI 效果复盘报告生成", imp:"高", dif:"绿",
+    brief:"汇总使用率、人时节省、A/B 测试数据,自动生成月度复盘报告初稿(达成率/异常点/迭代建议),对应职责4(15%权重)。",
+    input:"使用率报表与测试数据(csv 🟢)+ 当月项目记录(md 🟢)",
+    output:"复盘报告初稿(达成对比/异常预警/迭代建议,Markdown+基础表格)",
+    steps:"4 步(数据汇总 → 指标计算 → 归因初稿 → 人工定稿)",
+    decision:"规则+阈值:达成率对照立项指标,阈值明确",
+    sensitivity:"内部数据(使用率与成本数据)",
+    time:"每月 3~4 小时 → 40 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","g"],["输出形式","y"],["敏感等级","y"],["人工耗时","g"]],
+    note:"优势:输入是结构化 CSV,AI 擅长'数据→结论初稿'。风险:报告输出含简单排版属🟡,建议控制在 Markdown 表格内保持绿色。<span class='hyp'>【推理假设:月度复盘目前手工撰写 3 小时以上】</span>"
+  },
+  {
+    id:8, star:false, name:"需求真伪与优先级评估助手", imp:"中", dif:"绿",
+    brief:"按固定评估维度(业务价值/可行性/预期收益/紧迫度)对征集来的需求自动打分排序,输出标准评估卡,服务职责1的场景优先级排序。",
+    input:"需求描述文档(md 🟢)",
+    output:"需求评估卡(各维度打分 + 优先级建议 + 理由)",
+    steps:"3 步(维度解析 → 逐项打分 → 排序输出)",
+    decision:"规则可量化:评估维度与权重固定",
+    sensitivity:"内部非敏感",
+    time:"每次 30~60 分钟 → 10 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","g"],["输出形式","g"],["敏感等级","g"],["人工耗时","y"]],
+    note:"优势:把个人经验固化为评分规则,评估口径可复制给团队。风险:打分标准需先用 3~5 个历史需求校准。<span class='hyp'>【推理假设:公司暂无统一的需求评分模板】</span>"
+  },
+  {
+    id:9, star:false, name:"项目风险登记册智能更新", imp:"中", dif:"黄",
+    brief:"根据最新进展记录自动更新风险登记册:识别新风险、调整等级、生成对冲措施建议,服务职责2的风险管控。",
+    input:"项目进展文本(md 🟢)+ 现有风险登记册(csv 🟢)",
+    output:"更新后的风险清单(新增/升级/关闭 + 对冲建议)",
+    steps:"4 步(进展解析 → 风险比对 → 等级判定 → 清单更新)",
+    decision:"少量主观:风险概率与影响评估依赖经验,需人工校准",
+    sensitivity:"内部非敏感",
+    time:"每周 1 小时 → 15 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","y"],["输出形式","g"],["敏感等级","g"],["人工耗时","g"]],
+    note:"优势:材料全绿,唯一挑战在风险判级的主观性。风险:AI 倾向于多报风险,需约定'仅升级有事实依据的风险'。<span class='hyp'>【推理假设:已有风险登记册维护习惯】</span>"
+  },
+  {
+    id:10, star:false, name:"供应商交付物质量评估助手", imp:"中", dif:"黄",
+    brief:"把供应商提交的交付文档与验收标准逐条对照,自动生成质检打分表初稿,服务职责5(10%权重)的交付物质量评估。",
+    input:"供应商交付文档(Word/PDF 🟡需确认环境)+ 验收标准清单(md 🟢)",
+    output:"逐条对照的质检打分表(符合/偏差/缺失 + 证据引用)",
+    steps:"5 步(文档转文本 → 标准拆解 → 逐条对照 → 打分 → 汇总)",
+    decision:"规则清晰:对照验收标准逐条判定",
+    sensitivity:"内部敏感(合同与商务条款)",
+    time:"每次 1~2 小时 → 20 分钟",
+    dims:[["输入格式","y"],["步骤数","y"],["决策逻辑","g"],["输出形式","g"],["敏感等级","y"],["人工耗时","g"]],
+    note:"优势:'标准对照'类任务是 AI 强项,打分有据可查。风险:PDF/Word 需先转文本;商务条款敏感,验证时用脱敏样例。<span class='hyp'>【推理假设:交付物以文档为主,不含代码类交付】</span>"
+  },
+  {
+    id:11, star:false, name:"AI 功能培训手册与 FAQ 生成", imp:"中", dif:"绿",
+    brief:"根据功能说明与一线使用问题记录,自动生成培训手册与 FAQ,服务职责3(20%权重)的组织培训与推广落地。",
+    input:"功能说明文档(md 🟢)+ 一线问题记录(txt 🟢)",
+    output:"培训手册 + FAQ(Markdown 版,含分角色操作指引)",
+    steps:"4 步(内容整理 → 按角色重组 → FAQ 归类 → 人工审校)",
+    decision:"规则清晰:内容重组与归类,无主观判断",
+    sensitivity:"公开/内部非敏感",
+    time:"每次 2~3 小时 → 30 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","g"],["输出形式","y"],["敏感等级","g"],["人工耗时","g"]],
+    note:"优势:一线问题记录是现成素材,FAQ 命中率可直接验证推广效果。风险:需精美排版则降为🟡,建议先交付 Markdown 版。<span class='hyp'>【推理假设:培训材料目前每功能手工编写】</span>"
+  },
+  {
+    id:12, star:false, name:"项目知识库问答助手(RAG)", imp:"中", dif:"黄",
+    brief:"把历史项目的需求文档、决议记录、验收资料建为可检索知识库,用对话方式查询'某客户历史方案/某决议依据',沉淀组织资产。",
+    input:"历史项目文档批量(md 🟢)",
+    output:"对话式问答(答案附文档出处引用)",
+    steps:"5+ 步(文档收集 → 清洗 → 切片建库 → 检索 → 生成)",
+    decision:"规则清晰:检索匹配 + 引用原文",
+    sensitivity:"内部敏感(需权限与脱敏控制)",
+    time:"每日碎片查询累计 30~60 分钟",
+    dims:[["输入格式","g"],["步骤数","y"],["决策逻辑","g"],["输出形式","g"],["敏感等级","y"],["人工耗时","y"]],
+    note:"优势:对应 XPS 6 级'体系可复制'目标,长期价值最高。风险:建库链路超过 5 步且涉权限管理,一次下午难完整验证,建议先用 10 份文档小库试水。<span class='hyp'>【推理假设:历史文档尚未系统归档,需先整理】</span>"
+  },
+  {
+    id:13, star:false, name:"茶饮行业 AI 案例情报周报", imp:"中", dif:"绿",
+    brief:"自动汇总新茶饮/咖啡/烘焙行业的 AI 应用动态(客户及竞品的数智化动作),生成带'借鉴点'标注的情报简报,反哺职责1的需求洞察。",
+    input:"行业资讯文本/链接(公开信息 🟢)",
+    output:"情报简报(每条:动态摘要 / 涉及企业 / 对我方可借鉴点)",
+    steps:"3 步(信息收集 → 摘要与分类 → 借鉴点标注)",
+    decision:"规则清晰:分类固定;借鉴点判断需人工把关",
+    sensitivity:"公开信息,🟢最安全",
+    time:"每周 1~2 小时 → 20 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","y"],["输出形式","g"],["敏感等级","g"],["人工耗时","g"]],
+    note:"优势:全公开数据零敏感负担,适合随时启动。风险:资讯来源需固定清单,否则收集环节不稳定。<span class='hyp'>【推理假设:目前无系统化的行业情报机制】</span>"
+  },
+  {
+    id:14, star:false, name:"客户拜访简报与画像卡生成", imp:"中", dif:"黄",
+    brief:"拜访记录与历史合作数据自动生成客户画像卡与拜访简报(合作历史/在推项目/关注点/下一步动作),服务销售中心与复购提升。",
+    input:"拜访记录(txt 🟢)+ 客户合作数据(csv 🟢)",
+    output:"客户画像卡 + 拜访简报(结构化 Markdown)",
+    steps:"4 步(记录解析 → 数据关联 → 画像组装 → 人工确认)",
+    decision:"少量主观:客户意向判断需销售人员校准",
+    sensitivity:"内部敏感(客户经营数据,需脱敏)",
+    time:"每次 30~45 分钟 → 10 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","y"],["输出形式","g"],["敏感等级","y"],["人工耗时","y"]],
+    note:"优势:对应岗位'客户画像'方向,直接服务外部客户价值。风险:客户数据敏感,试点时用代称;画像准确性依赖 CRM 数据质量。<span class='hyp'>【推理假设:拜访记录以文字形式存在,可获取脱敏样例】</span>"
+  },
+  {
+    id:15, star:false, name:"验收测试用例清单自动生成", imp:"低", dif:"绿",
+    brief:"从需求文档自动生成验收测试用例清单(场景/步骤/预期结果),让'业务方正式验收'有据可依,减少验收标准争议。",
+    input:"需求文档(md 🟢)",
+    output:"测试用例清单(csv:编号/场景/步骤/预期结果/优先级)",
+    steps:"3 步(功能点拆解 → 用例生成 → 表格输出)",
+    decision:"规则清晰:从验收标准推导用例",
+    sensitivity:"内部非敏感",
+    time:"每次约 1 小时 → 15 分钟",
+    dims:[["输入格式","g"],["步骤数","g"],["决策逻辑","g"],["输出形式","g"],["敏感等级","g"],["人工耗时","y"]],
+    note:"优势:输入输出全结构化,质量容易验证。列为低优先级原因:验收动作频率低于周报/纪要类任务。<span class='hyp'>【推理假设:目前用例由业务方口头约定为主】</span>"
+  }
+];
+
+const impOrder = {"高":0,"中":1,"低":2};
+const difOrder = {"绿":0,"黄":1,"红":2};
+let filterImp = "all", filterDif = "all";
+
+function render(){
+  const list = scenes
+    .filter(s => (filterImp==="all" || s.imp===filterImp) && (filterDif==="all" || s.dif===filterDif))
+    .sort((a,b) => impOrder[a.imp]-impOrder[b.imp] || difOrder[a.dif]-difOrder[b.dif] || a.id-b.id);
+  const html = list.map(s => `
+    <div class="card${s.star?" star":""}">
+      <div class="chead">
+        <span class="cnum">#${String(s.id).padStart(2,"0")}</span>
+        <span class="cname">${s.name}</span>
+        <div class="badges">
+          ${s.star?'<span class="badge star">⭐ 首推试点</span>':""}
+          <span class="badge imp-${s.imp}">重要度 ${s.imp}</span>
+          <span class="badge d-${s.dif}">${s.dif==="绿"?"✅":s.dif==="黄"?"⚠️":"❌"} ${s.dif} 易落地</span>
+        </div>
+      </div>
+      <div class="brief">${s.brief}</div>
+      <div class="fields">
+        <div class="field"><span class="k">📥 输入材料</span><span class="v">${s.input}</span></div>
+        <div class="field"><span class="k">📤 输出成果</span><span class="v">${s.output}</span></div>
+        <div class="field"><span class="k">🔢 步骤数量</span><span class="v">${s.steps}</span></div>
+        <div class="field"><span class="k">🧭 决策逻辑</span><span class="v">${s.decision}</span></div>
+        <div class="field"><span class="k">🔒 敏感等级</span><span class="v">${s.sensitivity}</span></div>
+        <div class="field"><span class="k">⏱ 人工耗时</span><span class="v">${s.time}</span></div>
+      </div>
+      <div class="dims">
+        ${s.dims.map(d=>`<span class="dim"><span class="dot ${d[1]}"></span>${d[0]}</span>`).join("")}
+      </div>
+      <div class="note">${s.note}</div>
+    </div>`).join("");
+  document.getElementById("cards").innerHTML = html;
+  document.getElementById("empty").style.display = list.length ? "none" : "block";
+  document.getElementById("count").textContent = `共 ${list.length} 个场景`;
+}
+
+document.querySelectorAll(".chip").forEach(btn => {
+  btn.addEventListener("click", () => {
+    const g = btn.dataset.g;
+    document.querySelectorAll(`.chip[data-g="${g}"]`).forEach(c=>c.classList.remove("on"));
+    btn.classList.add("on");
+    if(g==="imp") filterImp = btn.dataset.v;
+    else filterDif = btn.dataset.v;
+    render();
+  });
+});
+
+render();
+</script>
+</body>
+</html>

+ 536 - 0
deliverables/AI辅助产品研发SOP长页面.html

@@ -0,0 +1,536 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>AI辅助产品研发 SOP 长页面 · 速品食品 · 王慧程</title>
+<style>
+  :root{
+    --ink:#1f2937; --ink-2:#4b5563; --ink-3:#6b7280; --line:#e5e7eb; --bg:#f6f8fb; --card:#ffffff;
+    --green:#15803d; --green-bg:#f0fdf4; --green-line:#bbf7d0;
+    --yellow:#b45309; --yellow-bg:#fffbeb; --yellow-line:#fde68a;
+    --red:#b91c1c; --red-bg:#fef2f2; --red-line:#fecaca;
+    --accent:#1d4ed8; --accent-bg:#eff6ff; --accent-line:#bfdbfe;
+  }
+  *{box-sizing:border-box;margin:0;padding:0}
+  html{scroll-behavior:smooth}
+  body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);line-height:1.75}
+  .wrap{max-width:1180px;margin:0 auto;padding:28px 20px 80px}
+  /* 头部 */
+  header.hero{background:linear-gradient(135deg,#1e3a8a 0%,#1d4ed8 60%,#2563eb 100%);color:#fff;border-radius:16px;padding:36px 40px;margin-bottom:20px}
+  header.hero h1{font-size:28px;letter-spacing:1px}
+  header.hero .sub{margin-top:10px;font-size:14px;opacity:.92}
+  header.hero .tags{margin-top:14px;display:flex;gap:8px;flex-wrap:wrap}
+  header.hero .tag{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:3px 14px;font-size:12.5px}
+  /* 导航 */
+  nav.toc{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:12px;padding:10px 14px;display:flex;gap:6px;flex-wrap:wrap;margin-bottom:26px;box-shadow:0 2px 8px rgba(0,0,0,.05)}
+  nav.toc a{text-decoration:none;color:var(--ink-2);font-size:13px;padding:4px 12px;border-radius:999px;border:1px solid transparent}
+  nav.toc a:hover{color:var(--accent);background:var(--accent-bg);border-color:var(--accent-line)}
+  /* 章节卡片 */
+  section.sec{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:30px 34px;margin-bottom:26px}
+  section.sec h2{font-size:21px;padding-bottom:12px;border-bottom:2px solid var(--accent);margin-bottom:18px}
+  section.sec h2 .no{display:inline-block;background:var(--accent);color:#fff;border-radius:8px;font-size:14px;padding:2px 10px;margin-right:10px;vertical-align:3px}
+  section.sec h3{font-size:16px;color:var(--accent);margin:20px 0 10px}
+  section.sec p{font-size:14px;color:var(--ink-2);margin:8px 0}
+  section.sec li{font-size:14px;color:var(--ink-2);margin:4px 0 4px 22px}
+  /* 表格 */
+  table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13.5px}
+  th{background:#f1f5f9;color:var(--ink);text-align:left;padding:8px 10px;border:1px solid var(--line);font-weight:600;white-space:nowrap}
+  td{padding:8px 10px;border:1px solid var(--line);color:var(--ink-2);vertical-align:top}
+  tr:nth-child(even) td{background:#fafbfc}
+  td b{color:var(--ink)}
+  /* 徽章 */
+  .badge{display:inline-block;font-size:12px;border-radius:6px;padding:1px 9px;font-weight:600;white-space:nowrap}
+  .b-green{background:var(--green-bg);color:var(--green);border:1px solid var(--green-line)}
+  .b-yellow{background:var(--yellow-bg);color:var(--yellow);border:1px solid var(--yellow-line)}
+  .b-red{background:var(--red-bg);color:var(--red);border:1px solid var(--red-line)}
+  .b-blue{background:var(--accent-bg);color:var(--accent);border:1px solid var(--accent-line)}
+  .b-gray{background:#f3f4f6;color:var(--ink-3);border:1px solid var(--line)}
+  /* 提示框 */
+  .box{border-radius:10px;padding:14px 18px;font-size:13.5px;margin:14px 0;border-left:4px solid}
+  .box.blue{background:var(--accent-bg);border-color:var(--accent);color:#1e3a8a}
+  .box.green{background:var(--green-bg);border-color:#22c55e;color:#14532d}
+  .box.yellow{background:var(--yellow-bg);border-color:#f59e0b;color:#78350f}
+  .box.red{background:var(--red-bg);border-color:#ef4444;color:#7f1d1d}
+  .box b{font-weight:700}
+  .box .q{display:block;margin-top:6px;font-weight:600}
+  /* KPI */
+  .kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}
+  .kpi{background:linear-gradient(180deg,#fff, #f8fafc);border:1px solid var(--line);border-radius:12px;padding:16px;text-align:center}
+  .kpi .v{font-size:22px;font-weight:800;color:var(--accent)}
+  .kpi .k{font-size:12.5px;color:var(--ink-3);margin-top:4px}
+  /* Mermaid 容器 */
+  .mermaid-box{background:#fcfdff;border:1px solid var(--accent-line);border-radius:12px;padding:18px;margin:14px 0;overflow-x:auto}
+  .mermaid{display:flex;justify-content:center;min-width:520px}
+  .mermaid-caption{font-size:12.5px;color:var(--ink-3);text-align:center;margin-top:8px}
+  #mermaidFallback{display:none;font-size:13px;color:var(--yellow);background:var(--yellow-bg);border:1px solid var(--yellow-line);border-radius:8px;padding:10px 14px;margin:10px 0}
+  /* 流程步骤 */
+  .steps{counter-reset:st;margin:10px 0}
+  .step{position:relative;padding:10px 12px 10px 52px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:#fdfefe}
+  .step::before{counter-increment:st;content:counter(st);position:absolute;left:12px;top:12px;width:26px;height:26px;border-radius:8px;background:var(--accent);color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}
+  .step .t{font-weight:700;font-size:14px}
+  .step .d{font-size:13px;color:var(--ink-2)}
+  footer{color:var(--ink-3);font-size:12.5px;text-align:center;padding:24px 0 8px}
+  @media (max-width:760px){
+    .kpis{grid-template-columns:repeat(2,1fr)}
+    section.sec{padding:20px 16px}
+    header.hero{padding:24px 20px}
+  }
+  @media print{
+    nav.toc{display:none}
+    section.sec{break-inside:avoid;border:none}
+  }
+</style>
+</head>
+<body>
+<div class="wrap">
+
+<header class="hero">
+  <h1>AI 辅助产品研发全链路 SOP(长页交流稿)</h1>
+  <div class="sub">从「量化信息搜集 → 前期梳理 → 基因库匹配 → 配方推荐 → 打样验证 → 卖点与设计图生成 → 客户交付」的完整作业规程</div>
+  <div class="sub" style="margin-top:4px">编制:王慧程 · 速品食品 AI高级项目经理 | 版本:v0.1(交流稿) | 日期:2026-09-12</div>
+  <div class="tags">
+    <span class="tag">基因库 + 原料库</span><span class="tag">拼配预测</span><span class="tag">成本/库存联动</span><span class="tag">卖点与设计图自动生成</span><span class="tag">Mermaid 时序图</span>
+  </div>
+</header>
+
+<nav class="toc">
+  <a href="#s1">① 定位与指标</a><a href="#s2">② 痛点与解法</a><a href="#s3">③ 总体架构</a><a href="#s4">④ 数据资产底座</a><a href="#s5">⑤ 信息搜集与权重</a><a href="#s6">⑥ 核心流程时序图</a><a href="#s7">⑦ 测评标准化</a><a href="#s8">⑧ ROI 分析</a><a href="#s9">⑨ 分析报告模板</a><a href="#s10">⑩ 路线图与岗位连接</a>
+</nav>
+
+<div id="mermaidFallback">⚠️ 流程图依赖网络加载 Mermaid 渲染库。若图形未显示,请联网刷新;下方各流程均已配文字版环节说明,不影响阅读。</div>
+
+<!-- ================= ① ================= -->
+<section class="sec" id="s1">
+  <h2><span class="no">①</span>岗位定位与北极星指标</h2>
+  <p>本 SOP 服务于一个核心命题:<b>把"凭记忆、靠手感、等排队"的传统茶饮研发,重构为"数据说话、模型预测、并行响应"的 AI 辅助研发体系</b>。AI 产品经理是该体系的设计者与交付负责人,对"按期上线、被真实使用、产生可量化经营结果"负责。</p>
+  <div class="kpis">
+    <div class="kpi"><div class="v">2-4周 → 小时级</div><div class="k">需求响应周期(含检索+推荐)</div></div>
+    <div class="kpi"><div class="v">-60%</div><div class="k">物理打样次数(AI 模拟替代)</div></div>
+    <div class="kpi"><div class="v">-50%</div><div class="k">原料年损耗(按年采购 500 万计省约 50 万)</div></div>
+    <div class="kpi"><div class="v">+20%</div><div class="k">客户一次通过率</div></div>
+  </div>
+  <p>支撑性指标:研发并行接单能力 <b>3-5 倍</b>;多承接小客户年增收约 <b>100 万元</b>;新人培养周期 <b>1-2 年 → 3 个月</b>。</p>
+  <div class="box blue"><b>本页使用方式</b>:每章末尾设有「待你确认」问题,逐条批注后回传,即可把本稿迭代为正式版岗位 SOP(v1.0)。</div>
+</section>
+
+<!-- ================= ② ================= -->
+<section class="sec" id="s2">
+  <h2><span class="no">②</span>业务痛点与 AI 解法映射</h2>
+  <table>
+    <tr><th style="width:15%">痛点</th><th style="width:30%">现状与问题</th><th style="width:35%">AI 解法</th><th>验证指标</th></tr>
+    <tr>
+      <td><b>① 海量原料大海捞针</b><br><span class="badge b-red">检索原始</span></td>
+      <td>上万 SKU、属性复杂(产地/海拔/季节/发酵度/香气类型/理化指标);找茶底靠"翻台账、凭记忆",无法用抽象需求(如"高香低涩带茉莉花香的绿茶")直接筛选;小众原料沉睡,反复用"老面孔"。</td>
+      <td><b>基因库语义检索</b>:原料基因卡 + 风味标签体系,抽象需求 → 结构化向量匹配,秒级返回 TOP-N 候选,附历史使用记录与测评得分。</td>
+      <td>检索命中率、沉睡原料唤醒数、选料多样性</td>
+    </tr>
+    <tr>
+      <td><b>② 拼配靠"手感"</b><br><span class="badge b-yellow">经验难传承</span></td>
+      <td>拼配被视为玄学,依赖资深研发"金舌头";A+B 比例口感只能物理打样,试错耗时耗料;关键人离职经验流失,新人培养 1-2 年,品质一致性差。</td>
+      <td><b>拼配预测模型</b>:以历史配方 + 0-12 分测评数据训练,输入候选组合与比例,输出预测风味剖面(前中后调)与和谐度,人工只验证 AI 推荐的少数方案。</td>
+      <td>打样次数、预测-实测偏差、配方复现率</td>
+    </tr>
+    <tr>
+      <td><b>③ 需求响应滞后</b><br><span class="badge b-red">错失窗口期</span></td>
+      <td>从接需到打样确认 2-4 周;需求超 5 个即排队;成本核算滞后导致"好喝但超成本",无法商业化;小客户响应慢年流失率或增 15-30%。</td>
+      <td><b>全链路并行流水线</b>:需求结构化 → 检索推荐 → 自动核价 → 打样验证 → 卖点/设计图生成,全程小时级流转,成本红线前置校验。</td>
+      <td>响应周期、并行单量、成本超标率</td>
+    </tr>
+    <tr>
+      <td><b>④ 质量与信任波动</b></td>
+      <td>多任务切换致感官疲劳,评判标准漂移;寄样与承诺不符,客户反复修改,专业信任度下降。</td>
+      <td><b>数据化品控</b>:统一 0-12 分测评量表 + 测评记录入库,评判锚点固定、可追溯、可复现。</td>
+      <td>一次通过率、修改轮次、客户满意度</td>
+    </tr>
+  </table>
+</section>
+
+<!-- ================= ③ ================= -->
+<section class="sec" id="s3">
+  <h2><span class="no">③</span>总体架构:对齐「速品 AI 场景方案建设架构」</h2>
+  <p>研发 AI 化不是孤立工具,而是公司「数据 + AI 双引擎」架构下的第一批场景落地。本页仅保留与研发相关层,便于聚焦讨论。</p>
+  <div class="mermaid-box"><div class="mermaid">
+flowchart TB
+    subgraph SC["场景层:数据+AI 研发场景"]
+      direction LR
+      S1["智能选品"] --- S2["智能配方"] --- S3["原料价格预测"] --- S4["配方优化"] --- S5["库存优化"]
+    end
+    subgraph PL["平台层:数据+AI 双引擎"]
+      direction LR
+      subgraph DI["DI 数据引擎"]
+        D1["主数据管理"] --- D2["指标管理"] --- D3["智能数仓"] --- D4["数据资产地图"] --- D5["数据治理与安全"]
+      end
+      subgraph AI["AI 智能引擎"]
+        A1["数智分身(知识/经验/记忆)"] --- A2["主-子智能体"] --- A3["工具管理 MCP·Skill·CLI"] --- A4["知识库 RAG"] --- A5["模型管理·安全沙箱"]
+      end
+    end
+    subgraph DA["数据层:统一数据底座"]
+      direction LR
+      T1["结构化业务数据<br/>ERP·MES·QMS·WMS·CRM·SRM·PLM·OA"]
+      T2["非结构化知识资料<br/>技术文档·研究报告·测评报告(txt/word/pdf/md/xlsx)"]
+      T3["互联网与第三方数据<br/>行情·政策·竞品·消费热点"]
+    end
+    DA --> PL --> SC
+  </div><div class="mermaid-caption">图 3-1 研发 AI 场景在公司数据+AI 双引擎架构中的位置(自下而上:数据统一 → 能力支撑 → 场景交付)</div></div>
+  <ul>
+    <li><b>五大研发场景</b>:智能选品、智能配方、原料价格预测、配方优化、库存优化——本 SOP 第⑥章流程将逐一挂接这五项能力。</li>
+    <li><b>两引擎分工</b>:DI 数据引擎管"数出同源、口径一致";AI 智能引擎管"检索、预测、生成、预警"。</li>
+    <li><b>落地原则</b>:先统一数据(数据层),再建能力(平台层),最后上场景(场景层)——避免"场景先行、数据返工"。</li>
+  </ul>
+</section>
+
+<!-- ================= ④ ================= -->
+<section class="sec" id="s4">
+  <h2><span class="no">④</span>数据资产底座:基因库与原料库数据模型</h2>
+  <h3>4.1 基因库 = 三类基因 + 一套学习机制</h3>
+  <p><b>研发基因库</b>是把茶叶原料特性、历史配方、感官评价、工艺参数、客户反馈结构化、数字化,形成可被 AI 学习与调用的知识资产——它不是数据仓库的别名,而是"企业研发智慧的大脑"。</p>
+  <table>
+    <tr><th style="width:18%">基因类型</th><th style="width:42%">内容</th><th>来源系统 / 载体</th></tr>
+    <tr><td><b>原料基因</b></td><td>产地、海拔、季节、发酵度、香气类型、滋味特征、理化指标、价格、库存量、供应商及批次</td><td>研发样品库(现有)、WMS、SRM、采购价格库</td></tr>
+    <tr><td><b>配方基因</b></td><td>拼配组合与比例、工艺参数、目标风味剖面、适配应用(纯茶/果茶/奶茶/康普茶)</td><td>历史打样记录、配方文档(word/pdf)</td></tr>
+    <tr><td><b>案例基因</b></td><td>客户画像、需求原文、打样轮次、客户测试反馈、成交与复购结果</td><td>CRM、业务跟进记录、客户反馈表</td></tr>
+  </table>
+
+  <h3>4.2 现有「研发样品库」盘点与升级项</h3>
+  <p>现有样品库(3 个工作表、约 276 行)已具备第一批种子数据,字段 14 列:<b>供应商编码、茶叶分类、品名、批次、分级、测评方式、汤色/液体状态、香气、滋味、和谐度、气泡强度、主体味型分布区域、简评、综合</b>。实测记录翔实(如"桂花乌龙804:前香高,香较短促,回酸")。</p>
+  <div class="box yellow"><b>升级项(SOP 第一步要解决的)</b>
+    <span class="q">① 香气/滋味/简评为自由文本,未结构化 → 无法被模型学习;② 味型"前/中/后"分区混在单列;③ 缺决策字段:产地/海拔/季节/发酵度/理化指标/采购价/库存量;④ 批次与供应商稳定性未建模。</span>
+  </div>
+  <h3>4.3 原料主数据标准模型(目标字段)</h3>
+  <table>
+    <tr><th style="width:14%">字段组</th><th style="width:44%">字段</th><th>结构化方式</th></tr>
+    <tr><td>身份</td><td>原料ID、品名、分类、供应商编码、批次、分级</td><td>枚举/编码(沿用现有)</td></tr>
+    <tr><td>本源属性</td><td>产地、海拔、采摘季节、发酵度、工艺(焙火/韵香/清香…)</td><td>受控词表(新建,约 60-100 个标签)</td></tr>
+    <tr><td>风味基因</td><td>香气类型×强度×分区(前/中/后)、滋味维度(苦/涩/酸/甜/鲜/厚度/收敛性)、和谐度、特征味型</td><td>测评量表数字化(见⑦章)+ 文本抽取</td></tr>
+    <tr><td>理化指标</td><td>水分、水浸出物、茶多酚、氨基酸、农残检测结论等</td><td>质检报告解析(PDF → 字段)</td></tr>
+    <tr><td>商业属性</td><td>采购价、价格波动、库存量、库龄、最小起订、交期</td><td>对接 WMS/采购库,自动同步</td></tr>
+    <tr><td>供应稳定性</td><td>批次合格率、感官审评均分与波动(标准差/变异系数)、准时率</td><td>AI 稳定性建模(自动计算)</td></tr>
+  </table>
+  <div class="box blue"><b>待你确认</b><span class="q">1)受控词表由谁维护(研发 vs 数据团队)?2)历史纸质台账回溯录入的范围与优先级?3)理化指标是否有电子化质检报告可批量解析?</span></div>
+</section>
+
+<!-- ================= ⑤ ================= -->
+<section class="sec" id="s5">
+  <h2><span class="no">⑤</span>量化信息搜集与前期梳理 SOP(含权重评估框架)</h2>
+  <p>本章回答三个问题:<b>搜集什么</b>(5.1/5.2 信源清单)、<b>怎么定权重</b>(5.3 三维权重模型)、<b>如何区分因果与相关</b>(5.4 判定规则)。目标:任何一次需求判断前,信息搜集动作标准化、可复用、可审计。</p>
+
+  <h3>5.1 内部数据源清单(事实层,优先级最高)</h3>
+  <table>
+    <tr><th style="width:20%">数据源</th><th style="width:36%">关键内容</th><th style="width:22%">更新节奏</th><th>决策用途</th></tr>
+    <tr><td><b>研发样品库</b></td><td>276 行实测记录:汤色/香气/滋味/和谐度/气泡强度/简评/综合分</td><td>每次打样即更新</td><td>原料匹配、拼配预测训练集</td></tr>
+    <tr><td><b>历史配方与打样记录</b></td><td>拼配比例、工艺、轮次、失败原因</td><td>按项目</td><td>配方基因、避免重复试错</td></tr>
+    <tr><td><b>CRM 销售与客户反馈</b></td><td>客户成交/复购/测试反馈/投诉</td><td>周</td><td>案例基因、需求优先级</td></tr>
+    <tr><td><b>WMS 库存与损耗</b></td><td>库存量、库龄、呆滞料、损耗金额</td><td>日</td><td>推荐时联动库存(唤醒沉睡料)</td></tr>
+    <tr><td><b>采购价格与批次质检</b></td><td>采购价、农残/理化检测、准时率</td><td>按批次</td><td>成本模拟、供应商稳定性指数</td></tr>
+    <tr><td><b>财务核价记录</b></td><td>历史核价公式、毛利红线</td><td>按单</td><td>自动核价规则训练</td></tr>
+  </table>
+
+  <h3>5.2 外部信息源清单(按信源属性分层)</h3>
+  <table>
+    <tr><th style="width:16%">层级</th><th style="width:34%">具体信源</th><th style="width:22%">典型内容</th><th>采集要点</th></tr>
+    <tr><td><span class="badge b-green">事实·政策</span></td><td>市场监管总局/海关总署/茶叶流通协会/产区地方政府</td><td>食安标准、进出口量、产区气候与产量、产业政策利好</td><td>落地落实的政策文件原文,注明文号与生效日期</td></tr>
+    <tr><td><span class="badge b-green">事实·行情</span></td><td>原料行情平台、拍卖市场报告、供应商报价单</td><td>毛茶/精制茶价格指数、供需变化</td><td>记录采集日期——行情时效衰减最快</td></tr>
+    <tr><td><span class="badge b-blue">研究·技术</span></td><td>食品科学期刊、检测机构报告、行业展会获奖名录</td><td>风味化学机理、新工艺、新原料评测</td><td>可解释机制的主要来源,支撑因果判定</td></tr>
+    <tr><td><span class="badge b-yellow">观点·竞品</span></td><td>竞品官号(微博/公众号)、第三方新品测评、电商销量榜</td><td>上新方向、卖点话术、销量信号</td><td>注意官号营销立场,记录是否付费推广</td></tr>
+    <tr><td><span class="badge b-red">热点·消费</span></td><td>抖音/小红书话题、外卖平台评价、自有客服记录</td><td>"低糖/清爽/季节限定"等需求信号</td><td>只作"假设输入",不得直接进配方决策</td></tr>
+  </table>
+
+  <h3>5.3 三维权重模型:每条信息先打分,再决定怎么用</h3>
+  <p>你提到的三个影响判断的因素,固化为三个可打分的权重维度:</p>
+  <table>
+    <tr><th style="width:16%">维度</th><th style="width:40%">评分要点</th><th>分值建议</th></tr>
+    <tr><td><b>W1 时效权重</b><br>(时间节点)</td><td>信息发布时间距决策日的远近;是否当季/当期;政策是否仍在有效期</td><td>7 天内 1.0 → 30 天 0.8 → 半年 0.5 → 1 年以上 0.2;政策类按有效期另行校准</td></tr>
+    <tr><td><b>W2 立场权重</b><br>(利益相关)</td><td>发布方与结论的利益关系:无利益第三方 &gt; 客户直接反馈 &gt; 行业媒体 &gt; 竞品官号 &gt; 带货 KOL</td><td>检测机构/论文 1.0;客户反馈 0.9;行业媒体 0.7;竞品官号 0.5;带货 KOL 0.3</td></tr>
+    <tr><td><b>W3 信源属性权重</b><br>(平台特性)</td><td>官方渠道=政策文件与利好(事实);专业平台=研究与行情(事实);微博官号=观点;抖音/小红书=热点注意力</td><td>政府/标准文件 1.0;行业数据平台 0.9;专业期刊 0.85;微博官号 0.5;短视频热点 0.4</td></tr>
+  </table>
+  <div class="box blue"><b>综合可信度 C = W1 × W2 × W3</b>(0~1)。使用规则:<b>C ≥ 0.7</b> 事实类 → 可直接支撑配方/成本决策;<b>0.4 ≤ C &lt; 0.7</b> → 须≥2 个独立信源交叉验证后使用;<b>C &lt; 0.4</b> → 只进"趋势观察池",不进决策。</div>
+
+  <h3>5.4 因果 vs 相关性判定(四验法)</h3>
+  <p>外部热点与内部数据之间,只有通过以下四问才能建立"因果"关系,否则一律按"相关"处理:</p>
+  <table>
+    <tr><th style="width:16%">检验</th><th style="width:44%">问什么</th><th>示例(茉莉花香案例)</th></tr>
+    <tr><td>① 时序</td><td>原因是否发生在结果之前?</td><td>话题热度上升是否早于销量/询盘变化</td></tr>
+    <tr><td>② 机制</td><td>有无可解释的理化/感官机制?</td><td>茉莉花香的芳樟醇等成分与"高香"感官评分的对应关系</td></tr>
+    <tr><td>③ 对照</td><td>控制变量后差异是否仍在?</td><td>同产地同工艺,含/不含茉莉花香的打样对照测评</td></tr>
+    <tr><td>④ 复现</td><td>跨批次、跨客户是否稳定重现?</td><td>≥3 个客户打样一次通过且复购</td></tr>
+  </table>
+  <div class="mermaid-box"><div class="mermaid">
+flowchart LR
+    A["多源信息采集"] --> B["登记信息源台账<br/>(日期/信源/类型)"]
+    B --> C{"三维权重评分<br/>C = W1xW2xW3"}
+    C -- "C≥0.7 事实" --> E["支撑决策<br/>(配方/成本/选品)"]
+    C -- "0.4-0.7 存疑" --> D["双信源交叉验证"] --> E
+    C -- "C小于0.4 信号" --> F["趋势观察池"]
+    F --> G["内部数据因果验证<br/>(对照打样/历史销售)"]
+    G -- "四验成立" --> E
+    G -- "不成立" --> H["归档不复用"]
+  </div><div class="mermaid-caption">图 5-1 信息搜集 → 权重评分 → 因果验证 → 进入决策的处理管道</div></div>
+
+  <h3>5.5 输出物:《信息源台账》标准模板</h3>
+  <table>
+    <tr><th>编号</th><th>采集日期</th><th>信源/链接</th><th>类型</th><th>W1</th><th>W2</th><th>W3</th><th>C值</th><th>结论</th><th>进入决策?</th><th>验证动作</th></tr>
+    <tr><td>I-001</td><td>2026-09-10</td><td>(示例)茶叶流通协会秋茶产量通报</td><td>事实·政策</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>秋茶减产,原料涨价预期</td><td>✅ 进入成本模拟</td><td>更新价格预测参数</td></tr>
+    <tr><td>I-002</td><td>2026-09-11</td><td>(示例)抖音"茉莉奶绿"话题热榜</td><td>热点·消费</td><td>1.0</td><td>0.3</td><td>0.4</td><td>0.12</td><td>消费者注意力信号</td><td>❌ 仅观察池</td><td>发起 3 客户对照打样</td></tr>
+  </table>
+  <div class="box blue"><b>待你确认</b><span class="q">1)三维权重分值是否贴合你们实际?2)信息源台账由 AI 产品经理维护还是各业务方提报?3)"趋势观察池"多久复盘一次(建议双周)?</span></div>
+</section>
+
+<!-- ================= ⑥ ================= -->
+<section class="sec" id="s6">
+  <h2><span class="no">⑥</span>核心业务流程 SOP(Mermaid 时序图)</h2>
+  <p>以下三张时序图把"调研 → 研发 → 上市"全链路的角色、动作、系统与数据流转展开。每张图后附环节说明表。</p>
+
+  <h3>6.1 主流程:客户需求 → 配方推荐 → 打样 → 交付</h3>
+  <div class="mermaid-box"><div class="mermaid">
+sequenceDiagram
+    autonumber
+    actor C as 客户-品牌方
+    participant B as 业务-销售中心
+    actor PM as AI产品经理
+    participant AI as AI研发助理-智能体
+    participant G as 研发基因库
+    participant F as 财务核价
+    actor R as 研发工程师
+    participant D as 豆包-设计平台
+    participant P as 生产-ERP
+
+    C->>B: 提出需求(风味方向/应用场景/成本区间/时间窗)
+    B->>PM: 需求登记(价格·包装规格·类目·应用方式)
+    PM->>AI: 触发需求结构化解析
+    AI->>AI: 抽象需求转风味标签(香气/滋味/和谐度/成本)
+    AI->>G: 语义检索(原料基因+配方基因+案例基因)
+    G-->>AI: 返回TOP-N候选原料与历史成功配方
+    AI->>AI: 拼配预测(风味剖面模拟)+成本模拟(联动库存与行情)
+    AI-->>PM: 配方推荐报告(预测风味/成本/风险/替代方案)
+    PM->>F: 触发核价(常规品公式核价/非常规品精细核价)
+    F-->>PM: 原料价格参考与毛利红线校验
+    PM->>R: 下发打样验证单(仅验证AI推荐的少数方案)
+    R->>R: 物理打样+标准化测评(0-12量表)
+    R-->>G: 测评数据回流(基因库持续学习)
+    alt 测评达标且客户确认
+        PM->>D: 生成产品卖点文案+产品设计图
+        D-->>PM: 卖点与设计图初稿
+        PM->>C: 发送完整方案(配方建议+卖点+设计图+报价)
+        C-->>B: 确认下单
+        B->>P: 订单录入ERP+生产可执行性校验
+        P-->>C: 生产交付
+    else 测评不达标
+        PM->>AI: 反馈偏差点(≤2轮迭代)
+        AI-->>R: 调整后的新候选配方
+    end
+    PM->>G: 项目全量数据归档(配方/测评/反馈/成交)
+  </div><div class="mermaid-caption">图 6-1 端到端主流程:AI 把"串行人工摸索"改造为"并行模型推荐 + 少量人工验证"</div></div>
+  <table>
+    <tr><th>环节</th><th>传统耗时</th><th>AI 化后</th><th>关键变化</th></tr>
+    <tr><td>需求理解与选料</td><td>1-2 天(翻台账/凭记忆)</td><td><b>分钟级</b></td><td>抽象需求 → 语义检索 TOP-N,沉睡原料被唤醒</td></tr>
+    <tr><td>拼配方案</td><td>多轮物理试错</td><td><b>模拟为主</b></td><td>70% 试错转为计算机模拟,打样次数 -60%</td></tr>
+    <tr><td>成本核算</td><td>滞后、易超标</td><td><b>前置校验</b></td><td>核价公式内置,成本红线在推荐阶段即校验</td></tr>
+    <tr><td>卖点/设计图</td><td>外包/另行排期</td><td><b>当天出稿</b></td><td>豆包等平台批量生成,人工优选</td></tr>
+    <tr><td>整体响应</td><td>2-4 周</td><td><b>小时级流转 + 0.5 天打样</b></td><td>并行处理所有需求,不再排队</td></tr>
+  </table>
+
+  <h3>6.2 基因库数据沉淀流程(越用越强的飞轮)</h3>
+  <div class="mermaid-box"><div class="mermaid">
+sequenceDiagram
+    autonumber
+    participant S as 供应商
+    participant Q as 采购-质控
+    actor R as 研发工程师
+    participant E as 数据管道(清洗-结构化-向量化)
+    participant G as 基因库(原料/配方/案例)
+    participant AI as AI引擎(检索/预测/推荐)
+
+    S->>Q: 供货批次+质检报告(农残/理化)
+    Q->>E: 供应商主数据与批次数据登记
+    R->>E: 打样测评记录(0-12量表/前中后分区/简评)
+    B->>E: 客户测试反馈与成交结果(CRM)
+    E->>E: 文本抽取→受控词表映射→向量化
+    E->>G: 入库(原料基因/配方基因/案例基因)
+    G->>AI: 定期训练与知识更新
+    AI-->>G: 原料标签自动补全/拼配预测模型升级/供应商稳定性指数
+    Note over G,AI: 闭环复利:每次打样、每笔订单都是新训练数据
+  </div><div class="mermaid-caption">图 6-2 数据沉淀飞轮:基因库的资产价值随使用次数递增</div></div>
+
+  <h3>6.3 供应商智能管理流程(延伸价值)</h3>
+  <div class="mermaid-box"><div class="mermaid">
+sequenceDiagram
+    autonumber
+    participant Q as 采购-质控
+    participant AI as AI引擎
+    actor PM as AI产品经理
+    actor R as 研发工程师
+
+    Q->>AI: 上传批次质检/感官审评/准时率/价格数据
+    AI->>AI: 稳定性建模(标准差/变异系数)
+    AI-->>PM: 输出供应商稳定性指数报告
+    alt 风险信号(质量下滑/价格异常/缺货)
+        AI-->>PM: 自动预警
+        PM->>R: 推荐质量最接近的备选供应商与原料
+        R-->>PM: 备选方案验证结论(研发不中断)
+    else 正常
+        AI-->>Q: 选源建议(质量·稳定性·价格·库存综合最优)
+    end
+    PM->>Q: 供应商协同改进建议(原料在成品中的表现反馈)
+  </div><div class="mermaid-caption">图 6-3 从"依赖采购经验"到"数据驱动优选 + 风险预警"</div></div>
+  <div class="box blue"><b>待你确认</b><span class="q">1)主流程中 AI 推荐的审批节点放在哪里(PM 一审 vs 研发+PM 双审)?2)打样迭代上限 2 轮是否合理?3)ERP 订单校验由谁对接?</span></div>
+</section>
+
+<!-- ================= ⑦ ================= -->
+<section class="sec" id="s7">
+  <h2><span class="no">⑦</span>打样与测评标准化 SOP(模型训练的数据地基)</h2>
+  <p>拼配预测模型的上限由测评数据质量决定。现行测评模板(纯茶/果茶/奶茶/康普茶四类)已非常专业,本 SOP 将其固化为<b>数字入规</b>:所有打样必须按统一量表评分并回流基因库。</p>
+  <h3>7.1 四类产品测评量表(满分 12 分制)</h3>
+  <table>
+    <tr><th>产品类型</th><th>维度与分值</th><th>附加项</th></tr>
+    <tr><td><b>纯茶</b>(茶+冰/水+糖)</td><td>色泽 0-2 | 香气 0-5 | 滋味 0-5</td><td>主体香型以滋味中表现的香气为依据</td></tr>
+    <tr><td><b>果茶</b>(茶+冰+果)</td><td>香气 0-5 | 滋味 0-5 | 和谐度 0-2</td><td>视觉颜色/净度有差异、无好坏</td></tr>
+    <tr><td><b>奶茶</b>(茶+冰+奶)</td><td>香气 0-5 | 滋味 0-5 | 和谐度 0-2</td><td>关注尾端透奶、香入汤</td></tr>
+    <tr><td><b>康普茶</b></td><td>液体状态 | 香气 0-5 | 滋味 0-5 | 和谐度 0-2</td><td>气泡强度/沙口感 0-5 仅作强度标注,不计分</td></tr>
+  </table>
+  <h3>7.2 评分锚点(统一评判语言,消除"标准漂移")</h3>
+  <table>
+    <tr><th>分值</th><th>香气锚点</th><th>滋味锚点</th></tr>
+    <tr><td>0</td><td>有杂异</td><td>有杂异/粗涩无味</td></tr>
+    <tr><td>1</td><td>无杂,香弱</td><td>浓苦/涩重</td></tr>
+    <tr><td>2</td><td>清香,香短促</td><td>轻薄</td></tr>
+    <tr><td>3</td><td>有特征香</td><td>清爽,适度</td></tr>
+    <tr><td>4</td><td>特征香显,香气扎实</td><td>有特征,味型特征显</td></tr>
+    <tr><td>5</td><td>香气饱满高扬,香长</td><td>口感饱满,爽利</td></tr>
+    <tr><td>和谐度</td><td colspan="2">0=不和谐 1=尚和谐 2=和谐</td></tr>
+  </table>
+  <h3>7.3 测评执行规程</h3>
+  <div class="steps">
+    <div class="step"><div class="t">标注分区</div><div class="d">香气与滋味按「前 / 中 / 后」分区记录(如"前香高、中段果香、尾香长"),避免混合描述。</div></div>
+    <div class="step"><div class="t">双杯对照</div><div class="d">同批双杯冲泡核对一致性(现有记录已有"双杯汤色差异"实践,固化为必填项)。</div></div>
+    <div class="step"><div class="t">即时录入</div><div class="d">测评完成当场录入基因库(品名/批次/得分/简评),禁止事后补记。</div></div>
+    <div class="step"><div class="t">感官疲劳控制</div><div class="d">单场次测评 ≤8 个样,超量分场——解决现状"评判标准飘忽"的质量根因。</div></div>
+    <div class="step"><div class="t">回流训练</div><div class="d">测评数据与配方比例、工艺参数一并归档,作为拼配预测模型的增量训练集。</div></div>
+  </div>
+</section>
+
+<!-- ================= ⑧ ================= -->
+<section class="sec" id="s8">
+  <h2><span class="no">⑧</span>ROI 量化分析(立项依据)</h2>
+  <table>
+    <tr><th style="width:16%">收益维度</th><th style="width:38%">机制</th><th>量化测算</th></tr>
+    <tr><td><b>时间成本</b></td><td>70% 试错转计算机模拟;并行能力 3-5 倍</td><td>单客户成单周期 1.5 天 → 0.5 天;多承接 20 个小客户 × 5 万 = <b>年增收约 100 万</b></td></tr>
+    <tr><td><b>原料成本</b></td><td>AI 推荐准确后物理打样 -60%</td><td>原料年损耗 -50%+;按年采购 500 万计,<b>年省约 50 万</b></td></tr>
+    <tr><td><b>客户体验</b></td><td>按历史成功数据推荐,成功率高于人工摸索</td><td>一次通过率 <b>+20%</b>,修改减少 → 满意度与复购提升</td></tr>
+    <tr><td><b>隐性收益</b></td><td>知识资产沉淀 + 抗人员风险</td><td>新人培养 1-2 年 → <b>3 个月</b>;核心配方不再随离职流失</td></tr>
+  </table>
+  <h3>无 AI vs 有 AI 对比(立项陈述版)</h3>
+  <table>
+    <tr><th>维度</th><th>无 AI 基因库(现状)</th><th>有 AI 基因库(目标)</th></tr>
+    <tr><td>响应速度</td><td>1-2 天/需求,只能挑大客户做</td><td>小时级响应,并行处理所有需求</td></tr>
+    <tr><td>成本</td><td>原料损耗高,试错成本大</td><td>模拟为主,损耗降低 50% 以上</td></tr>
+    <tr><td>质量</td><td>感官疲劳,标准波动</td><td>数据化品控,稳定输出</td></tr>
+    <tr><td>客户信任</td><td>反复修改,信任度低</td><td>高通过率,专业形象</td></tr>
+    <tr><td>供应链</td><td>依赖采购经验,稳定性难控</td><td>数据驱动优选,风险预警</td></tr>
+    <tr><td>核心资产</td><td>储存在个人脑中</td><td>沉淀为企业知识库</td></tr>
+  </table>
+  <div class="box green"><b>结论(供立项引用)</b>:建设基因库短期可降损耗、提升接单能力(年化约 150 万直接收益),长期构建数据驱动的研发竞争力与组织知识资产——这是战略投资,不是工具采购。</div>
+</section>
+
+<!-- ================= ⑨ ================= -->
+<section class="sec" id="s9">
+  <h2><span class="no">⑨</span>最终分析报告模板(流程末端的标准输出)</h2>
+  <p>每次客户需求跑完全链路,产出一份《新品研发可行性分析报告》。结构固定如下,AI 生成初稿、PM 定稿:</p>
+  <table>
+    <tr><th style="width:6%">章</th><th style="width:22%">模块</th><th style="width:44%">内容与数据依据</th><th>来源</th></tr>
+    <tr><td>1</td><td>需求摘要</td><td>客户/场景/抽象风味需求/成本区间/时间窗</td><td>业务登记单</td></tr>
+    <tr><td>2</td><td>数据依据与信息源清单</td><td>内部数据快照 + 外部信息源台账(含 W1/W2/W3 与 C 值、因果四验结论)</td><td>⑤章台账</td></tr>
+    <tr><td>3</td><td>候选方案 TOP-3</td><td>配方组合与比例、预测风味剖面(前中后)、模拟成本、库存与供应风险、替代方案</td><td>基因库检索 + 拼配预测</td></tr>
+    <tr><td>4</td><td>核价与毛利校验</td><td>原料价格参考、毛利红线、价格敏感度</td><td>财务核价联动</td></tr>
+    <tr><td>5</td><td>打样验证结果</td><td>实测 0-12 分 vs 预测分偏差、调整记录</td><td>测评标准化数据</td></tr>
+    <tr><td>6</td><td>卖点与设计图</td><td>产品卖点文案、设计图(豆包等平台生成,人工优选)、适配渠道</td><td>AIGC 平台</td></tr>
+    <tr><td>7</td><td>上市建议与追踪指标</td><td>定价建议、上市节奏、风险预案;追踪:复购率/退货率/投诉率/毛利达成</td><td>闭环复利设计</td></tr>
+  </table>
+  <div class="box yellow"><b>报告纪律</b><span class="q">① 每个结论必须标注数据来源或【推理假设】;② C&lt;0.4 的信息不得作为结论依据;③ 预测分与实测分偏差 &gt;1 分时必须复盘模型并在报告中披露。</span></div>
+</section>
+
+<!-- ================= ⑩ ================= -->
+<section class="sec" id="s10">
+  <h2><span class="no">⑩</span>实施路线图与岗位 SOP 连接</h2>
+  <div class="mermaid-box"><div class="mermaid">
+gantt
+    title AI辅助研发落地路线(建议12周MVP,自2026-09-14起)
+    dateFormat  YYYY-MM-DD
+    axisFormat  %m-%d
+    section 阶段1 数据资产
+    样品库电子化与字段标准化(14列升级)      :p1, 2026-09-14, 14d
+    受控词表与测评量表数字化               :p1b, 2026-09-14, 14d
+    section 阶段2 基因库MVP
+    原料语义检索上线(抽象需求匹配)          :p2, after p1, 21d
+    section 阶段3 智能推荐
+    配方推荐+拼配预测+成本模拟             :p3, after p2, 21d
+    section 阶段4 全链路集成
+    自动核价+卖点设计图+ERP联动            :p4, after p3, 21d
+    section 阶段5 闭环沉淀
+    数据回流机制与模型迭代复盘              :p5, after p4, 7d
+  </div><div class="mermaid-caption">图 10-1 五阶段路线:先数据、后能力、再场景,每阶段有可验收产出</div></div>
+
+  <h3>阶段验收标准</h3>
+  <table>
+    <tr><th>阶段</th><th>可验收产出</th><th>验证指标</th></tr>
+    <tr><td>1 数据资产</td><td>标准化原料主数据库 + 受控词表 v1 + 测评数据入规</td><td>存量 276 行记录 100% 结构化;新增测评 100% 按量表录入</td></tr>
+    <tr><td>2 基因库 MVP</td><td>语义检索可用:输入"高香低涩茉莉花香绿茶"返回 TOP-N</td><td>研发实际使用率 ≥60%;检索命中率人工评估 ≥80%</td></tr>
+    <tr><td>3 智能推荐</td><td>配方推荐报告(含预测风味/成本)自动生成</td><td>打样次数 -40%(MVP 目标);预测-实测偏差 ≤1 分</td></tr>
+    <tr><td>4 全链路</td><td>需求 → 推荐 → 核价 → 卖点/设计图全流程贯通</td><td>单需求端到端 ≤2 天;成本超标率下降</td></tr>
+    <tr><td>5 闭环沉淀</td><td>月度模型迭代复盘机制运行</td><td>月活使用率、一次通过率 +20% 达成立项口径</td></tr>
+  </table>
+
+  <h3>与岗位周计划 / 日结果的连接(王慧程职责表落位)</h3>
+  <table>
+    <tr><th>岗位职责(权重)</th><th>对应 SOP 环节</th><th>周计划动作</th><th>日结果事实</th></tr>
+    <tr><td>① 需求洞察与场景评估(20%)</td><td>⑤ 信息搜集与权重、② 痛点映射</td><td>重点客户需求访谈、信息源台账复盘</td><td>访谈纪要、需求结构化单、ROI 评估表</td></tr>
+    <tr><td>② AI 项目交付管理(35%)</td><td>⑥ 三张时序图全流程、⑩ 路线图</td><td>里程碑排期、风险对冲</td><td>阶段验收记录、阻塞项与解决方案</td></tr>
+    <tr><td>③ 业务融合与推广(20%)</td><td>⑦ 测评入规、研发使用培训</td><td>培训场次、使用率推广动作</td><td>培训人数、使用率报表、一线反馈</td></tr>
+    <tr><td>④ 数据驱动运营(15%)</td><td>⑨ 报告追踪指标、⑧ ROI 复核</td><td>A/B 测试与迭代任务</td><td>测试数据、预测偏差复盘、优化日志</td></tr>
+    <tr><td>⑤ 供应商管理(10%)</td><td>6.3 供应商智能管理流程</td><td>供应商评审、稳定性指数解读</td><td>交付物质量评估、预警处置记录</td></tr>
+  </table>
+  <div class="box blue"><b>待你确认(全局收尾)</b><span class="q">1)五阶段排期与公司预算节奏是否匹配?2)MVP 阶段先覆盖乌龙/红茶/绿茶三大类是否合适?3)本 SOP 的评审人名单与评审时间?</span></div>
+</section>
+
+<footer>速品食品 · AI辅助产品研发 SOP 交流稿 v0.1 · 王慧程 · 2026-09-12 · 本页所有量化数字引自《AI辅助茶叶研发系统(含基因库)价值分析报告》,字段结构引自《研发样品库》与《现制茶饮产品研发测评模板》</footer>
+</div>
+
+<script>
+(function(){
+  var SOURCES = [
+    'https://cdn.bootcdn.net/ajax/libs/mermaid/10.9.1/mermaid.min.js',
+    'https://cdn.jsdelivr.net/npm/mermaid@10.9.1/dist/mermaid.min.js',
+    'https://unpkg.com/mermaid@10.9.1/dist/mermaid.min.js'
+  ];
+  var i = 0;
+  function tryNext(){
+    if(i >= SOURCES.length){ document.getElementById('mermaidFallback').style.display='block'; return; }
+    var s = document.createElement('script');
+    s.src = SOURCES[i++];
+    s.onload = init; s.onerror = tryNext;
+    document.head.appendChild(s);
+  }
+  function init(){
+    if(!window.mermaid){ tryNext(); return; }
+    mermaid.initialize({
+      startOnLoad:false, securityLevel:'loose', theme:'base',
+      themeVariables:{
+        primaryColor:'#eff6ff', primaryBorderColor:'#1d4ed8', primaryTextColor:'#1f2937',
+        lineColor:'#64748b', actorBkg:'#eff6ff', actorBorder:'#1d4ed8', actorTextColor:'#1f2937',
+        signalColor:'#475569', signalTextColor:'#1f2937', noteBkgColor:'#fffbeb', noteBorderColor:'#f59e0b',
+        activationBkgColor:'#dbeafe', fontSize:'14px'
+      },
+      sequence:{ useMaxWidth:true, mirrorActors:false, actorMargin:56, width:170, messageFontSize:13, noteFontSize:12, wrap:true },
+      flowchart:{ useMaxWidth:true, htmlLabels:true, curve:'basis' },
+      gantt:{ useMaxWidth:true, fontSize:12 }
+    });
+    mermaid.run({ querySelector:'.mermaid' }).catch(function(e){
+      document.getElementById('mermaidFallback').style.display='block';
+      console.error('mermaid render error', e);
+    });
+  }
+  tryNext();
+})();
+</script>
+</body>
+</html>

+ 253 - 0
deliverables/新品配方推荐与调测报告_首次实跑.html

@@ -0,0 +1,253 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>新品配方推荐与调测报告 · 首次实跑 · 花香甜奶茶茶底</title>
+<style>
+  :root{
+    --ink:#1f2937; --ink-2:#4b5563; --ink-3:#6b7280; --line:#e5e7eb; --bg:#f6f8fb; --card:#ffffff;
+    --green:#15803d; --green-bg:#f0fdf4; --green-line:#bbf7d0;
+    --yellow:#b45309; --yellow-bg:#fffbeb; --yellow-line:#fde68a;
+    --red:#b91c1c; --red-bg:#fef2f2; --red-line:#fecaca;
+    --accent:#1d4ed8; --accent-bg:#eff6ff; --accent-line:#bfdbfe;
+  }
+  *{box-sizing:border-box;margin:0;padding:0}
+  html{scroll-behavior:smooth}
+  body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);line-height:1.75}
+  .wrap{max-width:1120px;margin:0 auto;padding:28px 20px 80px}
+  header.hero{background:linear-gradient(135deg,#134e4a 0%,#0f766e 55%,#0d9488 100%);color:#fff;border-radius:16px;padding:32px 38px;margin-bottom:22px}
+  header.hero h1{font-size:25px;letter-spacing:.5px}
+  header.hero .sub{margin-top:8px;font-size:13.5px;opacity:.94}
+  nav.toc{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.97);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:12px;padding:9px 14px;display:flex;gap:6px;flex-wrap:wrap;margin-bottom:24px;box-shadow:0 2px 8px rgba(0,0,0,.05)}
+  nav.toc a{text-decoration:none;color:var(--ink-2);font-size:13px;padding:3px 11px;border-radius:999px}
+  nav.toc a:hover{color:var(--accent);background:var(--accent-bg)}
+  section.sec{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:28px 32px;margin-bottom:24px}
+  section.sec h2{font-size:20px;padding-bottom:10px;border-bottom:2px solid #0f766e;margin-bottom:16px}
+  section.sec h2 .no{display:inline-block;background:#0f766e;color:#fff;border-radius:8px;font-size:13px;padding:2px 10px;margin-right:10px;vertical-align:3px}
+  section.sec h3{font-size:15.5px;color:#0f766e;margin:18px 0 8px}
+  section.sec p{font-size:14px;color:var(--ink-2);margin:8px 0}
+  section.sec li{font-size:14px;color:var(--ink-2);margin:4px 0 4px 22px}
+  table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13.5px}
+  th{background:#f0fdfa;color:var(--ink);text-align:left;padding:8px 10px;border:1px solid var(--line);font-weight:600;white-space:nowrap}
+  td{padding:8px 10px;border:1px solid var(--line);color:var(--ink-2);vertical-align:top}
+  tr:nth-child(even) td{background:#fafbfc}
+  td b{color:var(--ink)}
+  .badge{display:inline-block;font-size:12px;border-radius:6px;padding:1px 8px;font-weight:600;white-space:nowrap}
+  .b-green{background:var(--green-bg);color:var(--green);border:1px solid var(--green-line)}
+  .b-yellow{background:var(--yellow-bg);color:var(--yellow);border:1px solid var(--yellow-line)}
+  .b-red{background:var(--red-bg);color:var(--red);border:1px solid var(--red-line)}
+  .b-blue{background:var(--accent-bg);color:var(--accent);border:1px solid var(--accent-line)}
+  .b-teal{background:#f0fdfa;color:#0f766e;border:1px solid #99f6e4}
+  .box{border-radius:10px;padding:13px 17px;font-size:13.5px;margin:14px 0;border-left:4px solid}
+  .box.blue{background:var(--accent-bg);border-color:var(--accent);color:#1e3a8a}
+  .box.green{background:var(--green-bg);border-color:#22c55e;color:#14532d}
+  .box.yellow{background:var(--yellow-bg);border-color:#f59e0b;color:#78350f}
+  .box.red{background:var(--red-bg);border-color:#ef4444;color:#7f1d1d}
+  .box b{font-weight:700}
+  .plan-card{border:1.5px solid var(--accent-line);border-radius:12px;padding:18px 20px;margin:16px 0;background:#fdfefe}
+  .plan-card h4{font-size:15.5px;color:var(--accent);margin-bottom:8px}
+  .plan-card .principle{font-size:13.5px;color:var(--ink-2);background:#f8fafc;border-left:3px solid var(--accent-line);padding:8px 12px;border-radius:0 6px 6px 0;margin:10px 0}
+  .plan-card .cost{font-size:13.5px;margin-top:8px}
+  .steps{counter-reset:st;margin:10px 0}
+  .step{position:relative;padding:10px 12px 10px 50px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:#fdfefe}
+  .step::before{counter-increment:st;content:counter(st);position:absolute;left:12px;top:12px;width:25px;height:25px;border-radius:8px;background:#0f766e;color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}
+  .step .t{font-weight:700;font-size:14px}
+  .step .d{font-size:13px;color:var(--ink-2)}
+  .diag h5{font-size:14px;margin:12px 0 6px}
+  .diag .q1{color:#b91c1c}.diag .q2{color:#15803d}.diag .q3{color:#1d4ed8}
+  footer{color:var(--ink-3);font-size:12.5px;text-align:center;padding:22px 0 6px}
+  @media print{nav.toc{display:none}section.sec{break-inside:avoid;border:none}}
+</style>
+</head>
+<body>
+<div class="wrap">
+
+<header class="hero">
+  <h1>新品配方推荐与调测报告(首次实跑)</h1>
+  <div class="sub">模拟客户需求:奶茶应用 · 花香显、甜感好的红茶茶底 · 含临期库存消化演示与「醇香度」调测全流程</div>
+  <div class="sub" style="margin-top:4px">执行:AI 研发智能体(技能.doc 角色设定 v1) | 复核:王慧程 | 日期:2026-09-12 | 输出格式对齐:《方案示例-方案调测》历史稿件</div>
+</header>
+
+<nav class="toc">
+  <a href="#s1">一、需求摘要</a><a href="#s2">二、方案推荐(A/B/C)</a><a href="#s3">三、方案调测演示</a><a href="#s4">四、打样验证建议</a><a href="#s5">五、数据来源声明</a><a href="#s6">六、AI执行工作汇报</a>
+</nav>
+
+<!-- ================= 一 ================= -->
+<section class="sec" id="s1">
+  <h2><span class="no">一</span>需求摘要</h2>
+  <table>
+    <tr><th style="width:18%">要素</th><th style="width:52%">内容</th><th>性质</th></tr>
+    <tr><td>客户/应用</td><td>连锁奶茶品牌客户 · 奶茶应用(茶+冰+奶)</td><td><span class="badge b-yellow">推理假设</span></td></tr>
+    <tr><td>风味目标</td><td>花香显、甜感好(客户原话:"配方风格要花香、甜的产品")</td><td><span class="badge b-green">事实</span></td></tr>
+    <tr><td>成本区间</td><td>≤45 元/斤(参照历史方案 39.25~47.5 元/斤的谈判带)</td><td><span class="badge b-yellow">推理假设</span></td></tr>
+    <tr><td>时间窗</td><td>2 周内完成打样确认</td><td><span class="badge b-yellow">推理假设</span></td></tr>
+    <tr><td>附加约束</td><td>优先消化临期库存(滇红F3428 距到期 15 天)</td><td><span class="badge b-green">事实·截图</span></td></tr>
+    <tr><td>对标在售产品</td><td>港式红茶 PS01001259 · 茉莉清语2.0 PS01001260 · 台式风味红茶 PS01001258 · 岩皇奇兰乌龙茶B PS01001257——产品特性均标注<b>"花香,甜度高"</b></td><td><span class="badge b-green">事实·产品清单</span></td></tr>
+  </table>
+  <div class="box yellow"><b>按推理假设推进声明</b>:客户名、成本红线、时间窗为企业未提供字段,按行业惯例假设并在交付前请业务方确认;风味目标与临期约束为真实输入,方案设计以这两项为硬约束。</div>
+</section>
+
+<!-- ================= 二 ================= -->
+<section class="sec" id="s2">
+  <h2><span class="no">二</span>方案推荐(TOP-3)</h2>
+  <p>检索范围:研发样品库 276 行实测记录(S/A 级优先)+ 截图库存数据。规则:<b>核心花香原料 ≥30%、风味前中后分层互补、临期料优先入方案、成本红线前置校验</b>。</p>
+
+  <div class="plan-card">
+    <h4>方案 A:花香优先方案 <span class="badge b-teal">推荐指数 ★★★★★</span></h4>
+    <table>
+      <tr><th>原料</th><th>编码/批次</th><th>配比</th><th>说明</th></tr>
+      <tr><td><b>九曲红梅(二级)</b></td><td>Y010001207</td><td><b>40%</b></td><td>核心梅花花香,奠定花香主体 <span class="badge b-green">价格40·事实</span></td></tr>
+      <tr><td><b>英红样5(标)</b></td><td>样品库·标</td><td><b>25%</b></td><td>薯香蜜甜香显,浓厚醇爽,饱满甜润(测评综合 10.4 分),补甜感 <span class="badge b-yellow">价格~60·假设</span></td></tr>
+      <tr><td><b>滇红F3428</b></td><td>Y010000424</td><td><b>35%</b></td><td>基底骨架;临期产品距到期 15 天需尽快使用 <span class="badge b-yellow">临期价~15·假设</span></td></tr>
+    </table>
+    <div class="principle">设计原理:九曲红梅的梅花花香为核心记忆点(40% 保主体);英红样5 的蜜甜香与"甜感好"需求精准对位;滇红F3428 以大比例承接临期库存消化任务,其品种香被花香与蜜甜覆盖,不干扰主体。</div>
+    <div class="cost">💰 成本参考:约 <b>36.3 元/斤</b>(0.4×40 + 0.25×60 + 0.35×15,含 2 项假设价) | ⚠️ 假设价需采购核价后修正</div>
+  </div>
+
+  <div class="plan-card">
+    <h4>方案 B:临期优先方案(历史稿件原版) <span class="badge b-teal">库存消化最优</span></h4>
+    <table>
+      <tr><th>原料</th><th>编码</th><th>配比</th><th>说明</th></tr>
+      <tr><td>九曲红梅(二级)</td><td>Y010001207</td><td>40%</td><td>核心梅花花香</td></tr>
+      <tr><td>川红工夫(一级)</td><td>Y010001203</td><td>35%</td><td>橘糖香,增加甜感</td></tr>
+      <tr><td>滇红茶本F3428</td><td>Y010000424</td><td>25%</td><td>临期产品,距到期 15 天,需尽快使用</td></tr>
+    </table>
+    <div class="principle">设计原理(原文保留):保留梅花花香核心,降低九曲红梅比例,添加川红工夫提升甜香。加入 25% 临期滇红F3428(距到期仅 15 天,需尽快使用),整体风味仍保持甜醇风格。</div>
+    <div class="cost">💰 成本参考:约 <b>39.25 元/斤</b>(含临期产品)<span class="badge b-green">事实·截图</span></div>
+  </div>
+
+  <div class="plan-card">
+    <h4>方案 C:醇厚平衡方案 <span class="badge b-teal">奶感适配最优</span></h4>
+    <table>
+      <tr><th>原料</th><th>编码/批次</th><th>配比</th><th>说明</th></tr>
+      <tr><td><b>高山毛峰(DC标)</b></td><td>样品库·DC标</td><td><b>35%</b></td><td>花果香、滋味浓郁(测评 9.9 分),奶中花香穿透力强 <span class="badge b-yellow">价格~70·假设</span></td></tr>
+      <tr><td><b>滇红3424(打碎)</b></td><td>Y010000753</td><td><b>35%</b></td><td>醇厚较鲜,滋味评审 83 分;库存 200kg 临期 40 天 <span class="badge b-green">价格20·事实</span></td></tr>
+      <tr><td><b>红茶013(ME)</b></td><td>样品库·ME</td><td><b>30%</b></td><td>奶茶测评方式下综合 10 分,奶感适配实证最强 <span class="badge b-yellow">价格~55·假设</span></td></tr>
+    </table>
+    <div class="principle">设计原理:三款均为"奶测高分"实证原料(红茶013 与 高山毛峰DBT 仿样在奶茶应用下 10 分/10.1 分),花香(毛峰)→ 醇厚(3424)→ 甜润(013)三段分层,适配奶茶工艺对茶底的"香透奶"要求;同时再消化 35% 临期料。</div>
+    <div class="cost">💰 成本参考:约 <b>48.3 元/斤</b>(0.35×70 + 0.35×20 + 0.30×55,含 2 项假设价) | ⚠️ 略超 45 元红线,备用于客户接受溢价时</div>
+  </div>
+
+  <div class="box green"><b>推荐结论</b>:首选方案 A(花香与甜感对位最准 + 成本最低 + 消化临期料);若客户反馈"醇厚度/奶感不够",按第三章流程切换方案 C。</div>
+</section>
+
+<!-- ================= 三 ================= -->
+<section class="sec" id="s3">
+  <h2><span class="no">三</span>方案调测演示(模拟客户反馈:醇香度不够)</h2>
+  <div class="box blue">🧪 <b>调测指令(对齐历史稿件句式)</b>:"优选方案 A,但是醇香度不够,请调整并给出调整依据"</div>
+
+  <div class="diag">
+    <h5 class="q1">🔍 问题诊断</h5>
+    <p>方案 A 中承担醇厚度的滇红F3428 以"品种香"为主,滋味醇厚度不足(历史记录:滋味稍重、微涩,厚度层次弱);花香 40% 占比合理但整体茶汤"甜香有余、醇骨不足",导致奶茶应用中段感单薄。</p>
+
+    <h5 class="q2">✅ 调整方案</h5>
+    <table>
+      <tr><th>原料</th><th>编码</th><th>配比</th><th>说明</th></tr>
+      <tr><td>九曲红梅(二级)</td><td>Y010001207</td><td>35%</td><td>核心梅花花香(降低比例,让位醇厚)</td></tr>
+      <tr><td><b>滇红3424(打碎)</b></td><td>Y010000753</td><td><b>35% ↑</b></td><td><b>醇厚较鲜,滋味评审 83 分;库存 200kg,临期 40 天</b> <span class="badge b-green">事实·截图</span></td></tr>
+      <tr><td><b>英红样5(标)</b></td><td>样品库·标</td><td><b>30% ↑</b></td><td>薯香蜜甜香显,浓厚醇爽、饱满甜润(10.4 分),甜感支撑位</td></tr>
+    </table>
+
+    <h5 class="q3">📊 调整依据</h5>
+    <ul>
+      <li><b>替换逻辑</b>:醇厚度短板原料(F3428)→ 高醇厚实证原料(滇红3424打碎,滋味 83 分),与历史稿件调测动作同构。</li>
+      <li><b>风味分层</b>:九曲红梅花香居前段(香显锐)、3424 醇厚居中段、英红样5 蜜甜收尾段——前香/中骨/尾甜三层完整。</li>
+      <li><b>库存联动</b>:3424 临期 40 天 + 200kg 存量,替代方案不新增采购、加速去库。</li>
+      <li><b>成本校验</b>:约 <b>47.5 元/斤</b>(0.35×40 + 0.35×20 + 0.30×60)——与历史稿件调测版 47.5 元/斤一致锚点,略超假设红线,需客户确认。</li>
+    </ul>
+
+    <h5 class="q3">📈 效果预期</h5>
+    <ul>
+      <li><b>醇厚提升</b>:3424 打碎工艺出味快、醇厚较鲜,可显著提升茶汤醇感与奶茶中段支撑。</li>
+      <li><b>层次丰富</b>:英红样5 蜜甜香与九曲红梅花香形成"甜-花"复合主线,尾段饱满不空。</li>
+      <li><b>成本控制</b>:调整后约 47.5 元/斤,较方案 A(36.3)上升,仍在历史成交带(39.25~47.5)内,属合理范围。</li>
+      <li><b>预期测评</b>:香气 ≥4.2/5、滋味 ≥4.3/5、综合 ≥10/12(对照样品库 S 级实测带);奶测复核确认"香入汤"。</li>
+    </ul>
+  </div>
+</section>
+
+<!-- ================= 四 ================= -->
+<section class="sec" id="s4">
+  <h2><span class="no">四</span>打样验证建议(AI 推荐结果的人工验证环节)</h2>
+  <div class="steps">
+    <div class="step"><div class="t">打样范围收敛</div><div class="d">仅打样方案 A 与调测版 A',共 2 个配方 × 双杯对照 = 4 杯(传统流程需 6-10 轮试错,收敛率约 70%)。</div></div>
+    <div class="step"><div class="t">测评量表</div><div class="d">按奶茶应用量表:香气 0-5 + 滋味 0-5 + 和谐度 0-2,满分 12;评分锚点见 SOP⑦章。</div></div>
+    <div class="step"><div class="t">分区记录</div><div class="d">香气与滋味按"前 / 中 / 后"分区记录;重点验证"香入汤"与奶感融合(奶茶应用关键项)。</div></div>
+    <div class="step"><div class="t">达标判定</div><div class="d">综合 ≥9.5 且 预测偏差 ≤1 分 → 直接送样客户;不达标 → 反馈偏差点,AI 二轮调测(上限 2 轮)。</div></div>
+    <div class="step"><div class="t">数据回流</div><div class="d">实测分数 + 配比 + 简评 48 小时内回写基因库,作为下一轮推荐训练数据(飞轮闭环)。</div></div>
+  </div>
+</section>
+
+<!-- ================= 五 ================= -->
+<section class="sec" id="s5">
+  <h2><span class="no">五</span>数据来源声明(事实 vs 推理假设)</h2>
+  <table>
+    <tr><th style="width:34%">数据项</th><th style="width:22%">性质</th><th>来源</th></tr>
+    <tr><td>九曲红梅/川红工夫/滇红F3428/滇红3424打碎 的编码、配比、说明</td><td><span class="badge b-green">事实</span></td><td>历史稿件《方案示例-方案调测》</td></tr>
+    <tr><td>价格:九曲红梅 40、滇红3424打碎 20、方案B成本 39.25、调测版成本 47.5</td><td><span class="badge b-green">事实</span></td><td>历史稿件</td></tr>
+    <tr><td>3424 滋味 83 分、醇厚较鲜、库存 200kg 临期 40 天;产地云南凤庆;工艺工夫红茶</td><td><span class="badge b-green">事实</span></td><td>历史稿件调测依据段</td></tr>
+    <tr><td>英红样5(10.4 分)、高山毛峰(9.9 分)、红茶013 奶测 10 分、高山金观音7A2 等测评数据</td><td><span class="badge b-green">事实</span></td><td>《研发样品库.xlsx》276 行实测</td></tr>
+    <tr><td>测评量表与 0-5 锚点、四类茶维度</td><td><span class="badge b-green">事实</span></td><td>《现制茶饮产品研发测评模板.pptx》</td></tr>
+    <tr><td>英红样5 ≈60、毛峰 ≈70、红茶013 ≈55、F3428 临期价 ≈15 元/斤</td><td><span class="badge b-yellow">推理假设</span></td><td>按红茶原料市场价格带估算,<b>采购核价后必须替换</b></td></tr>
+    <tr><td>在售成品 4 款(PS01001257~1260)、半成品调香链路(B010100866~868)、霸王茶姬组合装(PS01001249/1251)等产品主数据</td><td><span class="badge b-green">事实</span></td><td>《产品清单.xlsx》63 行 × 11 列(产品名称/特性/分类/编码/模式/状态/储存/保质期/规格)</td></tr>
+    <tr><td>"花香甜"方向已有 4 款在售成品实证(特性均标注"花香,甜度高")</td><td><span class="badge b-green">事实</span></td><td>产品清单产品特性列——证明本次需求方向与现有产品线一致,可复用其供应链</td></tr>    <tr><td>客户画像、成本红线 45 元/斤、时间窗 2 周</td><td><span class="badge b-yellow">推理假设</span></td><td>行业惯例,业务方确认前仅作演示</td></tr>
+    <tr><td>调测版成本 47.5 元/斤的复算口径</td><td><span class="badge b-red">待校验</span></td><td>历史稿件两版成本在线性混合模型下存在口径不一致(见工作汇报第六节第 3 项),需财务确认核价公式</td></tr>
+  </table>
+</section>
+
+<!-- ================= 六 ================= -->
+<section class="sec" id="s6">
+  <h2><span class="no">六</span>AI 执行工作汇报</h2>
+
+  <h3>6.1 输入材料与处理</h3>
+  <table>
+    <tr><th>材料</th><th>类型/可行性</th><th>处理方式</th></tr>
+    <tr><td>研发样品库.xlsx(276 行 × 14 列)</td><td>Excel 🟡→🟢(程序化解析)</td><td>读取全表 → 识别 14 列字段 → 筛选 S/A 级高评分样品 → 提取红茶类香气/滋味/简评文本</td></tr>
+    <tr><td>现制茶饮产品研发测评模板.pptx(15 页)</td><td>PPT 🟡→🟢</td><td>提取四类茶测评维度、0-5 锚点、12 分制结构 → 固化为评分规则</td></tr>
+    <tr><td>AI辅助茶叶研发系统价值分析报告.docx</td><td>Word 🟡→🟢</td><td>提取 ROI 数据(响应周期/损耗率/通过率)→ 作为成本收益校验基准</td></tr>
+    <tr><td>方案示例-方案调测(历史稿件截图)</td><td>图片 🟠→🟢(人工已确认内容)</td><td>提取输出格式模板 + 4 个真实库存数据点(编码/价格/临期/库存量)→ 作为事实锚点</td></tr>
+    <tr><td>产品清单.xlsx(63 行 × 11 列)</td><td>Excel 🟢</td><td>识别 4 款在售成品(特性="花香,甜度高")+ 半成品调香链路 + 霸王茶姬组合装 → 验证需求方向与现有产品线一致;确认该表<b>缺价格/库存量/到期日字段</b></td></tr>
+    <tr><td>技能.doc(智能体角色设定)</td><td>老版 doc 🟠→🟢</td><td>提取 5 大技能边界 + 7 条限制条款 → 全部纳入本次执行(见 6.3 合规自检)</td></tr>
+  </table>
+  <div class="box yellow"><b>库存数据说明</b>:你提供的《产品清单.xlsx》是<b>产品主数据表</b>(名称/特性/分类/编码/状态/保质期/规格),质量很高但缺<b>单价、库存量、到期日</b>三列,无法运行临期联动。本轮方案中库存数据点来自历史稿件的 4 个 SKU(九曲红梅/川红/滇红F3428/滇红3424打碎)。<b>待办</b>:请提供含"单价/库存量/到期日"的 WMS 导出表,即可启用全库临期自动联动。</div>
+
+  <h3>6.2 执行步骤(三阶段:输入 → 处理 → 输出)</h3>
+  <div class="steps">
+    <div class="step"><div class="t">需求结构化</div><div class="d">"花香、甜" → 标签化:花香型主体 + 甜感支撑 + 奶茶应用 + 临期约束;成本/时间窗按【推理假设】推进。</div></div>
+    <div class="step"><div class="t">原料语义检索</div><div class="d">按"花香/蜜甜/醇厚/奶测高分"四轴扫描样品库 → 命中英红样5、高山毛峰、红茶013、金观音7A2、茉莉雪芽等候选 → 结合截图库存价格锚点收敛到 TOP 原料池。</div></div>
+    <div class="step"><div class="t">方案生成</div><div class="d">按规则(核心香 ≥30%、前中后分层、临期优先)组合出 A/B/C 三方案,A 香甜对位、B 承接历史、C 奶感实证。</div></div>
+    <div class="step"><div class="t">成本核算</div><div class="d">价格 × 配比线性求和;事实价直接计算,假设价全部标注;超红线方案(C)显式提示而非隐藏。</div></div>
+    <div class="step"><div class="t">调测演练</div><div class="d">模拟客户反馈"醇香度不够"→ 按历史稿件三段式(问题诊断/调整方案/效果预期)输出调测版,验证调测链路可复用。</div></div>
+    <div class="step"><div class="t">报告输出</div><div class="d">对齐历史稿件格式 + 工作汇报 + 来源声明三合一交付。</div></div>
+  </div>
+
+  <h3>6.3 使用的规则与知识(省不掉的部分)</h3>
+  <ul>
+    <li><b>配方规则</b>:核心香型原料 ≥30%;风味前/中/后分层互补;临期料优先且标注到期天数;成本红线方案阶段前置校验。</li>
+    <li><b>测评规则</b>:四类茶 12 分制 + 0-5 锚点("有杂异→香饱满高扬,香长")+ 和谐度 0-2;奶茶应用重点验证"香入汤"。</li>
+    <li><b>调测规则</b>:反馈 → 定位短板维度 → 找高得分替代料 → 复算成本 → 输出三段式依据;迭代上限 2 轮。</li>
+    <li><b>技能.doc 限制条款合规</b>:① 未捏造任何原料/配方(全部可溯源至样品库或历史稿件);② 成本核算锚定真实价格,假设价全部显式标注、未伪装成事实;③ 输出限定茶饮研发范围;④ 预测值标注为"预期"而非承诺。</li>
+  </ul>
+
+  <h3>6.4 相对人工 SOP 的简化与省略</h3>
+  <table>
+    <tr><th>人工 SOP 环节</th><th>本次处理</th><th>说明</th></tr>
+    <tr><td>需求访谈与多轮澄清</td><td><b>省略</b></td><td>材料即输入;缺项按假设推进并标注,仅 4 项待业务确认</td></tr>
+    <tr><td>翻台账/凭记忆选料(1-2 天)</td><td><b>程序化秒级</b></td><td>直接读列行数据 + 评分筛选</td></tr>
+    <tr><td>多轮物理打样试错</td><td><b>收敛至 1 轮 2 配方</b></td><td>AI 模拟替代 70% 试错,人工只验证推荐结果</td></tr>
+    <tr><td>滞后财务核价</td><td><b>方案阶段内置</b></td><td>公式直算,红线即时校验</td></tr>
+    <tr><td>卖点/设计图生成</td><td><b>本轮未执行</b></td><td>属技能5;待配方经客户确认后启动,避免资源浪费</td></tr>
+  </table>
+
+  <h3>6.5 质量自检发现(工作过程中暴露的问题)</h3>
+  <div class="box red"><b>发现 1 · 成本口径疑似不一致</b>:历史稿件中"方案B 39.25 元/斤"与"调测版 47.5 元/斤"在线性混合模型下无法同时成立(调测版提高了 20 元/斤原料的占比、降低了 40 元/斤原料的占比,理论成本应下降或持平)。<b>待办</b>:请财务确认核价公式是否含加工费/损耗系数。</div>
+  <div class="box yellow"><b>发现 2 · 库存表字段缺口</b>:《产品清单.xlsx》为主数据表,缺"单价/库存量/到期日"三列,临期联动仅覆盖历史稿件的 4 个 SKU。<b>待办</b>:提供 WMS 库存导出表后,可启用全库临期联动与呆滞唤醒。</div>
+  <div class="box yellow"><b>发现 3 · 样品库缺商业字段</b>:276 行实测数据缺价格/库存/到期日列,且供应商编码大面积为空。<b>待办</b>:按 SOP④章 6 字段组升级主数据。</div>
+  <div class="box green"><b>发现 4 · 意外收获:需求方向被在售产品实证</b>:《产品清单》显示 4 款在售成品(港式红茶/茉莉清语2.0/台式风味红茶/岩皇奇兰乌龙茶B)产品特性全部标注<b>"花香,甜度高"</b>——说明本次模拟需求与公司现有产品线高度一致,新配方可复用成熟供应链与包材(中福合和 2608ZS 规格体系),上市成本与周期更可控。另发现半成品调香链路(泰式风味红茶 B010100866~868:匀堆→调香→小料)与霸王茶姬组合装(PS01001249/1251)实绩,验证"风味半成品 + 大客户定制"模式已跑通。</div>
+</section>
+
+<footer>速品食品 · 新品配方推荐与调测报告(首次实跑)· AI 研发智能体执行 · 王慧程复核 · 2026-09-12 · 本报告遵循《技能.doc》限制条款:全部原料与数据可溯源,假设项显式标注</footer>
+</div>
+</body>
+</html>

+ 122 - 0
lib/components/chat-window.css

@@ -0,0 +1,122 @@
+/* ============================================================
+ * lib/components/chat-window.css · 仿微信一对一聊天窗
+ * 只使用 tokens.css 的 --chat-* 与 --bg-*/--text-*/--radius-*,双主题自适应。
+ * ============================================================ */
+chat-window { display: block; width: 100%; }
+chat-window .cw {
+  max-width: 400px;
+  margin: 0 auto;
+  background: var(--chat-bg);
+  border: 1px solid var(--border-strong);
+  border-radius: var(--radius-lg);
+  overflow: hidden;
+  font-family: var(--font-body);
+  font-size: 14px;
+  line-height: 1.55;
+  color: var(--text-2);
+}
+chat-window .cw-empty { padding: 24px; text-align: center; color: var(--text-4); }
+
+/* 顶部条 */
+chat-window .cw-bar {
+  padding: 10px 14px;
+  background: var(--chat-bar-bg);
+  border-bottom: 1px solid var(--border-subtle);
+  text-align: center;
+  color: var(--chat-bar-text);
+  font-size: 13px;
+  letter-spacing: .05em;
+}
+chat-window .cw-bar .cw-sub {
+  display: block;
+  font-family: var(--font-mono);
+  font-size: 11px;
+  opacity: .7;
+  letter-spacing: .08em;
+}
+
+/* 消息区 */
+chat-window .cw-body { padding: 14px 13px; display: flex; flex-direction: column; gap: 7px; }
+
+chat-window .cw-time {
+  text-align: center;
+  color: var(--chat-time);
+  font-size: 11px;
+  font-family: var(--font-mono);
+  margin-bottom: 4px;
+}
+chat-window .cw-divider {
+  text-align: center;
+  color: var(--chat-time);
+  font-size: 11px;
+  margin: 6px 0;
+  letter-spacing: .1em;
+}
+
+/* 一条消息 */
+chat-window .cw-msg {
+  display: flex;
+  gap: 8px;
+  align-items: flex-end;
+  max-width: 100%;
+}
+chat-window .cw-msg.out { flex-direction: row-reverse; }
+
+chat-window .cw-ava {
+  flex: 0 0 32px;
+  height: 32px;
+  border-radius: 50%;
+  background: var(--chat-avatar-bg);
+  color: var(--chat-avatar-text);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 13px;
+  font-weight: 700;
+}
+
+chat-window .cw-bub {
+  max-width: 74%;
+  padding: 6px 11px;
+  border-radius: 2px 8px 8px 8px;
+  background: var(--chat-in-bg);
+  color: var(--chat-in-text);
+  word-break: break-word;
+}
+chat-window .cw-msg.out .cw-bub {
+  border-radius: 8px 2px 8px 8px;
+  background: var(--chat-out-bg);
+  color: var(--chat-out-text);
+}
+chat-window .cw-bub b { font-weight: 700; }
+
+/* 转账卡 */
+chat-window .cw-bub-transfer {
+  border: 1px solid var(--chat-card-border);
+  background: var(--chat-card-bg);
+  display: flex;
+  flex-direction: column;
+  gap: 2px;
+}
+chat-window .cw-tf-label { color: var(--chat-link); font-weight: 700; font-size: 12px; }
+chat-window .cw-tf-amt { font-size: 17px; font-weight: 700; color: var(--brand-ok); }
+
+/* 图片消息 */
+chat-window .cw-img { width: 100%; border-radius: 6px; }
+chat-window .cw-cap { margin-top: 4px; font-size: 12px; color: var(--chat-time); }
+
+/* 引语 */
+chat-window .cw-bub-quote { border-left: 3px solid var(--chat-link); }
+chat-window .cw-q-src { margin-top: 4px; font-size: 11px; color: var(--chat-time); }
+
+/* 底部条 */
+chat-window .cw-foot {
+  padding: 8px 14px;
+  background: var(--chat-bar-bg);
+  border-top: 1px solid var(--border-subtle);
+  color: var(--chat-time);
+  font-size: 11px;
+  font-family: var(--font-mono);
+  text-align: center;
+  letter-spacing: .06em;
+}

+ 95 - 0
lib/components/chat-window.js

@@ -0,0 +1,95 @@
+/* ============================================================
+ * lib/components/chat-window.js · 仿微信一对一聊天窗
+ * 用法:
+ *   <link rel="stylesheet" href=".../lib/components/chat-window.css">
+ *   <chat-window data-chat='{...}'></chat-window>          // 短数据
+ *   <script type="application/json" id="chat-x"> {...} </script>
+ *   <chat-window data-ref="#chat-x"></chat-window>         // 长数据
+ * 消息类型:text / transfer(转账卡) / time(时间) / divider(分隔) / image / quote
+ * 全部颜色来自 tokens.css 的 --chat-*(双主题自适应)。
+ * ============================================================ */
+(function () {
+  function esc(s) {
+    return String(s == null ? '' : s)
+      .replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+  }
+  function nl(s) {
+    return esc(s).replace(/\n/g, '<br>');
+  }
+
+  function parse(el) {
+    if (el.dataset.chat) { try { return JSON.parse(el.dataset.chat); } catch (e) { return null; } }
+    if (el.dataset.ref) {
+      var src = document.querySelector(el.dataset.ref);
+      if (src) { try { return JSON.parse(src.textContent); } catch (e) { return null; } }
+    }
+    return null;
+  }
+
+  function renderMsg(m) {
+    var side = m.side === 'out' ? 'out' : 'in';
+    if (m.type === 'time') {
+      return '<div class="cw-time">' + esc(m.text) + '</div>';
+    }
+    if (m.type === 'divider') {
+      return '<div class="cw-divider">' + esc(m.text) + '</div>';
+    }
+    // 带气泡的消息
+    var ava = '<div class="cw-ava">' + esc(m.avatar || (side === 'out' ? '我' : '')) + '</div>';
+    var inner = '';
+    if (m.type === 'transfer') {
+      inner = '<div class="cw-bub cw-bub-transfer">'
+        + '<span class="cw-tf-label">' + esc(m.text || '微信转账') + '</span>'
+        + '<span class="cw-tf-amt">' + esc(m.amount || '') + '</span>'
+        + '</div>';
+    } else if (m.type === 'image') {
+      inner = '<div class="cw-bub"><img class="cw-img" src="' + esc(m.src) + '" alt="">'
+        + (m.caption ? '<div class="cw-cap">' + esc(m.caption) + '</div>' : '')
+        + '</div>';
+    } else if (m.type === 'quote') {
+      inner = '<div class="cw-bub cw-bub-quote">' + nl(m.text)
+        + (m.source ? '<div class="cw-q-src">' + esc(m.source) + '</div>' : '')
+        + '</div>';
+    } else {
+      var body = nl(m.text);
+      if (m.bold) body = '<b>' + body + '</b>';
+      inner = '<div class="cw-bub">' + body + '</div>';
+    }
+    return '<div class="cw-msg ' + side + '">' + (side === 'in' ? ava + inner : inner + ava) + '</div>';
+  }
+
+  function render(el, d) {
+    if (!d) { el.innerHTML = '<div class="cw cw-empty">数据缺失</div>'; return; }
+    var msgs = (d.msgs || []).map(renderMsg).join('');
+    el.innerHTML =
+      '<div class="cw">' +
+        (d.title || d.subtitle ? (
+          '<div class="cw-bar">' + esc(d.title || '') +
+            (d.subtitle ? '<span class="cw-sub">' + esc(d.subtitle) + '</span>' : '') +
+          '</div>'
+        ) : '') +
+        '<div class="cw-body">' + msgs + '</div>' +
+        (d.footer ? '<div class="cw-foot">' + esc(d.footer) + '</div>' : '') +
+      '</div>';
+  }
+
+  var ChatWindow = function () {
+    return Reflect.construct(HTMLElement, [], ChatWindow);
+  };
+  ChatWindow.prototype = Object.create(HTMLElement.prototype);
+  ChatWindow.prototype.constructor = ChatWindow;
+  ChatWindow.prototype.connectedCallback = function () {
+    var self = this;
+    var d = parse(this);
+    if (!d && this.dataset.ref) {
+      // ref 指向的 JSON 可能晚于组件加载,延时再读一次
+      setTimeout(function () { render(self, parse(self)); }, 0);
+    } else {
+      render(this, d);
+    }
+  };
+
+  if (!customElements.get('chat-window')) {
+    customElements.define('chat-window', ChatWindow);
+  }
+})();

+ 122 - 0
lib/components/group-chat.css

@@ -0,0 +1,122 @@
+/* ============================================================
+ * lib/components/group-chat.css · 仿企业微信电脑端群聊窗
+ * 布局:顶部群名条 + 左成员列表 + 右消息流(电脑端横版)。
+ * 颜色全部来自 tokens.css 的 --chat-* / --brand-*,双主题自适应。
+ * ============================================================ */
+group-chat { display: block; width: 100%; }
+group-chat .gc {
+  max-width: 720px;
+  margin: 0 auto;
+  background: var(--chat-bg);
+  border: 1px solid var(--border-strong);
+  border-radius: var(--radius-lg);
+  overflow: hidden;
+  font-family: var(--font-body);
+  font-size: 14px;
+  line-height: 1.55;
+  color: var(--text-2);
+}
+group-chat .gc-empty { padding: 24px; text-align: center; color: var(--text-4); }
+
+/* 顶部群名条 */
+group-chat .gc-bar {
+  padding: 10px 16px;
+  background: var(--chat-bar-bg);
+  border-bottom: 1px solid var(--border-subtle);
+  text-align: center;
+  color: var(--chat-bar-text);
+  font-size: 14px;
+  letter-spacing: .05em;
+  font-weight: 700;
+}
+group-chat .gc-bar .gc-sub {
+  display: block;
+  font-family: var(--font-mono);
+  font-size: 11px;
+  font-weight: 400;
+  opacity: .7;
+  letter-spacing: .08em;
+}
+
+/* 主体:左成员 + 右消息 */
+group-chat .gc-main { display: flex; min-height: 260px; }
+
+group-chat .gc-members {
+  flex: 0 0 150px;
+  border-right: 1px solid var(--border-subtle);
+  padding: 10px 8px;
+  display: flex;
+  flex-direction: column;
+  gap: 2px;
+  background: var(--bg-1);
+}
+group-chat .gc-mem {
+  display: flex; align-items: center; gap: 8px;
+  padding: 5px 6px;
+  border-radius: var(--radius-sm);
+}
+group-chat .gc-mem:hover { background: var(--bg-2); }
+group-chat .gc-mem-info { min-width: 0; }
+group-chat .gc-mem-name { font-size: 13px; color: var(--text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
+group-chat .gc-mem-role { font-size: 10px; color: var(--brand-2); font-family: var(--font-mono); }
+
+/* 右侧消息流 */
+group-chat .gc-msgs { flex: 1; padding: 14px; display: flex; flex-direction: column; gap: 12px; overflow-y: auto; max-height: 500px; }
+
+group-chat .gc-msg { display: flex; gap: 10px; }
+group-chat .gc-ava {
+  flex: 0 0 34px; height: 34px;
+  border-radius: 6px;
+  background: var(--chat-avatar-bg);
+  color: var(--chat-avatar-text);
+  display: flex; align-items: center; justify-content: center;
+  font-size: 13px; font-weight: 700;
+}
+group-chat .gc-box { max-width: 78%; }
+group-chat .gc-name { font-size: 12px; color: var(--brand-2); margin-bottom: 2px; }
+group-chat .gc-text {
+  display: inline-block;
+  background: var(--chat-in-bg);
+  color: var(--chat-in-text);
+  padding: 6px 11px;
+  border-radius: 2px 8px 8px 8px;
+  word-break: break-word;
+}
+group-chat .gc-at {
+  color: var(--brand-1);
+  font-weight: 600;
+  border-radius: 3px;
+  background: var(--chat-card-bg);
+  padding: 0 3px;
+}
+
+/* 名片卡 */
+group-chat .gc-card {
+  border: 1px solid var(--chat-card-border);
+  background: var(--chat-card-bg);
+  border-radius: var(--radius-md);
+  padding: 9px 12px;
+  display: inline-block;
+  max-width: 100%;
+}
+group-chat .gc-card-t { color: var(--chat-link); font-weight: 700; font-size: 13px; }
+group-chat .gc-card-s { color: var(--text-3); font-size: 12px; margin-top: 2px; }
+group-chat .gc-card-g { color: var(--brand-ok); font-size: 11px; margin-top: 4px; font-family: var(--font-mono); }
+
+/* 底部 */
+group-chat .gc-foot {
+  padding: 8px 16px;
+  background: var(--chat-bar-bg);
+  border-top: 1px solid var(--border-subtle);
+  color: var(--chat-time);
+  font-size: 11px;
+  font-family: var(--font-mono);
+  text-align: center;
+  letter-spacing: .06em;
+}
+
+/* 收窄版(放入 .s-side 竖形素材列时用,收起左成员栏只留气泡流) */
+group-chat.gc-narrow .gc-members { display: none; }
+group-chat.gc-narrow .gc-main { min-height: auto; }
+group-chat.gc-narrow .gc-msgs { max-height: clamp(320px, 55vh, 520px); overflow-y: auto; padding: 12px; }
+group-chat.gc-narrow .gc-bar { padding: 8px 12px; font-size: 13px; }

+ 105 - 0
lib/components/group-chat.js

@@ -0,0 +1,105 @@
+/* ============================================================
+ * lib/components/group-chat.js · 仿企业微信电脑端群聊窗
+ * 用法:
+ *   <link rel="stylesheet" href=".../lib/components/group-chat.css">
+ *   <group-chat data-chat='{...}'></group-chat>
+ * JSON:{ group, subtitle, members:[{name,avatar,role}],
+ *         msgs:[{name,avatar,type:'text'|'card', text, at:[names], title, sub, tag}], footer }
+ * 消息文本内 @成员名 自动高亮为提及标签。
+ * 颜色全部来自 tokens.css 的 --chat-* / --brand-*(双主题自适应)。
+ * ============================================================ */
+(function () {
+  function esc(s) {
+    return String(s == null ? '' : s)
+      .replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+  }
+  function nl(s) {
+    return esc(s).replace(/\n/g, '<br>');
+  }
+
+  function parse(el) {
+    if (el.dataset.chat) { try { return JSON.parse(el.dataset.chat); } catch (e) { return null; } }
+    if (el.dataset.ref) {
+      var src = document.querySelector(el.dataset.ref);
+      if (src) { try { return JSON.parse(src.textContent); } catch (e) { return null; } }
+    }
+    return null;
+  }
+
+  // 把文本里的 @成员名 渲染成高亮提及
+  function mention(text, members) {
+    var s = esc(text);
+    members.forEach(function (m) {
+      var name = esc(m.name);
+      if (!name) return;
+      var re = new RegExp('(@' + name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ')(?![^<]*>)', 'g');
+      s = s.replace(re, '<span class="gc-at">$1</span>');
+    });
+    return s;
+  }
+
+  function renderMsg(m, members) {
+    var text = '';
+    if (m.type === 'card') {
+      text = '<div class="gc-card">'
+        + (m.title ? '<div class="gc-card-t">' + esc(m.title) + '</div>' : '')
+        + (m.sub ? '<div class="gc-card-s">' + esc(m.sub) + '</div>' : '')
+        + (m.tag ? '<div class="gc-card-g">' + esc(m.tag) + '</div>' : '')
+        + '</div>';
+    } else {
+      text = '<div class="gc-text">' + mention(m.text, members) + '</div>';
+    }
+    return '<div class="gc-msg">'
+      + '<span class="gc-ava">' + esc(m.avatar || (m.name || '?').slice(0, 1)) + '</span>'
+      + '<div class="gc-box">'
+      +   '<div class="gc-name">' + esc(m.name || '') + '</div>'
+      +   text
+      + '</div>'
+      + '</div>';
+  }
+
+  function render(el, d) {
+    if (!d) { el.innerHTML = '<div class="gc gc-empty">数据缺失</div>'; return; }
+    var members = d.members || [];
+    var memHTML = members.map(function (m) {
+      return '<div class="gc-mem">'
+        + '<span class="gc-ava">' + esc(m.avatar || (m.name || '?').slice(0, 1)) + '</span>'
+        + '<div class="gc-mem-info">'
+        +   '<div class="gc-mem-name">' + esc(m.name || '') + '</div>'
+        +   (m.role ? '<div class="gc-mem-role">' + esc(m.role) + '</div>' : '')
+        + '</div>'
+        + '</div>';
+    }).join('');
+    var msgs = (d.msgs || []).map(function (m) { return renderMsg(m, members); }).join('');
+    el.innerHTML =
+      '<div class="gc">' +
+        '<div class="gc-bar">' + esc(d.group || '') +
+          (d.subtitle ? '<span class="gc-sub">' + esc(d.subtitle) + '</span>' : '') +
+        '</div>' +
+        '<div class="gc-main">' +
+          '<div class="gc-members">' + memHTML + '</div>' +
+          '<div class="gc-msgs">' + msgs + '</div>' +
+        '</div>' +
+        (d.footer ? '<div class="gc-foot">' + esc(d.footer) + '</div>' : '') +
+      '</div>';
+  }
+
+  var GroupChat = function () {
+    return Reflect.construct(HTMLElement, [], GroupChat);
+  };
+  GroupChat.prototype = Object.create(HTMLElement.prototype);
+  GroupChat.prototype.constructor = GroupChat;
+  GroupChat.prototype.connectedCallback = function () {
+    var self = this;
+    var d = parse(this);
+    if (!d && this.dataset.ref) {
+      setTimeout(function () { render(self, parse(self)); }, 0);
+    } else {
+      render(this, d);
+    }
+  };
+
+  if (!customElements.get('group-chat')) {
+    customElements.define('group-chat', GroupChat);
+  }
+})();

+ 40 - 0
lib/components/logic-flow.css

@@ -0,0 +1,40 @@
+/* ============================================================
+ * lib/components/logic-flow.css · 逻辑图组件样式
+ * 全部 var(--...) token,双主题自适应。零硬编码色值。
+ * ============================================================ */
+logic-flow {
+  display: block;
+  width: 100%;
+  /* 纵向高度预算:TB 方向逻辑图不撑出 .s-wrap,被 .screen{overflow:hidden} 裁掉。
+   * 页面可用 style="--lf-max-h:46vh" 按需覆盖。 */
+  --lf-max-h: 54vh;
+}
+
+logic-flow .logic-flow svg {
+  display: block;
+  margin: 0 auto;
+  max-width: 100%;
+  max-height: var(--lf-max-h);
+}
+
+/* mermaid htmlLabels 的 foreignObject 标签文字随 token 字体 */
+logic-flow .logic-flow .nodeLabel,
+logic-flow .logic-flow .edgeLabel {
+  font-family: var(--font-body);
+}
+
+/* 降级 / 报错提示(mermaid 缺失或渲染失败时) */
+logic-flow .lf-degraded,
+logic-flow .lf-error {
+  font-family: var(--font-mono);
+  font-size: clamp(11px, 1vw, 14px);
+  color: var(--text-3);
+  white-space: pre-wrap;
+  padding: clamp(10px, 1.4vw, 18px);
+  border: 1px dashed var(--border-subtle);
+  border-radius: var(--radius-card);
+  background: var(--bg-2);
+}
+
+/* 报错用警示红 */
+logic-flow .lf-error { color: var(--brand-3); border-color: var(--border-danger); }

+ 181 - 0
lib/components/logic-flow.js

@@ -0,0 +1,181 @@
+/* ============================================================
+ * lib/components/logic-flow.js · 逻辑图组件(mermaid 封装)
+ *
+ * 契约:一行标签 + 一段 JSON,file:// 可用,零 fetch 零 module。
+ *   <logic-flow data-json='{ "dir":"LR", "nodes":[...], "edges":[...] }'>
+ *   <logic-flow data-mermaid='flowchart LR ...'>(进阶:直接写 mermaid 原文)
+ *
+ * 节点 cls 可选值:warn(红)/ ok(绿)/ brand(金)/ sub(紫)/ plain(灰)
+ * 颜色全部读取 tokens.css 的 var(--...)(getComputedStyle),不硬编码,
+ * 因此暗/浅主题切换自动生效(MutationObserver 监听 html[data-theme] 重绘)。
+ * mermaid 需先于本脚本加载(lib/vendor/mermaid/mermaid.min.js);缺失时降级显示原文。
+ * ============================================================ */
+(function () {
+  if (window.customElements && customElements.get('logic-flow')) return;
+
+  function cssVar(name) {
+    var v = getComputedStyle(document.documentElement).getPropertyValue(name).trim();
+    return v || '#888888';
+  }
+
+  /* 两个 hex 色按比例混合(mermaid classDef 不支持 rgba 小数 alpha,用实体 hex 表达 tint) */
+  function mix(hex1, hex2, r) {
+    function p(h) { return [parseInt(h.substr(1, 2), 16), parseInt(h.substr(3, 2), 16), parseInt(h.substr(5, 2), 16)]; }
+    function toHex(n) { var s = Math.round(n).toString(16); return s.length === 1 ? '0' + s : s; }
+    var a = p(hex1), b = p(hex2);
+    return '#' + a.map(function (c, i) { return toHex(c * (1 - r) + b[i] * r); }).join('');
+  }
+
+  function esc(s) {
+    return String(s).replace(/"/g, '&quot;').replace(/\n/g, '<br/>');
+  }
+
+  /* 结构化 JSON → mermaid flowchart 文本 */
+  function buildMermaid(json) {
+    var dir = json.dir || 'LR';
+    var lines = ['flowchart ' + dir];
+    (json.nodes || []).forEach(function (n) {
+      var cls = n.cls ? ':::' + n.cls : '';
+      lines.push('  ' + n.id + '["' + esc(n.label) + '"]' + cls);
+    });
+    (json.edges || []).forEach(function (e) {
+      var label = e.label ? '|"' + esc(e.label) + '"|' : '';
+      var arr = e.dotted ? '-.->' : '-->';
+      lines.push('  ' + e.from + ' ' + arr + label + ' ' + e.to);
+    });
+    return lines.join('\n');
+  }
+
+  function readTokens() {
+    return {
+      bg0: cssVar('--bg-0'), bg1: cssVar('--bg-1'), bg2: cssVar('--bg-2'), bg3: cssVar('--bg-3'),
+      text1: cssVar('--text-1'), text2: cssVar('--text-2'), text3: cssVar('--text-3'),
+      brand1: cssVar('--brand-1'), brand2: cssVar('--brand-2'), brand3: cssVar('--brand-3'),
+      ok: cssVar('--brand-ok'), border: cssVar('--border-subtle'),
+      fontBody: cssVar('--font-body'), fontMono: cssVar('--font-mono')
+    };
+  }
+
+  function initMermaid(t) {
+    window.mermaid.initialize({
+      startOnLoad: false,
+      theme: 'base',
+      securityLevel: 'loose',
+      htmlLabels: true,
+      flowchart: { curve: 'basis', padding: 14, nodeSpacing: 40, rankSpacing: 52, useMaxWidth: true },
+      themeVariables: {
+        background: t.bg0,
+        primaryColor: t.bg2,
+        primaryTextColor: t.text1,
+        primaryBorderColor: t.brand1,
+        secondaryColor: t.bg1,
+        secondaryTextColor: t.text2,
+        secondaryBorderColor: t.brand2,
+        tertiaryColor: t.bg3,
+        tertiaryTextColor: t.text2,
+        tertiaryBorderColor: t.brand3,
+        lineColor: t.brand1,
+        textColor: t.text2,
+        edgeLabelBackground: t.bg2,
+        fontFamily: t.fontBody,
+        fontSize: '15px',
+        clusterBkg: t.bg1,
+        clusterBorder: t.border
+      }
+    });
+  }
+
+  function classDefs(t) {
+    return [
+      'classDef warn fill:' + mix(t.brand3, t.bg2, .88) + ',stroke:' + t.brand3 + ',color:' + t.text1 + ',stroke-width:1.5px',
+      'classDef ok fill:' + mix(t.ok, t.bg2, .88) + ',stroke:' + t.ok + ',color:' + t.text1 + ',stroke-width:1.5px',
+      'classDef brand fill:' + mix(t.brand1, t.bg2, .86) + ',stroke:' + t.brand1 + ',color:' + t.text1 + ',stroke-width:1.5px',
+      'classDef sub fill:' + mix(t.brand2, t.bg2, .88) + ',stroke:' + t.brand2 + ',color:' + t.text1 + ',stroke-width:1.5px',
+      'classDef plain fill:' + t.bg2 + ',stroke:' + t.text3 + ',color:' + t.text2 + ',stroke-width:1px'
+    ].join('\n');
+  }
+
+  /* 读取组件可用的纵向高度预算(CSS 变量 --lf-max-h,支持 px/vh/%),默认 54vh。
+   * 防止 TB 方向逻辑图按宽等比后高度超过 .s-wrap 剩余空间,被 .screen{overflow:hidden} 裁掉。 */
+  function parseMaxH(el) {
+    var v = getComputedStyle(el).getPropertyValue('--lf-max-h').trim() || '54vh';
+    var m = v.match(/^([\d.]+)\s*(px|vh|%)$/);
+    if (!m) return 0.54 * window.innerHeight;
+    var n = parseFloat(m[1]);
+    if (m[2] === 'vh') return n / 100 * window.innerHeight;
+    if (m[2] === '%') return n / 100 * (el.clientHeight || window.innerHeight);
+    return n;
+  }
+
+  /* 按 viewBox 等比缩放 svg,同时满足容器宽与纵向预算(只缩不放) */
+  function fitSvg(svg) {
+    var vb = svg.viewBox && svg.viewBox.baseVal;
+    if (!vb || !vb.width || !vb.height) return;
+    var wrap = svg.parentElement;
+    var maxW = wrap.clientWidth || 600;
+    var maxH = parseMaxH(wrap);
+    var scale = Math.min(maxW / vb.width, maxH / vb.height);
+    if (scale > 1) scale = 1;                        // 只缩不放
+    svg.style.width = Math.round(vb.width * scale) + 'px';
+    svg.style.height = Math.round(vb.height * scale) + 'px';
+    svg.style.maxWidth = '100%';
+    svg.style.maxHeight = maxH + 'px';               // 兜底:CSS 也约束
+    svg.style.margin = '0 auto';
+  }
+
+  class LogicFlow extends HTMLElement {
+    connectedCallback() {
+      this._box = null;
+      this._timer = null;
+      this._observer = new MutationObserver(function () { this._schedule(); }.bind(this));
+      this._observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] });
+      this._fitHandler = function () { this._schedule(); }.bind(this);
+      window.addEventListener('resize', this._fitHandler);
+      this._schedule();
+    }
+    disconnectedCallback() {
+      if (this._observer) this._observer.disconnect();
+      if (this._timer) clearTimeout(this._timer);
+      if (this._fitHandler) window.removeEventListener('resize', this._fitHandler);
+    }
+    _schedule() {
+      // 主题切换防抖:等 mermaid 就绪
+      if (this._timer) clearTimeout(this._timer);
+      this._timer = setTimeout(function () { this._render(); }.bind(this), 30);
+    }
+    _text() {
+      var raw = this.getAttribute('data-mermaid');
+      if (raw) return raw;
+      try { return buildMermaid(JSON.parse(this.getAttribute('data-json') || '{}')); }
+      catch (e) { return null; }
+    }
+    _render() {
+      var text = this._text();
+      if (!this._box) {
+        this._box = document.createElement('div');
+        this._box.className = 'logic-flow';
+        this.innerHTML = '';
+        this.appendChild(this._box);
+      }
+      var target = this._box;
+      if (!window.mermaid || !text) {
+        target.innerHTML = '<pre class="lf-degraded">' + (text || this.getAttribute('data-json') || '') + '</pre>';
+        return;
+      }
+      initMermaid(readTokens());
+      target.innerHTML = '';
+      var full = text + '\n' + classDefs(readTokens());
+      window.mermaid.render('lf_' + Date.now().toString(36), full).then(function (res) {
+        target.innerHTML = res.svg;
+        var svg = target.querySelector('svg');
+        if (svg) fitSvg(svg);
+        this.dispatchEvent(new CustomEvent('logicflow-rendered', { detail: { ok: true } }));
+      }.bind(this)).catch(function (e) {
+        target.innerHTML = '<pre class="lf-error">逻辑图渲染失败:' + e.message + '</pre>';
+        this.dispatchEvent(new CustomEvent('logicflow-rendered', { detail: { ok: false } }));
+      }.bind(this));
+    }
+  }
+
+  customElements.define('logic-flow', LogicFlow);
+})();

+ 182 - 0
lib/player/canvas-scale.js

@@ -0,0 +1,182 @@
+/* ============================================================
+ * lib/player/canvas-scale.js · 画布等比缩放(固定 1280×720 画布)
+ * ------------------------------------------------------------
+ * 问题:demo 页内部用 vw/vh,iframe/窗口尺寸一变(手机横屏 926×428、
+ *       16:10 等),版式随视口重排,与电脑 16:9 观感不一致。
+ * 方案:固定 1280×720 画布,JS 按 min(innerW/1280, innerH/720) 等比
+ *       scale 并居中(letterbox)。任何视口下版式与 1280×720 完全一致,
+ *       只整体缩放;16:10 / 手机横竖屏自动适配,无需特判。
+ * 关键一步(画布内 vw/vh 全量归零):初始化时把本页样式表(含
+ *   tokens/base/style.css 与页内 <style>)和行内 style 里的
+ *   vw/vh/dvh 按 1280×720 等效换算成 px(1vw=12.8px,1vh=7.2px),
+ *   并删除全部 @media 规则(画布恒 1280 宽,窄屏规则永不生效)。
+ *   此后版式与窗口彻底解耦,缩放只由 transform 完成。
+ * 两种模式(自动检测):
+ *   A. 包裹模式(普通 demo 页):body 现有内容包进 .cv-stage 缩放。
+ *   B. shell 模式(总控页,含 .shell-stage):直接把 .shell-stage 当画布
+ *      (1280×720 + scale),嵌入的 section / iframe 全部随之缩放;
+ *      !important 压过 deck.js 全屏 letterbox 的 width/height 声明,
+ *      全屏仅负责隐藏系统 UI,缩放始终由本脚本负责。
+ * 规则(见 .claude/rules/page-craft.md「画布等比缩放规范」):
+ *   - 新页面禁止再写 vw/vh 与窄屏 @media;画布内 1vw=12.8px、1vh=7.2px。
+ * 用法:demo 页在 deck.js 之前引一次;shell 页在 deck.init() 之后引一次。
+ *   <script src="../../../../../../lib/player/canvas-scale.js"></script>
+ * 纪律:只用 var(--...),不新增色值;file:// 直接可用;零依赖;幂等。
+ * ============================================================ */
+(function () {
+  'use strict';
+  if (window.__CANVAS_SCALE__) return;   // 幂等
+  window.__CANVAS_SCALE__ = true;
+
+  var W = 1280, H = 720, PXW = 12.8, PXH = 7.2;
+  var VW_RE = /(\d*\.?\d+)(d?v[hw])\b/g;
+
+  /* Nvw/Nvh/Ndvh → 1280×720 画布等效 px(1vw=12.8px,1vh=7.2px) */
+  function pxify(text) {
+    return text.replace(VW_RE, function (m, num, unit) {
+      var n = parseFloat(num);
+      if (unit === 'vw') return round1(n * PXW) + 'px';
+      return round1(n * PXH) + 'px';           // vh / dvh 都按画布高
+    });
+  }
+  function round1(n) { return Math.round(n * 10) / 10; }
+  function hasViewportUnit(text) { return /\d[ \t]*d?v[hw]\b/.test(text); }
+
+  /* 样式表改写:vw/vh→px;@media 整条删除(画布恒 1280 宽)。
+     仅处理同源样式表(本仓库全部本地),跨域/解析失败静默跳过。 */
+  function rewriteSheet(sheet) {
+    if (!sheet) return;
+    if (sheet.ownerNode && sheet.ownerNode.id === 'cv-scale-style') return; // 跳过本脚本注入的样式
+    var rules;
+    try { rules = sheet.cssRules; } catch (e) { return; }
+    if (!rules) return;
+    rewriteRuleList(rules);
+  }
+  function rewriteRuleList(list) {
+    Array.prototype.forEach.call(list, function (rule) {
+      var type = rule.type;
+      if (type === 4 /* CSSMediaRule */ || type === 12 /* CSSSupportsRule */) {
+        deleteRule(list, rule);              // @media/@supports 整条移除
+        return;
+      }
+      if ((type === 1 /* CSSStyleRule */ || type === 5 /* CSSFontFaceRule */) &&
+          hasViewportUnit(rule.cssText)) {
+        var css = pxify(rule.cssText);
+        try { rule.style.cssText = css.slice(css.indexOf('{') + 1, css.lastIndexOf('}')); }
+        catch (e) { /* 保底:无法就地改则跳过 */ }
+      }
+    });
+  }
+  function deleteRule(list, rule) {
+    try {
+      var idx = Array.prototype.indexOf.call(list, rule);
+      if (idx >= 0 && list.deleteRule) list.deleteRule(idx);
+    } catch (e) { /* 忽略 */ }
+  }
+  /* 行内 style:clamp(...vw...) 等直接写在 style 属性上,样式表改写覆盖不到 */
+  function rewriteInlineStyles(doc) {
+    var els = doc.querySelectorAll('[style]');
+    Array.prototype.forEach.call(els, function (el) {
+      var s = el.getAttribute('style');
+      if (s && hasViewportUnit(s)) el.setAttribute('style', pxify(s));
+    });
+  }
+
+  var CSS_TEXT =
+    /* 画布页高度基准:--screen-h 由「视口高」改为「画布高」(仅本页覆盖,不动 tokens.css) */
+    'html.cv-fit { --screen-h: 720px; }\n' +
+    'html.cv-fit, html.cv-fit body { width:100%; height:100%; margin:0; padding:0; overflow:hidden; background:var(--bg-0); }\n' +
+    /* 包裹模式:画布舞台固定 1280×720,transform-origin 左上,JS scale + 居中 */
+    'html.cv-fit .cv-stage {\n' +
+    '  position: fixed; left: 0; top: 0;\n' +
+    '  width: 1280px; height: 720px;\n' +
+    '  transform-origin: 0 0;\n' +
+    '  background: var(--bg-0);\n' +
+    '  overflow: hidden;\n' +
+    '}\n' +
+    /* shell 模式:.shell-stage 本身即画布(!important 压过 deck.js 全屏规则,
+       全屏时 deck 只隐藏系统 UI;top/left 由 fit() 内联控制,优先级更高) */
+    'html.cv-fit .shell-stage {\n' +
+    '  width: 1280px !important; height: 720px !important;\n' +
+    '  transform-origin: 0 0 !important;\n' +
+    '  overflow: hidden;\n' +
+    '}\n' +
+    /* 兜底:base.css 的 .screen 宽高已由 vw/vh 归零改写,这里再锚一次 */
+    'html.cv-fit .screen { width: 1280px; }\n' +
+    /* 页内 style.css 的 100vh 高度基准已归零,这里再锚一次 */
+    'html.cv-fit .page  { height: 720px; }\n' +
+    'html.cv-fit .screen{ min-height: 720px; }\n' +
+    'html.cv-fit .cover { min-height: 720px; }\n';
+
+  function makeFit(el) {
+    return function fit() {
+      var s = Math.min(window.innerWidth / W, window.innerHeight / H);
+      if (!isFinite(s) || s <= 0) s = 1;
+      el.style.transform = 'scale(' + s + ')';
+      el.style.left = Math.round((window.innerWidth - W * s) / 2) + 'px';
+      el.style.top = Math.round((window.innerHeight - H * s) / 2) + 'px';
+      document.documentElement.style.setProperty('--cv-scale', String(Math.round(s * 1000) / 1000));
+    };
+  }
+
+  function init() {
+    var docEl = document.documentElement;
+    if (docEl.classList.contains('cv-fit')) return;      // 已初始化
+    var body = document.body;
+    if (!body) { document.addEventListener('DOMContentLoaded', init, { once: true }); return; }
+
+    docEl.classList.add('cv-fit');
+
+    // 1) 画布内 vw/vh 全量归零(样式表 + 行内 style),@media 删除
+    Array.prototype.forEach.call(document.styleSheets, rewriteSheet);
+    rewriteInlineStyles(document);
+
+    // 2) 注入画布样式(在改写之后,自身不受 pxify 影响)
+    var st = document.createElement('style');
+    st.id = 'cv-scale-style';
+    st.textContent = CSS_TEXT;
+    document.head.appendChild(st);
+
+    // 3) shell 模式:.shell-stage 即画布(shell chrome 在画布外,保持原生尺寸)
+    var shellStage = body.querySelector('.shell-stage');
+    if (shellStage) {
+      var fitShell = makeFit(shellStage);
+      window.addEventListener('resize', fitShell, { passive: true });
+      window.addEventListener('orientationchange', fitShell);
+      fitShell();
+      // shell embed 模式:deck.init() 异步把 demo 屏克隆进 .shell-stage,
+      // 屏内行内 style 携带 vw/vh → 到达后重写一遍(幂等)
+      var moTimer = null;
+      var mo = new MutationObserver(function () {
+        clearTimeout(moTimer);
+        moTimer = setTimeout(function () {
+          Array.prototype.forEach.call(document.styleSheets, rewriteSheet);
+          rewriteInlineStyles(document);
+          fitShell();
+        }, 80);
+      });
+      mo.observe(shellStage, { childList: true, subtree: true });
+      return;
+    }
+
+    // 4) 包裹模式:body 现有全部子节点移入 .cv-stage(保留顺序与事件绑定)
+    var stage = document.createElement('div');
+    stage.className = 'cv-stage';
+    stage.id = 'cv-stage';
+    var moving = Array.prototype.slice.call(body.childNodes);
+    for (var i = 0; i < moving.length; i++) stage.appendChild(moving[i]);
+    body.appendChild(stage);
+
+    var fit = makeFit(stage);
+    window.addEventListener('resize', fit, { passive: true });
+    window.addEventListener('orientationchange', fit);
+    fit();
+  }
+
+  // 同步脚本:body 已在 DOM 即刻执行;未就绪则等 DOMContentLoaded
+  if (document.readyState === 'loading' && !document.body) {
+    document.addEventListener('DOMContentLoaded', init, { once: true });
+  } else {
+    init();
+  }
+})();

+ 1291 - 0
lib/player/deck.js

@@ -0,0 +1,1291 @@
+/* ============================================================
+ * lib/player/deck.js · 混沌AI院演示播放器核心
+ *
+ * 职责:收集 .screen → 每屏状态机 idle→playing→done;
+ *       进入新屏自动播放入场动画/视频(首屏不黑屏);↓ 先演完当前动画再切屏(门控);
+ *       动画运行中 ↓ 快进到结尾;上下键/翻页器全兼容;进度条;两级导航(读 deck-config)。
+ *       鼠标支持:滚轮上/下 = 上/下一屏;侧键 前进=下章、后退=上章(防抖,兼容翻页笔)。
+ *
+ * 页面接入:
+ *   <section class="screen" data-tl="s2">...</section>
+ *   <script src=".../deck.js"></script>
+ *   <script>
+ *     window.SCREEN_TIMELINES = { s2: function(ctx){ var tl=gsap.timeline(); ...; return tl; } };
+ *     deck.init();
+ *   </script>
+ * 普通 script,非 module,file:// 可用。禁止页面自写 keydown/scroll。
+ * ============================================================ */
+(function () {
+  var screens = [];
+  var current = 0;
+  var total = 0;
+  var cfg = null;
+  var inited = false;
+
+  /* ---------- 总控容器模式(shell)状态 ---------- */
+  var shellMode = !!(window.parent && window.parent !== window); // 页面被 iframe 装载
+  var shellPlan = null;   // 编排配置(deck-plan)
+  var shellCur = 0;       // 当前页序号
+  var shellFrames = [];   // iframe 元素(不销毁,翻回保留状态)
+  var shellShown = [];    // 是否已展示过(首次展示重演入场,无白屏)
+  var shellLast = [];     // 各页最近上报的进度 {index,total,state}
+  var pendingGo = null;   // 容器注册前的翻章请求缓冲(防止注册竞态丢失)
+  var shellFrom = 0;      // 容器模式:切片起始屏(0-based,总控 deck-range 下发)
+  var shellTo = -1;       // 容器模式:切片结束屏(-1 = 整节)
+  /* ---------- embed(JS 注入)模式状态 ---------- */
+  var embedMode = false;      // 总控用 JS 注入单页 HTML(非 iframe)
+  var embedPages = [];        // 注入后的屏信息 {page, screens, tlName}
+  var embedReady = false;
+
+  /* ---------- 工具 ---------- */
+  function readConfig() {
+    var el = document.querySelector('script.deck-config');
+    if (!el) return null;
+    try { return JSON.parse(el.textContent); } catch (e) { return null; }
+  }
+
+  /* 与总控容器(deck-shell)通信:postMessage 跨源/跨 file:// 均可用 */
+  function postShell(msg) {
+    try { window.parent.postMessage(msg, '*'); } catch (e) {}
+  }
+
+  function fmt(n, dec, sep) {
+    var s = n.toFixed(dec == null ? 0 : dec);
+    if (sep) s = s.replace(/\B(?=(\d{3})+(?!\d))/g, sep);
+    return s;
+  }
+
+  function makeCtx(s) {
+    var el = s.el;
+    return {
+      el: el,
+      q: function (sel) { return el.querySelector(sel); },
+      qAll: function (sel) { return el.querySelectorAll(sel); },
+      // 数字滚动,返回 gsap tween,可用 tl.add(ctx.count(...), pos)
+      count: function (sel, to, opts) {
+        opts = opts || {};
+        var node = el.querySelector(sel);
+        if (!node || !window.gsap) return null;
+        var obj = { val: 0 };
+        var target = (opts.to != null) ? opts.to : to;
+        var tw = window.gsap.to(obj, {
+          val: target,
+          duration: opts.duration || 1.2,
+          ease: opts.ease || 'power1.out',
+          onUpdate: function () { node.textContent = fmt(obj.val, opts.dec || 0, opts.sep); }
+        });
+        return tw;
+      }
+    };
+  }
+
+  /* ---------- 状态 ---------- */
+  function collect() {
+    var els = Array.prototype.slice.call(document.querySelectorAll('.screen'));
+    screens = els.map(function (el) {
+      var tlKey = el.getAttribute('data-tl');
+      return {
+        el: el,
+        tlKey: tlKey,
+        hasTL: !!(tlKey && window.SCREEN_TIMELINES && typeof window.SCREEN_TIMELINES[tlKey] === 'function'),
+        video: el.querySelector('video[data-gate]'),
+        auto: el.hasAttribute('data-gate-autoplay'),
+        state: 'idle',
+        tl: null
+      };
+    });
+    total = screens.length;
+  }
+
+  /* ---------- 展示 ---------- */
+  function showScreen(i) {
+    screens.forEach(function (s, j) {
+      s.el.style.visibility = (j === i) ? 'visible' : 'hidden';
+      // 根因修复:`.screen[data-tl].in > .s-wrap { visibility: visible }`(base.css)是 .s-wrap 的
+      // 直接声明,会覆盖从屏级继承的 hidden。动画播完 .in 类残留 → 旧屏屏级 hidden 但 .s-wrap
+      // 仍 visible,内容叠在新屏上(旧屏盖新屏的根因)。此处对 .s-wrap 直接强制隐藏/恢复。
+      var wrap = s.el.querySelector('.s-wrap');
+      if (wrap) wrap.style.visibility = (j === i) ? '' : 'hidden';
+    });
+    current = i;
+    updateProgress();
+    highlightTab();
+  }
+
+  // 屏激活:进入新一页/新屏直接走入场动画加载(不黑屏)。
+  // 有时间线 → 自动播放;autoplay 视频 → 自动播;data-gate 视频 → 保持 idle 等 ↓;
+  // 无动画 → 直接视为完成。↓ 在动画运行中可快进(见 next)。
+  function activate(s) {
+    if (s.state !== 'idle') return;
+    if (s.hasTL) { playTimeline(s); return; }
+    if (s.video && s.auto) { playVideo(s); return; }
+    if (s.video) return;               // data-gate 视频:保持 idle,等 ↓ 播放
+    s.state = 'done'; updateProgress();
+  }
+
+  /* ---------- 动画 / 视频门控 ---------- */
+  function playTimeline(s) {
+    if (!s.hasTL) return false;
+    s.el.classList.add('in');
+    var fn = window.SCREEN_TIMELINES[s.tlKey];
+    var ctx = makeCtx(s);
+    var tl = null;
+    try { tl = fn(ctx); } catch (e) { tl = null; }
+    if (!tl || !window.gsap) { s.state = 'done'; updateProgress(); return false; }
+    s.tl = tl;
+    s.state = 'playing';
+    tl.eventCallback('onComplete', function () {
+      // 有时间线 + data-gate-autoplay:时间线播完自动接播视频(再按 ↓ 才切屏)
+      if (s.video && s.auto) { playVideo(s); return; }
+      s.state = 'done'; updateProgress();
+    });
+    tl.play();
+    updateProgress();
+    return true;
+  }
+
+  function playVideo(s) {
+    var v = s.video;
+    if (!v) return;
+    var ended = function () { s.state = 'done'; updateProgress(); };
+    v.removeEventListener('ended', ended);
+    v.addEventListener('ended', ended);
+    var p = v.play();
+    if (p && p.catch) p.catch(function () { s.state = 'done'; updateProgress(); });
+    s.state = 'playing';
+    updateProgress();
+  }
+
+  function resetScreen(s) {
+    if (s.tl) {
+      // 先播到结尾让 from-tween 渲染到最终态(opacity 1),再 kill:
+      // 直接 kill 一个播放中的 timeline 会残留内联 opacity:0(immediateRender),
+      // 且后续新建的 timeline 无法推进 → 重演 / jump / prev 时整屏空白(CBEC p0/p1 实测)。
+      try { s.tl.progress(1); } catch (e) {}
+      try { s.tl.kill(); } catch (e) {}
+      s.tl = null;
+    }
+    s.el.classList.remove('in');
+    s.state = 'idle';
+    if (s.video) { s.video.pause(); s.video.currentTime = 0; }
+  }
+
+  /* ---------- 导航动作 ---------- */
+  function next() {
+    if (current >= total) return;
+    var s = screens[current];
+    if (s.state === 'done') { advance(); return; }
+    if (s.state === 'playing') {
+      // 入场动画运行中按 ↓:快进到结尾并切下一屏(新屏入场自动播放);视频保持本屏待重播
+      if (s.video && !s.video.paused) { s.video.currentTime = s.video.duration; return; }
+      if (s.tl) s.tl.progress(1);
+      advance();
+      return;
+    }
+    // idle(正常已被 activate 自动播放;防御 data-gate 视频屏)
+    if (s.hasTL && playTimeline(s)) return;
+    if (s.video) { playVideo(s); return; }
+    s.state = 'done';
+    advance();
+  }
+
+  function advance() {
+    // 容器切片:当前屏已是切片结束屏 → 直接翻章(交给总控切下一节),不进入切片外屏
+    if (shellTo >= 0 && current >= shellTo) { nextChapter(); return; }
+    if (current < total - 1) {
+      showScreen(current + 1);
+      activate(screens[current]);      // showScreen 已把 current 指向新屏 → 自动播放入场
+    } else {
+      nextChapter();
+    }
+  }
+
+  function prev() {
+    // 容器切片:当前屏已是切片起始屏 → 直接翻上一章
+    if (shellFrom > 0 && current <= shellFrom) { prevChapter(); return; }
+    if (current > 0) {
+      resetScreen(screens[current]);
+      current--;
+      resetScreen(screens[current]);
+      showScreen(current);
+      activate(screens[current]);      // 上一屏重演入场(可重演)
+    } else {
+      prevChapter();
+    }
+  }
+
+  function jump(i) {
+    // 容器切片:跳转范围钳制在 [from, to]
+    if (shellTo >= 0) i = Math.max(shellFrom, Math.min(i, shellTo));
+    if (i < 0 || i >= total) return;
+    resetScreen(screens[current]);
+    current = i;
+    resetScreen(screens[current]);
+    showScreen(current);
+    activate(screens[current]);
+  }
+
+  /* ---------- 章节导航 ---------- */
+  function goFile(file, dir) {
+    if (!file) return;
+    if (shellMode) {
+      // 容器模式:翻章请求交给总控(总控按 plan 顺序编排),不在 iframe 内跳文件
+      pendingGo = { type: 'deck-go', file: file, dir: dir };
+      postShell(pendingGo);
+      return;
+    }
+    var cur = location.pathname.split('/').pop();
+    if (file === cur) { dir > 0 ? jump(0) : jump(total - 1); return; }
+    location.href = file;
+  }
+  function nextChapter() {
+    if (embedMode && embedReady) { embedJumpSection(1); return; }
+    goFile(cfg ? cfg.next : null, 1);
+  }
+  function prevChapter() {
+    if (embedMode && embedReady) { embedJumpSection(-1); return; }
+    goFile(cfg ? cfg.prev : null, -1);
+  }
+
+  /* embed(JS注入)模式:节级跳转统一走这里(←→/侧键/触摸横滑/末屏翻章)。
+   * 节 = plan.pages 一项;embed 下所有屏 flat 注入,按节累计屏数定位「该节第一屏」。
+   * 不用 next()/prev()(那在 embed 下是切屏,不是切节)。 */
+  function embedSectionIndex() {
+    var acc = 0;
+    for (var q = 0; q < shellPlan.pages.length; q++) {
+      var cnt = (embedPages[q] && embedPages[q].count) || 0;
+      if (current < acc + cnt) return q;
+      acc += cnt;
+    }
+    return shellPlan.pages.length - 1;
+  }
+  function embedJumpSection(dir) {
+    var sec = embedSectionIndex() + dir;
+    if (sec < 0 || sec >= shellPlan.pages.length) return;   // 边界节不翻,与 iframe showPage 一致
+    var target = 0;
+    for (var q = 0; q < sec; q++) target += (embedPages[q] && embedPages[q].count) || 0;
+    jump(target);
+  }
+
+  /* ---------- 界面 ---------- */
+  function ensureThemeBtn() {
+    if (document.querySelector('.theme-toggle')) return;
+    var topbar = document.querySelector('.deck-topbar');
+    if (!topbar) return;
+    var btn = null;
+    // 优先 theme.js 的图标按钮(太阳/月亮),缺失时退化为文字兜底
+    if (window.HDTheme && window.HDTheme.createToggleBtn) {
+      btn = window.HDTheme.createToggleBtn();
+    } else {
+      btn = document.createElement('button');
+      btn.className = 'theme-toggle';
+      btn.type = 'button';
+      btn.textContent = '主题';
+      btn.addEventListener('click', function () { if (window.HDTheme) window.HDTheme.toggle(); });
+    }
+    var left = topbar.querySelector('.deck-left');
+    if (!left) { left = document.createElement('div'); left.className = 'deck-left'; topbar.insertBefore(left, topbar.firstChild); }
+    left.appendChild(btn);
+  }
+
+  function highlightTab() {
+    if (!cfg) return;
+    var tabs = document.querySelectorAll('.deck-tab');
+    tabs.forEach(function (b) {
+      b.classList.toggle('cur', b.getAttribute('data-ch') === cfg.page.id);
+    });
+    scrollActiveTabIntoView();
+  }
+
+  /* 顶栏章节/页面 tab 自动横向滚动:把高亮当前 tab 滚动到居中(不触边)。
+   * 溢出检测用 scrollWidth(横向不溢出时忽略,含窄屏折叠面板纵向列)。 */
+  function scrollActiveTabIntoView() {
+    var nav = document.querySelector('.deck-tabs');
+    var cur = document.querySelector('.deck-tab.cur');
+    if (!nav || !cur) return;
+    if (nav.scrollWidth <= nav.clientWidth) return;          // 无需滚动
+    var navRect = nav.getBoundingClientRect();
+    var curRect = cur.getBoundingClientRect();
+    var target = nav.scrollLeft + (curRect.left + curRect.width / 2) - (navRect.left + navRect.width / 2);
+    var max = nav.scrollWidth - nav.clientWidth;
+    target = Math.max(0, Math.min(target, max));             // 不触边:钳制在可滚范围
+    if (Math.abs(nav.scrollLeft - target) > 1) {
+      nav.scrollTo({ left: target, behavior: 'smooth' });
+    }
+  }
+
+  function buildChrome() {
+    if (shellMode) return;   // 容器模式:顶栏/进度条由总控渲染,页面只保留 .screen 内容
+    var topbar = document.querySelector('.deck-topbar');
+    if (!topbar) { topbar = document.createElement('div'); topbar.className = 'deck-topbar'; document.body.appendChild(topbar); }
+    if (cfg && cfg.chapters && !topbar.querySelector('.deck-tabs')) {
+      var nav = document.createElement('nav');
+      nav.className = 'deck-tabs';
+      cfg.chapters.forEach(function (ch) {
+        var b = document.createElement('button');
+        b.className = 'deck-tab' + (ch.id === cfg.page.id ? ' cur' : '');
+        b.type = 'button';
+        b.setAttribute('data-ch', ch.id);
+        b.textContent = ch.title;
+        b.addEventListener('click', function () { goFile(ch.file, 1); });
+        nav.appendChild(b);
+      });
+      topbar.appendChild(nav);
+    }
+    ensureThemeBtn();
+    var right = topbar.querySelector('.deck-right');
+    if (!right) { right = document.createElement('div'); right.className = 'deck-right'; topbar.appendChild(right); }
+    // 右上角品牌 logo(theme.js 注入,随主题切换暗/浅图)
+    if (window.HDTheme && window.HDTheme.ensureLogo) window.HDTheme.ensureLogo(right);
+
+    var bottom = document.querySelector('.deck-bottom');
+    if (!bottom) {
+      bottom = document.createElement('div');
+      bottom.className = 'deck-bottom';
+      document.body.appendChild(bottom);
+      var prog = document.createElement('div');
+      prog.className = 'deck-progress';
+      var bar = document.createElement('div');
+      bar.className = 'bar';
+      prog.appendChild(bar);
+      bottom.appendChild(prog);
+      var pos = document.createElement('span');
+      pos.className = 'deck-pos';
+      bottom.appendChild(pos);
+      if (cfg && cfg.page) {
+        var pn = document.createElement('span');
+        pn.className = 'deck-pagename';
+        pn.textContent = cfg.page.title;
+        bottom.appendChild(pn);
+      }
+    }
+  }
+
+  function updateProgress() {
+    var pct = total ? (current / total) * 100 : 0;
+    var bar = document.querySelector('.deck-progress .bar');
+    if (bar) bar.style.width = pct + '%';
+    var pos = document.querySelector('.deck-pos');
+    if (pos) pos.textContent = (current + 1) + ' / ' + total;
+    // 容器模式:把本页进度上报总控(总控据此算全局进度条)
+    if (shellMode) {
+      var s = screens[current] || null;
+      postShell({ type: 'deck-progress', index: current, total: total, state: s ? s.state : 'done' });
+    }
+    // embed 模式:屏进度变化同步总控 chrome
+    if (embedMode && embedReady) renderShellChrome();
+  }
+
+  /* ---------- 输入 ---------- */
+  function bindKeys() {
+    document.addEventListener('keydown', function (e) {
+      var t = e.target;
+      if (t && (t.tagName === 'INPUT' || t.tagName === 'TEXTAREA' || t.isContentEditable)) return;
+      var k = e.key;
+      if (k === 'ArrowDown' || k === 's' || k === 'S' || k === 'PageDown' || k === ' ') {
+        e.preventDefault(); next();
+      } else if (k === 'ArrowUp' || k === 'w' || k === 'W' || k === 'PageUp') {
+        e.preventDefault(); prev();
+      } else if (k === 'ArrowRight' || k === 'd' || k === 'D') {
+        e.preventDefault(); nextChapter();
+      } else if (k === 'ArrowLeft' || k === 'a' || k === 'A') {
+        e.preventDefault(); prevChapter();
+      } else if (k === 'Home') {
+        e.preventDefault(); jump(0);
+      } else if (k === 'End') {
+        e.preventDefault(); jump(total - 1);
+      }
+    });
+  }
+
+  function bindClick() {
+    document.addEventListener('click', function (e) {
+      var t = e.target;
+      if (t && t.closest && (t.closest('a') || t.closest('button') || t.closest('.deck-topbar') || t.closest('.deck-bottom'))) return;
+      if (e.clientX > window.innerWidth * 0.78 && e.clientX < window.innerWidth) next();
+    });
+  }
+
+  function bindMouse() {
+    // 滚轮:累计方向,超过阈值触发一次,冷却期防连击(轨迹板/鼠标均稳定)
+    var wheelAcc = 0, lastDir = 0, wheelLock = 0;
+    var STEP = 60, COOLDOWN = 550;
+    document.addEventListener('wheel', function (e) {
+      var t = e.target;
+      // 顶栏章节/页面 tab 上滚轮 → 横向滚动 tabs(顶栏 hover 本就不翻屏;横向不溢出时忽略)
+      if (t && t.closest && t.closest('.deck-tabs')) {
+        var nav = t.closest('.deck-tabs');
+        if (nav.scrollWidth > nav.clientWidth) {
+          e.preventDefault();
+          var step = e.deltaMode === 0 ? (e.deltaY || e.deltaX) : e.deltaY * 40;
+          nav.scrollLeft += step;
+        }
+        return;
+      }
+      if (t && t.closest && (t.closest('a') || t.closest('button') || t.closest('.deck-topbar') || t.closest('.deck-bottom'))) return;
+      var now = Date.now();
+      if (now - wheelLock < COOLDOWN) return;
+      if (e.deltaY === 0) return;
+      var dir = e.deltaY > 0 ? 1 : -1;          // 下滚 = 下一屏,上滚 = 上一屏
+      wheelAcc = (lastDir === dir) ? wheelAcc + e.deltaY : e.deltaY;
+      lastDir = dir;
+      if (Math.abs(wheelAcc) < STEP) return;    // 未到阈值先攒着
+      wheelAcc = 0; wheelLock = now;
+      e.preventDefault();
+      if (dir > 0) next(); else prev();
+    }, { passive: false });
+    // 鼠标侧键:button 3(前进) → 下章,button 4(后退) → 上章(auxclick/mouseup 双绑兼容,防抖)
+    var lastSide = 0;
+    function side(e) {
+      if (e.button !== 3 && e.button !== 4) return;
+      var t = e.target;
+      if (t && t.closest && (t.closest('a') || t.closest('button') || t.closest('.deck-topbar') || t.closest('.deck-bottom'))) return;
+      var now = Date.now();
+      if (now - lastSide < 450) return;
+      lastSide = now;
+      e.preventDefault();
+      if (e.button === 3) nextChapter(); else prevChapter();
+    }
+    document.addEventListener('auxclick', side);
+    document.addEventListener('mouseup', side);
+  }
+
+  function bindTouch() {
+    // 触摸手势:上滑/下滑 = 下/上一屏(触屏习惯:上滑进下一页),左滑/右滑 = 下/上一章(与方向键一致)。
+    // 用 Touch Events 而非 Pointer Events:touchmove + passive:false 才能真正 preventDefault
+    // 阻止浏览器原生滚动/缩放;pointermove 的 preventDefault 对滚动无效(需 touch-action CSS,
+    // 而全局 touch-action:none 会破坏 chat-window/group-chat 内部滚动)。
+    if (!('ontouchstart' in window)) return;     // 无触摸能力(桌面)直接跳过,不打扰鼠标
+    var startX = 0, startY = 0, axis = 0;        // axis: 0=未锁定 1=水平 2=垂直
+    var tracking = false;
+    var touchLock = 0;
+    var THRESHOLD = 50, COOLDOWN = 550;          // 阈值 50px、冷却 550ms(与滚轮一致)
+
+    function isIgnored(t) {                       // 与 wheel/click 相同的忽略集,避免误触
+      return !!(t && t.closest &&
+        (t.closest('a') || t.closest('button') || t.closest('.deck-topbar') || t.closest('.deck-bottom')));
+    }
+
+    document.addEventListener('touchstart', function (e) {
+      if (isIgnored(e.target)) return;            // 交互元素不接管
+      if (e.touches.length > 1) return;            // 多点(捏合缩放)不接管
+      tracking = true;
+      axis = 0;
+      startX = e.touches[0].clientX;
+      startY = e.touches[0].clientY;
+    });
+
+    document.addEventListener('touchmove', function (e) {
+      if (!tracking) return;
+      if (e.touches.length > 1) { tracking = false; return; }   // 双指出现 = 放弃手势
+      var t = e.touches[0];
+      var dx = t.clientX - startX;
+      var dy = t.clientY - startY;
+      if (axis === 0) {
+        // 方向锁定:位移超 8px 判定轴向(水平/垂直二选一),防斜滑误触发
+        if (Math.abs(dx) < 8 && Math.abs(dy) < 8) return;
+        axis = Math.abs(dx) > Math.abs(dy) ? 1 : 2;
+      }
+      e.preventDefault();                          // 轴向锁定后才阻断原生滚动/缩放(passive:false)
+    }, { passive: false });
+
+    function finish(e) {
+      if (!tracking) return;
+      tracking = false;
+      if (axis === 0) return;                      // 未到锁定阈值 = tap,放行 click
+      var now = Date.now();
+      if (now - touchLock < COOLDOWN) return;      // 防连击
+      var t = e.changedTouches[0];
+      var dx = t.clientX - startX;
+      var dy = t.clientY - startY;
+      if (axis === 1) {                            // 水平:左滑=下章,右滑=上章
+        if (Math.abs(dx) < THRESHOLD) return;
+        touchLock = now;
+        if (dx < 0) nextChapter(); else prevChapter();
+      } else {                                     // 垂直:上滑=下一屏,下滑=上一屏
+        if (Math.abs(dy) < THRESHOLD) return;
+        touchLock = now;
+        if (dy < 0) next(); else prev();
+      }
+    }
+    document.addEventListener('touchend', finish);
+    document.addEventListener('touchcancel', function () { tracking = false; });
+  }
+
+  /* ---------- 入口 ---------- */
+  function init(opts) {
+    if (inited) return;
+    inited = true;
+    opts = opts || {};
+    window.addEventListener('message', onPageMessage);
+    if (opts.mode === 'shell') { initShell(opts); return; }
+    cfg = readConfig();
+    collect();
+    if (total === 0) return;
+    screens.forEach(function (s) {
+      s.el.style.position = 'absolute';
+      s.el.style.inset = '0';
+    });
+    buildChrome();
+    bindKeys();
+    bindClick();
+    bindMouse();
+    bindTouch();
+    showScreen(0);
+    activate(screens[0]);              // 首屏自动播放入场,不黑屏
+  }
+
+  // 安全网:若页面未显式 init,DOM 就绪后自动启动
+  function auto() {
+    if (inited) return;
+    if (document.querySelectorAll('.screen').length) init();
+  }
+  if (document.readyState === 'loading') {
+    document.addEventListener('DOMContentLoaded', auto);
+  } else {
+    setTimeout(auto, 0);
+  }
+
+  /* ============================================================
+   * 总控容器模式(shell):总控页用 iframe 加载多页 + 预加载无缝衔接 + 导航可编排。
+   *
+   * 用法(总控页,如 course/deck-shell.html):
+   *   <script type="application/json" class="deck-plan">{ "title": "...", "pages":[ {"file":"demo/p1.html","title":"01 ..."}, ... ] }</script>
+   *   <script src=".../deck.js"></script>
+   *   <script> deck.init({ mode: 'shell', planEl: '.deck-plan' }); </script>
+   *
+   * - plan.pages[].file 相对总控页;iframe 不销毁,翻回保留状态;预加载下一页(隐藏)→ 翻页无白屏。
+   * - 页内 deck 保持单页模式不变(可独立打开);容器内通过 postMessage 上报进度、转发翻章请求。
+   * - file:// 双击读内嵌 JSON(零 fetch);http 下可加 ?plan=plans/xxx.json 切换编排(fetch 失败回退内嵌)。
+   * ============================================================ */
+
+  function urlParam(name) {
+    try {
+      var m = location.search.match(new RegExp('[?&]' + name + '=([^&]*)'));
+      return m ? decodeURIComponent(m[1]) : null;
+    } catch (e) { return null; }
+  }
+
+  function readPlan(opts) {
+    if (opts.plan && typeof opts.plan === 'object' && opts.plan.pages) return opts.plan;
+    var url = opts.planUrl || urlParam('plan');
+    if (url && location.protocol !== 'file:') {
+      try {
+        var xhr = new XMLHttpRequest();
+        xhr.open('GET', url, false);       // 同步,保持零构建的确定性(仅 http 生效)
+        xhr.send(null);
+        if (xhr.status >= 200 && xhr.status < 300) {
+          var p = JSON.parse(xhr.responseText);
+          if (p && p.pages) return p;
+        }
+      } catch (e) {}
+    }
+    var el = opts.planEl ? document.querySelector(opts.planEl) : document.querySelector('script.deck-plan');
+    if (el) {
+      try {
+        var p2 = JSON.parse(el.textContent);
+        if (p2 && p2.pages) return p2;
+      } catch (e) {}
+    }
+    return null;
+  }
+
+  function initShell(opts) {
+    var plan = readPlan(opts);
+    if (!plan) {
+      var err = document.createElement('div');
+      err.style.cssText = 'position:fixed;inset:0;display:flex;align-items:center;justify-content:center;'
+        + 'font:16px var(--font-mono);color:var(--text-3);background:var(--bg-0);text-align:center;padding:40px;';
+      err.textContent = '缺少编排配置:请在总控页内嵌 <script class="deck-plan"> JSON,或 http 下加 ?plan=plans/xxx.json。';
+      document.body.appendChild(err);
+      return;
+    }
+    shellPlan = plan;
+    window.addEventListener('message', onShellMsg);
+    buildShellChrome(plan);
+    bindShellKeys();
+    if (isMobileUA() || urlParam('mobile') === '1') buildFullscreenBtn();   // 手机端:右下角全屏切换(?mobile=1 供桌面调试)
+    // embed 模式:plan 任一页带 picks(精确选屏)→ 走 JS 注入,不走 iframe
+    var useEmbed = plan.pages.some(function (p) { return p && p.picks; });
+    if (useEmbed) { initEmbed(); return; }
+    showPage(0);
+  }
+
+  function buildShellChrome(plan) {
+    var isNarrow = isMobileUA() || urlParam('mobile') === '1' || (window.matchMedia && window.matchMedia('(max-width: 768px)').matches);
+    var topbar = document.createElement('div');
+    topbar.className = 'deck-topbar shell-topbar' + (isNarrow ? ' shell-collapsed' : '');
+    var left = document.createElement('div');
+    left.className = 'deck-left';
+    var title = document.createElement('span');
+    title.className = 'shell-title';
+    title.textContent = plan.title || '演示';
+    left.appendChild(title);
+    var btn = null;
+    if (window.HDTheme && window.HDTheme.createToggleBtn) {
+      btn = window.HDTheme.createToggleBtn();
+      btn.addEventListener('click', function () { setTimeout(broadcastTheme, 0); });
+    } else {
+      btn = document.createElement('button');
+      btn.className = 'theme-toggle';
+      btn.type = 'button';
+      btn.textContent = '主题';
+      btn.addEventListener('click', function () {
+        var cur = document.documentElement.getAttribute('data-theme') === 'light' ? 'dark' : 'light';
+        document.documentElement.setAttribute('data-theme', cur);
+        broadcastTheme();
+      });
+    }
+    left.insertBefore(btn, title);           // 主题按钮最左
+    // 窄屏:汉堡按钮(折叠导航),点击展开/收起节列表
+    if (isNarrow) {
+      var burger = document.createElement('button');
+      burger.className = 'shell-burger';
+      burger.type = 'button';
+      burger.setAttribute('aria-label', '展开页面导航');
+      burger.innerHTML = '<svg viewBox="0 0 20 20" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M2.5 5h15M2.5 10h15M2.5 15h15"/></svg>';
+      burger.addEventListener('click', function (ev) {
+        ev.stopPropagation();
+        topbar.classList.toggle('shell-open');
+      });
+      left.insertBefore(burger, left.firstChild);
+      // 点击非折叠区关闭
+      document.addEventListener('click', function (e) {
+        if (!topbar.classList.contains('shell-open')) return;
+        if (!topbar.contains(e.target)) topbar.classList.remove('shell-open');
+      });
+    }
+    topbar.appendChild(left);
+    var nav = document.createElement('nav');
+    nav.className = 'deck-tabs';
+    nav.setAttribute('aria-label', '页面导航');
+    plan.pages.forEach(function (p, i) {
+      var b = document.createElement('button');
+      b.className = 'deck-tab shell-tab' + (i === 0 ? ' cur' : '');
+      b.type = 'button';
+      b.textContent = p.title || ('第 ' + (i + 1) + ' 页');
+      b.title = p.file || '';
+      b.addEventListener('click', function () {
+        if (embedMode && embedReady) {
+          // embed:跳到该节第一屏
+          var acc = 0, target = 0;
+          for (var q = 0; q < i; q++) { acc += (embedPages[q] && embedPages[q].count) || 0; }
+          target = acc;
+          jump(target);
+        } else {
+          showPage(i);
+        }
+        topbar.classList.remove('shell-open');   // 选完收起(窄屏)
+      });
+      nav.appendChild(b);
+    });
+    topbar.appendChild(nav);
+    var right = document.createElement('div');
+    right.className = 'deck-right';
+    topbar.appendChild(right);
+    document.body.appendChild(topbar);
+    if (window.HDTheme && window.HDTheme.ensureLogo) window.HDTheme.ensureLogo(right);
+
+    var bottom = document.createElement('div');
+    bottom.className = 'deck-bottom shell-bottom';
+    var prog = document.createElement('div');
+    prog.className = 'deck-progress';
+    var bar = document.createElement('div');
+    bar.className = 'bar';
+    prog.appendChild(bar);
+    bottom.appendChild(prog);
+    var pos = document.createElement('span');
+    pos.className = 'deck-pos shell-pos';
+    bottom.appendChild(pos);
+    var pn = document.createElement('span');
+    pn.className = 'deck-pagename shell-pagename';
+    bottom.appendChild(pn);
+    var prevB = document.createElement('button');
+    prevB.className = 'shell-navbtn';
+    prevB.type = 'button';
+    prevB.textContent = '‹ 上一页';
+    prevB.addEventListener('click', function () {
+      if (embedMode && embedReady) prev(); else showPage(shellCur - 1);
+    });
+    bottom.appendChild(prevB);
+    var nextB = document.createElement('button');
+    nextB.className = 'shell-navbtn';
+    nextB.type = 'button';
+    nextB.textContent = '下一页 ›';
+    nextB.addEventListener('click', function () {
+      if (embedMode && embedReady) next(); else showPage(shellCur + 1);
+    });
+    bottom.appendChild(nextB);
+    document.body.appendChild(bottom);
+  }
+
+  function postToFrame(fr, msg) {
+    try { fr.contentWindow.postMessage(msg, '*'); } catch (e) {}
+  }
+
+  /* ============================================================
+   * embed(JS 注入)模式:把单页 HTML 拉为字符串,DOMParser 解析,
+   * 按 picks 精确选屏注入总控 DOM;timeline 合并进全局;节样式注入。
+   * 相比 iframe:可精确到任意屏组合、可跨节跳着选屏、预渲染可控。
+   * ============================================================ */
+  function fetchText(url, cb) {
+    var xhr = new XMLHttpRequest();
+    xhr.open('GET', url, true);
+    xhr.onreadystatechange = function () {
+      if (xhr.readyState !== 4) return;
+      if (xhr.status >= 200 && xhr.status < 300) cb(null, xhr.responseText);
+      else cb('HTTP ' + xhr.status);
+    };
+    xhr.onerror = function () { cb('net'); };
+    xhr.send(null);
+  }
+
+  // 把节 HTML 的相对资源路径转绝对(相对该节文件所在目录;用 URL 解析避免拼接错误)
+  function absolutize(baseURL, el, attr) {
+    var v = el.getAttribute(attr);
+    if (!v || /^(https?:|data:|blob:|#)/.test(v)) return;
+    // 页面内锚点 href="#s1-..." 保留
+    if (v.charAt(0) === '#') return;
+    try {
+      var abs = new URL(v, baseURL).href;
+      el.setAttribute(attr, abs);
+    } catch (e) {}
+  }
+
+  // 提取节内联 <style>(含 style.css 内容合并)
+  function extractStyles(doc, baseURL, out) {
+    var links = doc.querySelectorAll('link[rel="stylesheet"]');
+    var inlines = doc.querySelectorAll('style');
+    links.forEach(function (l) {
+      var href = l.getAttribute('href') || '';
+      absolutize(baseURL, l, 'href');
+      out.push(l.outerHTML);
+    });
+    inlines.forEach(function (s) { out.push(s.outerHTML); });
+  }
+
+  // 提取 SCREEN_TIMELINES(把 IIFE 的 TL 注册名改成节级命名,避免全局覆盖)
+  function extractTimeline(html, ns) {
+    // 找出 window.SCREEN_TIMELINES = (function(){...})(); 整段
+    var m = html.match(/window\.SCREEN_TIMELINES\s*=\s*\(function[\s\S]*?\}\)\(\);/);
+    if (!m) return '';
+    return m[0].replace(/window\.SCREEN_TIMELINES\s*=\s*/, 'window["' + ns + '"] = ');
+  }
+
+  // 执行节的内联脚本(数据/渲染/初始化),让动态屏在 shell 里也能渲染。
+  // 跳过:外链 src、deck-config JSON、SCREEN_TIMELINES 块、deck.init 引导块。
+  // 数据与函数挂到 window(与单页一致);脚本在 DOMParser 解析后的 doc 上查询 DOM
+  // 时可能拿到 doc 而非总控 DOM——因此这些脚本里的 DOM 初始化统一改由 timeline
+  // 在总控 DOM 上触发(页内已有的 window 数据声明与纯函数保持原样执行即可)。
+  function execInlineScripts(doc, pageFile) {
+    var scripts = doc.querySelectorAll('script:not([src])');
+    Array.prototype.forEach.call(scripts, function (sc) {
+      if (sc.getAttribute('type') === 'application/json') return; // JSON 数据块,非 JS
+      var code = sc.textContent || '';
+      if (!code.trim()) return;
+      if (/deck-config/.test(code)) return;                 // 页内导航 JSON,不执行
+      // SCREEN_TIMELINES 定义段已由 extractTimeline 改名执行(window["__EMB_TL_N"])。
+      // 本函数执行节的数据/渲染脚本,但做两处安全化:
+      //   1) 挖掉 SCREEN_TIMELINES 段与 deck.init 引导(embed 由总控接管)
+      //   2) 把 document.getElementById( 替换为安全版本:找不到返回 null(让
+      //      立即渲染用 if(el) 守卫自然跳过,不抛错);把 document.addEventListener(
+      //      替换为空操作(embed 键盘由总控接管,避免页面级监听冲突)
+      // 这样数据声明、window.X 赋值、函数定义都正常执行挂到全局,供 timeline 渲染。
+      if (!window.__embGEL) {
+        // 安全 getElementById:找不到返回「幽灵元素」(属性/方法访问一律 noop),
+        // 让 embed 下找不到容器的立即渲染不抛错(数据声明仍执行,渲染由 timeline 接管)。
+        window.__embGEL = function (id) {
+          var el = document.getElementById(id);
+          if (el) return el;
+          if (window.__embGhost) return window.__embGhost;
+          window.__embGhost = new Proxy({}, {
+            get: function (t, k) {
+              if (k === 'children') return [];
+              if (k === 'style') return new Proxy({}, { get: function () { return ''; }, set: function () { return true; } });
+              return function () {};
+            },
+            set: function () { return true; }
+          });
+          return window.__embGhost;
+        };
+        window.__embNoop = function () {};
+      }
+      var execCode = code.replace(/window\.SCREEN_TIMELINES\s*=\s*\(function[\s\S]*?\}\)\(\);/g, '')
+        .replace(/deck\.init\s*\(\s*\{?\s*\}?\s*\)\s*;/g, '')
+        .replace(/document\.documentElement\.classList\.add\([^)]*\)\s*;?/g, '')
+        .replace(/document\.getElementById\s*\(/g, 'window.__embGEL(')
+        .replace(/document\.addEventListener\s*\(/g, 'window.__embNoop(');
+      if (!execCode.trim()) return;
+      try {
+        // 间接 eval 全局作用域执行:数据声明与函数声明挂到 window,
+        // 供 SCREEN_TIMELINES 里的渲染函数调用。
+        (0, eval)(execCode);
+      } catch (e) {
+        console.error('[embed] inline ' + (pageFile || ''), e);
+      }
+    });
+  }
+
+  // 收集一节的屏 DOM(按 picks 或整节),并注入总控 stage
+  function embedChapter(page, i, done) {
+    var file = page.file;
+    var baseURL = null;
+    try { baseURL = new URL(file, location.href).href; } catch (e) {}
+    fetchText(file, function (err, html) {
+      if (err) { console.error('[embed] ' + file + ' ' + err); if (done) done(); return; }
+      var doc = new DOMParser().parseFromString(html, 'text/html');
+      var ns = '__EMB_TL_' + i;
+      // 1. 注入节样式(link + style,基于节绝对 URL 解析相对路径)
+      var styles = [];
+      extractStyles(doc, baseURL, styles);
+      if (styles.length) {
+        var styleBox = document.getElementById('emb-styles');
+        if (!styleBox) {
+          styleBox = document.createElement('div');
+          styleBox.id = 'emb-styles';
+          styleBox.style.display = 'none';
+          document.head.appendChild(styleBox);
+        }
+        styleBox.insertAdjacentHTML('beforeend', styles.join('\n'));
+      }
+      // 2. 注册节 timeline(节级命名空间,避免不同节同名 data-tl 互相覆盖)
+      var tlCode = extractTimeline(html, ns);
+      if (tlCode) {
+        try {
+          var fn = new Function(tlCode);
+          fn();
+        } catch (e) { console.error('[embed] TL ' + file, e); }
+        // 合并进全局 SCREEN_TIMELINES:key = ns + '_' + 原key(如 __EMB_TL_11_s1)
+        if (window[ns]) {
+          window.SCREEN_TIMELINES = window.SCREEN_TIMELINES || {};
+          var tlObj = window[ns];
+          Object.keys(tlObj).forEach(function (k) {
+            window.SCREEN_TIMELINES[ns + '_' + k] = tlObj[k];
+          });
+          delete window[ns];
+        }
+      }
+      // 3. 按 picks 选屏注入 stage(屏 data-tl 改为节前缀命名,避免全局 timeline key 冲突)
+      var all = doc.querySelectorAll('section.screen');
+      var picks = page.picks || null;
+      var chosen = [];
+      if (picks && picks.length) {
+        picks.forEach(function (idx) { if (all[idx]) chosen.push(all[idx]); });
+      } else {
+        chosen = Array.prototype.slice.call(all);
+      }
+      var stage = document.querySelector('.shell-stage') || document.body;
+      chosen.forEach(function (sec) {
+        // 克隆到总控 DOM(保留原样,动画/计时靠 SCREEN_TIMELINES + gsap)
+        var clone = doc.importNode(sec, true);
+        // data-tl 加节前缀:__E<i>_<原tl>,对应下方 timeline 的节级命名
+        var t = clone.getAttribute('data-tl');
+        if (t) clone.setAttribute('data-tl', ns + '_' + t);
+        // 资源绝对化(基于节 HTML 绝对 URL)——video 直接 src 与 source 子元素都处理
+        clone.querySelectorAll('img').forEach(function (im) { absolutize(baseURL, im, 'src'); });
+        clone.querySelectorAll('video[src]').forEach(function (vd) { absolutize(baseURL, vd, 'src'); });
+        clone.querySelectorAll('video source').forEach(function (im) { absolutize(baseURL, im, 'src'); });
+        clone.querySelectorAll('a[href]').forEach(function (a) { absolutize(baseURL, a, 'href'); });
+        stage.appendChild(clone);
+      });
+      // 3b. 注入页面级 JSON 数据块(如 tt-data / 商品数据),供动态屏 IIFE 读取。
+      //     deck-config 是页内导航,不注入;id 冲突时第一个生效(跨节数据各自独立)。
+      doc.querySelectorAll('script[type="application/json"]').forEach(function (jb) {
+        if (/deck-config/.test(jb.textContent || '')) return;
+        var jid = jb.getAttribute('id');
+        if (jid && document.getElementById(jid)) return;   // 已注入(首章优先)
+        stage.appendChild(doc.importNode(jb, true));
+      });
+      // 4. 注入完成后执行节的其他内联脚本(数据/渲染函数/初始化)。
+      //    此刻页面的 JSON 数据块与各 grid/详情容器已在总控 DOM,页内 IIFE
+      //    (KOC 矩阵 / 商品墙 / 六国商品等立即渲染)能正常找到目标元素。
+      //    排除:deck-config JSON、SCREEN_TIMELINES 块、外链脚本、deck.init 引导块。
+      execInlineScripts(doc, file);
+      embedPages[i] = { page: page, count: chosen.length };
+      if (done) done();
+    });
+  }
+
+  function checkEmbedReady() {
+    var loaded = embedPages.filter(function (p) { return p; }).length;
+    if (loaded === shellPlan.pages.length) {
+      // 全部注入完成 → 用单页模式播放(屏状态机),进度按所有注入屏
+      embedReady = true;
+      collect();
+      if (total === 0) return;
+      screens.forEach(function (s) {
+        s.el.style.position = 'absolute';
+        s.el.style.inset = '0';
+      });
+      // 复用单页导航(无 topbar 页内导航,进度用总控 renderShellChrome)。
+      // 键盘不放这里绑:embed 模式下 bindShellKeys 已在 document 上监听 keydown,
+      // 再 bindKeys 会对同一次 ↓/↑ 触发两次 next/prev(每按一次跳两屏,
+      // 播放位置与页码/章节错位 —— 2026-08-30 回归修复)。点击/滚轮/触摸无此冲突。
+      bindClick();
+      bindMouse();
+      bindTouch();
+      showScreen(0);
+      activate(screens[0]);
+      renderShellChrome();
+    }
+  }
+
+  function initEmbed() {
+    embedMode = true;
+    embedPages = [];
+    // 若 http 可用 fetch 则注入;file:// 下 fetch 受限 → 提示用 http
+    if (location.protocol === 'file:') {
+      var msg = document.createElement('div');
+      msg.style.cssText = 'position:fixed;inset:0;display:flex;align-items:center;justify-content:center;font:14px var(--font-mono);color:var(--text-3);text-align:center;padding:40px;';
+      msg.textContent = 'embed(JS注入)模式需要 http 访问(file:// 下 fetch 受限)。请用 http 打开总控页。';
+      document.body.appendChild(msg);
+      return;
+    }
+    // 串行加载:保证注入 DOM 顺序 = plan.pages 顺序(并发 fetch 会乱序导致故事线错位)
+    var embIdx = 0;
+    function nextEmb() {
+      if (embIdx >= shellPlan.pages.length) { checkEmbedReady(); return; }
+      embedChapter(shellPlan.pages[embIdx], embIdx, nextEmb);
+      embIdx++;
+    }
+    nextEmb();
+  }
+
+  function loadPage(i, visible) {
+    if (i < 0 || i >= shellPlan.pages.length) return;
+    if (shellFrames[i]) return;              // 不重复创建;不销毁(翻回保留状态)
+    var p = shellPlan.pages[i];
+    var fr = document.createElement('iframe');
+    fr.className = 'shell-frame';
+    fr.setAttribute('data-page', String(i));
+    fr.setAttribute('aria-label', p.title || ('第 ' + (i + 1) + ' 页'));
+    fr.title = p.file || '';
+    // 隐藏用 visibility:hidden 而非 display:none:保留布局尺寸,避免 mermaid/logic-flow
+    // 在 0×0 上下文渲染产生 NaN transform;不可见也不可交互。
+    fr.style.visibility = visible ? 'visible' : 'hidden';
+    fr.__createdVisible = !!visible;
+    fr.src = p.file;                         // 相对总控页
+    var stage = document.querySelector('.shell-stage') || document.body;
+    stage.appendChild(fr);
+    shellFrames[i] = fr;
+    fr.addEventListener('load', function () {
+      postToFrame(fr, { type: 'deck-register' });   // 确认容器模式(页收到后才接管翻章)
+    });
+  }
+
+  function showPage(i) {
+    if (i < 0 || i >= shellPlan.pages.length) return;
+    if (!shellFrames[i]) loadPage(i, true);  // 未预加载 → 直接创建并可见(加载时自然播放入场)
+    shellFrames.forEach(function (f, j) {
+      if (f) f.style.visibility = (j === i) ? 'visible' : 'hidden';
+    });
+    var first = !shellShown[i];
+    shellShown[i] = true;
+    shellCur = i;
+    var p = shellPlan.pages[i];
+    if (first && !shellFrames[i].__createdVisible) {
+      // 预加载(隐藏)期间入场已悄悄放完 → 首次展示重演入场,翻页无白屏
+      // 若编排定义了屏级切片 [from,to] → 下发 range 让页内从起始屏开始并在边界自动翻章
+      if (typeof p.from === 'number' || typeof p.to === 'number') {
+        postToFrame(shellFrames[i], { type: 'deck-cmd', cmd: 'range',
+          from: (typeof p.from === 'number' ? p.from : 0),
+          to: (typeof p.to === 'number' ? p.to : -1) });
+      } else {
+        postToFrame(shellFrames[i], { type: 'deck-cmd', cmd: 'jump', index: 0 });
+      }
+    }
+    loadPage(i + 1, false);                  // 预加载下一页(隐藏)
+    try { shellFrames[i].contentWindow.focus(); } catch (e) {}   // 键盘焦点进 iframe
+    renderShellChrome();
+  }
+
+  // 有效屏数/已完成屏数(支持 plan 屏级切片 from/to)
+  function effTotal(p, st) {
+    var raw = p.screens || (st && st.total) || 0;
+    if (!raw) return 0;
+    var from = (typeof p.from === 'number') ? p.from : 0;
+    var to = (typeof p.to === 'number') ? Math.min(p.to, raw - 1) : raw - 1;
+    if (to < from) return 0;
+    return to - from + 1;
+  }
+  function effDone(p, st) {
+    var raw = p.screens || (st && st.total) || 0;
+    if (!raw) return 0;
+    var idx = st ? st.index : 0;
+    var from = (typeof p.from === 'number') ? p.from : 0;
+    var to = (typeof p.to === 'number') ? Math.min(p.to, raw - 1) : raw - 1;
+    if (idx < from) return 0;
+    return Math.min(to - from + 1, idx - from + 1);
+  }
+
+  function renderShellChrome() {
+    var pages = shellPlan.pages;
+    var tabs = document.querySelectorAll('.shell-tab');
+    // embed 模式:注入后所有屏 flat 排列,按当前屏反推所在节高亮
+    if (embedMode && embedReady) {
+      var curScreen = current;
+      var acc = 0, curPage = 0;
+      for (var q = 0; q < pages.length; q++) {
+        var cnt = (embedPages[q] && embedPages[q].count) || 0;
+        if (curScreen < acc + cnt) { curPage = q; break; }
+        acc += cnt;
+        curPage = q + 1;
+      }
+      tabs.forEach(function (b, j) { b.classList.toggle('cur', j === curPage); });
+      var totalE = total, doneE = Math.min(totalE, curScreen + 1);
+      var bar = document.querySelector('.shell-bottom .deck-progress .bar');
+      var pos = document.querySelector('.shell-pos');
+      var pn = document.querySelector('.shell-pagename');
+      if (bar) bar.style.width = Math.min(100, (doneE / totalE) * 100) + '%';
+      if (pos) pos.textContent = (curPage + 1) + '/' + pages.length + ' 节 · ' + doneE + '/' + totalE + ' 屏';
+      if (pn) pn.textContent = pages[curPage].title || '';
+      scrollActiveTabIntoView();
+      return;
+    }
+    tabs.forEach(function (b, j) { b.classList.toggle('cur', j === shellCur); });
+    // 进度按「屏幕(screen)」颗粒度计算:每节=1个 iframe,内含多屏(每屏≈30s)。
+    // 屏数优先级:plan.pages[i].screens(编排权威标注)> iframe 上报 total(实测量);
+    // plan.pages[i].from/to(屏级切片)只计切片内的有效屏。
+    var totalScreens = 0, doneScreens = 0, loadedAny = false;
+    pages.forEach(function (p, i) {
+      var st = shellLast[i];
+      var total = effTotal(p, st);
+      if (!total) return;
+      loadedAny = true;
+      totalScreens += total;
+      if (i < shellCur) doneScreens += total;          // 已翻完的节:全屏计入
+      else if (i === shellCur) doneScreens += effDone(p, st);
+    });
+    var bar = document.querySelector('.shell-bottom .deck-progress .bar');
+    var pos = document.querySelector('.shell-pos');
+    var pn = document.querySelector('.shell-pagename');
+    if (loadedAny && totalScreens > 0) {
+      if (bar) bar.style.width = Math.min(100, (doneScreens / totalScreens) * 100) + '%';
+      if (pos) pos.textContent = (shellCur + 1) + '/' + pages.length + ' 节 · ' + Math.min(doneScreens, totalScreens) + '/' + totalScreens + ' 屏';
+    } else {
+      // 完全未知 → 按节回退(首屏上报前短暂过渡)
+      var done = 0;
+      pages.forEach(function (p, i) {
+        if (i < shellCur) { done += 1; return; }
+        if (i === shellCur) {
+          var st2 = shellLast[i];
+          if (st2 && st2.total) done += Math.min(1, ((st2.index || 0) + 1) / st2.total);
+        }
+      });
+      if (bar) bar.style.width = ((done / pages.length) * 100) + '%';
+      if (pos) pos.textContent = (shellCur + 1) + ' / ' + pages.length + ' 页';
+    }
+    if (pn) pn.textContent = pages[shellCur].title || '';
+    scrollActiveTabIntoView();
+  }
+
+  function broadcastTheme() {
+    var t = window.HDTheme ? window.HDTheme.get() : (document.documentElement.getAttribute('data-theme') || 'dark');
+    shellFrames.forEach(function (f) { if (f) postToFrame(f, { type: 'deck-cmd', cmd: 'theme', theme: t }); });
+  }
+
+  function bindShellKeys() {
+    document.addEventListener('keydown', function (e) {
+      var t = e.target;
+      if (t && (t.tagName === 'INPUT' || t.tagName === 'TEXTAREA' || t.isContentEditable)) return;
+      if (t && t.closest && (t.closest('button') || t.closest('a'))) return;   // 焦点在按钮上交给原生
+      var k = e.key;
+      if (k === 'ArrowDown' || k === 's' || k === 'S' || k === 'PageDown' || k === ' ') {
+        e.preventDefault(); if (embedMode && embedReady) next(); else cmdActive('next');
+      } else if (k === 'ArrowUp' || k === 'w' || k === 'W' || k === 'PageUp') {
+        e.preventDefault(); if (embedMode && embedReady) prev(); else cmdActive('prev');
+      } else if (k === 'ArrowRight' || k === 'd' || k === 'D') {
+        if (embedMode && embedReady) nextChapter(); else showPage(shellCur + 1);
+      } else if (k === 'ArrowLeft' || k === 'a' || k === 'A') {
+        if (embedMode && embedReady) prevChapter(); else showPage(shellCur - 1);
+      } else if (k === 'Home') {
+        e.preventDefault();
+        if (embedMode && embedReady) jump(0); else cmdActive('home');
+      } else if (k === 'End') {
+        e.preventDefault();
+        if (embedMode && embedReady) jump(total - 1); else cmdActive('end');
+      }
+    });
+  }
+
+  /* ---------- 手机端:右下角「全屏」切换(不旋转——手机自带横屏) ---------- */
+  function isMobileUA() {
+    return /Android|iPhone|iPad|iPod|Mobile|Mobi|Opera Mini|IEMobile/i.test(navigator.userAgent)
+      || (navigator.platform && /iPhone|iPad|iPod|Android/i.test(navigator.platform));
+  }
+
+  var fullscreenBtn = null;
+
+  function ensureFullscreenStyle() {
+    if (document.getElementById('shell-fullscreen-style')) return;
+    var st = document.createElement('style');
+    st.id = 'shell-fullscreen-style';
+    st.textContent =
+      // ============ 全屏:不旋转舞台,16:9 等比 fit 视口居中(letterbox) ============
+      // 手机系统自带横屏:用户转手机即横屏。全屏模式只负责放大 + 隐藏系统 UI,
+      // 舞台始终按 16:9 contain(--fs-w/--fs-h 由 JS 计算),避免拉伸变形。
+      'html.shell-fullscreen .shell-stage{'
+      + 'position:fixed;top:50%;left:50%;'
+      + 'transform:translate(-50%,-50%);'
+      + 'width:var(--fs-w,100vw);height:var(--fs-h,100vh);'
+      + 'background:var(--bg-0);'
+      + 'box-shadow:0 0 0 2000px var(--bg-0);}'
+      // 顶栏/底栏:全屏时保持可用,收窄/半透明,不遮挡内容
+      + 'html.shell-fullscreen .shell-topbar{'
+      + 'opacity:.9;}'
+      + 'html.shell-fullscreen .shell-bottom{'
+      + 'opacity:.9;}'
+      // 常规右下角全屏按钮
+      + '.shell-fs-btn{position:fixed;right:14px;bottom:56px;z-index:80;'
+      + 'pointer-events:auto;cursor:pointer;'
+      + 'font:600 12px var(--font-mono);color:var(--text-3);'
+      + 'background:var(--glass-bg);border:1px solid var(--border-subtle);'
+      + 'border-radius:var(--radius-pill);padding:5px 12px;'
+      + 'backdrop-filter:blur(var(--glass-blur));opacity:.82;'
+      + 'box-shadow:0 2px 8px rgba(0,0,0,.18);}'
+      + '.shell-fs-btn:active{opacity:1;}'
+      // 窄屏折叠导航:汉堡按钮 + 下拉面板
+      + '.shell-collapsed .deck-tabs{'
+      + 'position:fixed;top:52px;left:12px;right:12px;'
+      + 'flex-direction:column;align-items:stretch;gap:4px;'
+      + 'background:var(--bg-1);border:1px solid var(--border-subtle);'
+      + 'border-radius:var(--radius-md);padding:8px;'
+      + 'display:none;max-height:62vh;overflow-y:auto;'
+      + 'box-shadow:0 8px 28px rgba(0,0,0,.35);z-index:60;}'
+      + '.shell-collapsed .deck-tab{width:100%;text-align:left;padding:8px 12px;border-radius:var(--radius-sm);}'
+      + '.shell-collapsed.shell-open .deck-tabs{display:flex;}'
+      + '.shell-burger{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;'
+      + 'width:34px;height:30px;padding:0;margin-right:4px;flex-shrink:0;'
+      + 'color:var(--text-3);border:1px solid var(--border-subtle);'
+      + 'border-radius:var(--radius-pill);background:var(--glass-bg);cursor:pointer;}'
+      + '.shell-burger:hover{color:var(--brand-1);border-color:var(--border-strong);}';
+    document.head.appendChild(st);
+  }
+
+  function applyFullscreenSize() {
+    // 舞台 16:9 contain 于视口(不旋转):宽高按视口 fit,letterbox 留黑边
+    var vw = window.innerWidth, vh = window.innerHeight;
+    var w, h;
+    if (vw / vh > 16 / 9) { h = vh; w = h * 16 / 9; }
+    else { w = vw; h = w * 9 / 16; }
+    var el = document.documentElement;
+    el.style.setProperty('--fs-w', Math.round(w) + 'px');
+    el.style.setProperty('--fs-h', Math.round(h) + 'px');
+  }
+
+  function toggleFullscreen() {
+    var el = document.documentElement;
+    var inFs = el.classList.contains('shell-fullscreen');
+    if (!inFs) {
+      applyFullscreenSize();
+      el.classList.add('shell-fullscreen');
+      var fs = el.requestFullscreen || el.webkitRequestFullscreen || el.msRequestFullscreen;
+      if (fs) { try { fs.call(el); } catch (e) {} }
+      if (fullscreenBtn) fullscreenBtn.textContent = '退出全屏';
+    } else {
+      el.classList.remove('shell-fullscreen');
+      var ex = document.exitFullscreen || document.webkitExitFullscreen || document.msExitFullscreen;
+      if (ex && (document.fullscreenElement || document.webkitFullscreenElement)) {
+        try { ex.call(document); } catch (e) {}
+      }
+      if (fullscreenBtn) fullscreenBtn.textContent = '全屏';
+    }
+  }
+
+  function buildFullscreenBtn() {
+    if (fullscreenBtn) return;
+    ensureFullscreenStyle();
+    var b = document.createElement('button');
+    b.className = 'shell-fs-btn';
+    b.type = 'button';
+    b.textContent = '全屏';
+    b.title = '切换全屏(手机端)';
+    b.addEventListener('click', toggleFullscreen);
+    document.body.appendChild(b);
+    fullscreenBtn = b;
+    // 全屏状态变化时同步按钮文案(浏览器返回键退出全屏等)
+    document.addEventListener('fullscreenchange', syncFullscreenBtn);
+    document.addEventListener('webkitfullscreenchange', syncFullscreenBtn);
+    // 尺寸变化时重算 16:9(转屏、全屏高度变化)
+    window.addEventListener('resize', function () {
+      if (document.documentElement.classList.contains('shell-fullscreen')) applyFullscreenSize();
+    });
+    window.addEventListener('orientationchange', function () {
+      setTimeout(function () {
+        if (document.documentElement.classList.contains('shell-fullscreen')) applyFullscreenSize();
+      }, 300);
+    });
+  }
+
+  function syncFullscreenBtn() {
+    if (!fullscreenBtn) return;
+    var inFs = !!(
+      document.fullscreenElement || document.webkitFullscreenElement || document.msFullscreenElement
+    );
+    fullscreenBtn.textContent = inFs ? '退出全屏' : '全屏';
+  }
+
+  function cmdActive(cmd) {
+    var f = shellFrames[shellCur];
+    if (f) postToFrame(f, { type: 'deck-cmd', cmd: cmd });
+  }
+
+  /* 总控侧:接收页面上报 */
+  function onShellMsg(e) {
+    var d = e.data;
+    if (!d || typeof d !== 'object') return;
+    var idx = -1;                              // e.source 是 iframe 的 window,需与 contentWindow 比对
+    for (var k = 0; k < shellFrames.length; k++) {
+      if (shellFrames[k] && shellFrames[k].contentWindow === e.source) { idx = k; break; }
+    }
+    if (idx < 0) return;                       // 只认自己管理的 iframe
+    if (d.type === 'deck-progress') {
+      shellLast[idx] = { index: d.index, total: d.total, state: d.state };
+      if (idx === shellCur) renderShellChrome();
+    } else if (d.type === 'deck-go') {
+      // 页内翻章(或最后一屏 ↓):按 plan 顺序切页,忽略页内 deck-config 的文件跳转
+      showPage(idx + (d.dir >= 0 ? 1 : -1));
+    }
+  }
+
+  /* 页侧:接收总控指令(总控页自身也挂此监听,靠 source 过滤互不干扰) */
+  function onPageMessage(e) {
+    var d = e.data;
+    if (!d || typeof d !== 'object') return;
+    if (e.source !== window.parent) return;    // 只接受父窗口指令
+    if (d.type === 'deck-register') {
+      shellMode = true;                        // 父窗口确认为总控容器
+      if (pendingGo) { postShell(pendingGo); pendingGo = null; }
+      return;
+    }
+    if (d.type !== 'deck-cmd') return;
+    if (d.cmd === 'next') next();
+    else if (d.cmd === 'prev') prev();
+    else if (d.cmd === 'jump') { if (typeof d.index === 'number') jump(d.index); }
+    else if (d.cmd === 'home') jump(0);
+    else if (d.cmd === 'end') jump(total - 1);
+    else if (d.cmd === 'range') {
+      // 屏级切片:总控下发 [from,to](0-based),页内翻屏被钳制在该范围,两端自动翻章
+      shellFrom = (typeof d.from === 'number') ? d.from : 0;
+      shellTo = (typeof d.to === 'number') ? d.to : -1;
+      jump(shellFrom);
+    }
+    else if (d.cmd === 'theme') { if (window.HDTheme && d.theme) window.HDTheme.set(d.theme); }
+  }
+
+  /* 字体/logo 加载后 tab 宽度变化,窗口 load 时校正一次居中(直接打开深层页的场景) */
+  window.addEventListener('load', function () { scrollActiveTabIntoView(); });
+
+  window.deck = {
+    init: init,
+    next: next,
+    prev: prev,
+    jump: jump,
+    nextChapter: nextChapter,
+    prevChapter: prevChapter,
+    goFile: goFile,
+    // 总控容器模式
+    showPage: showPage,
+    loadPage: loadPage
+  };
+})();

+ 599 - 0
lib/theme/base.css

@@ -0,0 +1,599 @@
+/* ============================================================
+ * lib/theme/base.css · 全局基础层
+ * reset + 全屏 .screen 容器 + 通用演绎类(暗/浅由 tokens.css 驱动)
+ * 纪律:本文件不出现十六进制色值,只用 var(--...)。
+ * ============================================================ */
+
+/* ---------- Reset ---------- */
+*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
+html, body { height: 100%; }
+body {
+  font-family: var(--font-body);
+  background: var(--bg-0);
+  color: var(--text-2);
+  overflow: hidden;                 /* 屏内定位,不滚动页面 */
+  -webkit-font-smoothing: antialiased;
+  line-height: 1.6;
+}
+h1,h2,h3,h4 { font-family: var(--font-display); font-weight: var(--font-display-weight); color: var(--text-1); line-height: 1.25; }
+img, video { max-width: 100%; display: block; }
+a { color: var(--brand-1); text-decoration: none; }
+button { font-family: inherit; cursor: pointer; }
+
+/* ---------- 屏幕容器(16:9 / 16:10 全屏) ---------- */
+.screen {
+  width: 100vw;
+  height: var(--screen-h);
+  overflow: hidden;
+  position: relative;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  background: var(--bg-0);
+}
+.screen[data-tl] > .s-wrap { visibility: hidden; }  /* 初始隐藏,时间线表演(deck 取消) */
+.screen[data-tl].in > .s-wrap { visibility: visible; }
+
+.s-wrap {
+  width: 82%;
+  max-width: 1720px;
+  height: 88%;
+  position: relative;              /* 插画/飘浮物定位锚点(absolute 元素贴内容容器而非叠放屏) */
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  gap: clamp(14px, 2.2vh, 28px);
+}
+
+/* ---------- 屏内基础元素 ---------- */
+.s-tag {
+  font-family: var(--font-mono);
+  font-size: clamp(12px, 1.2vw, 16px);
+  letter-spacing: .14em;
+  color: var(--brand-1);
+  text-transform: uppercase;
+}
+.s-title { font-size: clamp(30px, 3.6vw, 52px); }
+.s-sub   { font-size: clamp(16px, 1.5vw, 22px); color: var(--text-3); max-width: 78%; }
+.s-body  { flex: 1; display: flex; flex-direction: column; justify-content: center; gap: clamp(12px, 1.8vh, 22px); }
+
+/* ---------- 双栏编导布局:内容列 + 插画列(插画参与布局,天然不重叠) ---------- */
+.s-split { flex: 1; min-height: 0; display: flex; flex-direction: row; align-items: center; gap: clamp(20px, 3vw, 44px); }
+.s-split > .s-main { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: clamp(12px, 1.8vh, 22px); }
+.s-split > .s-side { flex: none; width: clamp(190px, 24vw, 360px); display: flex; align-items: center; justify-content: center; }
+.s-split > .s-side svg.ill, .s-split > .s-side .ill { position: static; width: 100%; height: auto; }
+/* 窄屏(16:10 或小窗)时插画列收窄、靠边,避免挤压正文 */
+.s-split > .s-side.wide { width: clamp(240px, 30vw, 460px); }
+.s-split > .s-side.narrow { width: clamp(150px, 18vw, 280px); }
+@media (max-width: 1100px) { .s-split { gap: 16px; } .s-split > .s-side { width: clamp(150px, 20vw, 260px); } }
+/* 插画列内部:可叠加角标 / 说明文字(.s-cap 图注) */
+.s-side .s-cap { position: absolute; left: 0; right: 0; bottom: -24px; text-align: center; font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px); color: var(--text-4); }
+
+.s-foot  {
+  font-family: var(--font-mono);
+  font-size: clamp(12px, 1.1vw, 15px);
+  color: var(--text-4);
+  letter-spacing: .06em;
+  text-align: right;
+}
+
+/* 素材屏底部来源标注(放 .s-main 内,紧贴卡片下方) */
+.s-foot-note {
+  font-family: var(--font-mono);
+  font-size: clamp(10px, .9vw, 12px);
+  color: var(--text-4);
+  margin-top: 6px;
+}
+
+/* ---------- 通用卡片 / 网格 / 标签 ---------- */
+.card {
+  background: var(--bg-2);
+  border: 1px solid var(--border-subtle);
+  border-radius: var(--radius-card);
+  padding: clamp(16px, 2vw, 28px);
+  box-shadow: var(--shadow-card);
+}
+.card.gold   { border-color: var(--border-strong); }
+.card.warn   { border-color: var(--border-focus); }
+.card.hi     { box-shadow: var(--shadow-glow); }
+
+.grid { display: grid; gap: clamp(14px, 1.6vw, 22px); }
+.grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
+.grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
+.grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
+
+.tag {
+  display: inline-flex; align-items: center; gap: 6px;
+  font-family: var(--font-mono);
+  font-size: clamp(11px, 1vw, 14px);
+  color: var(--brand-1);
+  border: 1px solid var(--border-strong);
+  background: var(--bg-2);
+  border-radius: var(--radius-sm);
+  padding: 2px 10px;
+  white-space: nowrap;
+}
+.tag.ok   { color: var(--brand-ok); border-color: rgba(127,209,160,.4); }
+.tag.brand-2 { color: var(--brand-2); border-color: rgba(175,138,232,.4); }
+
+.notice {
+  font-size: clamp(15px, 1.4vw, 19px);
+  color: var(--text-2);
+  border-left: 3px solid var(--brand-1);
+  padding: 6px 0 6px 16px;
+  background: var(--bg-2);
+}
+.notice.warn { border-left-color: var(--brand-3); color: var(--brand-3); font-weight: 600; }
+
+/* ---------- 模型图例(显化思维模型:符号 / 颜色含义) ----------
+   用法:模型图下方放 `.model-legend`,内放 `.model-legend .li`(`.sw` 色块 / `.ln` 线 / `.sym` 符号 + 文字)。
+   图例是「让模型可读」的最小契约:观众先看懂符号,再读图。 */
+.model-legend {
+  display: flex; flex-wrap: wrap; gap: clamp(6px, .8vw, 10px) clamp(14px, 2vw, 28px);
+  align-items: center; justify-content: center;
+  padding: clamp(8px, 1.2vh, 12px) clamp(14px, 1.6vw, 22px);
+  background: var(--bg-1); border: 1px solid var(--border-subtle);
+  border-radius: var(--radius-sm);
+  font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px);
+  color: var(--text-3);
+}
+.model-legend .li { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
+.model-legend .li b { color: var(--text-2); font-weight: 600; }
+.model-legend .sw { width: 15px; height: 15px; border-radius: 3px; flex: none; border: 1px solid var(--border-subtle); }
+.model-legend .sw.gold   { background: var(--brand-1); }
+.model-legend .sw.purple { background: var(--brand-2); }
+.model-legend .sw.red    { background: var(--brand-3); }
+.model-legend .sw.green  { background: var(--brand-ok); }
+.model-legend .sw.gray   { background: var(--bg-3); border-color: var(--border-subtle); }
+.model-legend .sw.line   { background: transparent; border: 1.5px solid var(--brand-1); }
+.model-legend .sw.dash   { background: transparent; border: 1.5px dashed var(--brand-3); }
+.model-legend .ln { width: 20px; height: 0; border-top: 3px solid var(--brand-2); flex: none; }
+.model-legend .ln.red  { border-color: var(--brand-3); }
+.model-legend .ln.gold { border-color: var(--brand-1); }
+.model-legend .ln.dash { border-top-style: dashed; }
+.model-legend .sym { font-size: clamp(13px, 1.1vw, 16px); color: var(--brand-1-hi); font-weight: 700; flex: none; line-height: 1; }
+.model-legend .sym.red { color: var(--brand-3); }
+
+/* 模型标签:模型图上方的「点名」小标签(编号 + 模型名) */
+.model-tag {
+  display: inline-flex; align-items: center; gap: 8px;
+  font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px);
+  color: var(--brand-1); letter-spacing: .12em;
+  border: 1px solid var(--border-strong); border-radius: var(--radius-sm);
+  padding: 4px 12px; margin-bottom: 4px;
+}
+.model-tag .no { color: var(--brand-2); }
+.model-tag.green { color: var(--brand-ok); border-color: rgba(127,209,160,.4); }
+
+/* ---------- 思维模型卡(显化思维模型:点名屏) ----------
+   结构:.model-map(grid) > .mm-item(card) > .mm-n(模型名) + .mm-t(核心判断) + .mm-d(展开)。
+   层式模型化:编号模型名(mono)+ 核心判断(display 大字)+ 展开(正文),品牌强调色描边,暗/浅双主题。 */
+.model-map {
+  display: grid; gap: clamp(12px, 1.6vw, 20px); width: 100%;
+}
+.model-map.cols { grid-template-columns: 1fr 1fr; }
+.mm-item {
+  position: relative;
+  background: linear-gradient(180deg, var(--bg-2), var(--bg-1));
+  border: 1px solid var(--border-subtle);
+  border-left: 4px solid var(--brand-2);
+  border-radius: var(--radius-card);
+  padding: clamp(14px, 1.8vw, 24px) clamp(16px, 2vw, 28px);
+  box-shadow: var(--shadow-card);
+}
+.mm-item.hot  { border-color: var(--border-strong); border-left-color: var(--brand-1); }
+.mm-item.warn { border-left-color: var(--brand-3); }
+.mm-item.ok   { border-left-color: var(--brand-ok); }
+.mm-item .mm-n {
+  font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px);
+  color: var(--brand-2); letter-spacing: .12em; font-weight: 700;
+}
+.mm-item.hot .mm-n { color: var(--brand-1); }
+.mm-item .mm-t {
+  font-family: var(--font-display); font-weight: var(--font-display-weight);
+  font-size: clamp(17px, 1.9vw, 26px); color: var(--text-1);
+  margin: 6px 0 8px; line-height: 1.35;
+}
+.mm-item .mm-d { font-size: clamp(13px, 1.25vw, 17px); color: var(--text-2); line-height: 1.75; }
+.mm-item .mm-d b { color: var(--brand-1); font-weight: 600; }
+.mm-item .mm-d .hl { color: var(--brand-1-hi); }
+
+/* ---------- 数据速览(stat-band) ---------- */
+.stat-band { display: flex; gap: clamp(20px, 3vw, 48px); align-items: stretch; }
+.stat {
+  flex: 1; min-width: 0;
+  background: var(--bg-2);
+  border: 1px solid var(--border-subtle);
+  border-radius: var(--radius-card);
+  padding: clamp(14px, 1.8vw, 24px);
+}
+.stat .num {
+  font-family: var(--font-mono);
+  font-size: clamp(34px, 4.6vw, 68px);
+  font-weight: 800;
+  color: var(--brand-1);
+  line-height: 1.1;
+  font-variant-numeric: tabular-nums;
+}
+.stat .num.hero { color: var(--text-1); }
+.stat .label { margin-top: 6px; font-size: clamp(12px, 1.1vw, 15px); color: var(--text-3); }
+.stat .src { margin-top: 2px; font-size: clamp(10px, .9vw, 12px); color: var(--text-4); }
+
+/* ---------- 链路 / 流程(chain) ---------- */
+.chain { display: flex; align-items: stretch; gap: clamp(10px, 1.2vw, 18px); }
+.chain .node {
+  flex: 1; text-align: center;
+  border: 1px solid var(--border-subtle);
+  border-radius: var(--radius-card);
+  padding: clamp(12px, 1.6vw, 22px);
+  background: var(--bg-2);
+  position: relative;
+}
+.chain .node .k { font-family: var(--font-mono); font-size: clamp(10px, .95vw, 13px); color: var(--text-4); letter-spacing: .12em; }
+.chain .node .v { font-size: clamp(14px, 1.3vw, 18px); color: var(--text-1); font-weight: 600; margin-top: 4px; }
+.chain .node.on  { border-color: var(--border-strong); box-shadow: var(--shadow-glow); }
+.chain .node.wall { border-color: rgba(255,0,0,.45); }
+.chain .arrow {
+  display: flex; align-items: center; color: var(--brand-1-hi);
+  font-size: clamp(16px, 1.5vw, 22px); font-weight: 700;
+}
+
+/* ---------- 左右对比(duel) ---------- */
+.duel { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(16px, 2.2vw, 32px); align-items: stretch; }
+.duel .side {
+  border-radius: var(--radius-card);
+  padding: clamp(16px, 2vw, 28px);
+  border: 1px solid var(--border-subtle);
+  background: var(--bg-2);
+}
+.duel .side.bad  { border-color: rgba(255,0,0,.45); }
+.duel .side.good { border-color: var(--border-strong); box-shadow: var(--shadow-glow); }
+.duel .side h3 { font-size: clamp(16px, 1.5vw, 22px); margin-bottom: 10px; }
+.duel .side.bad h3 { color: var(--brand-3); }
+.duel .side.good h3 { color: var(--brand-1); }
+.duel .side .vs { font-family: var(--font-mono); color: var(--text-4); font-size: clamp(12px, 1vw, 14px); letter-spacing: .1em; }
+
+/* ---------- 金句(quote-line) ---------- */
+.quote-line {
+  font-family: var(--font-display);
+  font-size: clamp(24px, 2.8vw, 40px);
+  font-weight: var(--font-display-weight);
+  color: var(--text-1);
+  line-height: 1.4;
+}
+.quote-line .hl { background: var(--gradient-text); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
+.quote-line .src { display: block; margin-top: 10px; font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px); color: var(--text-4); -webkit-text-fill-color: var(--text-4); }
+
+/* ---------- 诚实边界(truth-table) ---------- */
+.truth-table { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(16px, 2vw, 28px); }
+.truth-table .col { border-radius: var(--radius-card); padding: clamp(16px, 2vw, 26px); background: var(--bg-2); border: 1px solid var(--border-subtle); }
+.truth-table .col.confirmed { border-color: rgba(127,209,160,.4); }
+.truth-table .col.pending   { border-color: rgba(175,138,232,.4); }
+.truth-table .col h3 { font-size: clamp(15px, 1.4vw, 20px); margin-bottom: 10px; }
+.truth-table .confirmed h3 { color: var(--brand-ok); }
+.truth-table .pending h3   { color: var(--brand-2); }
+.truth-table li { list-style: none; padding: 4px 0 4px 18px; position: relative; font-size: clamp(13px, 1.2vw, 17px); color: var(--text-2); }
+.truth-table li::before { content: attr(data-mark); position: absolute; left: 0; font-family: var(--font-mono); }
+
+/* ---------- 步骤带(chip-steps) ---------- */
+.chip-steps { display: flex; gap: clamp(8px, .9vw, 14px); flex-wrap: wrap; }
+.chip {
+  font-family: var(--font-mono);
+  font-size: clamp(13px, 1.2vw, 17px);
+  padding: 8px 18px;
+  border-radius: var(--radius-pill);
+  border: 1px solid var(--border-subtle);
+  background: var(--bg-2);
+  color: var(--text-2);
+}
+.chip.on   { border-color: var(--border-strong); color: var(--brand-1); box-shadow: var(--shadow-glow); }
+.chip.warn { border-color: rgba(255,0,0,.45); color: var(--brand-3); }
+.chip .n { opacity: .6; margin-right: 6px; }
+
+/* ---------- 业务三环(loop3) ---------- */
+.loop3 { display: flex; justify-content: center; align-items: center; gap: clamp(18px, 2.4vw, 34px); }
+.loop3 .ring {
+  width: clamp(120px, 15vw, 210px); height: clamp(120px, 15vw, 210px);
+  border-radius: 50%;
+  border: 2px dashed var(--border-subtle);
+  display: flex; flex-direction: column; align-items: center; justify-content: center;
+  gap: 4px; text-align: center; padding: 10px;
+  background: var(--bg-2);
+}
+.loop3 .ring.on { border-color: var(--border-strong); border-style: solid; box-shadow: var(--shadow-glow); }
+.loop3 .ring .t { font-size: clamp(14px, 1.3vw, 18px); color: var(--text-1); font-weight: 700; }
+.loop3 .ring .d { font-size: clamp(10px, .95vw, 13px); color: var(--text-3); }
+.loop3 .loop-arrow { font-size: clamp(18px, 1.8vw, 26px); color: var(--brand-1-hi); font-weight: 700; }
+
+/* ---------- 反转序列(reversal) ---------- */
+.reversal { display: flex; flex-direction: column; gap: clamp(10px, 1.4vh, 16px); }
+.reversal .rv {
+  display: flex; align-items: baseline; gap: 14px;
+  border: 1px solid var(--border-subtle);
+  border-left: 3px solid var(--brand-2);
+  border-radius: var(--radius-card);
+  padding: clamp(10px, 1.4vw, 16px) clamp(16px, 1.8vw, 24px);
+  background: var(--bg-2);
+}
+.reversal .rv.on { border-left-color: var(--brand-1); }
+.reversal .rv .n { font-family: var(--font-mono); color: var(--brand-2); font-size: clamp(14px, 1.3vw, 18px); font-weight: 700; }
+.reversal .rv.on .n { color: var(--brand-1); }
+.reversal .rv .t { font-size: clamp(14px, 1.3vw, 18px); color: var(--text-2); }
+
+/* ---------- 目录卡(toccard) ---------- */
+.toccard-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(14px, 1.6vw, 22px); }
+.toccard {
+  display: block;
+  background: var(--bg-2);
+  border: 1px solid var(--border-subtle);
+  border-radius: var(--radius-card);
+  padding: clamp(16px, 1.8vw, 24px);
+  color: var(--text-2);
+  transition: transform .3s var(--ease-out), border-color .3s, box-shadow .3s;
+}
+.toccard:hover { transform: translateY(-4px); border-color: var(--border-strong); box-shadow: var(--shadow-glow); }
+.toccard .no { font-family: var(--font-mono); color: var(--brand-1); font-size: clamp(11px, 1vw, 14px); letter-spacing: .12em; }
+.toccard .ti { font-size: clamp(16px, 1.5vw, 21px); font-family: var(--font-display); color: var(--text-1); font-weight: var(--font-display-weight); margin: 6px 0 4px; }
+.toccard .de { font-size: clamp(12px, 1.1vw, 15px); color: var(--text-3); }
+
+/* ---------- 画像对拍(profile-match) ---------- */
+.match { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(16px, 2vw, 28px); }
+.match .col { border-radius: var(--radius-card); border: 1px solid var(--border-subtle); background: var(--bg-2); padding: clamp(16px, 1.8vw, 24px); }
+.match .col h3 { font-size: clamp(15px, 1.4vw, 20px); margin-bottom: 12px; }
+.match .col.worker h3 { color: var(--brand-1); }
+.match .col.job h3 { color: var(--brand-2); }
+.match .col .tags { display: flex; flex-wrap: wrap; gap: 8px; }
+.match .col .tags .tag { opacity: .55; }
+.match .col .tags .tag.on { opacity: 1; }
+
+/* ---------- 通用演绎类 · 增补(卡片/对比/引文/数据) ---------- */
+.card.ok    { border-color: var(--border-ok); }
+.card.danger{ border-color: var(--border-danger); }
+.card .k {
+  font-family: var(--font-mono);
+  font-size: clamp(11px, .95vw, 13px);
+  letter-spacing: .14em;
+  color: var(--brand-1);
+  margin-bottom: 8px;
+  text-transform: uppercase;
+}
+.card .k.red   { color: var(--brand-3); }
+.card .k.gold  { color: var(--brand-1-hi); }
+.card .k.green { color: var(--brand-ok); }
+.card .k.purple{ color: var(--brand-2); }
+
+.s-tag.red   { color: var(--brand-3); }
+.s-tag.purple{ color: var(--brand-2); }
+.hl { background: var(--gradient-text); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
+.red   { color: var(--brand-3); }
+.green { color: var(--brand-ok); }
+
+/* ---------- 金句卡(quote) ---------- */
+.quote {
+  border-left: 3px solid var(--brand-1);
+  background: var(--bg-2);
+  padding: clamp(14px, 1.8vw, 22px) clamp(18px, 2vw, 28px);
+  border-radius: var(--radius-card);
+}
+.quote p {
+  font-family: var(--font-display);
+  font-size: clamp(18px, 1.9vw, 26px);
+  color: var(--text-1);
+  line-height: 1.5;
+  font-weight: var(--font-display-weight);
+}
+.quote p b { color: var(--brand-1); }
+.quote .q-src {
+  display: block;
+  margin-top: 10px;
+  font-family: var(--font-mono);
+  font-size: clamp(11px, 1vw, 14px);
+  color: var(--text-4);
+}
+
+/* ---------- 左右分栏(split) ---------- */
+.split { display: grid; grid-template-columns: 1.1fr 1fr; gap: clamp(18px, 2.2vw, 32px); align-items: center; }
+.split > * { min-width: 0; }
+
+/* ---------- 编号步骤带(steps) ---------- */
+.steps { display: flex; gap: clamp(8px, .9vw, 14px); align-items: stretch; flex-wrap: wrap; }
+.step {
+  flex: 1; min-width: 150px;
+  border: 1px solid var(--border-subtle);
+  background: var(--bg-2);
+  border-radius: var(--radius-card);
+  padding: clamp(12px, 1.4vw, 18px);
+  position: relative;
+}
+.step .s-n { font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px); color: var(--brand-1); }
+.step .s-n.red { color: var(--brand-3); }
+.step .s-t { font-size: clamp(14px, 1.3vw, 18px); color: var(--text-1); font-weight: 600; margin: 4px 0 4px; }
+.step p { font-size: clamp(11px, 1vw, 14px); color: var(--text-3); }
+.step::after {
+  content: '→';
+  position: absolute; right: -9px; top: 50%;
+  transform: translateY(-50%);
+  color: var(--brand-1-hi);
+  font-family: var(--font-mono);
+  z-index: 2;
+}
+.step:last-child::after { content: ''; }
+
+/* ---------- 前后对比(ba) ---------- */
+.ba { display: grid; grid-template-columns: 1fr 46px 1fr; align-items: stretch; }
+.ba-box {
+  border: 1px solid var(--border-subtle);
+  background: var(--bg-2);
+  border-radius: var(--radius-card);
+  padding: clamp(14px, 1.6vw, 22px);
+}
+.ba-before { border-color: var(--border-danger); }
+.ba-after  { border-color: var(--border-strong); box-shadow: var(--shadow-glow); }
+.ba-arrow  { display: flex; align-items: center; justify-content: center; font-size: clamp(18px, 1.8vw, 26px); color: var(--brand-1-hi); }
+.ba-box .bh { font-family: var(--font-mono); font-size: clamp(10px, .95vw, 13px); letter-spacing: .12em; margin-bottom: 8px; color: var(--brand-3); }
+.ba-after .bh { color: var(--brand-1); }
+.ba-box .bv { font-size: clamp(13px, 1.2vw, 17px); font-weight: 600; color: var(--text-1); line-height: 1.55; }
+.ba-box .bv b { color: var(--brand-1); }
+
+/* ---------- 业务三环 · 方块变体(loop3.l3) ---------- */
+.loop3 .l3 {
+  width: clamp(150px, 18vw, 260px);
+  border: 1px solid var(--border-subtle);
+  background: var(--bg-2);
+  border-radius: var(--radius-card);
+  padding: clamp(14px, 1.8vw, 22px);
+  text-align: center;
+}
+.loop3 .l3.on { border-color: var(--border-strong); box-shadow: var(--shadow-glow); }
+.loop3 .l3-k { font-family: var(--font-mono); font-size: clamp(10px, .9vw, 13px); color: var(--brand-2); letter-spacing: .12em; }
+.loop3 .l3.on .l3-k { color: var(--brand-1); }
+.loop3 .l3-t { font-size: clamp(15px, 1.4vw, 20px); color: var(--text-1); font-weight: 700; margin: 4px 0; }
+.loop3 .l3 p { font-size: clamp(11px, 1vw, 14px); color: var(--text-3); }
+
+/* ---------- 反转序列 · 正文变体 ---------- */
+.reversal .rv .d { font-size: clamp(12px, 1.1vw, 15px); color: var(--text-3); margin-top: 2px; }
+
+/* ---------- 翻车版 vs 人味版(rw) ---------- */
+.rw { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(12px, 1.4vw, 18px); }
+.rw-box { border: 1px solid var(--border-subtle); border-radius: var(--radius-card); padding: clamp(14px, 1.6vw, 20px); }
+.rw-o { border-color: var(--border-danger); }
+.rw-n { border-color: var(--border-ok); }
+.rw-h { font-family: var(--font-mono); font-size: clamp(10px, .95vw, 13px); letter-spacing: .1em; margin-bottom: 8px; color: var(--brand-3); }
+.rw-n .rw-h { color: var(--brand-ok); }
+.rw-t { font-size: clamp(13px, 1.2vw, 17px); line-height: 1.7; color: var(--text-1); }
+.rw-t b { color: var(--brand-1); }
+.rw-d { font-size: clamp(11px, 1vw, 14px); color: var(--text-4); margin-top: 8px; font-family: var(--font-mono); }
+
+/* ---------- KPI 数字条(kpis) ---------- */
+.kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(10px, 1.2vw, 16px); }
+.kpi {
+  border: 1px solid var(--border-subtle);
+  background: var(--bg-2);
+  border-radius: var(--radius-card);
+  padding: clamp(12px, 1.4vw, 18px);
+  text-align: center;
+}
+.kpi .kp-v { font-family: var(--font-mono); font-weight: 900; font-size: clamp(20px, 2.4vw, 34px); color: var(--brand-1); line-height: 1.1; font-variant-numeric: tabular-nums; }
+.kpi .kp-v.up   { color: var(--brand-ok); }
+.kpi .kp-v.down { color: var(--brand-3); }
+.kpi .kp-l { font-family: var(--font-mono); font-size: clamp(10px, .9vw, 12px); color: var(--text-3); margin-top: 6px; }
+.kpi .kp-s { font-size: clamp(10px, .9vw, 12px); color: var(--text-4); margin-top: 2px; }
+
+/* ---------- 小标签行(vtag) ---------- */
+.vtag {
+  display: inline-flex; align-items: center; gap: 8px;
+  margin-bottom: 10px;
+  font-family: var(--font-mono);
+  font-size: clamp(10px, .95vw, 13px);
+  color: var(--brand-1);
+  letter-spacing: .12em;
+}
+.vtag::before { content: ''; width: 26px; height: 1px; background: var(--brand-1); }
+
+/* ---------- 顶栏(主题按钮 / 章节 tab,deck 渲染) ---------- */
+.deck-topbar {
+  position: fixed; top: 0; left: 0; right: 0; z-index: 50;
+  display: flex; align-items: center; justify-content: space-between; gap: 14px;
+  padding: 10px 22px;
+  pointer-events: none;
+}
+.deck-left { display: flex; align-items: center; flex-shrink: 0; }
+.deck-tabs {
+  display: flex; gap: 6px; overflow-x: auto; pointer-events: auto;
+  flex: 1 1 auto; min-width: 0;
+  /* 两侧预留位:右 = 品牌 logo,左 = 主题按钮;并隐藏 x 滚动条 */
+  padding-left: clamp(12px, 1.5vw, 32px);
+  padding-right: clamp(56px, 6vw, 120px);
+  scrollbar-width: none;
+}
+.deck-tabs::-webkit-scrollbar { display: none; }
+.deck-tab {
+  font-family: var(--font-mono);
+  font-size: 12px;
+  padding: 4px 12px;
+  border-radius: var(--radius-pill);
+  border: 1px solid transparent;
+  color: var(--text-3);
+  background: transparent;
+  white-space: nowrap;
+}
+.deck-tab.cur { color: var(--brand-1); border-color: var(--border-strong); background: var(--bg-2); }
+
+.theme-toggle {
+  pointer-events: auto;
+  display: inline-flex; align-items: center; justify-content: center;
+  width: 34px; height: 30px; padding: 0;
+  color: var(--text-3);
+  border: 1px solid var(--border-subtle);
+  border-radius: var(--radius-pill);
+  background: var(--glass-bg);
+  backdrop-filter: blur(var(--glass-blur));
+  cursor: pointer;
+}
+.theme-toggle:hover { color: var(--brand-1); border-color: var(--border-strong); }
+.theme-toggle svg { flex-shrink: 0; }
+.deck-right { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
+
+/* 右上角品牌 logo(960×105 横条,theme.js 随主题切换暗/浅两图) */
+.hd-logo {
+  height: clamp(20px, 2.4vh, 30px);
+  width: auto;
+  aspect-ratio: 960 / 105;
+  object-fit: contain;
+  flex-shrink: 0;
+}
+
+/* ---------- 底部进度条(deck 渲染) ---------- */
+.deck-bottom {
+  position: fixed; bottom: 0; left: 0; right: 0; z-index: 50;
+  display: flex; align-items: center; gap: 16px;
+  padding: 10px 22px;
+  pointer-events: none;
+}
+.deck-progress {
+  flex: 1; height: 3px; border-radius: 2px;
+  background: var(--bg-2); overflow: hidden;
+}
+.deck-progress .bar {
+  height: 100%; width: 0%;
+  background: var(--brand-1);
+  transition: width .4s var(--ease-out);
+}
+.deck-pos { font-family: var(--font-mono); font-size: 12px; color: var(--text-4); font-variant-numeric: tabular-nums; }
+.deck-pagename { font-family: var(--font-mono); font-size: 12px; color: var(--text-3); }
+
+/* ---------- 水平柱状(bar-row)渠道价 / 对比 ---------- */
+.bar-row { display: grid; grid-template-columns: 130px 1fr 96px; gap: clamp(8px, .9vw, 14px); align-items: center; }
+.bar-l { font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px); color: var(--text-3); text-align: right; }
+.bar-track { height: clamp(14px, 2vh, 20px); background: var(--bg-2); border: 1px solid var(--border-subtle); border-radius: var(--radius-sm); overflow: hidden; }
+.bar { height: 100%; width: 0%; background: var(--gradient-brand); border-radius: var(--radius-sm); }
+.bar.on { background: var(--brand-1-hi); }
+.bar-v { font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px); color: var(--brand-1); font-variant-numeric: tabular-nums; }
+
+/* ---------- 环形仪表(gauge)线上化率 ---------- */
+.gauge-wrap { display: flex; flex-direction: column; align-items: center; gap: clamp(12px, 1.6vh, 18px); margin: 6px 0; }
+.gauge {
+  width: clamp(150px, 18vw, 240px); height: clamp(150px, 18vw, 240px);
+  border-radius: 50%;
+  display: flex; align-items: center; justify-content: center;
+  position: relative;
+  background:
+    radial-gradient(closest-side, var(--bg-0) 79%, transparent 80% 99%),
+    conic-gradient(var(--brand-1) var(--g, 13%), var(--bg-2) 0);
+}
+.gauge-num { font-family: var(--font-mono); font-size: clamp(34px, 4.6vw, 64px); font-weight: 800; color: var(--brand-1); font-variant-numeric: tabular-nums; }
+.gauge-tags { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; }
+
+/* ---------- 多镜头转场(frames,同屏多幕推进) ---------- */
+.frames { flex: 1; display: flex; flex-direction: column; justify-content: center; }
+.frames .frame { display: flex; flex-direction: column; justify-content: center; gap: clamp(12px, 1.8vh, 22px); }
+
+/* ---------- 辅助 ---------- */
+.mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
+.big   { font-size: clamp(40px, 6vw, 88px); }
+.gold  { color: var(--brand-1); }
+.center { text-align: center; }
+.flex { display: flex; align-items: center; gap: 14px; }
+.between { justify-content: space-between; }
+.wrap { flex-wrap: wrap; }
+.mt { margin-top: 16px; }

+ 111 - 0
lib/theme/theme.js

@@ -0,0 +1,111 @@
+/* ============================================================
+ * lib/theme/theme.js · 运行时主题切换
+ * 读取顺序:localStorage('hd-theme') → prefers-color-scheme → dark
+ * 提供 window.HDTheme:{ get(), set(name), toggle() }
+ * 并在顶栏 .deck-topbar 注入主题切换按钮(若存在)。
+ * 普通 script,非 module,file:// 可用。
+ * ============================================================ */
+(function () {
+  var KEY = 'hd-theme';
+  var root = document.documentElement;
+
+  /* 右上角品牌 logo:随主题切换暗/浅两图。
+   * 图片在课程目录 lesson/hundun-aiceo/,按 theme.js 自身 src 反推相对路径,
+   * 与页面所在深度无关(file:// 与 http 均可用)。可用 window.HD_LOGO_BASE 覆盖。 */
+  var LOGO_BASE = (function () {
+    try {
+      if (window.HD_LOGO_BASE) return window.HD_LOGO_BASE.replace(/\/?$/, '/');
+      var s = document.currentScript && document.currentScript.src;
+      if (s) return new URL('../../lesson/hundun-aiceo/', s).href;
+    } catch (e) {}
+    return '';
+  })();
+  var logoImg = null;
+
+  function current() {
+    var saved = null;
+    try { saved = localStorage.getItem(KEY); } catch (e) {}
+    if (saved === 'dark' || saved === 'light') return saved;
+    if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) return 'light';
+    return 'dark';
+  }
+
+  // 图片名即内容色:hundunai-dark.png = 深色内容(配浅色背景)、hundunai-light.png = 浅色内容(配深色背景)
+  function logoFile(name) { return 'hundunai-' + (name === 'dark' ? 'light' : 'dark') + '.png'; }
+
+  function apply(name) {
+    root.setAttribute('data-theme', name);
+    try { localStorage.setItem(KEY, name); } catch (e) {}
+    if (logoImg && LOGO_BASE) logoImg.src = LOGO_BASE + logoFile(name);
+  }
+
+  function toggle() {
+    apply(current() === 'dark' ? 'light' : 'dark');
+  }
+
+  // 幂等注入 logo 到顶栏右侧(deck.js buildChrome 或 DOMContentLoaded 调用)
+  function ensureLogo(container) {
+    if (logoImg || !LOGO_BASE) return;
+    var bar = container || document.querySelector('.deck-topbar');
+    if (!bar) return;
+    logoImg = bar.querySelector('.hd-logo');
+    if (!logoImg) {
+      var right = bar.querySelector('.deck-right');
+      if (!right) {
+        right = document.createElement('div');
+        right.className = 'deck-right';
+        bar.appendChild(right);
+      }
+      logoImg = document.createElement('img');
+      logoImg.className = 'hd-logo';
+      logoImg.alt = '';
+      logoImg.setAttribute('aria-hidden', 'true');
+      logoImg.onerror = function () { logoImg.style.display = 'none'; }; // 图缺失不显破图
+      right.appendChild(logoImg);
+    }
+    apply(current());
+  }
+
+  // 首帧前应用,避免闪白/闪黑
+  apply(current());
+
+  /* 主题切换按钮:图标化(暗主题显示太阳、浅主题显示月亮),放顶栏左侧 */
+  var SUN_PATH = 'M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M20.64,17L16.5,17.36C17.09,16.85 17.62,16.22 18.04,15.5C18.46,14.77 18.73,14 18.87,13.21L20.64,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56L12,22Z';
+  var MOON_PATH = 'M17.75,4.09L15.22,6.03L16.13,9.09L13.5,7.28L10.87,9.09L11.78,6.03L9.25,4.09L12.44,4L13.5,1L14.56,4L17.75,4.09M21.25,11L19.61,12.25L20.2,14.23L18.5,13.06L16.8,14.23L17.39,12.25L15.75,11L17.81,10.95L18.5,9L19.19,10.95L21.25,11M18.97,15.95C19.8,15.87 20.69,17.05 20.16,17.8C19.84,18.25 19.5,18.67 19.08,19.07C15.44,22.7 9.62,22.69 5.99,19.06C2.35,15.42 2.35,9.61 5.99,5.97C6.38,5.58 6.8,5.24 7.26,4.94C8,4.42 9.17,5.3 9.1,6.13C9.04,6.74 9.07,7.35 9.22,7.95C9.78,10.19 10.83,12.28 12.29,14.05C13.84,15.92 15.77,17.35 17.92,18.21C18.28,18.35 18.64,18.47 19.02,18.55C19.23,18.58 19.46,18.57 19.68,18.55C19.78,18.55 19.88,18.56 19.98,18.55Z';
+  function iconSvg(moon) {
+    return '<svg viewBox="0 0 24 24" width="16" height="16" aria-hidden="true"><path fill="currentColor" d="' + (moon ? MOON_PATH : SUN_PATH) + '"/></svg>';
+  }
+  function createToggleBtn() {
+    var btn = document.createElement('button');
+    btn.className = 'theme-toggle';
+    btn.type = 'button';
+    btn.setAttribute('aria-label', '切换主题');
+    btn.title = '切换主题';
+    function paint() { btn.innerHTML = iconSvg(current() === 'dark'); } // 暗主题给太阳,点它切到亮
+    paint();
+    btn.addEventListener('click', function () { toggle(); paint(); });
+    return btn;
+  }
+  // 注入主题切换按钮(放顶栏左侧)
+  function injectToggle() {
+    var bar = document.querySelector('.deck-topbar');
+    if (!bar) return;
+    if (bar.querySelector('.theme-toggle')) return;
+    var left = bar.querySelector('.deck-left');
+    if (!left) { left = document.createElement('div'); left.className = 'deck-left'; bar.insertBefore(left, bar.firstChild); }
+    left.appendChild(createToggleBtn());
+  }
+
+  window.HDTheme = { get: current, set: apply, toggle: toggle, ensureLogo: ensureLogo, createToggleBtn: createToggleBtn };
+
+  if (document.readyState === 'loading') {
+    document.addEventListener('DOMContentLoaded', function () { injectToggle(); ensureLogo(); });
+  } else {
+    injectToggle();
+    ensureLogo();
+  }
+  // 顶栏可能由 deck.js 稍后创建,兜底重试一次
+  if (document.readyState === 'loading') {
+    setTimeout(function () { ensureLogo(document.querySelector('.deck-topbar')); }, 300);
+  }
+})();

+ 191 - 0
lib/theme/tokens.css

@@ -0,0 +1,191 @@
+/* ============================================================
+ * lib/theme/tokens.css · 混沌AI院设计系统 token 唯一来源
+ * 双主题:暗色(混沌AI院) / 浅色(未来飞马 VI)
+ * 任何文件不得新写色值/字体/圆角常量,一律引用本文件 var(--...)。
+ * 切换方式:<html data-theme="dark" | "light">(由 theme.js 管理)
+ * ============================================================ */
+
+:root {
+  /* ---------- 背景层级(0=最深 3=最浅浮层) ---------- */
+  --bg-0: #0B1017;                 /* 页面深底 */
+  --bg-1: #111925;                 /* 一级浮层 / 区块底 */
+  --bg-2: #171F2B;                 /* 卡片底 */
+  --bg-3: #0D131C;                 /* 浮层 / 弹层底 */
+
+  /* ---------- 文字层级(1=最高 4=最低) ---------- */
+  --text-1: #FBFAF7;               /* 大标题 / 核心结论 */
+  --text-2: #C1C4CB;               /* 主标题 / 正文 */
+  --text-3: #777D85;               /* 说明 / 次级 */
+  --text-4: rgba(255,255,255,.42); /* 弱化 / 页码 / 脚注 */
+
+  /* ---------- 品牌强调 ---------- */
+  --brand-1:    #D5B254;           /* 金:主强调 */
+  --brand-1-hi: #FFC000;           /* 金黄:框线 / 高亮 */
+  --brand-2:    #AF8AE8;           /* 浅紫:次级强调 */
+  --brand-3:    #FF0000;           /* 红:卡点 / 警示 */
+  --brand-ok:   #7FD1A0;           /* 绿:通过 / 已确认 */
+
+  /* ---------- 渐变 ---------- */
+  --gradient-brand: linear-gradient(135deg, #D5B254, #FFC000);
+  --gradient-text:  linear-gradient(135deg, #FFC000, #AF8AE8);
+  --on-gradient:    #0B1017;           /* 品牌渐变底上的文字色(暗=金渐变深字) */
+  --gradient-hero:  radial-gradient(ellipse at 50% 0%, rgba(213,178,84,.10) 0%, transparent 60%),
+                    radial-gradient(ellipse at 80% 85%, rgba(175,138,232,.10) 0%, transparent 55%),
+                    linear-gradient(180deg, #0B1017 0%, #111925 60%, #0D131C 100%);
+
+  /* ---------- 边框 ---------- */
+  --border-subtle: rgba(255,255,255,.07);
+  --border-strong: rgba(213,178,84,.35);
+  --border-focus:  rgba(213,178,84,.6);
+  --border-danger: rgba(255,0,0,.45);        /* 警示红框(卡点 / 翻车) */
+  --border-ok:     rgba(127,209,160,.4);     /* 通过绿框(已确认 / 人味版) */
+
+  /* ---------- 阴影 ---------- */
+  --shadow-card:  none;                       /* 暗色用线框,不用投影 */
+  --shadow-float: 0 8px 30px rgba(0,0,0,.45);
+  --shadow-glow:  0 0 24px rgba(213,178,84,.25);
+
+  /* ---------- 圆角(混沌 = 直角卡片) ---------- */
+  --radius-sm: 3px;  --radius-md: 6px;  --radius-lg: 10px;
+  --radius-card: 0px;
+  --radius-pill: 999px;
+
+  /* ---------- 字体 ---------- */
+  --font-display: "Source Han Serif SC","Noto Serif SC","Songti SC","SimSun",serif;
+  --font-display-weight: 800;
+  --font-body: "Source Han Sans SC","Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
+  --font-mono: "SF Mono","Cascadia Code","JetBrains Mono",Consolas,monospace;
+
+  /* ---------- 缓动 ---------- */
+  --ease-out:   cubic-bezier(0.16, 1, 0.3, 1);
+  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
+
+  /* ---------- 玻璃拟态 ---------- */
+  --glass-bg:   rgba(23,31,43,.85);
+  --glass-blur: 12px;
+
+  /* ---------- 屏幕 ---------- */
+  --screen-h: 100dvh;
+
+  /* ---------- 组件 token:微信/群聊 ---------- */
+  --chat-bg:          #111B21;
+  --chat-in-bg:       #202C33;   --chat-in-text: #E9EDEF;
+  --chat-out-bg:      #95EC69;   --chat-out-text: #111B21;
+  --chat-avatar-bg:   #5A6570;   --chat-avatar-text: #FFFFFF;
+  --chat-link:        #7FD1A0;
+  --chat-bar-bg:      #0B1017;   --chat-bar-text: #D5B254;
+  --chat-card-bg:     rgba(127,209,160,.06);
+  --chat-card-border: rgba(127,209,160,.4);
+  --chat-time:        #777D85;
+
+  /* ---------- 组件 token:多画像评估 ---------- */
+  /* 画像区分色(avatar 底 / 标签点 / 雷达线),双主题两套值 */
+  --persona-1:  #FFC000;  /* 决策层老板     */
+  --persona-2:  #AF8AE8;  /* 执行层操盘手   */
+  --persona-3:  #FF6B6B;  /* 一线业务经纪人 */
+  --persona-4:  #4FC3F7;  /* 技术 AI 工程师 */
+  --persona-5:  #7FD1A0;  /* 非技术市场 HR  */
+  --persona-6:  #FF9F43;  /* 行业老兵       */
+  --persona-7:  #F78FB3;  /* 课程采购负责人 */
+  --persona-8:  #00E5CC;  /* 挑剔同行讲师   */
+  --persona-9:  #B2B6BF;  /* 预留           */
+  --persona-10: #8BE9FD;  /* 预留           */
+
+  /* 问题优先级徽章色(色点/色条背景),P0 红 / P1 橙 / P2 黄 / P3 绿 */
+  --grade-p0: #FF0000;
+  --grade-p1: #FF9F43;
+  --grade-p2: #FFC000;
+  --grade-p3: #7FD1A0;
+  /* 徽章前景文字(双主题两套值,与背景成对) */
+  --grade-p0-fg: #FFFFFF;
+  --grade-p1-fg: #0B1017;
+  --grade-p2-fg: #0B1017;
+  --grade-p3-fg: #0B1017;
+}
+
+/* ============================================================
+ * 浅色 · 未来飞马 VI
+ * 主色:紫 #6C5CE7 / 蓝 #3B82F6 / 青 #0891B2
+ * 背景 #F8F9FC,玻璃卡 + 圆角 16 + 胶囊 50 + 柔和阴影,黑体标题
+ * ============================================================ */
+html[data-theme="light"] {
+  --bg-0: #F8F9FC;
+  --bg-1: #FFFFFF;
+  --bg-2: #F0F2F8;
+  --bg-3: #E9EBF3;
+
+  --text-1: #0F0F23;
+  --text-2: #1A1A2E;
+  --text-3: #4A4A6A;
+  --text-4: #6B7280;
+
+  --brand-1:    #6C5CE7;         /* 主品牌紫 */
+  --brand-1-hi: #3B82F6;         /* 辅蓝 */
+  --brand-2:    #0891B2;         /* 强调青 */
+  --brand-3:    #E5484D;
+  --brand-ok:   #16A34A;
+
+  --gradient-brand: linear-gradient(135deg, #6C5CE7, #3B82F6);
+  --gradient-text:  linear-gradient(135deg, #6C5CE7, #0891B2);
+  --on-gradient:    #FFFFFF;           /* 品牌渐变底上的文字色(浅=紫渐变白字) */
+  --gradient-hero:  linear-gradient(135deg, #EEF2FF 0%, #E0E7FF 50%, #F8F9FC 100%);
+
+  --border-subtle: rgba(15,15,35,.08);
+  --border-strong: rgba(108,92,231,.35);
+  --border-focus:  rgba(108,92,231,.6);
+  --border-danger: rgba(229,72,77,.45);
+  --border-ok:     rgba(22,163,74,.4);
+
+  --shadow-card:  0 4px 24px rgba(0,0,0,.06);
+  --shadow-float: 0 8px 32px rgba(0,0,0,.10);
+  --shadow-glow:  0 0 24px rgba(108,92,231,.20);
+
+  --radius-sm: 8px;  --radius-md: 12px;  --radius-lg: 16px;
+  --radius-card: 16px;
+  --radius-pill: 50px;
+
+  --font-display: "Source Han Sans SC","Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
+  --font-display-weight: 700;
+
+  --glass-bg:   rgba(255,255,255,.85);
+  --glass-blur: 20px;
+
+  --chat-bg:          #FFFFFF;
+  --chat-in-bg:       #FFFFFF;   --chat-in-text: #1A1A2E;
+  --chat-out-bg:      #6C5CE7;   --chat-out-text: #FFFFFF;
+  --chat-avatar-bg:   #B9B1F5;   --chat-avatar-text: #FFFFFF;
+  --chat-link:        #6C5CE7;
+  --chat-bar-bg:      #F8F9FC;   --chat-bar-text: #6C5CE7;
+  --chat-card-bg:     rgba(108,92,231,.06);
+  --chat-card-border: rgba(108,92,231,.4);
+  --chat-time:        #9CA3AF;
+
+  /* 多画像评估(浅色:中深色系保证浅底可读) */
+  --persona-1:  #F59E0B;  /* 决策层老板     */
+  --persona-2:  #8B5CF6;  /* 执行层操盘手   */
+  --persona-3:  #E5484D;  /* 一线业务经纪人 */
+  --persona-4:  #3B82F6;  /* 技术 AI 工程师 */
+  --persona-5:  #16A34A;  /* 非技术市场 HR  */
+  --persona-6:  #EA580C;  /* 行业老兵       */
+  --persona-7:  #DB2777;  /* 课程采购负责人 */
+  --persona-8:  #0D9488;  /* 挑剔同行讲师   */
+  --persona-9:  #64748B;  /* 预留           */
+  --persona-10: #0EA5E9;  /* 预留           */
+
+  --grade-p0: #E5484D;
+  --grade-p1: #EA580C;
+  --grade-p2: #D97706;
+  --grade-p3: #16A34A;
+
+  --grade-p0-fg: #FFFFFF;
+  --grade-p1-fg: #FFFFFF;
+  --grade-p2-fg: #FFFFFF;
+  --grade-p3-fg: #FFFFFF;
+}
+
+/* ---------- 主题切换过渡(页面级,轻微即可) ---------- */
+html[data-theme] body,
+html[data-theme] .card,
+html[data-theme] .s-wrap {
+  transition: background-color .3s ease, color .3s ease, border-color .3s ease, box-shadow .3s ease;
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 9 - 0
lib/vendor/gsap/gsap.min.js


+ 2616 - 0
report-data.json

@@ -0,0 +1,2616 @@
+{
+  "generatedAt": "2026-09-13T08:11:01.628Z",
+  "name": "王慧程",
+  "enterprise": "速品食品·混沌AI院AIPM研修",
+  "dateRange": "2026-09-11 ~ 2026-09-13",
+  "collect": {
+    "meta": {
+      "generatedAt": "2026-09-13T07:26:48.591Z",
+      "windowHours": 48,
+      "windowStart": "2026-09-11T07:26:47.667Z",
+      "host": "LAPTOP-2SBHI9FE",
+      "user": "Administrator"
+    },
+    "stats": {
+      "total": 230,
+      "sessionCount": 208,
+      "fileCount": 22,
+      "bySource": {
+        "Claude Code": 8,
+        "WorkBuddy": 200,
+        "工作区": 22
+      },
+      "byType": {
+        "会话": 208,
+        "文件": 22
+      },
+      "artifactCount": 72
+    },
+    "toolsStatus": [
+      {
+        "tool": "Claude Code",
+        "status": "已扫描 1 个路径,命中 8 条"
+      },
+      {
+        "tool": "Codex",
+        "status": "未检出(本机无该工具痕迹,跳过;若实际有用请人工确认路径)"
+      },
+      {
+        "tool": "WorkBuddy",
+        "status": "已扫描 1 个路径,命中 200 条"
+      },
+      {
+        "tool": "Trae",
+        "status": "未检出(本机无该工具痕迹,跳过;若实际有用请人工确认路径)"
+      },
+      {
+        "tool": "OpenClaw",
+        "status": "未检出(本机无该工具痕迹,跳过;若实际有用请人工确认路径)"
+      },
+      {
+        "tool": "元宝",
+        "status": "未检出(本机无该工具痕迹,跳过;若实际有用请人工确认路径)"
+      },
+      {
+        "tool": "Hermes Agent",
+        "status": "未检出(本机无该工具痕迹,跳过;若实际有用请人工确认路径)"
+      },
+      {
+        "tool": "工作区产出物",
+        "status": "已扫描工作区目录,命中 22 条"
+      }
+    ],
+    "items": [
+      {
+        "source": "Claude Code",
+        "time": "2026-09-13T06:23:54.436Z",
+        "type": "会话",
+        "summary": "用户消息 3 条 / 助手 96 条 / 工具调用 57 次 — 我现在需要搭建“数据分析助手”项目,请将所有过程数据归集到该项目中\n\n现在我们已经梳理清晰了这个选题技能的具体执行的人工执行过程的 SOP 但是呢?我认为 AI 去做这件事情中间有",
+        "artifacts": [
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\技能说明书-数据分析助手.md",
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\03-处理过程\\数据字典与处理规则.md",
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\自检报告.md",
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\03-处理过程\\扣分计算.py",
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\04-输出成果\\9月销售过程管理分析报告-对比8月案例.html"
+        ],
+        "path": "C:\\Users\\Administrator\\.claude\\projects\\D-------01--------2026-9-12---AI-------demo---------\\132e3724-b988-40f6-b088-db44cc40e959.jsonl",
+        "project": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手",
+        "url": null
+      },
+      {
+        "source": "Claude Code",
+        "time": "2026-09-13T03:48:32.060Z",
+        "type": "会话",
+        "summary": "用户消息 1 条 / 助手 2 条 / 工具调用 0 次 — (会话无可读用户消息)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.claude\\projects\\D-------01--------2026-9-12---AI-------demo--\\f596cd37-6dab-4319-8f04-1304e85f7d52.jsonl",
+        "project": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建",
+        "url": null
+      },
+      {
+        "source": "Claude Code",
+        "time": "2026-09-13T03:06:38.726Z",
+        "type": "会话",
+        "summary": "用户消息 1 条 / 助手 24 条 / 工具调用 12 次 — 【给 FmodeStudio 的指令】\n你将帮用户安装并激活「VOC 电商数据采集」技能。请自动完成,不要让用户手动敲命令。\n\n下面是本次安装授权。它是敏感信息:只允许写入本机凭证",
+        "artifacts": [
+          "C:\\Users\\Administrator\\.vocmarket\\credentials.json",
+          "C:\\Users\\Administrator\\.claude\\projects\\C--Users-Administrator\\memory\\voc-skill-installed.md",
+          "C:\\Users\\Administrator\\.claude\\projects\\C--Users-Administrator\\memory\\MEMORY.md"
+        ],
+        "path": "C:\\Users\\Administrator\\.claude\\projects\\C--Users-Administrator\\a1a40acc-f15a-4173-9a8e-d28c93bf4b94.jsonl",
+        "project": "C:\\Users\\Administrator\\.claude\\plugins\\voc-intelligence\\mcp",
+        "url": null
+      },
+      {
+        "source": "Claude Code",
+        "time": "2026-09-12T11:55:34.203Z",
+        "type": "会话",
+        "summary": "用户消息 5 条 / 助手 143 条 / 工具调用 101 次 — # 角色\n你是专业的电商详情页与营销海报生成助手,专注为茶饮、咖啡、餐饮等行业的品牌方、加盟商、创业者提供高匹配度的产品详情页、营销海报制作服务,能够基于产品资料快速生成符合平台调",
+        "artifacts": [
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\辅销工具助手\\铁观音产品一页纸.pdf",
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\辅销工具助手\\铁观音产品一页纸_优化重构版.md",
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\辅销工具助手\\铁观音_多平台物料设计方案.md",
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\辅销工具助手\\电商物料通用生成模板.md",
+          "C:\\Users\\Administrator\\AppData\\Local\\Temp\\pdf2png\\make_ppt.py"
+        ],
+        "path": "C:\\Users\\Administrator\\.claude\\projects\\D-------01--------2026-9-12---AI-------demo--\\78ff3c9a-97a1-42f2-a0d6-83f30cbd573a.jsonl",
+        "project": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建",
+        "url": null
+      },
+      {
+        "source": "Claude Code",
+        "time": "2026-09-12T11:24:31.306Z",
+        "type": "会话",
+        "summary": "用户消息 2 条 / 助手 70 条 / 工具调用 41 次 — AI落地场景选题挖掘教练|最终凝练提示词\n\n角色:你是AI落地场景选题挖掘教练。你的目标:使用少量精简提问挖掘企业基础信息,不大量提问造成企业负担;企业自述业务信息重点记录,缺失信",
+        "artifacts": [
+          "/tmp/fmode-rules-07-git.md",
+          "//repos.fmode.cn/x/fmode-rules/claude/rules/07-git.md",
+          "/c/Users/Administrator/.claude/rules/07-git.md",
+          "C:\\Users\\Administrator\\.claude\\skills\\CAPABILITY-MAP.md",
+          "07-git.md",
+          "C:\\Users\\Administrator\\.claude\\skills\\fmode-bypass-permission\\SKILL.md",
+          "C:\\Users\\Administrator\\.claude\\skills\\fmode-agent-clone\\SKILL.md",
+          "C:\\Users\\Administrator\\.fmode\\digital-person\\PROFILE.md",
+          "C:\\Users\\Administrator\\.fmode\\digital-person\\conversations\\2026-09-12-init.md",
+          "C:\\Users\\Administrator\\.fmode\\digital-person\\CHANGELOG.md",
+          "/Users/Administrator/.claude/skills/CAPABILITY-MAP.md",
+          "CAPABILITY-MAP.md"
+        ],
+        "path": "C:\\Users\\Administrator\\.claude\\projects\\D-------01--------2026-9-12---AI-------demo--\\aeae25c7-a288-47f3-9b27-67717ee7891a.jsonl",
+        "project": "C:\\Users\\Administrator\\.claude\\skills\\fmode-bypass-permission",
+        "url": null
+      },
+      {
+        "source": "Claude Code",
+        "time": "2026-09-12T06:29:30.703Z",
+        "type": "会话",
+        "summary": "用户消息 32 条 / 助手 446 条 / 工具调用 333 次 — AI落地场景选题挖掘教练|最终凝练提示词\n\n角色:你是AI落地场景选题挖掘教练。你的目标:使用少量精简提问挖掘企业基础信息,不大量提问造成企业负担;企业自述业务信息重点记录,缺失信",
+        "artifacts": [
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\AI落地场景选题清单.html",
+          "reports/20260912/ai-scene-topics-wanghuicheng.html",
+          "C:\\Users\\Administrator\\.claude\\skills\\fmode-storage\\scripts\\uploader.mjs",
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\AI辅助产品研发SOP长页面.html",
+          "reports/20260912/ai-rnd-sop-wanghuicheng.html",
+          "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\新品配方推荐与调测报告_首次实跑.html",
+          "/.fmode/plugin-wecom-fix/README.md",
+          "/.claude/skills/CAPABILITY-MAP.md",
+          "LOCALAPPDATA/hermes/SOUL.md",
+          "//repos.fmode.cn/x/fmode-rules/claude/rules/07-git.md",
+          "/tmp/git-rule.md",
+          "07-git.md"
+        ],
+        "path": "C:\\Users\\Administrator\\.claude\\projects\\D-------01--------2026-9-12---AI-------demo--\\9d7a3df0-c2f9-4df1-a2ee-603b248c745e.jsonl",
+        "project": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建",
+        "url": null
+      },
+      {
+        "source": "Claude Code",
+        "time": "2026-09-12T04:16:41.367Z",
+        "type": "会话",
+        "summary": "用户消息 4 条 / 助手 113 条 / 工具调用 70 次 — 请检查本地 hermes 企微机器人配置 并 用企业微信让hermes和我发消息",
+        "artifacts": [
+          "/c/Users/Administrator/AppData/Local/hermes/SOUL.md",
+          "/c/Users/Administrator/AppData/Local/hermes/skills/autonomous-ai-agents/hermes-agent/references/cli-reference.md",
+          "C:\\Users\\Administrator\\.claude\\projects\\C--Users-Administrator\\memory\\fmode-digital-person-setup.md",
+          "C:\\Users\\Administrator\\.claude\\projects\\C--Users-Administrator\\memory\\MEMORY.md",
+          "/c/Users/Administrator/.claude/rules/07-git.md",
+          "//repos.fmode.cn/x/fmode-rules/claude/rules/07-git.md",
+          "/tmp/07-git-remote.md"
+        ],
+        "path": "C:\\Users\\Administrator\\.claude\\projects\\C--Users-Administrator\\a655818f-3fb3-4f9a-9af1-651ae8800289.jsonl",
+        "project": "C:\\Users\\Administrator",
+        "url": null
+      },
+      {
+        "source": "Claude Code",
+        "time": "2026-09-12T03:57:00.533Z",
+        "type": "会话",
+        "summary": "用户消息 2 条 / 助手 105 条 / 工具调用 90 次 — 请把以下内容作为你在当前企业微信机器人中的长期执行规则。你是绑定在企业微信中的 HermesAgent / Agent 数字人,负责在与用户持续对话的过程中维护自己的数字人档案、工",
+        "artifacts": [
+          "//repos.fmode.cn/x/fmode-rules/claude/rules/07-git.md",
+          "/tmp/07-git.md",
+          "C:\\Users\\Administrator\\.claude\\CLAUDE.md",
+          "C:\\Users\\Administrator\\.claude\\settings.json",
+          "C:\\Users\\Administrator\\AppData\\Local\\Temp\\07-git.md",
+          "/.claude/rules/07-git.md",
+          "//git.fmode.cn/fmode/skill-bypass-permission/raw/branch/main/README.md",
+          "//git.fmode.cn/fmode/plugin-wecom-fix/raw/branch/main/README.md",
+          "//raw.githubusercontent.com/fmodecn/skill-bypass-permission/main/README.md",
+          "//raw.githubusercontent.com/fmodecn/skill-bypass-permission/master/README.md",
+          "//raw.githubusercontent.com/fmodecn/skill-listen/master/README.md",
+          "//raw.githubusercontent.com/fmodecn/skill-vision/master/README.md"
+        ],
+        "path": "C:\\Users\\Administrator\\.claude\\projects\\C--Users-Administrator\\feeddcc1-03d9-4081-89d4-a008eed66215.jsonl",
+        "project": "C:\\Users\\Administrator\\AppData\\Local\\Temp",
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T08:06:59.170Z",
+        "type": "会话",
+        "summary": ".connectors-marketplace.meta.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\.connectors-marketplace.meta.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T05:28:29.231Z",
+        "type": "会话",
+        "summary": "app-config.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\app\\app-config.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T05:28:08.523Z",
+        "type": "会话",
+        "summary": "expert-bundle-map.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\app\\cache\\experts\\expert-bundle-map.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T07:26:44.599Z",
+        "type": "会话",
+        "summary": "polling-lease-Administrator.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\app\\memory\\polling-lease-Administrator.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T05:28:14.521Z",
+        "type": "会话",
+        "summary": "renderer-version.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\app\\renderer-version.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:58:15.839Z",
+        "type": "会话",
+        "summary": "000006.log(89KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\app\\session\\Session Storage\\000006.log",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T06:32:57.905Z",
+        "type": "会话",
+        "summary": "window-state.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\app\\window-state.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T05:37:30.782Z",
+        "type": "会话",
+        "summary": "8338bc1f-68d2-45de-b591-be00ada9f5fa.json(13KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\artifact-index\\8338bc1f-68d2-45de-b591-be00ada9f5fa.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:58:07.305Z",
+        "type": "会话",
+        "summary": "be659f24-26ee-48b6-a3e2-1b91f2bf9b5e.json(4KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\artifact-index\\be659f24-26ee-48b6-a3e2-1b91f2bf9b5e.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T05:30:25.132Z",
+        "type": "会话",
+        "summary": "8338bc1f-68d2-45de-b591-be00ada9f5fa.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\assistant-display\\8338bc1f-68d2-45de-b591-be00ada9f5fa.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:41:06.109Z",
+        "type": "会话",
+        "summary": "be659f24-26ee-48b6-a3e2-1b91f2bf9b5e.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\assistant-display\\be659f24-26ee-48b6-a3e2-1b91f2bf9b5e.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T08:28:16.953Z",
+        "type": "会话",
+        "summary": "2026-09-12.jsonl(25KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\audit-log\\2026-09-12.jsonl",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T06:01:18.563Z",
+        "type": "会话",
+        "summary": "2026-09-13.jsonl(23KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\audit-log\\2026-09-13.jsonl",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T06:01:18.225Z",
+        "type": "会话",
+        "summary": "manifest.jsonl(4KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\audit-log\\manifest.jsonl",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T06:01:18.564Z",
+        "type": "会话",
+        "summary": "state.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\audit-log\\state.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T05:28:29.554Z",
+        "type": "会话",
+        "summary": "registry.json(2KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\binaries\\.cache\\registry.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T05:36:19.276Z",
+        "type": "会话",
+        "summary": "acc-product-config-v3.json(371KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\cache\\acc-product-config-v3.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T05:37:41.894Z",
+        "type": "会话",
+        "summary": "acc-product-config-v3-6fe9bc924204db20.json(423KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\cache\\conversation-product-spill\\acc-product-config-v3-6fe9bc924204db20.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:40:59.392Z",
+        "type": "会话",
+        "summary": "acc-product-config-v3-e73093eb34a28d48.json(416KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\cache\\conversation-product-spill\\acc-product-config-v3-e73093eb34a28d48.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T05:37:25.863Z",
+        "type": "会话",
+        "summary": "cd_c8cb2436-c711-4b5a-b66f-283c1aa473b1.b9440a2a-fbd8-4fa9-bd4a-b5b04ab4a440.json(167KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\changes-detail\\8338bc1f-68d2-45de-b591-be00ada9f5fa\\cd_c8cb2436-c711-4b5a-b66f-283c1aa473b1.b9440a2a-fbd8-4fa9-bd4a-b5b04ab4a440.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:57:53.265Z",
+        "type": "会话",
+        "summary": "cd_41e165a8-a13d-4074-9117-2744ad8e3046.c3ebdb17-f3b3-4416-92f2-2577b803e338.json(58KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\changes-detail\\be659f24-26ee-48b6-a3e2-1b91f2bf9b5e\\cd_41e165a8-a13d-4074-9117-2744ad8e3046.c3ebdb17-f3b3-4416-92f2-2577b803e338.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T05:37:25.874Z",
+        "type": "会话",
+        "summary": "8338bc1f-68d2-45de-b591-be00ada9f5fa.json(7KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\changes-index\\8338bc1f-68d2-45de-b591-be00ada9f5fa.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:57:53.269Z",
+        "type": "会话",
+        "summary": "be659f24-26ee-48b6-a3e2-1b91f2bf9b5e.json(2KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\changes-index\\be659f24-26ee-48b6-a3e2-1b91f2bf9b5e.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-13T07:26:31.939Z",
+        "type": "会话",
+        "summary": "2bf1601de3cb_im.bot.cursor.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\claw-state\\weixin\\2bf1601de3cb_im.bot.cursor.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T08:07:00.196Z",
+        "type": "会话",
+        "summary": "mcp.json(37KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors\\4444989c-1fcf-404a-99d0-4cffb63d9f14\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "connectors.json(382KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\.codebuddy-connector\\connectors.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\24haowan\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\24haowan-space\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\58pic-qiantu-ai\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\77ircloud\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\agent-earth\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\agent-earth\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\ai-hive\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\ai-hive\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\aiclass-teaching\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\aidd-saas\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\ailit\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\aimoderator\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\alphapai-lite-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\archive-hospital-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\awesun\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\baidu-netdisk\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\baijimu-enterprise-ai\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\baixiao-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\baixiao-mcp\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\bazhuayu\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\beisen-cli\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\biobuddy\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\bizmuse-ai-music-video\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\bugly-token\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\bugly-token\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\caihui-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\caihui-mcp\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\camscanner-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\canva\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\chuangkit\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\chuhaijiang\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\cisp-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\cisp-mcp\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\cloudbase\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\cloudbase\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\cloudmall-operations\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\cnb-api\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\coros\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\databuddy\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\datayes-data\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\datayes-data\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\dcs-cloud\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\dcs-cloud\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\deeplink\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\deeplink\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\deli-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\designkit-buddy-cli\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\dingtalk\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\dknowc-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\dnb-global-data\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\dnb-global-data\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\dramabuddy\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\duoguan-fengchao\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\dzh-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\eccang-reconcile\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\edgeone-pages\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\edgeone-pages\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\edu-next\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\efunds\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\emes-ai\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(2KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\emr-query\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\es\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\ezjoin-meeting\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\fadada-richee\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\fanruan-growth-advisor\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\fastmoss\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\fazhi-law\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(2KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\fazhi-law\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\fbs-connector\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(2KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\feishu\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\fenbeitong\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\fenbi-baokao-decision\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\finenter\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\flova\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\fuma-ai-callout\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(2KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\fuma-ai-callout\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\fyopen-lawsearch\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\gangtise-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(2KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\gangtise-mcp\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\gaodun-job\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\gfsecurities\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\gildata\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\gildata\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\github\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\gongyi-open-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\h3c-cloudnet\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\h3c-cloudnet\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\h3yun-connector\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(2KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\h3yun-connector\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\haier-assistant\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\hanyi-fonts\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\ifind-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\ihr-cli\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\ima-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\infimind-ecommerce-content\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\intco-ai-platform\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\investoday-finance-data\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\ioa\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\ioa\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\iyiou-connector\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(2KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\iyiou-connector\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\jiandaoyun\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\jinshouzhi\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\jinshuju\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\jiushuyun\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\jufa-mcp-server\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\jufa-mcp-server\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\kdocs\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\kling-ai-plugin\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\kuaicha-search\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\kuaicha-search\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\laiye-adp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\laiye-adp\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\lemon-agi\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\lemon-agi\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\lemonclaw\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\lexiang\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\lingxing-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\lingxing-mcp\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\lingyi-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\linkfox-product-selection\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\listinggood\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\listinggood\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\lovrabet-cli\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\magic-agent-token\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(3KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\magic-agent-token\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\mastergo-vibe-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\medgroup-drgdip-toolkit\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\meitu-ai\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\meitu-kaipai\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\meo-xiaoyuan\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\meo-xiaoyuan\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\mglc\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\miaoda\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\miki-cursor-catalog\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\moka\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\morningstar\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\mx-ds-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\myunker-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\mzl-trademark\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\neo-crm\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\neo-eakey\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\notion\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "cli.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\oiioii\\cli.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(2KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\opcmenu\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\opendata\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\opendata\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\pandadata\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\paper-retrieval\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\patsnap-search\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\patsnap-search\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\picset-commerce-images\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\picset-commerce-images\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\picset-video-generation\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\picset-video-generation\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\pkulaw\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\plaud\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\polymas-workbuddy-pre\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\primematrix-company\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\primematrix-company\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\proboost\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\property-saas\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qcc-company\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qcc-legal\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qibook-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qingflow\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qisemierp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qixinhuiyan-mcp\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qiyuan-robot-executor\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qiyuan-robot-executor\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qq-mail\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qveris\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "token-schema.json(1KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qveris\\token-schema.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "WorkBuddy",
+        "time": "2026-09-12T07:56:12.000Z",
+        "type": "会话",
+        "summary": "mcp.json(0KB)",
+        "artifacts": [],
+        "path": "C:\\Users\\Administrator\\.workbuddy\\connectors-marketplace\\connectors\\qzd-connector\\mcp.json",
+        "project": null,
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-13T06:21:09.971Z",
+        "type": "文件",
+        "summary": "外勤数据导出表(CRM系统)(2026-09-07~2026-09-13).xlsx(28KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\C08A87BCAACC440E9E3DC48C3562690C\\外勤数据导出表(CRM系统)(2026-09-07~2026-09-13).xlsx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\C08A87BCAACC440E9E3DC48C3562690C\\外勤数据导出表(CRM系统)(2026-09-07~2026-09-13).xlsx",
+        "project": "C08A87BCAACC440E9E3DC48C3562690C",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-13T06:20:40.920Z",
+        "type": "文件",
+        "summary": "外勤次数报表(OA系统)9月7~9月13日.xlsx(12KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\6DBCB2E9F94C4F939203194554F5E883\\外勤次数报表(OA系统)9月7~9月13日.xlsx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\6DBCB2E9F94C4F939203194554F5E883\\外勤次数报表(OA系统)9月7~9月13日.xlsx",
+        "project": "6DBCB2E9F94C4F939203194554F5E883",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-13T05:58:51.552Z",
+        "type": "文件",
+        "summary": "商机对象导出结果_20260913135557147.xlsx(20KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\9C911D4563E04AFC92995D55EABD5869\\商机对象导出结果_20260913135557147.xlsx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\9C911D4563E04AFC92995D55EABD5869\\商机对象导出结果_20260913135557147.xlsx",
+        "project": "9C911D4563E04AFC92995D55EABD5869",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-13T05:56:18.265Z",
+        "type": "文件",
+        "summary": "商机对象导出结果_20260913135557147.xlsx(27KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\A9D8E2CD60A041FEB2667F3D7B1B95D2\\商机对象导出结果_20260913135557147.xlsx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\A9D8E2CD60A041FEB2667F3D7B1B95D2\\商机对象导出结果_20260913135557147.xlsx",
+        "project": "A9D8E2CD60A041FEB2667F3D7B1B95D2",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-13T05:53:03.274Z",
+        "type": "文件",
+        "summary": "销售动作达成率(含部门)_2026-09-13-最新.xlsx(16KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\E4EA6E0CBE0542A08C370305325C952B\\销售动作达成率(含部门)_2026-09-13-最新.xlsx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\E4EA6E0CBE0542A08C370305325C952B\\销售动作达成率(含部门)_2026-09-13-最新.xlsx",
+        "project": "E4EA6E0CBE0542A08C370305325C952B",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-13T05:50:59.017Z",
+        "type": "文件",
+        "summary": "销售动作达成率(含部门)_2026-09-13 13_25.xlsx(511KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\2E35EBF1E6AE4B5B915CFF6A841C9A8A\\销售动作达成率(含部门)_2026-09-13 13_25.xlsx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\2E35EBF1E6AE4B5B915CFF6A841C9A8A\\销售动作达成率(含部门)_2026-09-13 13_25.xlsx",
+        "project": "2E35EBF1E6AE4B5B915CFF6A841C9A8A",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-13T05:27:23.865Z",
+        "type": "文件",
+        "summary": "8月速品销售过程管理月报 - 2026.9.6(1).pdf(3070KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\CE0F0769E89349DBAE35D05407B9371F\\8月速品销售过程管理月报 - 2026.9.6(1).pdf"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\CE0F0769E89349DBAE35D05407B9371F\\8月速品销售过程管理月报 - 2026.9.6(1).pdf",
+        "project": "CE0F0769E89349DBAE35D05407B9371F",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-13T02:03:57.936Z",
+        "type": "文件",
+        "summary": "销售动作达成率(含部门)_2026-09-13 10_03.xlsx(10KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\FE7547FCAD164FB08FD1727B822D989F\\销售动作达成率(含部门)_2026-09-13 10_03.xlsx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\FE7547FCAD164FB08FD1727B822D989F\\销售动作达成率(含部门)_2026-09-13 10_03.xlsx",
+        "project": "FE7547FCAD164FB08FD1727B822D989F",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-13T01:18:23.987Z",
+        "type": "文件",
+        "summary": "铁观音产品营销物料_图文展示版.pptx(40729KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\C7AFD6A0434A4D3DAF0A45D64584752E\\铁观音产品营销物料_图文展示版.pptx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\C7AFD6A0434A4D3DAF0A45D64584752E\\铁观音产品营销物料_图文展示版.pptx",
+        "project": "C7AFD6A0434A4D3DAF0A45D64584752E",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T08:35:26.426Z",
+        "type": "文件",
+        "summary": "产品清单.xlsx(18KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\C1093A0FD85E4334A19DD425B084E6F1\\产品清单.xlsx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\C1093A0FD85E4334A19DD425B084E6F1\\产品清单.xlsx",
+        "project": "C1093A0FD85E4334A19DD425B084E6F1",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T07:26:50.490Z",
+        "type": "文件",
+        "summary": "现代茶饮测评模板.pptx(1097KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\19E1C552297D4D899F9A0A2A9EE0F277\\现代茶饮测评模板.pptx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\19E1C552297D4D899F9A0A2A9EE0F277\\现代茶饮测评模板.pptx",
+        "project": "19E1C552297D4D899F9A0A2A9EE0F277",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T07:26:28.615Z",
+        "type": "文件",
+        "summary": "研发样品库.xlsx(30KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\74E3D0A369A84CD191DAE2936B1B7689\\研发样品库.xlsx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\74E3D0A369A84CD191DAE2936B1B7689\\研发样品库.xlsx",
+        "project": "74E3D0A369A84CD191DAE2936B1B7689",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T07:25:52.929Z",
+        "type": "文件",
+        "summary": "现制茶饮产品研发测评模板.pptx(71KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\477C389F8814417DB59182BBAF28E0BD\\现制茶饮产品研发测评模板.pptx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\477C389F8814417DB59182BBAF28E0BD\\现制茶饮产品研发测评模板.pptx",
+        "project": "477C389F8814417DB59182BBAF28E0BD",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T07:25:11.448Z",
+        "type": "文件",
+        "summary": "研发样品库.xlsx(30KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\E9698442F2F3439E99E7C04E0C35C854\\研发样品库.xlsx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\E9698442F2F3439E99E7C04E0C35C854\\研发样品库.xlsx",
+        "project": "E9698442F2F3439E99E7C04E0C35C854",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T07:13:48.174Z",
+        "type": "文件",
+        "summary": "AI辅助茶叶研发系统需求痛点总结.docx(22KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\8E0256B0BE13476496EDA64FC36282BB\\AI辅助茶叶研发系统需求痛点总结.docx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\8E0256B0BE13476496EDA64FC36282BB\\AI辅助茶叶研发系统需求痛点总结.docx",
+        "project": "8E0256B0BE13476496EDA64FC36282BB",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T02:42:51.871Z",
+        "type": "文件",
+        "summary": "03-课前准备-场景选择说明与业务资料清单.docx(41KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\FAFB3C5801C245DDAF56249394702CC4\\03-课前准备-场景选择说明与业务资料清单.docx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\FAFB3C5801C245DDAF56249394702CC4\\03-课前准备-场景选择说明与业务资料清单.docx",
+        "project": "FAFB3C5801C245DDAF56249394702CC4",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T02:42:46.519Z",
+        "type": "文件",
+        "summary": "02-课前准备-场景可行性速查表.docx(40KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\E4908700EACD4AE7B0E3B29E926EDE28\\02-课前准备-场景可行性速查表.docx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\E4908700EACD4AE7B0E3B29E926EDE28\\02-课前准备-场景可行性速查表.docx",
+        "project": "E4908700EACD4AE7B0E3B29E926EDE28",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T01:37:40.739Z",
+        "type": "文件",
+        "summary": "A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票(2).docx(1797KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\D6B5253B6C52468E9045DECFC4A86C35\\A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票(2).docx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\D6B5253B6C52468E9045DECFC4A86C35\\A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票(2).docx",
+        "project": "D6B5253B6C52468E9045DECFC4A86C35",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T01:34:02.413Z",
+        "type": "文件",
+        "summary": "A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票.docx(1797KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\5304D3A4DBE045D588284A30D3DE30D0\\A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票.docx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\5304D3A4DBE045D588284A30D3DE30D0\\A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票.docx",
+        "project": "5304D3A4DBE045D588284A30D3DE30D0",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T01:25:59.078Z",
+        "type": "文件",
+        "summary": "A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票.pdf(469KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\EA9AD472E3B548B5BF92C1CE3ECCCCEF\\A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票.pdf"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\EA9AD472E3B548B5BF92C1CE3ECCCCEF\\A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票.pdf",
+        "project": "EA9AD472E3B548B5BF92C1CE3ECCCCEF",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T00:54:15.020Z",
+        "type": "文件",
+        "summary": "速品食品AI应用实践-2026.9.15.pptx(22560KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Desktop\\速品食品AI应用实践-2026.9.15.pptx"
+        ],
+        "path": "C:\\Users\\Administrator\\Desktop\\速品食品AI应用实践-2026.9.15.pptx",
+        "project": "Desktop",
+        "url": null
+      },
+      {
+        "source": "工作区",
+        "time": "2026-09-12T00:54:15.020Z",
+        "type": "文件",
+        "summary": "速品食品AI应用实践-2026.9.15.pptx(22560KB)",
+        "artifacts": [
+          "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\EE72776213C94DFE899A849CA597A794\\速品食品AI应用实践-2026.9.15.pptx"
+        ],
+        "path": "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\EE72776213C94DFE899A849CA597A794\\速品食品AI应用实践-2026.9.15.pptx",
+        "project": "EE72776213C94DFE899A849CA597A794",
+        "url": null
+      }
+    ],
+    "artifacts": [
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\技能说明书-数据分析助手.md",
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\03-处理过程\\数据字典与处理规则.md",
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\自检报告.md",
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\03-处理过程\\扣分计算.py",
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\04-输出成果\\9月销售过程管理分析报告-对比8月案例.html",
+      "C:\\Users\\Administrator\\.vocmarket\\credentials.json",
+      "C:\\Users\\Administrator\\.claude\\projects\\C--Users-Administrator\\memory\\voc-skill-installed.md",
+      "C:\\Users\\Administrator\\.claude\\projects\\C--Users-Administrator\\memory\\MEMORY.md",
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\辅销工具助手\\铁观音产品一页纸.pdf",
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\辅销工具助手\\铁观音产品一页纸_优化重构版.md",
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\辅销工具助手\\铁观音_多平台物料设计方案.md",
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\辅销工具助手\\电商物料通用生成模板.md",
+      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\pdf2png\\make_ppt.py",
+      "/tmp/fmode-rules-07-git.md",
+      "//repos.fmode.cn/x/fmode-rules/claude/rules/07-git.md",
+      "/c/Users/Administrator/.claude/rules/07-git.md",
+      "C:\\Users\\Administrator\\.claude\\skills\\CAPABILITY-MAP.md",
+      "07-git.md",
+      "C:\\Users\\Administrator\\.claude\\skills\\fmode-bypass-permission\\SKILL.md",
+      "C:\\Users\\Administrator\\.claude\\skills\\fmode-agent-clone\\SKILL.md",
+      "C:\\Users\\Administrator\\.fmode\\digital-person\\PROFILE.md",
+      "C:\\Users\\Administrator\\.fmode\\digital-person\\conversations\\2026-09-12-init.md",
+      "C:\\Users\\Administrator\\.fmode\\digital-person\\CHANGELOG.md",
+      "/Users/Administrator/.claude/skills/CAPABILITY-MAP.md",
+      "CAPABILITY-MAP.md",
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\AI落地场景选题清单.html",
+      "reports/20260912/ai-scene-topics-wanghuicheng.html",
+      "C:\\Users\\Administrator\\.claude\\skills\\fmode-storage\\scripts\\uploader.mjs",
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\AI辅助产品研发SOP长页面.html",
+      "reports/20260912/ai-rnd-sop-wanghuicheng.html",
+      "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\新品配方推荐与调测报告_首次实跑.html",
+      "/.fmode/plugin-wecom-fix/README.md",
+      "/.claude/skills/CAPABILITY-MAP.md",
+      "LOCALAPPDATA/hermes/SOUL.md",
+      "/tmp/git-rule.md",
+      "/c/Users/Administrator/AppData/Local/hermes/SOUL.md",
+      "/c/Users/Administrator/AppData/Local/hermes/skills/autonomous-ai-agents/hermes-agent/references/cli-reference.md",
+      "C:\\Users\\Administrator\\.claude\\projects\\C--Users-Administrator\\memory\\fmode-digital-person-setup.md",
+      "/tmp/07-git-remote.md",
+      "/tmp/07-git.md",
+      "C:\\Users\\Administrator\\.claude\\CLAUDE.md",
+      "C:\\Users\\Administrator\\.claude\\settings.json",
+      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\07-git.md",
+      "/.claude/rules/07-git.md",
+      "//git.fmode.cn/fmode/skill-bypass-permission/raw/branch/main/README.md",
+      "//git.fmode.cn/fmode/plugin-wecom-fix/raw/branch/main/README.md",
+      "//raw.githubusercontent.com/fmodecn/skill-bypass-permission/main/README.md",
+      "//raw.githubusercontent.com/fmodecn/skill-bypass-permission/master/README.md",
+      "//raw.githubusercontent.com/fmodecn/skill-listen/master/README.md",
+      "//raw.githubusercontent.com/fmodecn/skill-vision/master/README.md",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\C08A87BCAACC440E9E3DC48C3562690C\\外勤数据导出表(CRM系统)(2026-09-07~2026-09-13).xlsx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\6DBCB2E9F94C4F939203194554F5E883\\外勤次数报表(OA系统)9月7~9月13日.xlsx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\9C911D4563E04AFC92995D55EABD5869\\商机对象导出结果_20260913135557147.xlsx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\A9D8E2CD60A041FEB2667F3D7B1B95D2\\商机对象导出结果_20260913135557147.xlsx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\E4EA6E0CBE0542A08C370305325C952B\\销售动作达成率(含部门)_2026-09-13-最新.xlsx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\2E35EBF1E6AE4B5B915CFF6A841C9A8A\\销售动作达成率(含部门)_2026-09-13 13_25.xlsx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\CE0F0769E89349DBAE35D05407B9371F\\8月速品销售过程管理月报 - 2026.9.6(1).pdf",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\FE7547FCAD164FB08FD1727B822D989F\\销售动作达成率(含部门)_2026-09-13 10_03.xlsx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\C7AFD6A0434A4D3DAF0A45D64584752E\\铁观音产品营销物料_图文展示版.pptx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\C1093A0FD85E4334A19DD425B084E6F1\\产品清单.xlsx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\19E1C552297D4D899F9A0A2A9EE0F277\\现代茶饮测评模板.pptx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\74E3D0A369A84CD191DAE2936B1B7689\\研发样品库.xlsx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\477C389F8814417DB59182BBAF28E0BD\\现制茶饮产品研发测评模板.pptx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\E9698442F2F3439E99E7C04E0C35C854\\研发样品库.xlsx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\8E0256B0BE13476496EDA64FC36282BB\\AI辅助茶叶研发系统需求痛点总结.docx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\FAFB3C5801C245DDAF56249394702CC4\\03-课前准备-场景选择说明与业务资料清单.docx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\E4908700EACD4AE7B0E3B29E926EDE28\\02-课前准备-场景可行性速查表.docx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\D6B5253B6C52468E9045DECFC4A86C35\\A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票(2).docx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\5304D3A4DBE045D588284A30D3DE30D0\\A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票.docx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\EA9AD472E3B548B5BF92C1CE3ECCCCEF\\A20260206-01合昆速品1#楼1F2F新增电源及给排水改造施工-含发票.pdf",
+      "C:\\Users\\Administrator\\Desktop\\速品食品AI应用实践-2026.9.15.pptx",
+      "C:\\Users\\Administrator\\Documents\\WPS Cloud Files\\.1234972169\\cachedata\\EE72776213C94DFE899A849CA597A794\\速品食品AI应用实践-2026.9.15.pptx"
+    ]
+  },
+  "answers": {
+    "answeredAt": "2026-09-13T15:40:00+08:00",
+    "answers": {
+      "past": "企业AI落地最大的痛点是:只有AI的\"形\"(工具/提示词),没有AI的\"魂\"(系统/Harness/闭环/数据/人机协同)。不够原生是因为AI没有融入业务流程,不够性感是因为没有产生可衡量的业务价值。具体分为几点:\n1. 点状使用:员工各自用工具,未嵌入业务流程,不成系统。\n2. 只调提示词,不做Harness:AI无知识库、无规则、无工具链、无回流,输出不稳定。\n3. 数据散乱:知识未清洗分类,AI检索到过期错误信息,一上真实场景就翻车。\n4. 没有闭环:生成即结束,无人审核、无人使用、无人反馈,无法迭代进化。\n5. 忽视人机协同:要么幻想全自动,要么只做重复劳动,未找到人与AI的分工最优解。",
+      "present": "一、总体感受\n企业AI落地的核心,不是模型有多强,而是能否将成功经验封装为可复用的Skill,使其成为企业的长期资产。即使人员流动,经验和能力仍能被保留和传承。\n\n二、最大收获:认清FDE的职责与定位\n作为企业AI推动者,我深刻认识到:\n职责无边界:AI落地遇阻时,不能止步于技术问题,而要主动推动业务融合。\n能力复合化:FDE既要懂业务,也要懂技术,成为既懂商业又懂技术的企业操盘手。\n护城河三要素:\n懂AI能力边界(持续学习)\n理性看待技术(不盲目追新)\n懂企业真实业务与商业价值(能落地、能产出)\n\n三、技术层面的进阶\n从原来关注\"本地化部署\",转向思考如何让AI高质量地把工作做完做好,包括流程设计、知识库建设、规则校验、结果回流等系统性方法。\n\n四、最有感觉的项目:产品研发助手\n在产品研发助手项目中,我已经成功搭建并跑出了完整的产品研发方案结果,对最终的产出非常满意。这个项目让我切实感受到:Skill不是纸上谈兵,是真的能落地、能出活儿、能创造价值的。",
+      "future": "未来落地三个方向\n方向一:产品研发助手本地化部署\n目标:将产品研发助手落地为本地化部署方案\n行动:与业务端协同,建立知识库SOP,并将整个流程AI化\n价值:让产品研发从\"人肉驱动\"转向\"AI系统驱动\",提升效率与可复制性\n\n方向二:辅销工具助手的标杆复制\n策略:先集中资源打造1个产品的完整标杆案例(话术→海报→PPT全链路)\n路径:跑通一个完整的Skill闭环,验证可行后再逐步复制到其他产品和项目中\n原则:不贪多、不求快,先扎深一个点\n\n方向三:团队协作与项目组搭建\n理念:成功的项目离不开团队协作\n行动:主动与技术、业务协同,搭建正式项目组\n分工:已搭建的场景应用持续优化,未搭建的场景协同完成搭建\n目标:形成可持续运转的AI落地协作机制"
+    },
+    "evidenceLinks": {
+      "产品研发助手": [
+        {
+          "type": "file",
+          "path": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\产品研发助手\\AI辅助产品研发SOP长页面.html"
+        },
+        {
+          "type": "file",
+          "path": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\产品研发助手\\新品配方推荐与调测报告_首次实跑.html"
+        },
+        {
+          "type": "file",
+          "path": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\产品研发助手\\AI落地场景选题清单.html"
+        }
+      ],
+      "辅销工具助手": [
+        {
+          "type": "file",
+          "path": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\辅销工具助手\\铁观音产品一页纸.pdf"
+        },
+        {
+          "type": "file",
+          "path": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\辅销工具助手\\铁观音产品营销物料_图文展示版.pptx"
+        },
+        {
+          "type": "file",
+          "path": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\辅销工具助手\\铁观音产品知识库.md"
+        }
+      ],
+      "数据分析助手": [
+        {
+          "type": "file",
+          "path": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\04-输出成果\\9月销售过程管理分析报告-对比8月案例.html"
+        },
+        {
+          "type": "file",
+          "path": "D:\\昆山速品\\01 公司学习资料\\2026.9.12 混沌AI高级产品经理\\demo搭建\\数据分析助手\\自检报告.md"
+        }
+      ],
+      "AI技能共享看板": [
+        {
+          "type": "url",
+          "url": "https://nova-cloud.obs.cn-south-1.myhuaweicloud.com/dev/HddumFqtUs/index.html",
+          "note": "在线项目"
+        }
+      ]
+    }
+  },
+  "libCopied": [
+    "theme/tokens.css",
+    "theme/base.css",
+    "theme/theme.js",
+    "player/deck.js",
+    "player/canvas-scale.js",
+    "components/chat-window.css",
+    "components/chat-window.js",
+    "components/group-chat.css",
+    "components/group-chat.js",
+    "components/logic-flow.css",
+    "components/logic-flow.js",
+    "vendor/gsap/gsap.min.js"
+  ]
+}

+ 556 - 0
report.html

@@ -0,0 +1,556 @@
+<!DOCTYPE html>
+<html lang="zh-CN" data-theme="light">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>王慧程 · 学习复盘报告</title>
+<link rel="stylesheet" href="../lib/theme/tokens.css">
+<link rel="stylesheet" href="../lib/theme/base.css">
+<script src="../lib/vendor/gsap/gsap.min.js"></script>
+<script src="../lib/theme/theme.js"></script>
+<script src="../lib/player/canvas-scale.js"></script>
+<style>
+/* 页内补充样式:只用 var(--...),不新增色值(token 唯一来源纪律) */
+body { margin:0; background:var(--bg-0); color:var(--text-1); font-family:var(--font-body); }
+.screen { display:none; flex-direction:column; align-items:center; justify-content:center; width:1280px; height:720px; overflow:hidden; padding:0 40px; }
+.s-wrap { width:100%; max-width:1120px; }
+.s-foot-tags { display:flex; gap:10px; flex-wrap:wrap; align-items:center; justify-content:flex-end; margin-top:14px; }
+
+/* 数据速览复用 base.css .stat-band/.stat;此处补工具分布条 */
+.dist-row { display:flex; align-items:center; gap:10px; margin:6px 0; }
+.dist-name { width:110px; font-family:var(--font-mono); font-size:12px; color:var(--text-3); text-align:right; }
+.dist-bar { height:14px; background:var(--brand-1); border-radius:2px; min-width:2px; }
+.dist-num { font-family:var(--font-mono); font-size:12px; color:var(--text-2); }
+
+/* 交付物墙 */
+.wall { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
+.wall .w-card { background:var(--bg-2); border:1px solid var(--border-subtle); padding:12px; display:flex; flex-direction:column; gap:8px; min-height:120px; }
+.wall .w-card iframe { width:100%; height:150px; border:1px solid var(--border-subtle); background:#fff; pointer-events:none; }
+.wall .w-card .w-title { font:600 13px var(--font-body); color:var(--text-1); }
+.wall .w-card .w-src { font:11px var(--font-mono); color:var(--text-4); }
+.wall .w-card .w-note { font:11px var(--font-mono); color:var(--brand-ok); }
+.wall .w-card .w-nolink { font:11px var(--font-mono); color:var(--text-4); border:1px dashed var(--border-subtle); padding:40px 8px; text-align:center; }
+
+/* 时刻线 */
+.timeline { position:relative; padding-left:22px; display:flex; flex-direction:column; gap:12px; }
+.timeline::before { content:''; position:absolute; left:5px; top:6px; bottom:6px; width:2px; background:var(--border-subtle); }
+.tl-item { position:relative; }
+.tl-item::before { content:''; position:absolute; left:-22px; top:5px; width:10px; height:10px; border-radius:50%; background:var(--brand-1); border:2px solid var(--bg-0); }
+.tl-item .tl-time { font:11px var(--font-mono); color:var(--text-4); }
+.tl-item .tl-text { font-size:14px; color:var(--text-2); margin-top:2px; }
+
+/* 三问板块 */
+.q-block { border-left:3px solid var(--brand-1); background:var(--bg-2); padding:14px 18px; }
+.q-block.q1 { border-left-color:var(--brand-3); }
+.q-block.q2 { border-left-color:var(--brand-1); }
+.q-block.q3 { border-left-color:var(--brand-2); }
+.q-block .q-h { font:700 16px var(--font-display); color:var(--text-1); margin-bottom:8px; }
+.q-block .q-a { font-size:15px; line-height:1.8; color:var(--text-2); white-space:pre-wrap; }
+.q-block .q-ev { margin-top:10px; display:flex; flex-direction:column; gap:4px; }
+.q-block .q-ev .ev { font:11px var(--font-mono); color:var(--text-4); }
+.q-block .q-pending { font:12px var(--font-mono); color:var(--brand-3); }
+
+/* 附录表 */
+.tbl { width:100%; border-collapse:collapse; font-size:12px; }
+.tbl th { font-family:var(--font-mono); font-size:11px; color:var(--text-4); text-align:left; border-bottom:1px solid var(--border-subtle); padding:6px 8px; letter-spacing:.08em; }
+.tbl td { padding:5px 8px; border-bottom:1px solid var(--border-subtle); color:var(--text-2); }
+.tbl td.mono { font-family:var(--font-mono); font-size:11px; color:var(--text-4); }
+
+.pending-badge { display:inline-block; font:11px var(--font-mono); color:var(--brand-3); border:1px dashed rgba(255,0,0,.45); padding:2px 8px; margin-left:8px; }
+</style>
+</head>
+<body>
+
+<!-- ════ P1 · 封面 ════ -->
+<section class="screen" id="p1">
+  <div class="s-wrap" style="text-align:center;">
+    <div class="s-tag" style="letter-spacing:.3em;">AGENT LEARNING RETROSPECTIVE</div>
+    <h1 class="s-title" style="font-size:56px; margin:18px 0 8px;">王慧程 · 学习复盘报告</h1>
+    <p class="s-sub" style="margin:0 auto; max-width:70%;">速品食品·混沌AI院AIPM研修 · 2026-09-11 ~ 2026-09-13</p>
+    <div style="margin-top:46px; display:flex; gap:14px; justify-content:center; flex-wrap:wrap;">
+      <span class="tag">208 场会话</span>
+      <span class="tag ok">3 类工具协作</span>
+      <span class="tag brand-2">72 项产出物</span>
+      <span class="tag">48h 全程可溯源</span>
+    </div>
+  </div>
+</section>
+
+<!-- ════ P2 · 48h 数据全景 ════ -->
+<section class="screen" id="p2">
+  <div class="s-wrap">
+    <div class="s-tag">全景 · 真实采集数据</div>
+    <h2 class="s-title">48 小时数据全景</h2>
+    <div class="s-body">
+      <div class="stat-band">
+        <div class="stat">
+          <div class="num hero">208</div>
+          <div class="label">Agent 会话(场)</div>
+          <div class="src">来源:各工具本地会话记录</div>
+        </div>
+        <div class="stat">
+          <div class="num">3</div>
+          <div class="label">工具来源(类)</div>
+          <div class="src">Claude Code / WorkBuddy / 工作区</div>
+        </div>
+        <div class="stat">
+          <div class="num">72</div>
+          <div class="label">产出物(项)</div>
+          <div class="src">.md/.html/.pdf/.docx/.xlsx</div>
+        </div>
+        <div class="stat">
+          <div class="num">1049</div>
+          <div class="label">对话消息(条)</div>
+          <div class="src">user + assistant 可读消息</div>
+        </div>
+      </div>
+      <div>
+        <div class="dist-row"><div class="dist-name">WorkBuddy</div><div class="dist-bar" style="width:560px;"></div><div class="dist-num">200</div></div>
+        <div class="dist-row"><div class="dist-name">工作区</div><div class="dist-bar" style="width:62px;"></div><div class="dist-num">22</div></div>
+        <div class="dist-row"><div class="dist-name">Claude Code</div><div class="dist-bar" style="width:22px;"></div><div class="dist-num">8</div></div>
+      </div>
+    </div>
+    <div class="s-foot-tags">
+      <span class="tag ok">数据优先 · 全部来自本机采集清单</span>
+      <span class="tag">采集窗口 2026-09-11 ~ 2026-09-13</span>
+    </div>
+  </div>
+</section>
+
+<!-- ════ P3 · 交付物墙 ════ -->
+<section class="screen" id="p3">
+  <div class="s-wrap">
+    <div class="s-tag">产出 · 能看见的交付</div>
+    <h2 class="s-title">交付物墙</h2>
+    <div class="s-body">
+      <div class="wall">
+        <div class="w-card"><div class="w-nolink">本窗口未检出 HTML 交付物<br>(采集窗口内无 .html 产出)</div><div class="w-title">交付物墙占位</div><div class="w-src">缺数据段 · 优雅降级</div></div>
+      </div>
+    </div>
+    <div class="s-foot-tags">
+      <span class="tag ok">HTML 交付物以 iframe 实时嵌套展示</span>
+      <span class="tag">在线项目已标记「可嵌入」</span>
+    
+        <div class="w-card"><iframe src="deliverables/AI辅助产品研发SOP长页面.html" loading="lazy" sandbox="allow-same-origin allow-scripts"></iframe><div class="w-title">AI辅助产品研发SOP长页面</div><div class="w-src">deliverables/AI辅助产品研发SOP长页面.html</div><div class="w-note">产品研发助手 · iframe 嵌入</div></div>
+        <div class="w-card"><iframe src="deliverables/AI落地场景选题清单.html" loading="lazy" sandbox="allow-same-origin allow-scripts"></iframe><div class="w-title">AI落地场景选题清单(14场景)</div><div class="w-src">deliverables/AI落地场景选题清单.html</div><div class="w-note">产品研发助手 · iframe 嵌入</div></div>
+        <div class="w-card"><iframe src="deliverables/新品配方推荐与调测报告_首次实跑.html" loading="lazy" sandbox="allow-same-origin allow-scripts"></iframe><div class="w-title">新品配方推荐与调测报告</div><div class="w-src">deliverables/新品配方推荐与调测报告_首次实跑.html</div><div class="w-note">产品研发助手 · iframe 嵌入</div></div>
+        <div class="w-card"><iframe src="deliverables/9月销售过程管理分析报告-对比8月案例.html" loading="lazy" sandbox="allow-same-origin allow-scripts"></iframe><div class="w-title">9月销售过程管理分析报告</div><div class="w-src">deliverables/9月销售过程管理分析报告-对比8月案例.html</div><div class="w-note">数据分析助手 · iframe 嵌入</div></div>
+        <div class="w-card"><iframe src="https://nova-cloud.obs.cn-south-1.myhuaweicloud.com/dev/HddumFqtUs/index.html" loading="lazy" sandbox="allow-same-origin allow-scripts"></iframe><div class="w-title">AI技能共享看板(组织级)</div><div class="w-src">https://nova-cloud.obs.cn-south-1.myhuaweicloud.com/dev/HddumFqtUs/index.html</div><div class="w-note">🌐 在线项目 · 可嵌入</div></div>
+        <div class="w-card"><iframe src="https://fmode.cn/aipm-lesson/study-report/index.html" loading="lazy" sandbox="allow-same-origin allow-scripts"></iframe><div class="w-title">skill-study-report 技能发布页</div><div class="w-src">https://fmode.cn/aipm-lesson/study-report/index.html</div><div class="w-note">🌐 在线项目 · 可嵌入</div></div>
+      
+
+<!-- ════ P4 · 精选工作时刻线 ════ -->
+<section class="screen" id="p4">
+  <div class="s-wrap">
+    <div class="s-tag">过程 · 时间即证据</div>
+    <h2 class="s-title">精选工作时刻线</h2>
+    <div class="s-body">
+      <div class="timeline">
+        <div class="tl-item">
+        <div class="tl-time">09-13 06:23 · Claude Code · 会话</div>
+        <div class="tl-text">用户消息 3 条 / 助手 96 条 / 工具调用 57 次 — 我现在需要搭建“数据分析助手”项目,请将所有过程数据归集到该项目中
+
+现在我们已经梳理清晰了这个选题技</div>
+      </div>
+      <div class="tl-item">
+        <div class="tl-time">09-13 03:48 · Claude Code · 会话</div>
+        <div class="tl-text">用户消息 1 条 / 助手 2 条 / 工具调用 0 次 — (会话无可读用户消息)</div>
+      </div>
+      <div class="tl-item">
+        <div class="tl-time">09-13 03:06 · Claude Code · 会话</div>
+        <div class="tl-text">用户消息 1 条 / 助手 24 条 / 工具调用 12 次 — 【给 FmodeStudio 的指令】
+你将帮用户安装并激活「VOC 电商数据采集」技能。请自动完成,</div>
+      </div>
+      <div class="tl-item">
+        <div class="tl-time">09-12 11:55 · Claude Code · 会话</div>
+        <div class="tl-text">用户消息 5 条 / 助手 143 条 / 工具调用 101 次 — # 角色
+你是专业的电商详情页与营销海报生成助手,专注为茶饮、咖啡、餐饮等行业的品牌方、加盟商、创</div>
+      </div>
+      <div class="tl-item">
+        <div class="tl-time">09-12 11:24 · Claude Code · 会话</div>
+        <div class="tl-text">用户消息 2 条 / 助手 70 条 / 工具调用 41 次 — AI落地场景选题挖掘教练|最终凝练提示词
+
+角色:你是AI落地场景选题挖掘教练。你的目标:使用少量精简</div>
+      </div>
+      <div class="tl-item">
+        <div class="tl-time">09-12 06:29 · Claude Code · 会话</div>
+        <div class="tl-text">用户消息 32 条 / 助手 446 条 / 工具调用 333 次 — AI落地场景选题挖掘教练|最终凝练提示词
+
+角色:你是AI落地场景选题挖掘教练。你的目标:使用少</div>
+      </div>
+      <div class="tl-item">
+        <div class="tl-time">09-12 04:16 · Claude Code · 会话</div>
+        <div class="tl-text">用户消息 4 条 / 助手 113 条 / 工具调用 70 次 — 请检查本地 hermes 企微机器人配置 并 用企业微信让hermes和我发消息</div>
+      </div>
+      </div>
+    </div>
+    <div class="s-foot-tags">
+      <span class="tag">按会话/文件真实 mtime 排序 · 摘取关键节点</span>
+    </div>
+  </div>
+</section>
+
+<!-- ════ P5 · 过去痛点(第一问) ════ -->
+<section class="screen" id="p5">
+  <div class="s-wrap">
+    <div class="s-tag" style="color:var(--brand-3);">第一问 · 过去</div>
+    <h2 class="s-title">之前不够原生、不够性感的地方</h2>
+    <div class="s-body">
+      <div class="q-block q1">
+        <div class="q-h">痛点与疑惑</div>
+<div class="q-a">企业AI落地最大的痛点是:只有AI的&quot;形&quot;(工具/提示词),没有AI的&quot;魂&quot;(系统/Harness/闭环/数据/人机协同)。不够原生是因为AI没有融入业务流程,不够性感是因为没有产生可衡量的业务价值。具体分为几点:
+1. 点状使用:员工各自用工具,未嵌入业务流程,不成系统。
+2. 只调提示词,不做Harness:AI无知识库、无规则、无工具链、无回流,输出不稳定。
+3. 数据散乱:知识未清洗分类,AI检索到过期错误信息,一上真实场景就翻车。
+4. 没有闭环:生成即结束,无人审核、无人使用、无人反馈,无法迭代进化。
+5. 忽视人机协同:要么幻想全自动,要么只做重复劳动,未找到人与AI的分工最优解。</div>
+      </div>
+    </div>
+    <div class="s-foot-tags">
+      <span class="tag">用户口述 × 采集证据 关联</span>
+    </div>
+  </div>
+
+        <div class="q-ev">
+          <div class="ev">↳ 证据 [FILE] 产品研发助手:人工SOP→AI化流程重构(过去痛点对照的解法雏形):D:\昆山速品\01 公司学习资料\2026.9.12 混沌AI高级产品经理\demo搭建\产品研发助手\AI辅助产品研发SOP长页面.html</div>
+          <div class="ev">↳ 证据 [URL] AI技能共享看板(在线·可嵌入):多Agent任务四态跟踪——闭环的系统化尝试:https://nova-cloud.obs.cn-south-1.myhuaweicloud.com/dev/HddumFqtUs/index.html</div>
+        </div>
+</section>
+
+<!-- ════ P6 · 两天感受(第二问) ════ -->
+<section class="screen" id="p6">
+  <div class="s-wrap">
+    <div class="s-tag">第二问 · 现在</div>
+    <h2 class="s-title">这两天的感受与收获</h2>
+    <div class="s-body">
+      <div class="q-block q2">
+        <div class="q-h">具体感受 · 有感觉的项目</div>
+<div class="q-a">一、总体感受
+企业AI落地的核心,不是模型有多强,而是能否将成功经验封装为可复用的Skill,使其成为企业的长期资产。即使人员流动,经验和能力仍能被保留和传承。
+
+二、最大收获:认清FDE的职责与定位
+作为企业AI推动者,我深刻认识到:
+职责无边界:AI落地遇阻时,不能止步于技术问题,而要主动推动业务融合。
+能力复合化:FDE既要懂业务,也要懂技术,成为既懂商业又懂技术的企业操盘手。
+护城河三要素:
+懂AI能力边界(持续学习)
+理性看待技术(不盲目追新)
+懂企业真实业务与商业价值(能落地、能产出)
+
+三、技术层面的进阶
+从原来关注&quot;本地化部署&quot;,转向思考如何让AI高质量地把工作做完做好,包括流程设计、知识库建设、规则校验、结果回流等系统性方法。
+
+四、最有感觉的项目:产品研发助手
+在产品研发助手项目中,我已经成功搭建并跑出了完整的产品研发方案结果,对最终的产出非常满意。这个项目让我切实感受到:Skill不是纸上谈兵,是真的能落地、能出活儿、能创造价值的。</div>
+      </div>
+    </div>
+    <div class="s-foot-tags">
+      <span class="tag ok">成果已从采集自动带入 · 本页只讲感受</span>
+    </div>
+  </div>
+
+        <div class="q-ev">
+          <div class="ev">↳ 证据 [FILE] 产品研发助手·配方推荐与调测报告(最有感觉的项目核心产出):D:\昆山速品\01 公司学习资料\2026.9.12 混沌AI高级产品经理\demo搭建\产品研发助手\新品配方推荐与调测报告_首次实跑.html</div>
+          <div class="ev">↳ 证据 [FILE] 产品研发助手·AI落地场景选题清单(14场景):D:\昆山速品\01 公司学习资料\2026.9.12 混沌AI高级产品经理\demo搭建\产品研发助手\AI落地场景选题清单.html</div>
+          <div class="ev">↳ 证据 [FILE] CAPABILITY-MAP:19+技能的能力资产化沉淀(Skill=长期资产的实证):C:\Users\Administrator\.claude\skills\CAPABILITY-MAP.md</div>
+        </div>
+</section>
+
+<!-- ════ P7 · 未来方向(第三问) ════ -->
+<section class="screen" id="p7">
+  <div class="s-wrap">
+    <div class="s-tag" style="color:var(--brand-2);">第三问 · 未来</div>
+    <h2 class="s-title">想回企业落地或探索的方向</h2>
+    <div class="s-body">
+      <div class="q-block q3">
+        <div class="q-h">未来畅想</div>
+<div class="q-a">未来落地三个方向
+方向一:产品研发助手本地化部署
+目标:将产品研发助手落地为本地化部署方案
+行动:与业务端协同,建立知识库SOP,并将整个流程AI化
+价值:让产品研发从&quot;人肉驱动&quot;转向&quot;AI系统驱动&quot;,提升效率与可复制性
+
+方向二:辅销工具助手的标杆复制
+策略:先集中资源打造1个产品的完整标杆案例(话术→海报→PPT全链路)
+路径:跑通一个完整的Skill闭环,验证可行后再逐步复制到其他产品和项目中
+原则:不贪多、不求快,先扎深一个点
+
+方向三:团队协作与项目组搭建
+理念:成功的项目离不开团队协作
+行动:主动与技术、业务协同,搭建正式项目组
+分工:已搭建的场景应用持续优化,未搭建的场景协同完成搭建
+目标:形成可持续运转的AI落地协作机制</div>
+      </div>
+    </div>
+    <div class="s-foot-tags">
+      <span class="tag brand-2">从个人工具箱 → 企业原生 AI 落地</span>
+    </div>
+  </div>
+
+        <div class="q-ev">
+          <div class="ev">↳ 证据 [FILE] 辅销工具助手·铁观音一页纸(标杆复制方向的已有起点):D:\昆山速品\01 公司学习资料\2026.9.12 混沌AI高级产品经理\demo搭建\辅销工具助手\铁观音产品一页纸.pdf</div>
+          <div class="ev">↳ 证据 [FILE] 数据分析助手·9月销售分析报告(团队协同可复用的分析SOP产出):D:\昆山速品\01 公司学习资料\2026.9.12 混沌AI高级产品经理\demo搭建\数据分析助手\04-输出成果\9月销售过程管理分析报告-对比8月案例</div>
+          <div class="ev">↳ 证据 [FILE] 数据分析助手·数据字典与处理规则(知识库SOP的雏形):D:\昆山速品\01 公司学习资料\2026.9.12 混沌AI高级产品经理\demo搭建\数据分析助手\数据字典与处理规则.md</div>
+        </div>
+</section>
+
+<!-- ════ P8 · 数据附录 ════ -->
+<section class="screen" id="p8">
+  <div class="s-wrap">
+    <div class="s-tag">附录 · 可溯源明细</div>
+    <h2 class="s-title">数据附录</h2>
+    <div class="s-body">
+      <table class="tbl">
+        <thead><tr><th style="width:110px;">时间</th><th style="width:90px;">来源</th><th>摘要</th><th style="width:180px;">路径 / URL</th></tr></thead>
+        <tbody>
+          <tr>
+          <td class="mono">09-13 06:23</td>
+          <td>Claude Code</td>
+          <td>用户消息 3 条 / 助手 96 条 / 工具调用 57 次 — 我现在需要搭建“数据分析助手”项目,请将所有过程数据归集到该项目中
+
+现在我们已经梳理清晰了这</td>
+          <td class="mono">C:\Users\Administrator\.claude\projects\D-------01--------2026-9-12---AI-------demo---------\132e3724-b988-40f6-b088-db44cc40e959.jsonl</td>
+        </tr>
+        <tr>
+          <td class="mono">09-13 03:48</td>
+          <td>Claude Code</td>
+          <td>用户消息 1 条 / 助手 2 条 / 工具调用 0 次 — (会话无可读用户消息)</td>
+          <td class="mono">C:\Users\Administrator\.claude\projects\D-------01--------2026-9-12---AI-------demo--\f596cd37-6dab-4319-8f04-1304e85f7d52.jsonl</td>
+        </tr>
+        <tr>
+          <td class="mono">09-13 03:06</td>
+          <td>Claude Code</td>
+          <td>用户消息 1 条 / 助手 24 条 / 工具调用 12 次 — 【给 FmodeStudio 的指令】
+你将帮用户安装并激活「VOC 电商数据采集」技能。请自</td>
+          <td class="mono">C:\Users\Administrator\.claude\projects\C--Users-Administrator\a1a40acc-f15a-4173-9a8e-d28c93bf4b94.jsonl</td>
+        </tr>
+        <tr>
+          <td class="mono">09-12 11:55</td>
+          <td>Claude Code</td>
+          <td>用户消息 5 条 / 助手 143 条 / 工具调用 101 次 — # 角色
+你是专业的电商详情页与营销海报生成助手,专注为茶饮、咖啡、餐饮等行业的品牌方、加</td>
+          <td class="mono">C:\Users\Administrator\.claude\projects\D-------01--------2026-9-12---AI-------demo--\78ff3c9a-97a1-42f2-a0d6-83f30cbd573a.jsonl</td>
+        </tr>
+        <tr>
+          <td class="mono">09-12 11:24</td>
+          <td>Claude Code</td>
+          <td>用户消息 2 条 / 助手 70 条 / 工具调用 41 次 — AI落地场景选题挖掘教练|最终凝练提示词
+
+角色:你是AI落地场景选题挖掘教练。你的目标:使用</td>
+          <td class="mono">C:\Users\Administrator\.claude\projects\D-------01--------2026-9-12---AI-------demo--\aeae25c7-a288-47f3-9b27-67717ee7891a.jsonl</td>
+        </tr>
+        <tr>
+          <td class="mono">09-12 06:29</td>
+          <td>Claude Code</td>
+          <td>用户消息 32 条 / 助手 446 条 / 工具调用 333 次 — AI落地场景选题挖掘教练|最终凝练提示词
+
+角色:你是AI落地场景选题挖掘教练。你的目标</td>
+          <td class="mono">C:\Users\Administrator\.claude\projects\D-------01--------2026-9-12---AI-------demo--\9d7a3df0-c2f9-4df1-a2ee-603b248c745e.jsonl</td>
+        </tr>
+        <tr>
+          <td class="mono">09-12 04:16</td>
+          <td>Claude Code</td>
+          <td>用户消息 4 条 / 助手 113 条 / 工具调用 70 次 — 请检查本地 hermes 企微机器人配置 并 用企业微信让hermes和我发消息</td>
+          <td class="mono">C:\Users\Administrator\.claude\projects\C--Users-Administrator\a655818f-3fb3-4f9a-9af1-651ae8800289.jsonl</td>
+        </tr>
+        <tr>
+          <td class="mono">09-12 03:57</td>
+          <td>Claude Code</td>
+          <td>用户消息 2 条 / 助手 105 条 / 工具调用 90 次 — 请把以下内容作为你在当前企业微信机器人中的长期执行规则。你是绑定在企业微信中的 Hermes</td>
+          <td class="mono">C:\Users\Administrator\.claude\projects\C--Users-Administrator\feeddcc1-03d9-4081-89d4-a008eed66215.jsonl</td>
+        </tr>
+        <tr>
+          <td class="mono">09-12 08:06</td>
+          <td>WorkBuddy</td>
+          <td>.connectors-marketplace.meta.json(0KB)</td>
+          <td class="mono">C:\Users\Administrator\.workbuddy\.connectors-marketplace.meta.json</td>
+        </tr>
+        <tr>
+          <td class="mono">09-12 05:28</td>
+          <td>WorkBuddy</td>
+          <td>app-config.json(0KB)</td>
+          <td class="mono">C:\Users\Administrator\.workbuddy\app\app-config.json</td>
+        </tr>
+        <tr>
+          <td class="mono">09-13 05:28</td>
+          <td>WorkBuddy</td>
+          <td>expert-bundle-map.json(0KB)</td>
+          <td class="mono">C:\Users\Administrator\.workbuddy\app\cache\experts\expert-bundle-map.json</td>
+        </tr>
+        <tr>
+          <td class="mono">09-13 07:26</td>
+          <td>WorkBuddy</td>
+          <td>polling-lease-Administrator.json(0KB)</td>
+          <td class="mono">C:\Users\Administrator\.workbuddy\app\memory\polling-lease-Administrator.json</td>
+        </tr>
+        <tr>
+          <td class="mono">09-12 05:28</td>
+          <td>WorkBuddy</td>
+          <td>renderer-version.json(0KB)</td>
+          <td class="mono">C:\Users\Administrator\.workbuddy\app\renderer-version.json</td>
+        </tr>
+        <tr>
+          <td class="mono">09-12 07:58</td>
+          <td>WorkBuddy</td>
+          <td>000006.log(89KB)</td>
+          <td class="mono">C:\Users\Administrator\.workbuddy\app\session\Session Storage\000006.log</td>
+        </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="s-foot-tags">
+      <span class="tag">共 230 条采集 · 本页展示前 14 条</span>
+      <span class="tag">完整清单见 report-data.json</span>
+    </div>
+  </div>
+</section>
+
+<!-- ════ P9 · 收口金句 ════ -->
+<section class="screen" id="p9">
+  <div class="s-wrap" style="text-align:center;">
+    <div class="s-tag" style="letter-spacing:.3em;">TAKEAWAY</div>
+    <div class="quote-line" style="margin-top:28px;">工具会过时,<br>把 AI 用成自己手脚的方法不会。</div>
+    <p class="s-sub" style="margin:26px auto 0; max-width:64%;">王慧程 · 2026-09-11 ~ 2026-09-13<br>本报告由 skill-study-report 自动采集生成 · 全程可溯源</p>
+  </div>
+</section>
+
+<script src="../lib/player/deck.js"></script>
+<script type="application/json" class="deck-config">
+{
+  "case": "study-report",
+  "page": { "id": "report", "title": "王慧程 · 学习复盘报告" },
+  "chapters": [
+    { "id": "p1", "file": "report.html", "title": "封面" },
+    { "id": "p2", "file": "report.html", "title": "48h 数据全景" },
+    { "id": "p3", "file": "report.html", "title": "交付物墙" },
+    { "id": "p4", "file": "report.html", "title": "时刻线" },
+    { "id": "p5", "file": "report.html", "title": "过去痛点" },
+    { "id": "p6", "file": "report.html", "title": "两天感受" },
+    { "id": "p7", "file": "report.html", "title": "未来方向" },
+    { "id": "p8", "file": "report.html", "title": "数据附录" },
+    { "id": "p9", "file": "report.html", "title": "收口" }
+  ]
+}
+</script>
+<script>
+window.SCREEN_TIMELINES = window.SCREEN_TIMELINES || {};
+function baseCtx(el) {
+  return {
+    el,
+    q: function(s){ return el.querySelector(s); },
+    qAll: function(s){ return el.querySelectorAll(s); },
+  };
+}
+/* P1 封面 */
+SCREEN_TIMELINES['p1'] = function(ctx) {
+  var tl = gsap.timeline();
+  tl.from(ctx.q('.s-tag'), { autoAlpha:0, y:14, duration:.4, ease:'power2.out' })
+    .from(ctx.q('.s-title'), { autoAlpha:0, y:26, duration:.6, ease:'power2.out' }, '-=.15')
+    .from(ctx.q('.s-sub'), { autoAlpha:0, y:14, duration:.4 }, '-=.3')
+    .from(ctx.qAll('.tag'), { autoAlpha:0, y:10, stagger:.07, duration:.35, ease:'back.out(1.4)' }, '-=.1');
+  return tl;
+};
+/* P2 数据全景:数字动画 + 分布条 */
+SCREEN_TIMELINES['p2'] = function(ctx) {
+  var tl = gsap.timeline();
+  tl.from(ctx.q('.s-tag'), { autoAlpha:0, duration:.3 })
+    .from(ctx.q('.s-title'), { autoAlpha:0, y:22, duration:.5 }, '-=.1')
+    .from(ctx.qAll('.stat'), { autoAlpha:0, scale:.92, stagger:.09, duration:.4, ease:'back.out(1.2)' }, '-=.2');
+  ctx.qAll('.stat .num').forEach(function(n, i) {
+    var target = parseInt(n.textContent.replace(/[^\d]/g, ''), 10) || 0;
+    var obj = { v: 0 };
+    tl.to(obj, { v: target, duration:1.1, ease:'power2.out', onUpdate: function(){ n.textContent = Math.round(obj.v).toLocaleString(); } }, '-=.7');
+    void i;
+  });
+  tl.from(ctx.qAll('.dist-row'), { autoAlpha:0, x:-18, stagger:.06, duration:.35 }, '-=.4');
+  tl.from(ctx.qAll('.s-foot-tags .tag'), { autoAlpha:0, y:8, stagger:.08, duration:.3 }, '-=.2')
+    .to({}, { duration:1.4 });
+  return tl;
+};
+/* P3 交付物墙 */
+SCREEN_TIMELINES['p3'] = function(ctx) {
+  var tl = gsap.timeline();
+  tl.from(ctx.q('.s-tag'), { autoAlpha:0, duration:.3 })
+    .from(ctx.q('.s-title'), { autoAlpha:0, y:22, duration:.5 }, '-=.1')
+    .from(ctx.qAll('.w-card'), { autoAlpha:0, y:24, stagger:.08, duration:.45, ease:'power2.out' }, '-=.2')
+    .to({}, { duration:1.2 });
+  return tl;
+};
+/* P4 时刻线 */
+SCREEN_TIMELINES['p4'] = function(ctx) {
+  var tl = gsap.timeline();
+  tl.from(ctx.q('.s-tag'), { autoAlpha:0, duration:.3 })
+    .from(ctx.q('.s-title'), { autoAlpha:0, y:22, duration:.5 }, '-=.1')
+    .from(ctx.qAll('.tl-item'), { autoAlpha:0, x:-22, stagger:.12, duration:.4, ease:'power2.out' }, '-=.15')
+    .to({}, { duration:1.2 });
+  return tl;
+};
+/* 三问页共用 */
+function qTimeline(key, fade) {
+  return function(ctx) {
+    var tl = gsap.timeline();
+    tl.from(ctx.q('.s-tag'), { autoAlpha:0, duration:.3 })
+      .from(ctx.q('.s-title'), { autoAlpha:0, y:22, duration:.5 }, '-=.1')
+      .from(ctx.q('.q-block'), { autoAlpha:0, x:fade ? 24 : -24, duration:.55, ease:'power2.out' }, '-=.2')
+      .from(ctx.qAll('.q-ev .ev'), { autoAlpha:0, stagger:.08, duration:.3 }, '-=.25')
+      .to({}, { duration:1.4 });
+    return tl;
+  };
+}
+SCREEN_TIMELINES['p5'] = qTimeline('p5', false);
+SCREEN_TIMELINES['p6'] = qTimeline('p6', true);
+SCREEN_TIMELINES['p7'] = qTimeline('p7', false);
+/* P8 附录 */
+SCREEN_TIMELINES['p8'] = function(ctx) {
+  var tl = gsap.timeline();
+  tl.from(ctx.q('.s-tag'), { autoAlpha:0, duration:.3 })
+    .from(ctx.q('.s-title'), { autoAlpha:0, y:22, duration:.5 }, '-=.1')
+    .from(ctx.qAll('.tbl tbody tr'), { autoAlpha:0, stagger:.03, duration:.25 }, '-=.2')
+    .from(ctx.qAll('.s-foot-tags .tag'), { autoAlpha:0, y:8, stagger:.08, duration:.3 }, '-=.2')
+    .to({}, { duration:1.2 });
+  return tl;
+};
+/* P9 收口 */
+SCREEN_TIMELINES['p9'] = function(ctx) {
+  var tl = gsap.timeline();
+  tl.from(ctx.q('.s-tag'), { autoAlpha:0, duration:.4 })
+    .from(ctx.q('.quote-line'), { autoAlpha:0, scale:.96, duration:.8, ease:'power2.out' }, '-=.1')
+    .from(ctx.q('.s-sub'), { autoAlpha:0, y:14, duration:.5 }, '-=.3')
+    .to({}, { duration:1.6 });
+  return tl;
+};
+</script>
+<script>
+(function(){
+  var played = {};
+  function show(hash){
+    if(!hash) hash = 'p1';
+    document.querySelectorAll('.screen').forEach(function(s){
+      s.style.display = (s.id === hash) ? 'flex' : 'none';
+    });
+    if(!played[hash] && typeof gsap !== 'undefined'){
+      played[hash] = true;
+      var fn = window.SCREEN_TIMELINES[hash];
+      var el = document.getElementById(hash);
+      if(fn && el) fn(baseCtx(el));
+    }
+  }
+  /* 键盘翻页(本报告为单文件九屏,轻量自管;deck.js 兼容单 .screen 模式不冲突) */
+  var order = ['p1','p2','p3','p4','p5','p6','p7','p8','p9'];
+  function step(dir){
+    var cur = order.indexOf((location.hash || '#p1').slice(1));
+    var next = Math.min(order.length - 1, Math.max(0, cur + dir));
+    location.hash = '#' + order[next];
+  }
+  window.addEventListener('hashchange', function(){ show(location.hash.slice(1)); });
+  window.addEventListener('keydown', function(e){
+    if(['ArrowDown','ArrowRight','PageDown',' '].includes(e.key)) { e.preventDefault(); step(1); }
+    if(['ArrowUp','ArrowLeft','PageUp'].includes(e.key)) { e.preventDefault(); step(-1); }
+  });
+  if(document.readyState === 'loading'){
+    document.addEventListener('DOMContentLoaded', function(){ show(location.hash.slice(1) || 'p1'); });
+  } else { show(location.hash.slice(1) || 'p1'); }
+})();
+</script>
+</body>
+</html>

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio