dsh-ppt-studio 1.1.0

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 (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +480 -0
  3. package/agent-presets/ppt/agent.cordis.yml +308 -0
  4. package/agent-presets/ppt/preset.yml +3 -0
  5. package/cordis.patch.yml +29 -0
  6. package/docs/00-/350/256/276/350/256/241/346/272/220.md +537 -0
  7. package/docs/01-/351/234/200/346/261/202/344/270/216/347/233/256/346/240/207.md +136 -0
  8. package/docs/02-/346/212/200/346/234/257/346/212/245/345/221/212.md +483 -0
  9. package/docs/03-/346/233/264/346/226/260/346/227/245/345/277/227.md +2898 -0
  10. package/docs/04-/350/267/257/347/272/277/345/233/276/344/270/216/351/207/214/347/250/213/347/242/221.md +113 -0
  11. package/docs/05-/350/277/255/344/273/243/346/265/201/347/250/213.md +210 -0
  12. package/docs/06-/350/257/204/345/256/241/344/270/216/346/265/213/350/257/225.md +296 -0
  13. package/docs/fidelity-report.md +225 -0
  14. package/examples/fx/fx-mini/deck.yaml +39 -0
  15. package/examples/fx/fx-mini/pages/01.yaml +6 -0
  16. package/examples/fx/fx-mini/pages/02.yaml +2 -0
  17. package/examples/fx/fx-mini/pages/03.yaml +6 -0
  18. package/examples/fx/fx-pro/deck.yaml +48 -0
  19. package/examples/fx/fx-pro/pages/01_cover.yaml +40 -0
  20. package/examples/fx/fx-pro/pages/02_arch.yaml +55 -0
  21. package/examples/fx/fx-pro/pages/03_table.yaml +20 -0
  22. package/examples/fx/fx-pro/pages/04_chart.yaml +40 -0
  23. package/examples/fx/fx-pro/pages/05_timeline.yaml +71 -0
  24. package/examples/fx/fx-pro/pages/06_longtext.yaml +13 -0
  25. package/examples/fx/fx-pro/pages/07_safearea.yaml +33 -0
  26. package/examples/fx/fx-pro/pages/08_contrast.yaml +22 -0
  27. package/examples/fx/fx-pro/pages/09_custgeom.yaml +32 -0
  28. package/examples/fx/fx-pro/pages/10_numbers.yaml +25 -0
  29. package/examples/fx/fx-pro/pages/11_section.yaml +20 -0
  30. package/examples/fx/fx-pro/pages/12_summary.yaml +57 -0
  31. package/examples/fx/fx-pro/preview/01_pages_01_cover.html +1 -0
  32. package/examples/fx/fx-pro/preview/02_pages_02_arch.html +3 -0
  33. package/examples/fx/fx-pro/preview/03_pages_03_table.html +1 -0
  34. package/examples/fx/fx-pro/preview/04_pages_04_chart.html +3 -0
  35. package/examples/fx/fx-pro/preview/05_pages_05_timeline.html +2 -0
  36. package/examples/fx/fx-pro/preview/06_pages_06_longtext.html +4 -0
  37. package/examples/fx/fx-pro/preview/07_pages_07_safearea.html +2 -0
  38. package/examples/fx/fx-pro/preview/08_pages_08_contrast.html +1 -0
  39. package/examples/fx/fx-pro/preview/09_pages_09_custgeom.html +1 -0
  40. package/examples/fx/fx-pro/preview/10_pages_10_numbers.html +1 -0
  41. package/examples/fx/fx-pro/preview/11_pages_11_section.html +1 -0
  42. package/examples/fx/fx-pro/preview/12_pages_12_summary.html +1 -0
  43. package/examples/fx/fx-pro/preview/deck.html +10 -0
  44. package/examples/fx/fx-pro/preview/layout.json +2325 -0
  45. package/examples/fx/fx-pro/preview/measured.json +814 -0
  46. package/examples/fx/fx-pro.pptx +0 -0
  47. package/examples/fx/ren-single/01.png +0 -0
  48. package/examples/fx/ren-spliced/01.png +0 -0
  49. package/examples/fx/ren-spliced/03.png +0 -0
  50. package/examples/fx/seed.pptx +0 -0
  51. package/examples/fx/single.pptx +0 -0
  52. package/examples/fx/spliced.pptx +0 -0
  53. package/examples/smoke/deck.yaml +26 -0
  54. package/examples/smoke/imported/deck.yaml +30 -0
  55. package/examples/smoke/imported/import-styles.json +126 -0
  56. package/examples/smoke/imported/pages/slide_01.yaml +31 -0
  57. package/examples/smoke/imported/pages/slide_02.yaml +38 -0
  58. package/examples/smoke/imported/pages/slide_03.yaml +55 -0
  59. package/examples/smoke/imported/preview-rt/01_pages_slide_01.html +1 -0
  60. package/examples/smoke/imported/preview-rt/02_pages_slide_02.html +1 -0
  61. package/examples/smoke/imported/preview-rt/03_pages_slide_03.html +1 -0
  62. package/examples/smoke/imported/preview-rt/deck.html +1 -0
  63. package/examples/smoke/imported/preview-rt/layout.json +434 -0
  64. package/examples/smoke/imported/reference/previews/01.png +0 -0
  65. package/examples/smoke/imported/reference/previews/02.png +0 -0
  66. package/examples/smoke/imported/reference/previews/03.png +0 -0
  67. package/examples/smoke/imported/source.pptx +0 -0
  68. package/examples/smoke/media-test.png +0 -0
  69. package/examples/smoke/out-smoke.pptx +0 -0
  70. package/examples/smoke/pages/01_cover.yaml +27 -0
  71. package/examples/smoke/pages/02_content.yaml +42 -0
  72. package/examples/smoke/pages/03_chart.yaml +35 -0
  73. package/examples/smoke/preview/01_pages_01_cover.html +1 -0
  74. package/examples/smoke/preview/02_pages_02_content.html +1 -0
  75. package/examples/smoke/preview/03_pages_03_chart.html +1 -0
  76. package/examples/smoke/preview/deck.html +1 -0
  77. package/examples/smoke/preview/layout.json +378 -0
  78. package/lib/autodeclare.js +40 -0
  79. package/lib/commands.js +161 -0
  80. package/lib/crosscheck.js +300 -0
  81. package/lib/imgmeta.js +55 -0
  82. package/lib/index.js +239 -0
  83. package/lib/measurement.js +209 -0
  84. package/lib/msrender.js +123 -0
  85. package/lib/pptd/export-pptx.js +686 -0
  86. package/lib/pptd/import-pptx.js +774 -0
  87. package/lib/pptd/layout.js +209 -0
  88. package/lib/pptd/render-html.js +254 -0
  89. package/lib/pptd/schema.js +518 -0
  90. package/lib/pptd/svgCharts.js +147 -0
  91. package/lib/pptxPy.js +205 -0
  92. package/lib/preset-delivery.js +195 -0
  93. package/lib/preview-server.js +164 -0
  94. package/lib/router.js +165 -0
  95. package/lib/scaffold.js +315 -0
  96. package/lib/skill.js +174 -0
  97. package/lib/splice.js +219 -0
  98. package/lib/state.js +88 -0
  99. package/lib/surgical.js +369 -0
  100. package/lib/templates.js +400 -0
  101. package/lib/tools.js +955 -0
  102. package/lib/verify.js +828 -0
  103. package/lib/xmljs.js +112 -0
  104. package/lib/zips.js +117 -0
  105. package/package.json +81 -0
  106. package/scripts/audit-manual-facts.mjs +294 -0
  107. package/scripts/audit-template-fidelity.mjs +162 -0
  108. package/scripts/bench-m2.mjs +48 -0
  109. package/scripts/build-templates.mjs +63 -0
  110. package/scripts/build.mjs +14 -0
  111. package/scripts/build.sh +7 -0
  112. package/scripts/check-lib-freshness.mjs +70 -0
  113. package/scripts/check-preset.mjs +189 -0
  114. package/scripts/check-tracked-lf.mjs +84 -0
  115. package/scripts/dbg-import.mjs +13 -0
  116. package/scripts/dbg-media.mjs +10 -0
  117. package/scripts/dbg-tpl-inventory.mjs +23 -0
  118. package/scripts/dump-workflow-baseline.mjs +38 -0
  119. package/scripts/e2e-1.0.mjs +129 -0
  120. package/scripts/eval-skills-blind.mjs +91 -0
  121. package/scripts/eval-skills-score.mjs +129 -0
  122. package/scripts/export-orig-templates.ps1 +17 -0
  123. package/scripts/fixtures/workflow-baseline.json +300 -0
  124. package/scripts/fixtures.mjs +501 -0
  125. package/scripts/import-user-templates.mjs +60 -0
  126. package/scripts/install-desktop.mjs +312 -0
  127. package/scripts/install.mjs +209 -0
  128. package/scripts/migrate-templates-dualtrack.mjs +71 -0
  129. package/scripts/preflight-1.0.mjs +198 -0
  130. package/scripts/probe-asset-freshness.mjs +57 -0
  131. package/scripts/probe-effect-semantics.mjs +69 -0
  132. package/scripts/probe-reparse-safety.mjs +32 -0
  133. package/scripts/rebuild-templates-c11.mjs +69 -0
  134. package/scripts/regression-real.mjs +84 -0
  135. package/scripts/release-sync.mjs +425 -0
  136. package/scripts/shot-templates.mjs +49 -0
  137. package/scripts/smoke.mjs +2512 -0
  138. package/scripts/verify-bundle-install.mjs +281 -0
  139. package/scripts/verify-fresh-install.mjs +260 -0
  140. package/skills/ppt-studio-copy/SKILL.md +139 -0
  141. package/skills/ppt-studio-craft/SKILL.md +171 -0
  142. package/skills/ppt-studio-data/SKILL.md +173 -0
  143. package/skills/ppt-studio-manual/SKILL.md +104 -0
  144. package/templates/academic-white/deck.yaml +24 -0
  145. package/templates/academic-white/pages/_chart.yaml +43 -0
  146. package/templates/academic-white/pages/_compare.yaml +37 -0
  147. package/templates/academic-white/pages/_content.yaml +35 -0
  148. package/templates/academic-white/pages/_cover.yaml +28 -0
  149. package/templates/academic-white/pages/_ending.yaml +28 -0
  150. package/templates/academic-white/pages/_flow.yaml +61 -0
  151. package/templates/academic-white/preview.png +0 -0
  152. package/templates/academic-white/template.yaml +14 -0
  153. package/templates/business-blue/deck.yaml +28 -0
  154. package/templates/business-blue/pages/_chart.yaml +36 -0
  155. package/templates/business-blue/pages/_compare.yaml +45 -0
  156. package/templates/business-blue/pages/_content.yaml +80 -0
  157. package/templates/business-blue/pages/_cover.yaml +39 -0
  158. package/templates/business-blue/pages/_ending.yaml +32 -0
  159. package/templates/business-blue/pages/_flow.yaml +87 -0
  160. package/templates/business-blue/preview.png +0 -0
  161. package/templates/business-blue/template.yaml +14 -0
  162. package/templates/pitch-bold/deck.yaml +23 -0
  163. package/templates/pitch-bold/pages/_chart.yaml +32 -0
  164. package/templates/pitch-bold/pages/_compare.yaml +36 -0
  165. package/templates/pitch-bold/pages/_content.yaml +58 -0
  166. package/templates/pitch-bold/pages/_cover.yaml +31 -0
  167. package/templates/pitch-bold/pages/_ending.yaml +27 -0
  168. package/templates/pitch-bold/pages/_flow.yaml +46 -0
  169. package/templates/pitch-bold/preview.png +0 -0
  170. package/templates/pitch-bold/template.yaml +14 -0
  171. package/templates/tech-dark/deck.yaml +24 -0
  172. package/templates/tech-dark/pages/_chart.yaml +27 -0
  173. package/templates/tech-dark/pages/_compare.yaml +38 -0
  174. package/templates/tech-dark/pages/_content.yaml +51 -0
  175. package/templates/tech-dark/pages/_cover.yaml +30 -0
  176. package/templates/tech-dark/pages/_ending.yaml +25 -0
  177. package/templates/tech-dark/pages/_flow.yaml +80 -0
  178. package/templates/tech-dark/preview.png +0 -0
  179. package/templates/tech-dark/template.yaml +14 -0
@@ -0,0 +1,48 @@
1
+ # 高难度综合夹具(v1.0.0 自包含测试案例;声明齐备 → verify 应 0 错误)
2
+ version: 1
3
+ title: "能力验证演示"
4
+ size: [960, 540]
5
+ theme:
6
+ colors:
7
+ ink: "#1F2937" # 主墨
8
+ primary: "#2563EB" # 主蓝
9
+ accent: "#F59E0B" # 强调橙
10
+ danger: "#C0392B" # 警示红
11
+ steel: "#64748B" # 辅助灰蓝
12
+ bg: "#F8FAFC" # 页面底
13
+ deep: "#0F172A" # 深底(白字承载)
14
+ # 扩展档(夹具调色:蓝/紫/绿阶 + 浅底)
15
+ blue-soft: "#DBEAFE"
16
+ blue-deep: "#1E3A8A"
17
+ blue-mid: "#3B82F6"
18
+ slate-deep: "#334155"
19
+ slate-soft: "#CBD5E1"
20
+ slate-lite: "#E2E8F0"
21
+ amber-soft: "#FEF3C7"
22
+ amber-deep: "#92400E"
23
+ amber-dark: "#78350F"
24
+ violet: "#8B5CF6"
25
+ green: "#10B981"
26
+ green-soft: "#D1FAE5"
27
+ green-deep: "#065F46"
28
+ textStyles:
29
+ title: {fontSize: 32, color: "$ink", bold: true, fontFamily: "微软雅黑"}
30
+ h1: {fontSize: 22, color: "$ink", bold: true, fontFamily: "微软雅黑"}
31
+ h2: {fontSize: 16, color: "$ink", bold: true, fontFamily: "微软雅黑"}
32
+ body: {fontSize: 14, color: "$ink", fontFamily: "微软雅黑"}
33
+ small: {fontSize: 12, color: "$steel", fontFamily: "微软雅黑"}
34
+ safeArea: {top: 34, bottom: 26, left: 40, right: 40}
35
+ minFontSize: 12
36
+ pages:
37
+ - pages/01_cover.yaml
38
+ - pages/02_arch.yaml
39
+ - pages/03_table.yaml
40
+ - pages/04_chart.yaml
41
+ - pages/05_timeline.yaml
42
+ - pages/06_longtext.yaml
43
+ - pages/07_safearea.yaml
44
+ - pages/08_contrast.yaml
45
+ - pages/09_custgeom.yaml
46
+ - pages/10_numbers.yaml
47
+ - pages/11_section.yaml
48
+ - pages/12_summary.yaml
@@ -0,0 +1,40 @@
1
+ pageType: cover
2
+ background: "#F8FAFC"
3
+ expectedOutOfSafeArea: [band]
4
+ elements:
5
+ - elementId: band
6
+ elementType: shape
7
+ kind: rect
8
+ bounds: [0, 0, 960, 540]
9
+ fill: {type: gradient, stops: [{pos: 0, color: "#0F172A"}, {pos: 100, color: "#2563EB"}], angle: 90}
10
+ - elementId: glow
11
+ elementType: shape
12
+ kind: ellipse
13
+ bounds: [660, 34, 260, 260]
14
+ fill: {color: "#FFFFFF", alpha: 18}
15
+ - elementId: title
16
+ elementType: text
17
+ bounds: [80, 150, 700, 90]
18
+ content: {text: "能力验证演示(自建夹具)", style: "$title", color: "#FFFFFF"}
19
+ - elementId: sub
20
+ elementType: text
21
+ bounds: [80, 260, 600, 50]
22
+ content: {text: "PPTD 中间层 · 声明制 · 双轨审阅", style: "$h1", color: "#CBD5E1"}
23
+ - elementId: badge
24
+ elementType: shape
25
+ kind: chevron
26
+ bounds: [80, 420, 200, 56]
27
+ fill: "#F59E0B"
28
+ - elementId: badge_t
29
+ elementType: text
30
+ bounds: [100, 430, 160, 40]
31
+ content: {text: "v1.0.0", style: "$h2", color: "#0F172A", align: center}
32
+ expectedOverlaps:
33
+ - {pair: [band, glow]}
34
+ - {pair: [band, title]}
35
+ - {pair: [band, sub]}
36
+ - {pair: [band, badge]}
37
+ - {pair: [band, badge_t]}
38
+ - {pair: [glow, title]}
39
+ - {pair: [glow, sub]}
40
+ - {pair: [badge, badge_t]}
@@ -0,0 +1,55 @@
1
+ pageType: content
2
+ background: "#F8FAFC"
3
+ source: "夹具自造架构示意(三层嵌套 + 声明闭包)"
4
+ elements:
5
+ - elementId: panel
6
+ elementType: shape
7
+ kind: roundRect
8
+ bounds: [60, 80, 840, 380]
9
+ fill: "#FFFFFF"
10
+ line: {color: "#CBD5E1", width: 1}
11
+ - elementId: box_a
12
+ elementType: shape
13
+ kind: rect
14
+ bounds: [100, 130, 350, 240]
15
+ fill: "#DBEAFE"
16
+ line: {color: "#2563EB", width: 1}
17
+ - elementId: box_a_t
18
+ elementType: text
19
+ bounds: [120, 150, 310, 60]
20
+ content: {text: "领域本体(知识层)", style: "$h2", color: "#1E3A8A"}
21
+ - elementId: box_a_b
22
+ elementType: text
23
+ bounds: [120, 230, 310, 120]
24
+ content: {text: "对象·属性·关系·约束\n换场景 = 换实例,零重构", style: "$body", color: "#334155"}
25
+ - elementId: box_b
26
+ elementType: shape
27
+ kind: rect
28
+ bounds: [510, 130, 350, 240]
29
+ fill: "#FEF3C7"
30
+ line: {color: "#F59E0B", width: 1}
31
+ - elementId: box_b_t
32
+ elementType: text
33
+ bounds: [530, 150, 310, 60]
34
+ content: {text: "仿真内核(执行层)", style: "$h2", color: "#92400E"}
35
+ - elementId: box_b_b
36
+ elementType: text
37
+ bounds: [530, 230, 310, 120]
38
+ content: {text: "车间生产·负载评估·计划跟踪\n结论可迁移(泛化性)", style: "$body", color: "#78350F"}
39
+ - elementId: arrow
40
+ elementType: line
41
+ points: [[450, 250], [508, 250]]
42
+ arrow: true
43
+ line: {color: "#2563EB", width: 2}
44
+ - elementId: foot
45
+ elementType: text
46
+ bounds: [100, 470, 760, 40]
47
+ content: {text: "知识层 → 映射 → 执行层:本体驱动仿真的泛化范式(A8 场景也在本页)", style: "$small"}
48
+ expectedOverlaps:
49
+ - {pair: [panel, box_a]}
50
+ - {pair: [panel, box_b]}
51
+ - {pair: [box_a, box_a_t]}
52
+ - {pair: [box_a, box_a_b]}
53
+ - {pair: [box_b, box_b_t]}
54
+ - {pair: [box_b, box_b_b]}
55
+ # 声明闭包:panel×box_a_t 等隔层对由包含关系传递自动通过,无需声明
@@ -0,0 +1,20 @@
1
+ pageType: content
2
+ background: "#F8FAFC"
3
+ source: "夹具自造表(数据为演示样本)"
4
+ elements:
5
+ - elementId: t_head
6
+ elementType: text
7
+ bounds: [60, 60, 400, 40]
8
+ content: {text: "对策-指标对照表", style: "$h1"}
9
+ - elementId: tbl
10
+ elementType: table
11
+ bounds: [60, 120, 840, 300]
12
+ cols: [对策, 指标A, 指标B, 说明]
13
+ rows:
14
+ - [线表决策辅助, 决策响应-32%, 准确率+12%, 基线 45.6%]
15
+ - [排程优化, 交付周期-18%, 利用率+9%, 中型场景]
16
+ - [生产流程仿真, 节拍-15%, 一次合格率+8%, 泛化验证]
17
+ - elementId: t_note
18
+ elementType: text
19
+ bounds: [60, 450, 840, 40]
20
+ content: {text: "注:数据为演示样本(45.6% 为跨页对账演示数字)", style: "$small"}
@@ -0,0 +1,40 @@
1
+ pageType: content
2
+ background: "#F8FAFC"
3
+ source: "夹具自造折线(演示)"
4
+ elements:
5
+ - elementId: c_head
6
+ elementType: text
7
+ bounds: [60, 60, 400, 40]
8
+ content: {text: "仿真运行趋势", style: "$h1"}
9
+ - elementId: chart
10
+ elementType: chart
11
+ bounds: [60, 130, 480, 300]
12
+ chart:
13
+ type: line
14
+ data:
15
+ cols: [month, pass]
16
+ rows:
17
+ - ["1月", 92]
18
+ - ["2月", 94]
19
+ - ["3月", 95]
20
+ - ["4月", 96]
21
+ series:
22
+ - {name: 一次合格率, x: month, y: pass}
23
+ colors: ["$primary"]
24
+ - elementId: key
25
+ elementType: shape
26
+ kind: roundRect
27
+ bounds: [580, 130, 320, 300]
28
+ fill: "#FFFFFF"
29
+ line: {color: "#CBD5E1", width: 1}
30
+ - elementId: key_t
31
+ elementType: text
32
+ bounds: [610, 160, 260, 60]
33
+ content: {text: "关键指标", style: "$h2"}
34
+ - elementId: key_body
35
+ elementType: text
36
+ bounds: [610, 240, 260, 160]
37
+ content: {text: "一次合格率 96%(+8pt)\n综合评 45.6% 提升\n节拍 −15%", style: "$body"}
38
+ expectedOverlaps:
39
+ - {pair: [key, key_t]}
40
+ - {pair: [key, key_body]}
@@ -0,0 +1,71 @@
1
+ pageType: content
2
+ background: "#F8FAFC"
3
+ elements:
4
+ - elementId: tl_head
5
+ elementType: text
6
+ bounds: [60, 60, 500, 40]
7
+ content: {text: "实施路线(五阶段)", style: "$h1"}
8
+ - elementId: tl_line
9
+ elementType: line
10
+ points: [[80, 200], [860, 200]]
11
+ line: {color: "#94A3B8", width: 2}
12
+ - elementId: st1
13
+ elementType: shape
14
+ kind: pentagon
15
+ bounds: [60, 140, 140, 60]
16
+ fill: "#2563EB"
17
+ - elementId: st1_t
18
+ elementType: text
19
+ bounds: [70, 148, 120, 44]
20
+ content: {text: "建模", style: "$h2", color: "#FFFFFF", align: center}
21
+ - elementId: st2
22
+ elementType: shape
23
+ kind: pentagon
24
+ bounds: [220, 140, 140, 60]
25
+ fill: "#3B82F6"
26
+ - elementId: st2_t
27
+ elementType: text
28
+ bounds: [230, 148, 120, 44]
29
+ content: {text: "映射", style: "$h2", color: "#FFFFFF", align: center}
30
+ - elementId: st3
31
+ elementType: shape
32
+ kind: pentagon
33
+ bounds: [380, 140, 140, 60]
34
+ fill: "#F59E0B"
35
+ - elementId: st3_t
36
+ elementType: text
37
+ bounds: [390, 148, 120, 44]
38
+ content: {text: "仿真", style: "$h2", color: "#FFFFFF", align: center}
39
+ - elementId: st4
40
+ elementType: shape
41
+ kind: pentagon
42
+ bounds: [540, 140, 140, 60]
43
+ fill: "#8B5CF6"
44
+ - elementId: st4_t
45
+ elementType: text
46
+ bounds: [550, 148, 120, 44]
47
+ content: {text: "验证", style: "$h2", color: "#FFFFFF", align: center}
48
+ - elementId: st5
49
+ elementType: shape
50
+ kind: pentagon
51
+ bounds: [700, 140, 140, 60]
52
+ fill: "#10B981"
53
+ - elementId: st5_t
54
+ elementType: text
55
+ bounds: [710, 148, 120, 44]
56
+ content: {text: "推广", style: "$h2", color: "#FFFFFF", align: center}
57
+ - elementId: tl_note
58
+ elementType: text
59
+ bounds: [80, 300, 800, 100]
60
+ content: {text: "单向推进 + 每阶段门禁:建模评审 → 映射校验 → 仿真对标 → 验证报告 → 批量复制\n(时间线为示意图,非真实排期)", style: "$body"}
61
+ expectedOverlaps:
62
+ - {pair: [st1, tl_line]}
63
+ - {pair: [st2, tl_line]}
64
+ - {pair: [st3, tl_line]}
65
+ - {pair: [st4, tl_line]}
66
+ - {pair: [st5, tl_line]}
67
+ - {pair: [st1, st1_t]}
68
+ - {pair: [st2, st2_t]}
69
+ - {pair: [st3, st3_t]}
70
+ - {pair: [st4, st4_t]}
71
+ - {pair: [st5, st5_t]}
@@ -0,0 +1,13 @@
1
+ pageType: content
2
+ background: "#F8FAFC"
3
+ elements:
4
+ - elementId: lt_head
5
+ elementType: text
6
+ bounds: [60, 60, 500, 40]
7
+ content: {text: "长文本容纳(保守估算 + 显式断行)", style: "$h1"}
8
+ - elementId: lt_body
9
+ elementType: text
10
+ bounds: [60, 130, 840, 340]
11
+ content:
12
+ text: "这一段用于验证长文本在保守估算下的处理:中文全角加粗按 1.06 系数、行高 1.2、标点禁则——\n显式断行是长句的最佳实践,容器也必须给足高度。\n本夹具故意把每行控制在 40 字以内,并预留 340px 高度(约 20 行×16.8px),确保门禁零错误,\n同时验证保守估算不误报:若容器足够,estimate 与实测应一致。"
13
+ style: "$body"
@@ -0,0 +1,33 @@
1
+ pageType: content
2
+ background: "#F8FAFC"
3
+ expectedOutOfSafeArea: [logo, logo_t, footer, footer_t]
4
+ elements:
5
+ - elementId: logo
6
+ elementType: shape
7
+ kind: ellipse
8
+ bounds: [895, 8, 40, 30]
9
+ fill: "#2563EB"
10
+ - elementId: logo_t
11
+ elementType: text
12
+ bounds: [897, 12, 36, 24]
13
+ content: {text: "S", style: "$body", color: "#FFFFFF", align: center}
14
+ - elementId: sa_title
15
+ elementType: text
16
+ bounds: [60, 70, 600, 40]
17
+ content: {text: "安全区与页脚带声明(logo 落在安全区外)", style: "$h1"}
18
+ - elementId: sa_body
19
+ elementType: text
20
+ bounds: [60, 140, 840, 200]
21
+ content: {text: "主题 safeArea 定义为顶/底/左/右 34/26/40/40px:内容不得侵入。\n页脚带(y≥514)属于安全区外——如需放角标,用 expectedOutOfSafeArea 声明(已声明 logo)。", style: "$body"}
22
+ - elementId: footer
23
+ elementType: shape
24
+ kind: rect
25
+ bounds: [0, 514, 960, 26]
26
+ fill: "#E2E8F0"
27
+ - elementId: footer_t
28
+ elementType: text
29
+ bounds: [60, 518, 300, 20]
30
+ content: {text: "页脚带:夹具页脚 © v1.0.0", style: "$small"}
31
+ expectedOverlaps:
32
+ - {pair: [logo, logo_t]}
33
+ - {pair: [footer, footer_t]}
@@ -0,0 +1,22 @@
1
+ pageType: content
2
+ background: "#F8FAFC"
3
+ elements:
4
+ - elementId: ct_head
5
+ elementType: text
6
+ bounds: [60, 60, 600, 40]
7
+ content: {text: "对比度承载面(渐变深底白字)", style: "$h1"}
8
+ - elementId: carrier
9
+ elementType: shape
10
+ kind: parallelogram
11
+ bounds: [60, 150, 400, 180]
12
+ fill: {type: gradient, stops: [{pos: 0, color: "#0F172A"}, {pos: 100, color: "#2563EB"}], angle: 90}
13
+ - elementId: carrier_t
14
+ elementType: text
15
+ bounds: [110, 230, 300, 60]
16
+ content: {text: "深底上的白字", style: "$h2", color: "#FFFFFF", align: center}
17
+ - elementId: ct_note
18
+ elementType: text
19
+ bounds: [520, 170, 380, 140]
20
+ content: {text: '对比度启发式以最近承载面(渐变中途 stop)为基准——本页不应报"白字 vs 页面背景"误报。', style: "$body"}
21
+ expectedOverlaps:
22
+ - {pair: [carrier, carrier_t]}
@@ -0,0 +1,32 @@
1
+ pageType: content
2
+ background: "#F8FAFC"
3
+ expectedOutOfSafeArea: [arc]
4
+ elements:
5
+ - elementId: cg_head
6
+ elementType: text
7
+ bounds: [60, 60, 600, 40]
8
+ content: {text: "custGeom 自定义几何(弧带装饰)", style: "$h1"}
9
+ - elementId: arc
10
+ elementType: shape
11
+ kind: custGeom
12
+ bounds: [600, 320, 320, 200]
13
+ path:
14
+ w: 320
15
+ h: 200
16
+ commands:
17
+ - {cmd: moveTo, pts: [[0, 200]]}
18
+ - {cmd: arcTo, pts: [[160, 100]], wR: 160, hR: 100, stAng: 0, swAng: 5400000}
19
+ - {cmd: lnTo, pts: [[200, 60]]}
20
+ - {cmd: cubicBezTo, pts: [[180, 40], [120, 20], [0, 20]]}
21
+ - {cmd: close}
22
+ fill: {color: "#2563EB", alpha: 35}
23
+ - elementId: cg_body
24
+ elementType: text
25
+ bounds: [60, 140, 500, 160]
26
+ content: {text: "弧带为装饰层(role: decoration 豁免重叠);几何:moveTo/arcTo/lnTo/cubicBezTo/close。", style: "$body"}
27
+ - elementId: deco
28
+ elementType: shape
29
+ kind: ellipse
30
+ bounds: [700, 60, 120, 120]
31
+ fill: {color: "#F59E0B", alpha: 30}
32
+ role: decoration
@@ -0,0 +1,25 @@
1
+ pageType: content
2
+ background: "#F8FAFC"
3
+ source: "夹具自造摘要(45.6% 与 04 页跨页)"
4
+ elements:
5
+ - elementId: num_card
6
+ elementType: shape
7
+ kind: roundRect
8
+ bounds: [60, 90, 380, 220]
9
+ fill: "#FFFFFF"
10
+ line: {color: "#CBD5E1", width: 1}
11
+ - elementId: num_v
12
+ elementType: text
13
+ bounds: [100, 120, 300, 80]
14
+ content: {text: "45.6%", style: "$title", color: "#2563EB", align: center}
15
+ - elementId: num_l
16
+ elementType: text
17
+ bounds: [100, 220, 300, 40]
18
+ content: {text: "综合效率提升(与 04 页同值)", style: "$small", align: center}
19
+ - elementId: num_note
20
+ elementType: text
21
+ bounds: [480, 120, 420, 160]
22
+ content: {text: "跨页演示:本页 45.6% 与第 04 页 key_body 的 45.6% 应出现在 ppt_crosscheck 材料包。", style: "$body"}
23
+ expectedOverlaps:
24
+ - {pair: [num_card, num_v]}
25
+ - {pair: [num_card, num_l]}
@@ -0,0 +1,20 @@
1
+ pageType: content
2
+ background: "#F8FAFC"
3
+ expectedOutOfSafeArea: [sec_band]
4
+ elements:
5
+ - elementId: sec_band
6
+ elementType: shape
7
+ kind: rect
8
+ bounds: [0, 0, 960, 540]
9
+ fill: "#0F172A"
10
+ - elementId: sec_num
11
+ elementType: text
12
+ bounds: [80, 180, 300, 120]
13
+ content: {text: "03", style: "$title", color: "#F59E0B"}
14
+ - elementId: sec_t
15
+ elementType: text
16
+ bounds: [400, 200, 480, 80]
17
+ content: {text: "验证与展望", style: "$title", color: "#FFFFFF"}
18
+ expectedOverlaps:
19
+ - {pair: [sec_band, sec_num]}
20
+ - {pair: [sec_band, sec_t]}
@@ -0,0 +1,57 @@
1
+ pageType: content
2
+ background: "#F8FAFC"
3
+ elements:
4
+ - elementId: sm_head
5
+ elementType: text
6
+ bounds: [60, 60, 600, 40]
7
+ content: {text: "总结:一条可验证的生产线", style: "$h1"}
8
+ - elementId: sm_a
9
+ elementType: shape
10
+ kind: roundRect
11
+ bounds: [60, 130, 260, 180]
12
+ fill: "#DBEAFE"
13
+ - elementId: sm_a_t
14
+ elementType: text
15
+ bounds: [80, 150, 220, 60]
16
+ content: {text: "声明制", style: "$h2", color: "#1E3A8A", align: center}
17
+ - elementId: sm_a_b
18
+ elementType: text
19
+ bounds: [80, 220, 220, 70]
20
+ content: {text: "冲突防不住?声明设计意图", style: "$body"}
21
+ - elementId: sm_b
22
+ elementType: shape
23
+ kind: roundRect
24
+ bounds: [350, 130, 260, 180]
25
+ fill: "#FEF3C7"
26
+ - elementId: sm_b_t
27
+ elementType: text
28
+ bounds: [370, 150, 220, 60]
29
+ content: {text: "双轨审阅", style: "$h2", color: "#92400E", align: center}
30
+ - elementId: sm_b_b
31
+ elementType: text
32
+ bounds: [370, 220, 220, 70]
33
+ content: {text: "数字门禁 + 视觉审阅 + 真渲染", style: "$body"}
34
+ - elementId: sm_c
35
+ elementType: shape
36
+ kind: roundRect
37
+ bounds: [640, 130, 260, 180]
38
+ fill: "#D1FAE5"
39
+ - elementId: sm_c_t
40
+ elementType: text
41
+ bounds: [660, 150, 220, 60]
42
+ content: {text: "保真交付", style: "$h2", color: "#065F46", align: center}
43
+ - elementId: sm_c_b
44
+ elementType: text
45
+ bounds: [660, 220, 220, 70]
46
+ content: {text: "splice / slice / patch", style: "$body"}
47
+ - elementId: sm_foot
48
+ elementType: text
49
+ bounds: [60, 360, 840, 90]
50
+ content: {text: "结论:元素区块冲突被机器防住(声明制),质量可验证(三轨),保真可一指令(splice)。", style: "$body"}
51
+ expectedOverlaps:
52
+ - {pair: [sm_a, sm_a_t]}
53
+ - {pair: [sm_a, sm_a_b]}
54
+ - {pair: [sm_b, sm_b_t]}
55
+ - {pair: [sm_b, sm_b_b]}
56
+ - {pair: [sm_c, sm_c_t]}
57
+ - {pair: [sm_c, sm_c_b]}
@@ -0,0 +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="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></body></html>
@@ -0,0 +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="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
+ 换场景 = 换实例,零重构</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></body></html>
@@ -0,0 +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="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></body></html>
@@ -0,0 +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)
2
+ 综合评 45.6% 提升
3
+ 节拍 −15%</div></div></body></html>
@@ -0,0 +1,2 @@
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="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">单向推进 + 每阶段门禁:建模评审 → 映射校验 → 仿真对标 → 验证报告 → 批量复制
2
+ (时间线为示意图,非真实排期)</div></div></body></html>
@@ -0,0 +1,4 @@
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="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、标点禁则——
2
+ 显式断行是长句的最佳实践,容器也必须给足高度。
3
+ 本夹具故意把每行控制在 40 字以内,并预留 340px 高度(约 20 行×16.8px),确保门禁零错误,
4
+ 同时验证保守估算不误报:若容器足够,estimate 与实测应一致。</div></div></body></html>
@@ -0,0 +1,2 @@
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="logo" data-kind="shape" data-shape="ellipse" style="position:absolute;left:895px;top:8px;width:40px;height:30px;border-radius:50%;background:#2563EB"></div><div class="el" id="logo_t" data-kind="text" style="position:absolute;left:897px;top:12px;width:36px;height:24px;font-size:14px;line-height:1.2;color:#FFFFFF;font-family:微软雅黑;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">S</div><div class="el" id="sa_title" data-kind="text" style="position:absolute;left:60px;top:70px;width:600px;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">安全区与页脚带声明(logo 落在安全区外)</div><div class="el" id="sa_body" data-kind="text" style="position:absolute;left:60px;top:140px;width:840px;height:200px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">主题 safeArea 定义为顶/底/左/右 34/26/40/40px:内容不得侵入。
2
+ 页脚带(y≥514)属于安全区外——如需放角标,用 expectedOutOfSafeArea 声明(已声明 logo)。</div><div class="el" id="footer" data-kind="shape" data-shape="rect" style="position:absolute;left:0px;top:514px;width:960px;height:26px;background:#E2E8F0"></div><div class="el" id="footer_t" data-kind="text" style="position:absolute;left:60px;top:518px;width:300px;height:20px;font-size:12px;line-height:1.2;color:#64748B;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">页脚带:夹具页脚 © v1.0.0</div></div></body></html>
@@ -0,0 +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="ct_head" data-kind="text" style="position:absolute;left:60px;top:60px;width:600px;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="carrier" data-kind="shape" data-shape="parallelogram" style="position:absolute;left:60px;top:150px;width:400px;height:180px;clip-path:polygon(20% 0,100% 0,80% 100%,0 100%);background:linear-gradient(180deg, #0F172A 0%, #2563EB 100%)"></div><div class="el" id="carrier_t" data-kind="text" style="position:absolute;left:110px;top:230px;width:300px;height:60px;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="ct_note" data-kind="text" style="position:absolute;left:520px;top:170px;width:380px;height:140px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">对比度启发式以最近承载面(渐变中途 stop)为基准——本页不应报&quot;白字 vs 页面背景&quot;误报。</div></div></body></html>
@@ -0,0 +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="cg_head" data-kind="text" style="position:absolute;left:60px;top:60px;width:600px;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">custGeom 自定义几何(弧带装饰)</div><svg class="el" id="arc" data-kind="shape" data-shape="custGeom" style="position:absolute;left:600px;top:320px;width:320px;height:200px;overflow:visible" viewBox="0 0 320 200" preserveAspectRatio="none"><path d="M 0 200 A 160 100 0 0 1 -160.00 300.00 L 200 60 C 180 40 120 20 0 20 Z" fill="rgba(37,99,235,0.350)" stroke="none" stroke-width="0"/></svg><div class="el" id="cg_body" data-kind="text" style="position:absolute;left:60px;top:140px;width:500px;height:160px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">弧带为装饰层(role: decoration 豁免重叠);几何:moveTo/arcTo/lnTo/cubicBezTo/close。</div><div class="el" id="deco" data-kind="shape" data-shape="ellipse" style="position:absolute;left:700px;top:60px;width:120px;height:120px;border-radius:50%;background:rgba(245,158,11,0.300)"></div></div></body></html>
@@ -0,0 +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="num_card" data-kind="shape" data-shape="roundRect" style="position:absolute;left:60px;top:90px;width:380px;height:220px;border-radius:8px;background:#FFFFFF;border:1px solid #CBD5E1"></div><div class="el" id="num_v" data-kind="text" style="position:absolute;left:100px;top:120px;width:300px;height:80px;font-size:32px;line-height:1.2;color:#2563EB;font-family:微软雅黑;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">45.6%</div><div class="el" id="num_l" data-kind="text" style="position:absolute;left:100px;top:220px;width:300px;height:40px;font-size:12px;line-height:1.2;color:#64748B;font-family:微软雅黑;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">综合效率提升(与 04 页同值)</div><div class="el" id="num_note" data-kind="text" style="position:absolute;left:480px;top:120px;width:420px;height:160px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">跨页演示:本页 45.6% 与第 04 页 key_body 的 45.6% 应出现在 ppt_crosscheck 材料包。</div></div></body></html>
@@ -0,0 +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="sec_band" data-kind="shape" data-shape="rect" style="position:absolute;left:0px;top:0px;width:960px;height:540px;background:#0F172A"></div><div class="el" id="sec_num" data-kind="text" style="position:absolute;left:80px;top:180px;width:300px;height:120px;font-size:32px;line-height:1.2;color:#F59E0B;font-family:微软雅黑;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">03</div><div class="el" id="sec_t" data-kind="text" style="position:absolute;left:400px;top:200px;width:480px;height:80px;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></body></html>
@@ -0,0 +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="sm_head" data-kind="text" style="position:absolute;left:60px;top:60px;width:600px;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="sm_a" data-kind="shape" data-shape="roundRect" style="position:absolute;left:60px;top:130px;width:260px;height:180px;border-radius:8px;background:#DBEAFE"></div><div class="el" id="sm_a_t" data-kind="text" style="position:absolute;left:80px;top:150px;width:220px;height:60px;font-size:16px;line-height:1.2;color:#1E3A8A;font-family:微软雅黑;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">声明制</div><div class="el" id="sm_a_b" data-kind="text" style="position:absolute;left:80px;top:220px;width:220px;height:70px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">冲突防不住?声明设计意图</div><div class="el" id="sm_b" data-kind="shape" data-shape="roundRect" style="position:absolute;left:350px;top:130px;width:260px;height:180px;border-radius:8px;background:#FEF3C7"></div><div class="el" id="sm_b_t" data-kind="text" style="position:absolute;left:370px;top:150px;width:220px;height:60px;font-size:16px;line-height:1.2;color:#92400E;font-family:微软雅黑;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">双轨审阅</div><div class="el" id="sm_b_b" data-kind="text" style="position:absolute;left:370px;top:220px;width:220px;height:70px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">数字门禁 + 视觉审阅 + 真渲染</div><div class="el" id="sm_c" data-kind="shape" data-shape="roundRect" style="position:absolute;left:640px;top:130px;width:260px;height:180px;border-radius:8px;background:#D1FAE5"></div><div class="el" id="sm_c_t" data-kind="text" style="position:absolute;left:660px;top:150px;width:220px;height:60px;font-size:16px;line-height:1.2;color:#065F46;font-family:微软雅黑;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">保真交付</div><div class="el" id="sm_c_b" data-kind="text" style="position:absolute;left:660px;top:220px;width:220px;height:70px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">splice / slice / patch</div><div class="el" id="sm_foot" data-kind="text" style="position:absolute;left:60px;top:360px;width:840px;height:90px;font-size:14px;line-height:1.2;color:#1F2937;font-family:微软雅黑;overflow:visible;white-space:pre-wrap;word-break:break-word">结论:元素区块冲突被机器防住(声明制),质量可验证(三轨),保真可一指令(splice)。</div></div></body></html>