dsh-ppt-studio 1.1.1 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +41 -18
  2. package/agent-presets/ppt/agent.cordis.yml +22 -15
  3. package/cordis.patch.yml +19 -14
  4. package/docs/01-/351/234/200/346/261/202/344/270/216/347/233/256/346/240/207.md +1 -1
  5. package/docs/02-/346/212/200/346/234/257/346/212/245/345/221/212.md +9 -5
  6. package/docs/03-/346/233/264/346/226/260/346/227/245/345/277/227.md +153 -0
  7. package/docs/05-/350/277/255/344/273/243/346/265/201/347/250/213.md +34 -3
  8. package/docs/06-/350/257/204/345/256/241/344/270/216/346/265/213/350/257/225.md +5 -3
  9. package/examples/fx/fx-pro/preview/04_pages_04_chart.html +1 -1
  10. package/examples/fx/fx-pro/preview/deck.html +1 -1
  11. package/examples/fx/fx-pro/preview/measured.json +1 -1
  12. package/examples/fx/fx-pro.pptx +0 -0
  13. package/examples/fx/seed.pptx +0 -0
  14. package/examples/fx/single.pptx +0 -0
  15. package/examples/fx/spliced.pptx +0 -0
  16. package/examples/smoke/imported/deck.yaml +6 -6
  17. package/examples/smoke/imported/import-styles.json +1 -33
  18. package/examples/smoke/imported/loss-audit.json +99 -0
  19. package/examples/smoke/imported/pages/slide_03.yaml +5 -36
  20. package/examples/smoke/imported/preview-rt/03_pages_slide_03.html +1 -1
  21. package/examples/smoke/imported/preview-rt/deck.html +1 -1
  22. package/examples/smoke/imported/preview-rt/layout.json +26 -78
  23. package/examples/smoke/imported/reference/previews/03.png +0 -0
  24. package/examples/smoke/imported/source.pptx +0 -0
  25. package/examples/smoke/out-smoke.pptx +0 -0
  26. package/examples/smoke/preview/03_pages_03_chart.html +1 -1
  27. package/examples/smoke/preview/deck.html +1 -1
  28. package/lib/capabilities.js +189 -0
  29. package/lib/commands.js +12 -11
  30. package/lib/home.js +32 -0
  31. package/lib/index.js +278 -112
  32. package/lib/office-qa.js +111 -0
  33. package/lib/pptd/export-pptx.js +203 -13
  34. package/lib/pptd/import-pptx.js +12 -0
  35. package/lib/pptd/loss-audit.js +363 -0
  36. package/lib/pptd/nativeChart.js +454 -0
  37. package/lib/pptd/schema.js +48 -1
  38. package/lib/pptd/svgCharts.js +180 -37
  39. package/lib/pptxPy.js +96 -11
  40. package/lib/preset-delivery.js +107 -9
  41. package/lib/preview-server.js +41 -16
  42. package/lib/router.js +3 -2
  43. package/lib/scaffold.js +1 -1
  44. package/lib/state.js +8 -6
  45. package/lib/templates.js +9 -6
  46. package/lib/tools.js +102 -25
  47. package/lib/verify.js +12 -1
  48. package/package.json +2 -1
  49. package/scripts/audit-manual-facts.mjs +4 -2
  50. package/scripts/e2e-1.0.mjs +2 -2
  51. package/scripts/fixtures/workflow-baseline.json +10 -10
  52. package/scripts/install.mjs +13 -11
  53. package/scripts/smoke.mjs +473 -66
  54. package/scripts/verify-loss-audit.mjs +245 -0
  55. package/scripts/verify-native-charts.mjs +529 -0
  56. package/scripts/verify-preset-scope.mjs +593 -0
  57. package/skills/ppt-studio-data/SKILL.md +5 -7
  58. package/skills/ppt-studio-manual/SKILL.md +2 -2
@@ -5,7 +5,9 @@
5
5
  > 结论一句话:**达到发布标准。** 五项原则均"良好"及以上;发现并修复 3 个严谨性问题;自包含测试体系(smoke 181 + preflight 11 + E2E 13 + real 2)可在无外部资产下复现全部验证。
6
6
 
7
7
  > **计数说明(2026-09-14 加)**:§一 是生成于 2026-09-05 的**历史快照**,其中 `smoke 181` 是当时的套件规模,**不改写**。
8
- > 套件规模会随每轮增量断言增长;**当前规模与最新结果只认 §二 2.1(持续维护)与 §六 发布标准核对**——现为 **smoke 270**。
8
+ > 套件规模会随每轮增量断言增长;**当前规模与最新结果只认 §二 2.1(持续维护)与 §六 发布标准核对**——现为 **smoke 303**。
9
+
10
+ > **隔离矩阵真机自证(2026-09-26 新增,`npm run test:scope`)**:`scripts/verify-preset-scope.mjs` 在隔离 `DSH_HOME` 起**真实 `dsh --profile web`**,用宿主自己的建会话配方(`agents.create` + `agentPresets.mount`,与 GUI 同一条路)建真 agent,逐个断言:预设健康(无 `broken`)/`agent@ppt` 工具 22 且 `agent@standard` **0**/技能 4 且 **0**/**提示段含与不含 `ppt-workflow`**/会话内切换后三项全部到位/无预设的全局视图**零残留**/负面对照(故意写错的自定位行 ⇒ `broken … never started`,且坏预设不影响好预设)。退出码:全绿 0、FAIL 1、"改动未落地"在 `--strict` 下 2。当前实测 **22 通过 / 0 失败**。三个口径各自的判据 API 都打印在报告里(工具 `tools.schemas(agent)` / 技能 `skills.list({scope:agent})` / 提示段 `systemPrompt.assemble(...).sections`),**不用推断代替证据**。
9
11
 
10
12
  ---
11
13
 
@@ -70,10 +72,10 @@
70
72
 
71
73
  | 场景 | 类型 | 结果 |
72
74
  |---|---|---|
73
- | smoke.mjs(270 断言:全链路 + 路由幂等 + autodeclare 回归 + splice/slice zip 级 + 度量/声明/防呆 + **连线方向/箭头/包围盒** + **内置技能包与"老用户不受影响"超集断言** + **手册 vs 源码事实一致性 13 条** + **讲稿备注/实体解码/图表配色** + **答疑手册触发纪律 3 条** + **lib/ 入库一致性** + **M2 真产物页号契约与注入自证 4 条** + **python-pptx 兜底生成物过真消费者 2 条** + **表格字号三层同源与 audit 下限 2 条** + **质量档降级可见 3 条** + **引擎不静默切换 3 条** + **出界分级两码可分 1 条** + **surgicalMap 消费自证 2 条** + **工具描述页数守卫 1 条** + **表格门禁 2 条** + **换行鲁棒(CRLF+BOM)3 条** + **用户模板库两层目录与入库/物化/删除 5 条** + **DSH 0.1.7:预设声明 / 门禁新参照格式 / 安装器路径** + **桌面端安装器(桩工具链 dry-run,不碰真桌面端)**) | 自动化 | 270/270 |
75
+ | smoke.mjs(303 断言:全链路 + 路由幂等 + autodeclare 回归 + splice/slice zip 级 + 度量/声明/防呆 + **连线方向/箭头/包围盒** + **内置技能包与"老用户不受影响"超集断言** + **手册 vs 源码事实一致性 13 条** + **讲稿备注/实体解码/图表配色** + **答疑手册触发纪律 3 条** + **lib/ 入库一致性** + **M2 真产物页号契约与注入自证 4 条** + **python-pptx 兜底生成物过真消费者 2 条** + **表格字号三层同源与 audit 下限 2 条** + **质量档降级可见 3 条** + **引擎不静默切换 3 条** + **出界分级两码可分 1 条** + **surgicalMap 消费自证 2 条** + **工具描述页数守卫 1 条** + **表格门禁 2 条** + **换行鲁棒(CRLF+BOM)3 条** + **用户模板库两层目录与入库/物化/删除 5 条** + **DSH 0.1.7:预设声明 / 门禁新参照格式 / 安装器路径** + **桌面端安装器(桩工具链 dry-run,不碰真桌面端)**) | 自动化 | 303/303 |
74
76
  | **讲稿(备注)真消费者验证**(2026-09-14):① **真 PowerPoint COM** 打开带备注的导出件并逐页读回讲稿文本(多行 18 字 / 无备注页 NONE / 单行含 `<特殊> &` 15 字);② **python-pptx 1.0.2** 独立读回同样三页文本 + 重新打包成功(smoke 里以可选断言固化,缺 python 时跳过) | 真机/第三方 | ✓ 两路一致 |
75
77
  | **python-pptx 兜底引擎真消费者验证**(2026-09-18 新增,smoke §43):生成一段覆盖「shape 无填充 / 对象填充 `{color,alpha}` / 带描边 + line 连接线 + table + text」的 deck → `genPythonScript` → ① `python -m py_compile` 必须过;② `runPythonExport` 必须真跑出 .pptx,且 **python-pptx 自己打开它并读回**(1 页 ≥ 6 形状)。**为什么必须补**:这条路径此前在 `scripts/` 里**零调用**,而它是"pptd 硬失败时"的最后保险;python 是可选依赖,"跳过"与"通过"印同一个颜色,于是它连编译都过不去也没人知道 | 真机/第三方 | 2 条全绿 |
76
- | 文档计数自证(smoke 内):README/docs02/docs06/手册里所有"smoke N 断言 / N/N"必须等于真实断言数 | 自动化 | 270 全中 |
78
+ | 文档计数自证(smoke 内):README/docs02/docs06/手册里所有"smoke N 断言 / N/N"必须等于真实断言数 | 自动化 | 303 全中 |
77
79
  | **M2 通道真产物自证**(2026-09-18 新增,smoke §27.4~27.7):由 `ppt_render` + `ppt_measure` 真跑产出的 `layout.json`/`measured.json` 驱动——① 两档 1 基 `pageNo` 一一对应;② 在真产物上给**真实元素**注入溢出,必被捕获且 id 正确;③ 第 1 页的注入**不得串到第 2 页**(错位一页是原 bug 最危险的形态);④ 缺 `pageNo` 的旧版产物必须报 `measured-unpaired` 而不是静默返空。**为什么必须真产物**:原 bug 的全部成因就是"夹具照着函数期望的形状写、从没调用过真生产者"(夹具两侧同写 `index: 1` 掩盖了 0 基 vs 1 基的错配)| 自动化(真产物) | 4 条全绿 |
78
80
  | **安装路径真机自证**(`npm run test:bundle`,2026-09-14):隔离 `DSH_HOME` 起临时 profile → 真 `dsh plugin --profile web add <spec>` → 断言"无 no-dsh.bundle 警告 / 已自动进 `dsh.profile.bundles` / 已物化 / `--dump-config` 出现 ppt-studio 行";**两种 spec 都验过**:本地 tgz,**GitHub 资产 URL(用户实际命令)**。**2026-09-15 补升级路径**:同版本号、内容不同的第二个 tgz 再 add → 真换成新字节(marker 在位)+ 依赖规格改指新包 + bundles 不丢 + dump-config 仍在(**不碰用户 profiles**)。**2026-09-18 补 `--local` 迭代模式**:同一个隔离 profile 里跑 `release-sync --local` → 全程无上传 + 状态文件 `mode=local`/`mount=bundle-local`/`mountMatch`/`ok` + 规格变成指向 `_artifacts/` 的 `file:`(且恰好只留当前那一个)+ **挂载副本 `lib/index.js` 与仓库刚构建的逐字节相同**。**同日再补「预设行 + junction」模式**(用户要求"只有 PPT 工作室预设才有这些工具")→ **2026-09-18 事故后作废并重写为「预设健康」判据**:那条路在本 DSH 版本上**必然产出 broken 预设**(行的裸包名从 harness 解析,不是 profile)⇒ 前端选择器只渲染健康预设 ⇒ **用户根本选不到该预设**,而 profile 里又没 bundle ⇒ 两边都没工具(现场:245 个会话里 `agentPreset=ppt` 的 **0** 个,而所有文件级检查全绿)。**2026-09-24 再为 DSH 0.1.7 重写第 7 步**(预设改为向 `agentPresets` 注册表**声明**,目录发现被上游删除;`discoverPresets` 那个包已不存在):① 安装器 bundle 模式 exit 0 且**不再产出** `.agent-presets/`、并清理 0.1.6 遗留目录;② 校验"声明预设"所需的包内资产(`agent-presets/ppt/*` + `lib/preset-delivery.js`);③ `--isolate` **明确拒绝**(exit 1 + 两处源码依据);④ 它**不**把 pnpm 物化的包目录换成 junction;⑤ **预设健康的新判据**——组合里每一行的 `name` 都能从**注册表 mount 的 baseUrl**(= `dsh-web-app` 包目录)解析(实测 29 行全解析成功);⑥ 默认不镜像技能、显式 `--mirror-skills` 才镜像 | 真机/launcher | 28/28 |
79
81
  | **质量档降级可见**(2026-09-18 新增,smoke §45):把项目 `state.json` 写成非法 JSON → ① 必须**上报**而不是静默回落 `standard`;② 诊断必须 `degraded=true` 且带原因(供工具输出提示"audit 额外门禁未生效");③ **反例**:文件不存在必须 `error=null`(防把每个新工程都判成降级) | 自动化 | 3 条全绿 |
@@ -1,3 +1,3 @@
1
- <!doctype html><html><head><meta charset="utf-8"><style>*{box-sizing:border-box;margin:0}body{background:#64748b} .slide{position:relative;width:960px;height:540px;background:#F8FAFC;box-shadow:0 2px 12px rgba(0,0,0,.3);overflow:hidden}</style></head><body><div class="slide"><div class="el" id="c_head" data-kind="text" style="position:absolute;left:60px;top:60px;width:400px;height:40px;font-size:22px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">仿真运行趋势</div><div class="el" id="chart" data-kind="chart" style="position:absolute;left:60px;top:130px;width:480px;height:300px"><svg viewBox="0 0 480 300" width="480" height="300" xmlns="http://www.w3.org/2000/svg" style="display:block"><line x1="36" y1="12" x2="468" y2="12" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="15" font-size="9" fill="#64748b" text-anchor="end">96</text><line x1="36" y1="77" x2="468" y2="77" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="80" font-size="9" fill="#64748b" text-anchor="end">72</text><line x1="36" y1="142" x2="468" y2="142" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="145" font-size="9" fill="#64748b" text-anchor="end">48</text><line x1="36" y1="207" x2="468" y2="207" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="210" font-size="9" fill="#64748b" text-anchor="end">24</text><line x1="36" y1="272" x2="468" y2="272" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="275" font-size="9" fill="#64748b" text-anchor="end">0</text><polyline points="90.0,22.8 198.0,17.4 306.0,14.7 414.0,12.0" fill="none" stroke="#2563EB" stroke-width="2"/><circle cx="90.0" cy="22.8" r="2.5" fill="#2563EB"><title>1月: 92</title></circle><circle cx="198.0" cy="17.4" r="2.5" fill="#2563EB"><title>2月: 94</title></circle><circle cx="306.0" cy="14.7" r="2.5" fill="#2563EB"><title>3月: 95</title></circle><circle cx="414.0" cy="12.0" r="2.5" fill="#2563EB"><title>4月: 96</title></circle><text x="90.0" y="292" font-size="9" fill="#475569" text-anchor="middle">1月</text><text x="198.0" y="292" font-size="9" fill="#475569" text-anchor="middle">2月</text><text x="306.0" y="292" font-size="9" fill="#475569" text-anchor="middle">3月</text><text x="414.0" y="292" font-size="9" fill="#475569" text-anchor="middle">4月</text></svg></div><div class="el" id="key" data-kind="shape" data-shape="roundRect" style="position:absolute;left:580px;top:130px;width:320px;height:300px;border-radius:8px;background:#FFFFFF;border:1px solid #CBD5E1"></div><div class="el" id="key_t" data-kind="text" style="position:absolute;left:610px;top:160px;width:260px;height:60px;font-size:16px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">关键指标</div><div class="el" id="key_body" data-kind="text" style="position:absolute;left:610px;top:240px;width:260px;height:160px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">一次合格率 96%(+8pt)
1
+ <!doctype html><html><head><meta charset="utf-8"><style>*{box-sizing:border-box;margin:0}body{background:#64748b} .slide{position:relative;width:960px;height:540px;background:#F8FAFC;box-shadow:0 2px 12px rgba(0,0,0,.3);overflow:hidden}</style></head><body><div class="slide"><div class="el" id="c_head" data-kind="text" style="position:absolute;left:60px;top:60px;width:400px;height:40px;font-size:22px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">仿真运行趋势</div><div class="el" id="chart" data-kind="chart" style="position:absolute;left:60px;top:130px;width:480px;height:300px"><svg viewBox="0 0 480 300" width="480" height="300" xmlns="http://www.w3.org/2000/svg" style="display:block"><line x1="36" y1="12.0" x2="468.0" y2="12.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="12.0" x2="36" y2="12.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="15.0" font-size="9" fill="#64748b" text-anchor="end">96</text><line x1="36" y1="77.0" x2="468.0" y2="77.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="77.0" x2="36" y2="77.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="80.0" font-size="9" fill="#64748b" text-anchor="end">72</text><line x1="36" y1="142.0" x2="468.0" y2="142.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="142.0" x2="36" y2="142.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="145.0" font-size="9" fill="#64748b" text-anchor="end">48</text><line x1="36" y1="207.0" x2="468.0" y2="207.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="207.0" x2="36" y2="207.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="210.0" font-size="9" fill="#64748b" text-anchor="end">24</text><line x1="36" y1="272.0" x2="468.0" y2="272.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="272.0" x2="36" y2="272.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="275.0" font-size="9" fill="#64748b" text-anchor="end">0</text><line x1="36" y1="12" x2="36" y2="272.0" stroke="#cbd5e1" stroke-width="1"/><line x1="36" y1="272.0" x2="468.0" y2="272.0" stroke="#cbd5e1" stroke-width="1"/><polyline points="90.0,22.8 198.0,17.4 306.0,14.7 414.0,12.0" fill="none" stroke="#2563EB" stroke-width="2"/><circle cx="90.0" cy="22.8" r="2.5" fill="#2563EB"><title>一次合格率 · 1月: 92</title></circle><circle cx="198.0" cy="17.4" r="2.5" fill="#2563EB"><title>一次合格率 · 2月: 94</title></circle><circle cx="306.0" cy="14.7" r="2.5" fill="#2563EB"><title>一次合格率 · 3月: 95</title></circle><circle cx="414.0" cy="12.0" r="2.5" fill="#2563EB"><title>一次合格率 · 4月: 96</title></circle><text x="90.0" y="284.0" font-size="9" fill="#475569" text-anchor="middle">1月</text><line x1="90.0" y1="272.0" x2="90.0" y2="275.0" stroke="#cbd5e1" stroke-width="1"/><text x="198.0" y="284.0" font-size="9" fill="#475569" text-anchor="middle">2月</text><line x1="198.0" y1="272.0" x2="198.0" y2="275.0" stroke="#cbd5e1" stroke-width="1"/><text x="306.0" y="284.0" font-size="9" fill="#475569" text-anchor="middle">3月</text><line x1="306.0" y1="272.0" x2="306.0" y2="275.0" stroke="#cbd5e1" stroke-width="1"/><text x="414.0" y="284.0" font-size="9" fill="#475569" text-anchor="middle">4月</text><line x1="414.0" y1="272.0" x2="414.0" y2="275.0" stroke="#cbd5e1" stroke-width="1"/></svg></div><div class="el" id="key" data-kind="shape" data-shape="roundRect" style="position:absolute;left:580px;top:130px;width:320px;height:300px;border-radius:8px;background:#FFFFFF;border:1px solid #CBD5E1"></div><div class="el" id="key_t" data-kind="text" style="position:absolute;left:610px;top:160px;width:260px;height:60px;font-size:16px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">关键指标</div><div class="el" id="key_body" data-kind="text" style="position:absolute;left:610px;top:240px;width:260px;height:160px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">一次合格率 96%(+8pt)
2
2
  综合评 45.6% 提升
3
3
  节拍 −15%</div></div></body></html>
@@ -1,6 +1,6 @@
1
1
  <!doctype html><html><head><meta charset="utf-8"><title>能力验证演示</title><style>*{box-sizing:border-box;margin:0}body{background:#64748b} .slide{position:relative;width:960px;height:540px;background:#F8FAFC;box-shadow:0 2px 12px rgba(0,0,0,.3);overflow:hidden}</style><style>body{background:#334155;padding:16px}</style></head><body style="background:#334155"><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">1. pages/01_cover</div><div class="slide" style='background:#F8FAFC'><div class="el" id="band" data-kind="shape" data-shape="rect" style="position:absolute;left:0px;top:0px;width:960px;height:540px;background:linear-gradient(180deg, #0F172A 0%, #2563EB 100%)"></div><div class="el" id="glow" data-kind="shape" data-shape="ellipse" style="position:absolute;left:660px;top:34px;width:260px;height:260px;border-radius:50%;background:rgba(255,255,255,0.180)"></div><div class="el" id="title" data-kind="text" style="position:absolute;left:80px;top:150px;width:700px;height:90px;font-size:32px;line-height:1.2;color:#FFFFFF;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">能力验证演示(自建夹具)</div><div class="el" id="sub" data-kind="text" style="position:absolute;left:80px;top:260px;width:600px;height:50px;font-size:22px;line-height:1.2;color:#CBD5E1;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">PPTD 中间层 · 声明制 · 双轨审阅</div><div class="el" id="badge" data-kind="shape" data-shape="chevron" style="position:absolute;left:80px;top:420px;width:200px;height:56px;clip-path:polygon(0 0,80% 0,100% 50%,80% 100%,0 100%,20% 50%);background:#F59E0B"></div><div class="el" id="badge_t" data-kind="text" style="position:absolute;left:100px;top:430px;width:160px;height:40px;font-size:16px;line-height:1.2;color:#0F172A;font-family:微软雅黑;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">v1.0.0</div></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">2. pages/02_arch</div><div class="slide" style='background:#F8FAFC'><div class="el" id="panel" data-kind="shape" data-shape="roundRect" style="position:absolute;left:60px;top:80px;width:840px;height:380px;border-radius:8px;background:#FFFFFF;border:1px solid #CBD5E1"></div><div class="el" id="box_a" data-kind="shape" data-shape="rect" style="position:absolute;left:100px;top:130px;width:350px;height:240px;background:#DBEAFE;border:1px solid #2563EB"></div><div class="el" id="box_a_t" data-kind="text" style="position:absolute;left:120px;top:150px;width:310px;height:60px;font-size:16px;line-height:1.2;color:#1E3A8A;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">领域本体(知识层)</div><div class="el" id="box_a_b" data-kind="text" style="position:absolute;left:120px;top:230px;width:310px;height:120px;font-size:14px;line-height:1.2;color:#334155;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">对象·属性·关系·约束
2
2
  换场景 = 换实例,零重构</div><div class="el" id="box_b" data-kind="shape" data-shape="rect" style="position:absolute;left:510px;top:130px;width:350px;height:240px;background:#FEF3C7;border:1px solid #F59E0B"></div><div class="el" id="box_b_t" data-kind="text" style="position:absolute;left:530px;top:150px;width:310px;height:60px;font-size:16px;line-height:1.2;color:#92400E;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">仿真内核(执行层)</div><div class="el" id="box_b_b" data-kind="text" style="position:absolute;left:530px;top:230px;width:310px;height:120px;font-size:14px;line-height:1.2;color:#78350F;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">车间生产·负载评估·计划跟踪
3
- 结论可迁移(泛化性)</div><svg style="position:absolute;left:450px;top:250px;width:58px;height:1px;pointer-events:none" viewBox="450 250 58 1" xmlns="http://www.w3.org/2000/svg"><defs><marker id="arr" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="#2563EB"/></marker></defs><line x1="450" y1="250" x2="508" y2="250" stroke="#2563EB" stroke-width="2" marker-end="url(#arr)"/></svg><div class="el" id="foot" data-kind="text" style="position:absolute;left:100px;top:470px;width:760px;height:40px;font-size:12px;line-height:1.2;color:#64748B;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">知识层 → 映射 → 执行层:本体驱动仿真的泛化范式(A8 场景也在本页)</div></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">3. pages/03_table</div><div class="slide" style='background:#F8FAFC'><div class="el" id="t_head" data-kind="text" style="position:absolute;left:60px;top:60px;width:400px;height:40px;font-size:22px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">对策-指标对照表</div><table class="el" id="tbl" data-kind="table" style="position:absolute;left:60px;top:120px;width:840px;height:300px;border-collapse:collapse"><tbody><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">对策</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">指标A</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">指标B</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">说明</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">线表决策辅助</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">决策响应-32%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">准确率+12%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">基线 45.6%</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">排程优化</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">交付周期-18%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">利用率+9%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">中型场景</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">生产流程仿真</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">节拍-15%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">一次合格率+8%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">泛化验证</td></tr></tbody></table><div class="el" id="t_note" data-kind="text" style="position:absolute;left:60px;top:450px;width:840px;height:40px;font-size:12px;line-height:1.2;color:#64748B;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">注:数据为演示样本(45.6% 为跨页对账演示数字)</div></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">4. pages/04_chart</div><div class="slide" style='background:#F8FAFC'><div class="el" id="c_head" data-kind="text" style="position:absolute;left:60px;top:60px;width:400px;height:40px;font-size:22px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">仿真运行趋势</div><div class="el" id="chart" data-kind="chart" style="position:absolute;left:60px;top:130px;width:480px;height:300px"><svg viewBox="0 0 480 300" width="480" height="300" xmlns="http://www.w3.org/2000/svg" style="display:block"><line x1="36" y1="12" x2="468" y2="12" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="15" font-size="9" fill="#64748b" text-anchor="end">96</text><line x1="36" y1="77" x2="468" y2="77" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="80" font-size="9" fill="#64748b" text-anchor="end">72</text><line x1="36" y1="142" x2="468" y2="142" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="145" font-size="9" fill="#64748b" text-anchor="end">48</text><line x1="36" y1="207" x2="468" y2="207" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="210" font-size="9" fill="#64748b" text-anchor="end">24</text><line x1="36" y1="272" x2="468" y2="272" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="275" font-size="9" fill="#64748b" text-anchor="end">0</text><polyline points="90.0,22.8 198.0,17.4 306.0,14.7 414.0,12.0" fill="none" stroke="#2563EB" stroke-width="2"/><circle cx="90.0" cy="22.8" r="2.5" fill="#2563EB"><title>1月: 92</title></circle><circle cx="198.0" cy="17.4" r="2.5" fill="#2563EB"><title>2月: 94</title></circle><circle cx="306.0" cy="14.7" r="2.5" fill="#2563EB"><title>3月: 95</title></circle><circle cx="414.0" cy="12.0" r="2.5" fill="#2563EB"><title>4月: 96</title></circle><text x="90.0" y="292" font-size="9" fill="#475569" text-anchor="middle">1月</text><text x="198.0" y="292" font-size="9" fill="#475569" text-anchor="middle">2月</text><text x="306.0" y="292" font-size="9" fill="#475569" text-anchor="middle">3月</text><text x="414.0" y="292" font-size="9" fill="#475569" text-anchor="middle">4月</text></svg></div><div class="el" id="key" data-kind="shape" data-shape="roundRect" style="position:absolute;left:580px;top:130px;width:320px;height:300px;border-radius:8px;background:#FFFFFF;border:1px solid #CBD5E1"></div><div class="el" id="key_t" data-kind="text" style="position:absolute;left:610px;top:160px;width:260px;height:60px;font-size:16px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">关键指标</div><div class="el" id="key_body" data-kind="text" style="position:absolute;left:610px;top:240px;width:260px;height:160px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">一次合格率 96%(+8pt)
3
+ 结论可迁移(泛化性)</div><svg style="position:absolute;left:450px;top:250px;width:58px;height:1px;pointer-events:none" viewBox="450 250 58 1" xmlns="http://www.w3.org/2000/svg"><defs><marker id="arr" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="#2563EB"/></marker></defs><line x1="450" y1="250" x2="508" y2="250" stroke="#2563EB" stroke-width="2" marker-end="url(#arr)"/></svg><div class="el" id="foot" data-kind="text" style="position:absolute;left:100px;top:470px;width:760px;height:40px;font-size:12px;line-height:1.2;color:#64748B;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">知识层 → 映射 → 执行层:本体驱动仿真的泛化范式(A8 场景也在本页)</div></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">3. pages/03_table</div><div class="slide" style='background:#F8FAFC'><div class="el" id="t_head" data-kind="text" style="position:absolute;left:60px;top:60px;width:400px;height:40px;font-size:22px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">对策-指标对照表</div><table class="el" id="tbl" data-kind="table" style="position:absolute;left:60px;top:120px;width:840px;height:300px;border-collapse:collapse"><tbody><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">对策</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">指标A</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">指标B</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">说明</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">线表决策辅助</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">决策响应-32%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">准确率+12%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">基线 45.6%</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">排程优化</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">交付周期-18%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">利用率+9%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">中型场景</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">生产流程仿真</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">节拍-15%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">一次合格率+8%</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:12px">泛化验证</td></tr></tbody></table><div class="el" id="t_note" data-kind="text" style="position:absolute;left:60px;top:450px;width:840px;height:40px;font-size:12px;line-height:1.2;color:#64748B;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">注:数据为演示样本(45.6% 为跨页对账演示数字)</div></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">4. pages/04_chart</div><div class="slide" style='background:#F8FAFC'><div class="el" id="c_head" data-kind="text" style="position:absolute;left:60px;top:60px;width:400px;height:40px;font-size:22px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">仿真运行趋势</div><div class="el" id="chart" data-kind="chart" style="position:absolute;left:60px;top:130px;width:480px;height:300px"><svg viewBox="0 0 480 300" width="480" height="300" xmlns="http://www.w3.org/2000/svg" style="display:block"><line x1="36" y1="12.0" x2="468.0" y2="12.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="12.0" x2="36" y2="12.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="15.0" font-size="9" fill="#64748b" text-anchor="end">96</text><line x1="36" y1="77.0" x2="468.0" y2="77.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="77.0" x2="36" y2="77.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="80.0" font-size="9" fill="#64748b" text-anchor="end">72</text><line x1="36" y1="142.0" x2="468.0" y2="142.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="142.0" x2="36" y2="142.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="145.0" font-size="9" fill="#64748b" text-anchor="end">48</text><line x1="36" y1="207.0" x2="468.0" y2="207.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="207.0" x2="36" y2="207.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="210.0" font-size="9" fill="#64748b" text-anchor="end">24</text><line x1="36" y1="272.0" x2="468.0" y2="272.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="272.0" x2="36" y2="272.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="275.0" font-size="9" fill="#64748b" text-anchor="end">0</text><line x1="36" y1="12" x2="36" y2="272.0" stroke="#cbd5e1" stroke-width="1"/><line x1="36" y1="272.0" x2="468.0" y2="272.0" stroke="#cbd5e1" stroke-width="1"/><polyline points="90.0,22.8 198.0,17.4 306.0,14.7 414.0,12.0" fill="none" stroke="#2563EB" stroke-width="2"/><circle cx="90.0" cy="22.8" r="2.5" fill="#2563EB"><title>一次合格率 · 1月: 92</title></circle><circle cx="198.0" cy="17.4" r="2.5" fill="#2563EB"><title>一次合格率 · 2月: 94</title></circle><circle cx="306.0" cy="14.7" r="2.5" fill="#2563EB"><title>一次合格率 · 3月: 95</title></circle><circle cx="414.0" cy="12.0" r="2.5" fill="#2563EB"><title>一次合格率 · 4月: 96</title></circle><text x="90.0" y="284.0" font-size="9" fill="#475569" text-anchor="middle">1月</text><line x1="90.0" y1="272.0" x2="90.0" y2="275.0" stroke="#cbd5e1" stroke-width="1"/><text x="198.0" y="284.0" font-size="9" fill="#475569" text-anchor="middle">2月</text><line x1="198.0" y1="272.0" x2="198.0" y2="275.0" stroke="#cbd5e1" stroke-width="1"/><text x="306.0" y="284.0" font-size="9" fill="#475569" text-anchor="middle">3月</text><line x1="306.0" y1="272.0" x2="306.0" y2="275.0" stroke="#cbd5e1" stroke-width="1"/><text x="414.0" y="284.0" font-size="9" fill="#475569" text-anchor="middle">4月</text><line x1="414.0" y1="272.0" x2="414.0" y2="275.0" stroke="#cbd5e1" stroke-width="1"/></svg></div><div class="el" id="key" data-kind="shape" data-shape="roundRect" style="position:absolute;left:580px;top:130px;width:320px;height:300px;border-radius:8px;background:#FFFFFF;border:1px solid #CBD5E1"></div><div class="el" id="key_t" data-kind="text" style="position:absolute;left:610px;top:160px;width:260px;height:60px;font-size:16px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">关键指标</div><div class="el" id="key_body" data-kind="text" style="position:absolute;left:610px;top:240px;width:260px;height:160px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">一次合格率 96%(+8pt)
4
4
  综合评 45.6% 提升
5
5
  节拍 −15%</div></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">5. pages/05_timeline</div><div class="slide" style='background:#F8FAFC'><div class="el" id="tl_head" data-kind="text" style="position:absolute;left:60px;top:60px;width:500px;height:40px;font-size:22px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">实施路线(五阶段)</div><svg style="position:absolute;left:80px;top:200px;width:780px;height:1px;pointer-events:none" viewBox="80 200 780 1" xmlns="http://www.w3.org/2000/svg"><defs><marker id="arr" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="#94A3B8"/></marker></defs><line x1="80" y1="200" x2="860" y2="200" stroke="#94A3B8" stroke-width="2"/></svg><div class="el" id="st1" data-kind="shape" data-shape="pentagon" style="position:absolute;left:60px;top:140px;width:140px;height:60px;clip-path:polygon(50% 0,100% 38%,82% 100%,18% 100%,0 38%);background:#2563EB"></div><div class="el" id="st1_t" data-kind="text" style="position:absolute;left:70px;top:148px;width:120px;height:44px;font-size:16px;line-height:1.2;color:#FFFFFF;font-family:微软雅黑;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">建模</div><div class="el" id="st2" data-kind="shape" data-shape="pentagon" style="position:absolute;left:220px;top:140px;width:140px;height:60px;clip-path:polygon(50% 0,100% 38%,82% 100%,18% 100%,0 38%);background:#3B82F6"></div><div class="el" id="st2_t" data-kind="text" style="position:absolute;left:230px;top:148px;width:120px;height:44px;font-size:16px;line-height:1.2;color:#FFFFFF;font-family:微软雅黑;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">映射</div><div class="el" id="st3" data-kind="shape" data-shape="pentagon" style="position:absolute;left:380px;top:140px;width:140px;height:60px;clip-path:polygon(50% 0,100% 38%,82% 100%,18% 100%,0 38%);background:#F59E0B"></div><div class="el" id="st3_t" data-kind="text" style="position:absolute;left:390px;top:148px;width:120px;height:44px;font-size:16px;line-height:1.2;color:#FFFFFF;font-family:微软雅黑;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">仿真</div><div class="el" id="st4" data-kind="shape" data-shape="pentagon" style="position:absolute;left:540px;top:140px;width:140px;height:60px;clip-path:polygon(50% 0,100% 38%,82% 100%,18% 100%,0 38%);background:#8B5CF6"></div><div class="el" id="st4_t" data-kind="text" style="position:absolute;left:550px;top:148px;width:120px;height:44px;font-size:16px;line-height:1.2;color:#FFFFFF;font-family:微软雅黑;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">验证</div><div class="el" id="st5" data-kind="shape" data-shape="pentagon" style="position:absolute;left:700px;top:140px;width:140px;height:60px;clip-path:polygon(50% 0,100% 38%,82% 100%,18% 100%,0 38%);background:#10B981"></div><div class="el" id="st5_t" data-kind="text" style="position:absolute;left:710px;top:148px;width:120px;height:44px;font-size:16px;line-height:1.2;color:#FFFFFF;font-family:微软雅黑;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">推广</div><div class="el" id="tl_note" data-kind="text" style="position:absolute;left:80px;top:300px;width:800px;height:100px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">单向推进 + 每阶段门禁:建模评审 → 映射校验 → 仿真对标 → 验证报告 → 批量复制
6
6
  (时间线为示意图,非真实排期)</div></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">6. pages/06_longtext</div><div class="slide" style='background:#F8FAFC'><div class="el" id="lt_head" data-kind="text" style="position:absolute;left:60px;top:60px;width:500px;height:40px;font-size:22px;line-height:1.2;color:#1F2937;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">长文本容纳(保守估算 + 显式断行)</div><div class="el" id="lt_body" data-kind="text" style="position:absolute;left:60px;top:130px;width:840px;height:340px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">这一段用于验证长文本在保守估算下的处理:中文全角加粗按 1.06 系数、行高 1.2、标点禁则——
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "browser": "Edge/Chrome headless",
3
- "ts": "2026-09-25T17:54:02.638Z",
3
+ "ts": "2026-09-26T14:56:19.133Z",
4
4
  "size": {
5
5
  "width": 960,
6
6
  "height": 540
Binary file
Binary file
Binary file
Binary file
@@ -5,15 +5,15 @@
5
5
  # 色板为原稿全量(c1-c7 高频 + c8 起扩展低频色;theme-conformance 以全集为基准,不再误报原稿色)
6
6
  theme:
7
7
  colors:
8
- c1: "#2563EB" # 最高频(建议作 ink/主色)
9
- c2: "#F59E0B"
10
- c3: "#1F2937"
8
+ c1: "#1F2937" # 最高频(建议作 ink/主色)
9
+ c2: "#2563EB"
10
+ c3: "#F59E0B"
11
11
  c4: "#FFFFFF"
12
12
  c5: "#64748B"
13
13
  textStyles:
14
- title: {fontSize: 40, color: "#2563EB", bold: true}
15
- body: {fontSize: 18, color: "#2563EB"}
16
- label: {fontSize: 12, color: "#2563EB"}
14
+ title: {fontSize: 40, color: "#1F2937", bold: true}
15
+ body: {fontSize: 18, color: "#1F2937"}
16
+ label: {fontSize: 12, color: "#1F2937"}
17
17
  version: 1
18
18
  title: "out-smoke"
19
19
  size: [960, 540]
@@ -80,39 +80,7 @@
80
80
  },
81
81
  {
82
82
  "page": 3,
83
- "id": "chart-c-b0-0",
84
- "fill": "#2563EB",
85
- "line": {}
86
- },
87
- {
88
- "page": 3,
89
- "id": "chart-c-b1-0",
90
- "fill": "#2563EB",
91
- "line": {}
92
- },
93
- {
94
- "page": 3,
95
- "id": "chart-c-b2-0",
96
- "fill": "#2563EB",
97
- "line": {}
98
- },
99
- {
100
- "page": 3,
101
- "id": "chart-c-b0-1",
102
- "fill": "#F59E0B",
103
- "line": {}
104
- },
105
- {
106
- "page": 3,
107
- "id": "chart-c-b1-1",
108
- "fill": "#F59E0B",
109
- "line": {}
110
- },
111
- {
112
- "page": 3,
113
- "id": "chart-c-b2-1",
114
- "fill": "#F59E0B",
115
- "line": {}
83
+ "id": "chart-c"
116
84
  },
117
85
  {
118
86
  "page": 3,
@@ -0,0 +1,99 @@
1
+ {
2
+ "generatedBy": "dsh-ppt-studio",
3
+ "version": 1,
4
+ "source": "out-smoke.pptx",
5
+ "kind": "pptx-rebuild-loss-audit",
6
+ "clean": false,
7
+ "total": 1,
8
+ "visibleTotal": 1,
9
+ "themeStyleOnly": false,
10
+ "counts": {
11
+ "animation": 0,
12
+ "effect": 0,
13
+ "hyperlink": 0,
14
+ "transition": 0,
15
+ "smartart": 0,
16
+ "media": 1,
17
+ "gradient": 0
18
+ },
19
+ "scannedParts": 24,
20
+ "slides": 3,
21
+ "categories": [
22
+ {
23
+ "id": "animation",
24
+ "label": "动画",
25
+ "count": 0,
26
+ "visible": 0,
27
+ "loss": "DSL 中间层没有动画通道:整册重渲后动画全丢",
28
+ "evidence": []
29
+ },
30
+ {
31
+ "id": "effect",
32
+ "label": "阴影/发光",
33
+ "count": 0,
34
+ "visible": 0,
35
+ "loss": "DSL 没有 effectLst 通道(import-styles.json 只留 rawShadow 标志):整册重渲后阴影/发光消失",
36
+ "evidence": []
37
+ },
38
+ {
39
+ "id": "hyperlink",
40
+ "label": "超链接",
41
+ "count": 0,
42
+ "visible": 0,
43
+ "loss": "DSL 没有链接通道:整册重渲后链接退化为纯文本",
44
+ "evidence": []
45
+ },
46
+ {
47
+ "id": "transition",
48
+ "label": "页切换",
49
+ "count": 0,
50
+ "visible": 0,
51
+ "loss": "DSL 没有 transition 通道:整册重渲后切换效果丢",
52
+ "evidence": []
53
+ },
54
+ {
55
+ "id": "smartart",
56
+ "label": "SmartArt",
57
+ "count": 0,
58
+ "visible": 0,
59
+ "loss": "SmartArt 图形框架被当作图表降级为文本占位",
60
+ "evidence": []
61
+ },
62
+ {
63
+ "id": "media",
64
+ "label": "不可嵌入媒体",
65
+ "count": 1,
66
+ "visible": 1,
67
+ "loss": "导出仅内嵌 png/jpeg/jpg/gif/webp:EMF/WMF 等矢量图、音视频、OLE 嵌入对象不会被带入成品",
68
+ "evidence": [
69
+ {
70
+ "page": null,
71
+ "part": "ppt/embeddings/Microsoft_Excel_Sheet1.xlsx",
72
+ "element": "Microsoft_Excel_Sheet1.xlsx",
73
+ "tag": "embedding-part",
74
+ "ext": "xlsx",
75
+ "reason": "OLE 嵌入对象(DSL 无通道)",
76
+ "detail": "嵌入对象部件(.xlsx):导出不会带入成品"
77
+ }
78
+ ]
79
+ },
80
+ {
81
+ "id": "gradient",
82
+ "label": "主题/背景渐变",
83
+ "count": 0,
84
+ "visible": 0,
85
+ "loss": "主题渐变与页面背景渐变被归一为纯色(形状渐变有直通,不计)",
86
+ "evidence": []
87
+ }
88
+ ],
89
+ "note": "判据:动画=非空 p:timing;阴影/发光=含效果子节点的 a:effectLst/a:effectDag 或裸效果节点(空 effectLst 与主题 effectStyleLst 不计);超链接=a:hlinkClick/a:hlinkHover;切换=p:transition;SmartArt=graphicData@uri 含 /diagram(无引用时包内部件合计 1 处);不可嵌入媒体=ppt/media 扩展名 ∉ {png,jpeg,jpg,gif,webp}、ppt/embeddings、幻灯片内 OLE/音视频引用;渐变=p:bg 下 a:gradFill(可见)+ 主题 a:gradFill(被 bgRef idx=1001+N / fillRef idx=N 引用者 visible:true,未被引用者 visible:false=样式表模板);形状渐变直通不计。证据字段:page(1 基,非幻灯片为 null)/part/element/tag/visible。",
90
+ "advice": "整册重渲会丢上述 1 处可见特性;若只需改某几页 / 改一处文字,优先 ppt_splice(只把工作区目标页替换进原稿,其余页逐字节不变)——动画/阴影/超链接等留在原稿里。",
91
+ "hitSummary": [
92
+ {
93
+ "id": "media",
94
+ "label": "不可嵌入媒体",
95
+ "count": 1,
96
+ "visible": 1
97
+ }
98
+ ]
99
+ }
@@ -10,42 +10,11 @@ elements:
10
10
  fontSize: 28
11
11
  color: "#1F2937"
12
12
  bold: true
13
- - elementId: "chart-c-b0-0"
14
- elementType: shape
15
- bounds: [208, 205, 71, 176]
16
- kind: rect
17
- fill: "#2563EB"
18
- line: {color: "#000000"}
19
- - elementId: "chart-c-b1-0"
20
- elementType: shape
21
- bounds: [443, 183, 71, 198]
22
- kind: rect
23
- fill: "#2563EB"
24
- line: {color: "#000000"}
25
- - elementId: "chart-c-b2-0"
26
- elementType: shape
27
- bounds: [678, 150, 71, 231]
28
- kind: rect
29
- fill: "#2563EB"
30
- line: {color: "#000000"}
31
- - elementId: "chart-c-b0-1"
32
- elementType: shape
33
- bounds: [278, 265, 71, 116]
34
- kind: rect
35
- fill: "#F59E0B"
36
- line: {color: "#000000"}
37
- - elementId: "chart-c-b1-1"
38
- elementType: shape
39
- bounds: [514, 249, 71, 132]
40
- kind: rect
41
- fill: "#F59E0B"
42
- line: {color: "#000000"}
43
- - elementId: "chart-c-b2-1"
44
- elementType: shape
45
- bounds: [749, 216, 71, 165]
46
- kind: rect
47
- fill: "#F59E0B"
48
- line: {color: "#000000"}
13
+ - elementId: "chart-c"
14
+ elementType: text
15
+ bounds: [60, 130, 840, 330]
16
+ content:
17
+ text: "[chart: chart-c] 图表已降级为文本占位,请重新生成图表样式"
49
18
  - elementId: "caption"
50
19
  elementType: text
51
20
  bounds: [60, 480, 840, 30]
@@ -1 +1 @@
1
- <!doctype html><html><head><meta charset="utf-8"><style>*{box-sizing:border-box;margin:0}body{background:#64748b} .slide{position:relative;width:960px;height:540px;background:#F8FAFC;box-shadow:0 2px 12px rgba(0,0,0,.3);overflow:hidden}</style></head><body><div class="slide"><div class="el" id="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">渠道 GMV 走势</div><div class="el" id="chart-c-b0-0" data-kind="shape" data-shape="rect" style="position:absolute;left:208px;top:205px;width:71px;height:176px;background:#2563EB;border:1px solid #000000"></div><div class="el" id="chart-c-b1-0" data-kind="shape" data-shape="rect" style="position:absolute;left:443px;top:183px;width:71px;height:198px;background:#2563EB;border:1px solid #000000"></div><div class="el" id="chart-c-b2-0" data-kind="shape" data-shape="rect" style="position:absolute;left:678px;top:150px;width:71px;height:231px;background:#2563EB;border:1px solid #000000"></div><div class="el" id="chart-c-b0-1" data-kind="shape" data-shape="rect" style="position:absolute;left:278px;top:265px;width:71px;height:116px;background:#F59E0B;border:1px solid #000000"></div><div class="el" id="chart-c-b1-1" data-kind="shape" data-shape="rect" style="position:absolute;left:514px;top:249px;width:71px;height:132px;background:#F59E0B;border:1px solid #000000"></div><div class="el" id="chart-c-b2-1" data-kind="shape" data-shape="rect" style="position:absolute;left:749px;top:216px;width:71px;height:165px;background:#F59E0B;border:1px solid #000000"></div><div class="el" id="caption" data-kind="text" style="position:absolute;left:60px;top:480px;width:840px;height:30px;font-size:12px;line-height:1.2;color:#64748B;overflow:visible;white-space:pre-wrap;word-break:break-word">数据来源:内部经营报表(2026-09 月报)</div></div></body></html>
1
+ <!doctype html><html><head><meta charset="utf-8"><style>*{box-sizing:border-box;margin:0}body{background:#64748b} .slide{position:relative;width:960px;height:540px;background:#F8FAFC;box-shadow:0 2px 12px rgba(0,0,0,.3);overflow:hidden}</style></head><body><div class="slide"><div class="el" id="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">渠道 GMV 走势</div><div class="el" id="chart-c" data-kind="text" style="position:absolute;left:60px;top:130px;width:840px;height:330px;font-size:18px;line-height:1.2;color:#111;overflow:visible;white-space:pre-wrap;word-break:break-word">[chart: chart-c] 图表已降级为文本占位,请重新生成图表样式</div><div class="el" id="caption" data-kind="text" style="position:absolute;left:60px;top:480px;width:840px;height:30px;font-size:12px;line-height:1.2;color:#64748B;overflow:visible;white-space:pre-wrap;word-break:break-word">数据来源:内部经营报表(2026-09 月报)</div></div></body></html>
@@ -1 +1 @@
1
- <!doctype html><html><head><meta charset="utf-8"><title>out-smoke</title><style>*{box-sizing:border-box;margin:0}body{background:#64748b} .slide{position:relative;width:960px;height:540px;background:#F8FAFC;box-shadow:0 2px 12px rgba(0,0,0,.3);overflow:hidden}</style><style>body{background:#334155;padding:16px}</style></head><body style="background:#334155"><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">1. pages/slide_01</div><div class="slide" style='background:#F8FAFC'><div class="el" id="hero-rect" data-kind="shape" data-shape="rect" style="position:absolute;left:0px;top:0px;width:960px;height:120px;background:#2563EB;border:1px solid #000000"></div><div class="el" id="title" data-kind="text" style="position:absolute;left:80px;top:180px;width:700px;height:90px;font-size:40px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">季度复盘:增长引擎与风险</div><div class="el" id="subtitle" data-kind="text" style="position:absolute;left:80px;top:290px;width:600px;height:60px;font-size:18px;line-height:1.2;color:#F59E0B;overflow:visible;white-space:pre-wrap;word-break:break-word">2026 Q3 · 内部汇报</div><div class="el" id="deco" data-kind="shape" data-shape="ellipse" style="position:absolute;left:780px;top:360px;width:120px;height:120px;border-radius:50%;background:#F59E0B;border:1px solid #000000"></div></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">2. pages/slide_02</div><div class="slide" style='background:#F8FAFC'><div class="el" id="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">关键进展</div><div class="el" id="body-a" data-kind="text" style="position:absolute;left:60px;top:130px;width:420px;height:200px;font-size:18px;line-height:1.2;color:#1F2937;overflow:visible;white-space:pre-wrap;word-break:break-word">线上增长 34%,主要来自新渠道投放;NPS 提升 12 分;复购率升至 41%。 供应链成本环比下降 8%。</div><div class="el" id="metric-rect" data-kind="shape" data-shape="rect" style="position:absolute;left:540px;top:130px;width:360px;height:80px;background:#2563EB;border:1px solid #000000"></div><div class="el" id="metric" data-kind="text" style="position:absolute;left:540px;top:150px;width:360px;height:40px;font-size:22px;line-height:1.2;color:#FFFFFF;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">+34% 增长</div><table class="el" id="table-b" data-kind="table" style="position:absolute;left:60px;top:380px;width:840px;height:120px;border-collapse:collapse"><tbody><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">Col1</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">Col2</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">Col3</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">Col4</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">渠道</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">投入</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">产出</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">ROI</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">搜索</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">120万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">480万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">4</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">社群</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">60万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">210万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">3.5</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">直播</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">90万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">360万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">4</td></tr></tbody></table></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">3. pages/slide_03</div><div class="slide" style='background:#F8FAFC'><div class="el" id="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">渠道 GMV 走势</div><div class="el" id="chart-c-b0-0" data-kind="shape" data-shape="rect" style="position:absolute;left:208px;top:205px;width:71px;height:176px;background:#2563EB;border:1px solid #000000"></div><div class="el" id="chart-c-b1-0" data-kind="shape" data-shape="rect" style="position:absolute;left:443px;top:183px;width:71px;height:198px;background:#2563EB;border:1px solid #000000"></div><div class="el" id="chart-c-b2-0" data-kind="shape" data-shape="rect" style="position:absolute;left:678px;top:150px;width:71px;height:231px;background:#2563EB;border:1px solid #000000"></div><div class="el" id="chart-c-b0-1" data-kind="shape" data-shape="rect" style="position:absolute;left:278px;top:265px;width:71px;height:116px;background:#F59E0B;border:1px solid #000000"></div><div class="el" id="chart-c-b1-1" data-kind="shape" data-shape="rect" style="position:absolute;left:514px;top:249px;width:71px;height:132px;background:#F59E0B;border:1px solid #000000"></div><div class="el" id="chart-c-b2-1" data-kind="shape" data-shape="rect" style="position:absolute;left:749px;top:216px;width:71px;height:165px;background:#F59E0B;border:1px solid #000000"></div><div class="el" id="caption" data-kind="text" style="position:absolute;left:60px;top:480px;width:840px;height:30px;font-size:12px;line-height:1.2;color:#64748B;overflow:visible;white-space:pre-wrap;word-break:break-word">数据来源:内部经营报表(2026-09 月报)</div></div></section></body></html>
1
+ <!doctype html><html><head><meta charset="utf-8"><title>out-smoke</title><style>*{box-sizing:border-box;margin:0}body{background:#64748b} .slide{position:relative;width:960px;height:540px;background:#F8FAFC;box-shadow:0 2px 12px rgba(0,0,0,.3);overflow:hidden}</style><style>body{background:#334155;padding:16px}</style></head><body style="background:#334155"><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">1. pages/slide_01</div><div class="slide" style='background:#F8FAFC'><div class="el" id="hero-rect" data-kind="shape" data-shape="rect" style="position:absolute;left:0px;top:0px;width:960px;height:120px;background:#2563EB;border:1px solid #000000"></div><div class="el" id="title" data-kind="text" style="position:absolute;left:80px;top:180px;width:700px;height:90px;font-size:40px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">季度复盘:增长引擎与风险</div><div class="el" id="subtitle" data-kind="text" style="position:absolute;left:80px;top:290px;width:600px;height:60px;font-size:18px;line-height:1.2;color:#F59E0B;overflow:visible;white-space:pre-wrap;word-break:break-word">2026 Q3 · 内部汇报</div><div class="el" id="deco" data-kind="shape" data-shape="ellipse" style="position:absolute;left:780px;top:360px;width:120px;height:120px;border-radius:50%;background:#F59E0B;border:1px solid #000000"></div></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">2. pages/slide_02</div><div class="slide" style='background:#F8FAFC'><div class="el" id="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">关键进展</div><div class="el" id="body-a" data-kind="text" style="position:absolute;left:60px;top:130px;width:420px;height:200px;font-size:18px;line-height:1.2;color:#1F2937;overflow:visible;white-space:pre-wrap;word-break:break-word">线上增长 34%,主要来自新渠道投放;NPS 提升 12 分;复购率升至 41%。 供应链成本环比下降 8%。</div><div class="el" id="metric-rect" data-kind="shape" data-shape="rect" style="position:absolute;left:540px;top:130px;width:360px;height:80px;background:#2563EB;border:1px solid #000000"></div><div class="el" id="metric" data-kind="text" style="position:absolute;left:540px;top:150px;width:360px;height:40px;font-size:22px;line-height:1.2;color:#FFFFFF;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">+34% 增长</div><table class="el" id="table-b" data-kind="table" style="position:absolute;left:60px;top:380px;width:840px;height:120px;border-collapse:collapse"><tbody><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">Col1</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">Col2</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">Col3</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">Col4</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">渠道</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">投入</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">产出</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">ROI</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">搜索</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">120万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">480万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">4</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">社群</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">60万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">210万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">3.5</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">直播</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">90万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">360万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">4</td></tr></tbody></table></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">3. pages/slide_03</div><div class="slide" style='background:#F8FAFC'><div class="el" id="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">渠道 GMV 走势</div><div class="el" id="chart-c" data-kind="text" style="position:absolute;left:60px;top:130px;width:840px;height:330px;font-size:18px;line-height:1.2;color:#111;overflow:visible;white-space:pre-wrap;word-break:break-word">[chart: chart-c] 图表已降级为文本占位,请重新生成图表样式</div><div class="el" id="caption" data-kind="text" style="position:absolute;left:60px;top:480px;width:840px;height:30px;font-size:12px;line-height:1.2;color:#64748B;overflow:visible;white-space:pre-wrap;word-break:break-word">数据来源:内部经营报表(2026-09 月报)</div></div></section></body></html>
@@ -5,25 +5,25 @@
5
5
  },
6
6
  "theme": {
7
7
  "colors": {
8
- "c1": "#2563EB",
9
- "c2": "#F59E0B",
10
- "c3": "#1F2937",
8
+ "c1": "#1F2937",
9
+ "c2": "#2563EB",
10
+ "c3": "#F59E0B",
11
11
  "c4": "#FFFFFF",
12
12
  "c5": "#64748B"
13
13
  },
14
14
  "textStyles": {
15
15
  "title": {
16
16
  "fontSize": 40,
17
- "color": "#2563EB",
17
+ "color": "#1F2937",
18
18
  "bold": true
19
19
  },
20
20
  "body": {
21
21
  "fontSize": 18,
22
- "color": "#2563EB"
22
+ "color": "#1F2937"
23
23
  },
24
24
  "label": {
25
25
  "fontSize": 12,
26
- "color": "#2563EB"
26
+ "color": "#1F2937"
27
27
  }
28
28
  },
29
29
  "grid": {
@@ -324,82 +324,30 @@
324
324
  "text": "渠道 GMV 走势"
325
325
  },
326
326
  {
327
- "id": "chart-c-b0-0",
328
- "kind": "shape",
329
- "bounds": {
330
- "x": 208,
331
- "y": 205,
332
- "w": 71,
333
- "h": 176
334
- },
335
- "shape": "rect",
336
- "fill": "#2563EB",
337
- "rotation": 0
338
- },
339
- {
340
- "id": "chart-c-b1-0",
341
- "kind": "shape",
342
- "bounds": {
343
- "x": 443,
344
- "y": 183,
345
- "w": 71,
346
- "h": 198
347
- },
348
- "shape": "rect",
349
- "fill": "#2563EB",
350
- "rotation": 0
351
- },
352
- {
353
- "id": "chart-c-b2-0",
354
- "kind": "shape",
355
- "bounds": {
356
- "x": 678,
357
- "y": 150,
358
- "w": 71,
359
- "h": 231
360
- },
361
- "shape": "rect",
362
- "fill": "#2563EB",
363
- "rotation": 0
364
- },
365
- {
366
- "id": "chart-c-b0-1",
367
- "kind": "shape",
327
+ "id": "chart-c",
328
+ "kind": "text",
368
329
  "bounds": {
369
- "x": 278,
370
- "y": 265,
371
- "w": 71,
372
- "h": 116
330
+ "x": 60,
331
+ "y": 130,
332
+ "w": 840,
333
+ "h": 330
373
334
  },
374
- "shape": "rect",
375
- "fill": "#F59E0B",
376
- "rotation": 0
377
- },
378
- {
379
- "id": "chart-c-b1-1",
380
- "kind": "shape",
381
- "bounds": {
382
- "x": 514,
383
- "y": 249,
384
- "w": 71,
385
- "h": 132
335
+ "style": {
336
+ "fontSize": 18,
337
+ "lineHeight": 1.2,
338
+ "wrap": true
386
339
  },
387
- "shape": "rect",
388
- "fill": "#F59E0B",
389
- "rotation": 0
390
- },
391
- {
392
- "id": "chart-c-b2-1",
393
- "kind": "shape",
394
- "bounds": {
395
- "x": 749,
396
- "y": 216,
397
- "w": 71,
398
- "h": 165
340
+ "metrics": {
341
+ "textW": 540,
342
+ "textH": 21.599999999999998,
343
+ "lines": 1,
344
+ "lineWidths": [
345
+ 525.5999999999999
346
+ ],
347
+ "overflowY": 0,
348
+ "overflowX": 0
399
349
  },
400
- "shape": "rect",
401
- "fill": "#F59E0B",
402
- "rotation": 0
350
+ "text": "[chart: chart-c] 图表已降级为文本占位,请重新生成图表样式"
403
351
  },
404
352
  {
405
353
  "id": "caption",
Binary file
Binary file
@@ -1 +1 @@
1
- <!doctype html><html><head><meta charset="utf-8"><style>*{box-sizing:border-box;margin:0}body{background:#64748b} .slide{position:relative;width:960px;height:540px;background:#F8FAFC;box-shadow:0 2px 12px rgba(0,0,0,.3);overflow:hidden}</style></head><body><div class="slide"><div class="el" id="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">渠道 GMV 走势</div><div class="el" id="chart-c" data-kind="chart" style="position:absolute;left:60px;top:130px;width:840px;height:330px"><svg viewBox="0 0 840 330" width="840" height="330" xmlns="http://www.w3.org/2000/svg" style="display:block"><line x1="36" y1="12" x2="828" y2="12" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="15" font-size="9" fill="#64748b" text-anchor="end">420</text><line x1="36" y1="84.5" x2="828" y2="84.5" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="87.5" font-size="9" fill="#64748b" text-anchor="end">315</text><line x1="36" y1="157" x2="828" y2="157" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="160" font-size="9" fill="#64748b" text-anchor="end">210</text><line x1="36" y1="229.5" x2="828" y2="229.5" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="232.5" font-size="9" fill="#64748b" text-anchor="end">105</text><line x1="36" y1="302" x2="828" y2="302" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="305" font-size="9" fill="#64748b" text-anchor="end">0</text><rect x="100.722" y="81.04761904761904" width="66.5" height="221.0" fill="#2563EB"><title>7月: 320</title></rect><rect x="364.722" y="53.42857142857142" width="66.5" height="248.6" fill="#2563EB"><title>8月: 360</title></rect><rect x="628.722" y="12" width="66.5" height="290.0" fill="#2563EB"><title>9月: 420</title></rect><rect x="168.75" y="157" width="66.5" height="145.0" fill="#F59E0B"><title>7月: 210</title></rect><rect x="432.75" y="136.28571428571428" width="66.5" height="165.7" fill="#F59E0B"><title>8月: 240</title></rect><rect x="696.75" y="94.85714285714285" width="66.5" height="207.1" fill="#F59E0B"><title>9月: 300</title></rect><text x="168.0" y="322" font-size="9" fill="#475569" text-anchor="middle">7月</text><text x="432.0" y="322" font-size="9" fill="#475569" text-anchor="middle">8月</text><text x="696.0" y="322" font-size="9" fill="#475569" text-anchor="middle">9月</text></svg></div><div class="el" id="caption" data-kind="text" style="position:absolute;left:60px;top:480px;width:840px;height:30px;font-size:12px;line-height:1.2;color:#64748B;overflow:visible;white-space:pre-wrap;word-break:break-word">数据来源:内部经营报表(2026-09 月报)</div></div></body></html>
1
+ <!doctype html><html><head><meta charset="utf-8"><style>*{box-sizing:border-box;margin:0}body{background:#64748b} .slide{position:relative;width:960px;height:540px;background:#F8FAFC;box-shadow:0 2px 12px rgba(0,0,0,.3);overflow:hidden}</style></head><body><div class="slide"><div class="el" id="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">渠道 GMV 走势</div><div class="el" id="chart-c" data-kind="chart" style="position:absolute;left:60px;top:130px;width:840px;height:330px"><svg viewBox="0 0 840 330" width="840" height="330" xmlns="http://www.w3.org/2000/svg" style="display:block"><line x1="36" y1="12.0" x2="828.0" y2="12.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="12.0" x2="36" y2="12.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="15.0" font-size="9" fill="#64748b" text-anchor="end">420</text><line x1="36" y1="80.5" x2="828.0" y2="80.5" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="80.5" x2="36" y2="80.5" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="83.5" font-size="9" fill="#64748b" text-anchor="end">315</text><line x1="36" y1="149.0" x2="828.0" y2="149.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="149.0" x2="36" y2="149.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="152.0" font-size="9" fill="#64748b" text-anchor="end">210</text><line x1="36" y1="217.5" x2="828.0" y2="217.5" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="217.5" x2="36" y2="217.5" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="220.5" font-size="9" fill="#64748b" text-anchor="end">105</text><line x1="36" y1="286.0" x2="828.0" y2="286.0" stroke="#e2e8f0" stroke-width="1"/><line x1="33" y1="286.0" x2="36" y2="286.0" stroke="#cbd5e1" stroke-width="1"/><text x="31" y="289.0" font-size="9" fill="#64748b" text-anchor="end">0</text><line x1="36" y1="12" x2="36" y2="286.0" stroke="#cbd5e1" stroke-width="1"/><line x1="36" y1="286.0" x2="828.0" y2="286.0" stroke="#cbd5e1" stroke-width="1"/><rect x="74.9" y="77.2" width="92.4" height="208.8" fill="#2563EB"><title>Web · 7月: 320</title></rect><rect x="338.9" y="51.1" width="92.4" height="234.9" fill="#2563EB"><title>Web · 8月: 360</title></rect><rect x="602.8" y="12.0" width="92.4" height="274.0" fill="#2563EB"><title>Web · 9月: 420</title></rect><rect x="168.8" y="149.0" width="92.4" height="137.0" fill="#F59E0B"><title>App · 7月: 210</title></rect><rect x="432.8" y="129.4" width="92.4" height="156.6" fill="#F59E0B"><title>App · 8月: 240</title></rect><rect x="696.8" y="90.3" width="92.4" height="195.7" fill="#F59E0B"><title>App · 9月: 300</title></rect><text x="168.0" y="298.0" font-size="9" fill="#475569" text-anchor="middle">7月</text><line x1="168.0" y1="286.0" x2="168.0" y2="289.0" stroke="#cbd5e1" stroke-width="1"/><text x="432.0" y="298.0" font-size="9" fill="#475569" text-anchor="middle">8月</text><line x1="432.0" y1="286.0" x2="432.0" y2="289.0" stroke="#cbd5e1" stroke-width="1"/><text x="696.0" y="298.0" font-size="9" fill="#475569" text-anchor="middle">9月</text><line x1="696.0" y1="286.0" x2="696.0" y2="289.0" stroke="#cbd5e1" stroke-width="1"/><rect x="8" y="319.0" width="8" height="8" fill="#2563EB" rx="1"/><text x="22" y="326.0" font-size="9" fill="#64748b">Web</text><rect x="44.85" y="319.0" width="8" height="8" fill="#F59E0B" rx="1"/><text x="58.85" y="326.0" font-size="9" fill="#64748b">App</text></svg></div><div class="el" id="caption" data-kind="text" style="position:absolute;left:60px;top:480px;width:840px;height:30px;font-size:12px;line-height:1.2;color:#64748B;overflow:visible;white-space:pre-wrap;word-break:break-word">数据来源:内部经营报表(2026-09 月报)</div></div></body></html>