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,2325 @@
1
+ {
2
+ "size": {
3
+ "width": 960,
4
+ "height": 540
5
+ },
6
+ "theme": {
7
+ "colors": {
8
+ "ink": "#1F2937",
9
+ "primary": "#2563EB",
10
+ "accent": "#F59E0B",
11
+ "danger": "#C0392B",
12
+ "steel": "#64748B",
13
+ "bg": "#F8FAFC",
14
+ "deep": "#0F172A",
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
+ },
29
+ "textStyles": {
30
+ "title": {
31
+ "fontSize": 32,
32
+ "color": "$ink",
33
+ "bold": true,
34
+ "fontFamily": "微软雅黑"
35
+ },
36
+ "h1": {
37
+ "fontSize": 22,
38
+ "color": "$ink",
39
+ "bold": true,
40
+ "fontFamily": "微软雅黑"
41
+ },
42
+ "h2": {
43
+ "fontSize": 16,
44
+ "color": "$ink",
45
+ "bold": true,
46
+ "fontFamily": "微软雅黑"
47
+ },
48
+ "body": {
49
+ "fontSize": 14,
50
+ "color": "$ink",
51
+ "fontFamily": "微软雅黑"
52
+ },
53
+ "small": {
54
+ "fontSize": 12,
55
+ "color": "$steel",
56
+ "fontFamily": "微软雅黑"
57
+ }
58
+ },
59
+ "grid": {
60
+ "base": 8
61
+ },
62
+ "safeArea": {
63
+ "top": 34,
64
+ "bottom": 26,
65
+ "left": 40,
66
+ "right": 40
67
+ },
68
+ "minFontSize": 12,
69
+ "themeConformance": "strict"
70
+ },
71
+ "pages": [
72
+ {
73
+ "index": 0,
74
+ "pageNo": 1,
75
+ "file": "pages/01_cover.yaml",
76
+ "name": "pages/01_cover",
77
+ "background": {
78
+ "type": "solid",
79
+ "color": "#F8FAFC"
80
+ },
81
+ "safeArea": {
82
+ "top": 34,
83
+ "bottom": 26,
84
+ "left": 40,
85
+ "right": 40
86
+ },
87
+ "expectedOverlaps": [
88
+ {
89
+ "pair": [
90
+ "band",
91
+ "glow"
92
+ ]
93
+ },
94
+ {
95
+ "pair": [
96
+ "band",
97
+ "title"
98
+ ]
99
+ },
100
+ {
101
+ "pair": [
102
+ "band",
103
+ "sub"
104
+ ]
105
+ },
106
+ {
107
+ "pair": [
108
+ "band",
109
+ "badge"
110
+ ]
111
+ },
112
+ {
113
+ "pair": [
114
+ "band",
115
+ "badge_t"
116
+ ]
117
+ },
118
+ {
119
+ "pair": [
120
+ "glow",
121
+ "title"
122
+ ]
123
+ },
124
+ {
125
+ "pair": [
126
+ "glow",
127
+ "sub"
128
+ ]
129
+ },
130
+ {
131
+ "pair": [
132
+ "badge",
133
+ "badge_t"
134
+ ]
135
+ }
136
+ ],
137
+ "expectedOutOfSafeArea": [
138
+ "band"
139
+ ],
140
+ "contrastExempt": [],
141
+ "overlapMode": "declared",
142
+ "elements": [
143
+ {
144
+ "id": "band",
145
+ "kind": "shape",
146
+ "bounds": {
147
+ "x": 0,
148
+ "y": 0,
149
+ "w": 960,
150
+ "h": 540
151
+ },
152
+ "shape": "rect",
153
+ "fill": {
154
+ "type": "gradient",
155
+ "stops": [
156
+ {
157
+ "pos": 0,
158
+ "color": "#0F172A"
159
+ },
160
+ {
161
+ "pos": 100,
162
+ "color": "#2563EB"
163
+ }
164
+ ],
165
+ "angle": 90
166
+ },
167
+ "rotation": 0
168
+ },
169
+ {
170
+ "id": "glow",
171
+ "kind": "shape",
172
+ "bounds": {
173
+ "x": 660,
174
+ "y": 34,
175
+ "w": 260,
176
+ "h": 260
177
+ },
178
+ "shape": "ellipse",
179
+ "fill": {
180
+ "color": "#FFFFFF",
181
+ "alpha": 18
182
+ },
183
+ "rotation": 0
184
+ },
185
+ {
186
+ "id": "title",
187
+ "kind": "text",
188
+ "bounds": {
189
+ "x": 80,
190
+ "y": 150,
191
+ "w": 700,
192
+ "h": 90
193
+ },
194
+ "style": {
195
+ "fontSize": 32,
196
+ "fontFamily": "微软雅黑",
197
+ "color": "#FFFFFF",
198
+ "bold": true,
199
+ "lineHeight": 1.2,
200
+ "wrap": true
201
+ },
202
+ "metrics": {
203
+ "textW": 407.04000000000013,
204
+ "textH": 38.4,
205
+ "lines": 1,
206
+ "lineWidths": [
207
+ 407.04000000000013
208
+ ],
209
+ "overflowY": 0,
210
+ "overflowX": 0
211
+ },
212
+ "text": "能力验证演示(自建夹具)"
213
+ },
214
+ {
215
+ "id": "sub",
216
+ "kind": "text",
217
+ "bounds": {
218
+ "x": 80,
219
+ "y": 260,
220
+ "w": 600,
221
+ "h": 50
222
+ },
223
+ "style": {
224
+ "fontSize": 22,
225
+ "fontFamily": "微软雅黑",
226
+ "color": "#CBD5E1",
227
+ "bold": true,
228
+ "lineHeight": 1.2,
229
+ "wrap": true
230
+ },
231
+ "metrics": {
232
+ "textW": 363,
233
+ "textH": 26.4,
234
+ "lines": 1,
235
+ "lineWidths": [
236
+ 318.99999999999994
237
+ ],
238
+ "overflowY": 0,
239
+ "overflowX": 0
240
+ },
241
+ "text": "PPTD 中间层 · 声明制 · 双轨审阅"
242
+ },
243
+ {
244
+ "id": "badge",
245
+ "kind": "shape",
246
+ "bounds": {
247
+ "x": 80,
248
+ "y": 420,
249
+ "w": 200,
250
+ "h": 56
251
+ },
252
+ "shape": "chevron",
253
+ "fill": "#F59E0B",
254
+ "rotation": 0
255
+ },
256
+ {
257
+ "id": "badge_t",
258
+ "kind": "text",
259
+ "bounds": {
260
+ "x": 100,
261
+ "y": 430,
262
+ "w": 160,
263
+ "h": 40
264
+ },
265
+ "style": {
266
+ "fontSize": 16,
267
+ "fontFamily": "微软雅黑",
268
+ "color": "#0F172A",
269
+ "bold": true,
270
+ "align": "center",
271
+ "lineHeight": 1.2,
272
+ "wrap": true
273
+ },
274
+ "metrics": {
275
+ "textW": 60.96,
276
+ "textH": 19.2,
277
+ "lines": 1,
278
+ "lineWidths": [
279
+ 60.96
280
+ ],
281
+ "overflowY": 0,
282
+ "overflowX": 0
283
+ },
284
+ "text": "v1.0.0"
285
+ }
286
+ ]
287
+ },
288
+ {
289
+ "index": 1,
290
+ "pageNo": 2,
291
+ "file": "pages/02_arch.yaml",
292
+ "name": "pages/02_arch",
293
+ "background": {
294
+ "type": "solid",
295
+ "color": "#F8FAFC"
296
+ },
297
+ "safeArea": {
298
+ "top": 34,
299
+ "bottom": 26,
300
+ "left": 40,
301
+ "right": 40
302
+ },
303
+ "expectedOverlaps": [
304
+ {
305
+ "pair": [
306
+ "panel",
307
+ "box_a"
308
+ ]
309
+ },
310
+ {
311
+ "pair": [
312
+ "panel",
313
+ "box_b"
314
+ ]
315
+ },
316
+ {
317
+ "pair": [
318
+ "box_a",
319
+ "box_a_t"
320
+ ]
321
+ },
322
+ {
323
+ "pair": [
324
+ "box_a",
325
+ "box_a_b"
326
+ ]
327
+ },
328
+ {
329
+ "pair": [
330
+ "box_b",
331
+ "box_b_t"
332
+ ]
333
+ },
334
+ {
335
+ "pair": [
336
+ "box_b",
337
+ "box_b_b"
338
+ ]
339
+ }
340
+ ],
341
+ "expectedOutOfSafeArea": [],
342
+ "contrastExempt": [],
343
+ "overlapMode": "declared",
344
+ "elements": [
345
+ {
346
+ "id": "panel",
347
+ "kind": "shape",
348
+ "bounds": {
349
+ "x": 60,
350
+ "y": 80,
351
+ "w": 840,
352
+ "h": 380
353
+ },
354
+ "shape": "roundRect",
355
+ "fill": "#FFFFFF",
356
+ "rotation": 0
357
+ },
358
+ {
359
+ "id": "box_a",
360
+ "kind": "shape",
361
+ "bounds": {
362
+ "x": 100,
363
+ "y": 130,
364
+ "w": 350,
365
+ "h": 240
366
+ },
367
+ "shape": "rect",
368
+ "fill": "#DBEAFE",
369
+ "rotation": 0
370
+ },
371
+ {
372
+ "id": "box_a_t",
373
+ "kind": "text",
374
+ "bounds": {
375
+ "x": 120,
376
+ "y": 150,
377
+ "w": 310,
378
+ "h": 60
379
+ },
380
+ "style": {
381
+ "fontSize": 16,
382
+ "fontFamily": "微软雅黑",
383
+ "color": "#1E3A8A",
384
+ "bold": true,
385
+ "lineHeight": 1.2,
386
+ "wrap": true
387
+ },
388
+ "metrics": {
389
+ "textW": 152.64000000000004,
390
+ "textH": 19.2,
391
+ "lines": 1,
392
+ "lineWidths": [
393
+ 152.64000000000004
394
+ ],
395
+ "overflowY": 0,
396
+ "overflowX": 0
397
+ },
398
+ "text": "领域本体(知识层)"
399
+ },
400
+ {
401
+ "id": "box_a_b",
402
+ "kind": "text",
403
+ "bounds": {
404
+ "x": 120,
405
+ "y": 230,
406
+ "w": 310,
407
+ "h": 120
408
+ },
409
+ "style": {
410
+ "fontSize": 14,
411
+ "fontFamily": "微软雅黑",
412
+ "color": "#334155",
413
+ "lineHeight": 1.2,
414
+ "wrap": true
415
+ },
416
+ "metrics": {
417
+ "textW": 308.69999999999993,
418
+ "textH": 33.6,
419
+ "lines": 2,
420
+ "lineWidths": [
421
+ 139.29999999999998,
422
+ 149.1
423
+ ],
424
+ "overflowY": 0,
425
+ "overflowX": 0
426
+ },
427
+ "text": "对象·属性·关系·约束\n换场景 = 换实例,零重构"
428
+ },
429
+ {
430
+ "id": "box_b",
431
+ "kind": "shape",
432
+ "bounds": {
433
+ "x": 510,
434
+ "y": 130,
435
+ "w": 350,
436
+ "h": 240
437
+ },
438
+ "shape": "rect",
439
+ "fill": "#FEF3C7",
440
+ "rotation": 0
441
+ },
442
+ {
443
+ "id": "box_b_t",
444
+ "kind": "text",
445
+ "bounds": {
446
+ "x": 530,
447
+ "y": 150,
448
+ "w": 310,
449
+ "h": 60
450
+ },
451
+ "style": {
452
+ "fontSize": 16,
453
+ "fontFamily": "微软雅黑",
454
+ "color": "#92400E",
455
+ "bold": true,
456
+ "lineHeight": 1.2,
457
+ "wrap": true
458
+ },
459
+ "metrics": {
460
+ "textW": 152.64000000000004,
461
+ "textH": 19.2,
462
+ "lines": 1,
463
+ "lineWidths": [
464
+ 152.64000000000004
465
+ ],
466
+ "overflowY": 0,
467
+ "overflowX": 0
468
+ },
469
+ "text": "仿真内核(执行层)"
470
+ },
471
+ {
472
+ "id": "box_b_b",
473
+ "kind": "text",
474
+ "bounds": {
475
+ "x": 530,
476
+ "y": 230,
477
+ "w": 310,
478
+ "h": 120
479
+ },
480
+ "style": {
481
+ "fontSize": 14,
482
+ "fontFamily": "微软雅黑",
483
+ "color": "#78350F",
484
+ "lineHeight": 1.2,
485
+ "wrap": true
486
+ },
487
+ "metrics": {
488
+ "textW": 335.29999999999995,
489
+ "textH": 33.6,
490
+ "lines": 2,
491
+ "lineWidths": [
492
+ 186.2,
493
+ 140
494
+ ],
495
+ "overflowY": 0,
496
+ "overflowX": 25
497
+ },
498
+ "text": "车间生产·负载评估·计划跟踪\n结论可迁移(泛化性)"
499
+ },
500
+ {
501
+ "id": "arrow",
502
+ "kind": "line",
503
+ "bounds": {
504
+ "x": 450,
505
+ "y": 250,
506
+ "w": 58,
507
+ "h": 1
508
+ },
509
+ "points": [
510
+ [
511
+ 450,
512
+ 250
513
+ ],
514
+ [
515
+ 508,
516
+ 250
517
+ ]
518
+ ]
519
+ },
520
+ {
521
+ "id": "foot",
522
+ "kind": "text",
523
+ "bounds": {
524
+ "x": 100,
525
+ "y": 470,
526
+ "w": 760,
527
+ "h": 40
528
+ },
529
+ "style": {
530
+ "fontSize": 12,
531
+ "fontFamily": "微软雅黑",
532
+ "color": "#64748B",
533
+ "lineHeight": 1.2,
534
+ "wrap": true
535
+ },
536
+ "metrics": {
537
+ "textW": 389.99999999999994,
538
+ "textH": 14.399999999999999,
539
+ "lines": 1,
540
+ "lineWidths": [
541
+ 366
542
+ ],
543
+ "overflowY": 0,
544
+ "overflowX": 0
545
+ },
546
+ "text": "知识层 → 映射 → 执行层:本体驱动仿真的泛化范式(A8 场景也在本页)"
547
+ }
548
+ ]
549
+ },
550
+ {
551
+ "index": 2,
552
+ "pageNo": 3,
553
+ "file": "pages/03_table.yaml",
554
+ "name": "pages/03_table",
555
+ "background": {
556
+ "type": "solid",
557
+ "color": "#F8FAFC"
558
+ },
559
+ "safeArea": {
560
+ "top": 34,
561
+ "bottom": 26,
562
+ "left": 40,
563
+ "right": 40
564
+ },
565
+ "expectedOverlaps": [],
566
+ "expectedOutOfSafeArea": [],
567
+ "contrastExempt": [],
568
+ "overlapMode": "declared",
569
+ "elements": [
570
+ {
571
+ "id": "t_head",
572
+ "kind": "text",
573
+ "bounds": {
574
+ "x": 60,
575
+ "y": 60,
576
+ "w": 400,
577
+ "h": 40
578
+ },
579
+ "style": {
580
+ "fontSize": 22,
581
+ "fontFamily": "微软雅黑",
582
+ "color": "#1F2937",
583
+ "bold": true,
584
+ "lineHeight": 1.2,
585
+ "wrap": true
586
+ },
587
+ "metrics": {
588
+ "textW": 178.42,
589
+ "textH": 26.4,
590
+ "lines": 1,
591
+ "lineWidths": [
592
+ 178.42
593
+ ],
594
+ "overflowY": 0,
595
+ "overflowX": 0
596
+ },
597
+ "text": "对策-指标对照表"
598
+ },
599
+ {
600
+ "id": "tbl",
601
+ "kind": "table",
602
+ "bounds": {
603
+ "x": 60,
604
+ "y": 120,
605
+ "w": 840,
606
+ "h": 300
607
+ },
608
+ "cols": 4,
609
+ "rows": 3,
610
+ "fontPt": 12,
611
+ "metrics": {
612
+ "overflowY": -228,
613
+ "lines": 4,
614
+ "textH": 72
615
+ }
616
+ },
617
+ {
618
+ "id": "t_note",
619
+ "kind": "text",
620
+ "bounds": {
621
+ "x": 60,
622
+ "y": 450,
623
+ "w": 840,
624
+ "h": 40
625
+ },
626
+ "style": {
627
+ "fontSize": 12,
628
+ "fontFamily": "微软雅黑",
629
+ "color": "#64748B",
630
+ "lineHeight": 1.2,
631
+ "wrap": true
632
+ },
633
+ "metrics": {
634
+ "textW": 282,
635
+ "textH": 14.399999999999999,
636
+ "lines": 1,
637
+ "lineWidths": [
638
+ 277.2
639
+ ],
640
+ "overflowY": 0,
641
+ "overflowX": 0
642
+ },
643
+ "text": "注:数据为演示样本(45.6% 为跨页对账演示数字)"
644
+ }
645
+ ]
646
+ },
647
+ {
648
+ "index": 3,
649
+ "pageNo": 4,
650
+ "file": "pages/04_chart.yaml",
651
+ "name": "pages/04_chart",
652
+ "background": {
653
+ "type": "solid",
654
+ "color": "#F8FAFC"
655
+ },
656
+ "safeArea": {
657
+ "top": 34,
658
+ "bottom": 26,
659
+ "left": 40,
660
+ "right": 40
661
+ },
662
+ "expectedOverlaps": [
663
+ {
664
+ "pair": [
665
+ "key",
666
+ "key_t"
667
+ ]
668
+ },
669
+ {
670
+ "pair": [
671
+ "key",
672
+ "key_body"
673
+ ]
674
+ }
675
+ ],
676
+ "expectedOutOfSafeArea": [],
677
+ "contrastExempt": [],
678
+ "overlapMode": "declared",
679
+ "elements": [
680
+ {
681
+ "id": "c_head",
682
+ "kind": "text",
683
+ "bounds": {
684
+ "x": 60,
685
+ "y": 60,
686
+ "w": 400,
687
+ "h": 40
688
+ },
689
+ "style": {
690
+ "fontSize": 22,
691
+ "fontFamily": "微软雅黑",
692
+ "color": "#1F2937",
693
+ "bold": true,
694
+ "lineHeight": 1.2,
695
+ "wrap": true
696
+ },
697
+ "metrics": {
698
+ "textW": 139.92,
699
+ "textH": 26.4,
700
+ "lines": 1,
701
+ "lineWidths": [
702
+ 139.92
703
+ ],
704
+ "overflowY": 0,
705
+ "overflowX": 0
706
+ },
707
+ "text": "仿真运行趋势"
708
+ },
709
+ {
710
+ "id": "chart",
711
+ "kind": "chart",
712
+ "bounds": {
713
+ "x": 60,
714
+ "y": 130,
715
+ "w": 480,
716
+ "h": 300
717
+ },
718
+ "chartType": "line",
719
+ "colors": [
720
+ "#2563EB"
721
+ ]
722
+ },
723
+ {
724
+ "id": "key",
725
+ "kind": "shape",
726
+ "bounds": {
727
+ "x": 580,
728
+ "y": 130,
729
+ "w": 320,
730
+ "h": 300
731
+ },
732
+ "shape": "roundRect",
733
+ "fill": "#FFFFFF",
734
+ "rotation": 0
735
+ },
736
+ {
737
+ "id": "key_t",
738
+ "kind": "text",
739
+ "bounds": {
740
+ "x": 610,
741
+ "y": 160,
742
+ "w": 260,
743
+ "h": 60
744
+ },
745
+ "style": {
746
+ "fontSize": 16,
747
+ "fontFamily": "微软雅黑",
748
+ "color": "#1F2937",
749
+ "bold": true,
750
+ "lineHeight": 1.2,
751
+ "wrap": true
752
+ },
753
+ "metrics": {
754
+ "textW": 67.84,
755
+ "textH": 19.2,
756
+ "lines": 1,
757
+ "lineWidths": [
758
+ 67.84
759
+ ],
760
+ "overflowY": 0,
761
+ "overflowX": 0
762
+ },
763
+ "text": "关键指标"
764
+ },
765
+ {
766
+ "id": "key_body",
767
+ "kind": "text",
768
+ "bounds": {
769
+ "x": 610,
770
+ "y": 240,
771
+ "w": 260,
772
+ "h": 160
773
+ },
774
+ "style": {
775
+ "fontSize": 14,
776
+ "fontFamily": "微软雅黑",
777
+ "color": "#1F2937",
778
+ "lineHeight": 1.2,
779
+ "wrap": true
780
+ },
781
+ "metrics": {
782
+ "textW": 375.2000000000001,
783
+ "textH": 50.400000000000006,
784
+ "lines": 3,
785
+ "lineWidths": [
786
+ 158.2,
787
+ 113.4,
788
+ 63
789
+ ],
790
+ "overflowY": 0,
791
+ "overflowX": 115
792
+ },
793
+ "text": "一次合格率 96%(+8pt)\n综合评 45.6% 提升\n节拍 −15%"
794
+ }
795
+ ]
796
+ },
797
+ {
798
+ "index": 4,
799
+ "pageNo": 5,
800
+ "file": "pages/05_timeline.yaml",
801
+ "name": "pages/05_timeline",
802
+ "background": {
803
+ "type": "solid",
804
+ "color": "#F8FAFC"
805
+ },
806
+ "safeArea": {
807
+ "top": 34,
808
+ "bottom": 26,
809
+ "left": 40,
810
+ "right": 40
811
+ },
812
+ "expectedOverlaps": [
813
+ {
814
+ "pair": [
815
+ "st1",
816
+ "tl_line"
817
+ ]
818
+ },
819
+ {
820
+ "pair": [
821
+ "st2",
822
+ "tl_line"
823
+ ]
824
+ },
825
+ {
826
+ "pair": [
827
+ "st3",
828
+ "tl_line"
829
+ ]
830
+ },
831
+ {
832
+ "pair": [
833
+ "st4",
834
+ "tl_line"
835
+ ]
836
+ },
837
+ {
838
+ "pair": [
839
+ "st5",
840
+ "tl_line"
841
+ ]
842
+ },
843
+ {
844
+ "pair": [
845
+ "st1",
846
+ "st1_t"
847
+ ]
848
+ },
849
+ {
850
+ "pair": [
851
+ "st2",
852
+ "st2_t"
853
+ ]
854
+ },
855
+ {
856
+ "pair": [
857
+ "st3",
858
+ "st3_t"
859
+ ]
860
+ },
861
+ {
862
+ "pair": [
863
+ "st4",
864
+ "st4_t"
865
+ ]
866
+ },
867
+ {
868
+ "pair": [
869
+ "st5",
870
+ "st5_t"
871
+ ]
872
+ }
873
+ ],
874
+ "expectedOutOfSafeArea": [],
875
+ "contrastExempt": [],
876
+ "overlapMode": "declared",
877
+ "elements": [
878
+ {
879
+ "id": "tl_head",
880
+ "kind": "text",
881
+ "bounds": {
882
+ "x": 60,
883
+ "y": 60,
884
+ "w": 500,
885
+ "h": 40
886
+ },
887
+ "style": {
888
+ "fontSize": 22,
889
+ "fontFamily": "微软雅黑",
890
+ "color": "#1F2937",
891
+ "bold": true,
892
+ "lineHeight": 1.2,
893
+ "wrap": true
894
+ },
895
+ "metrics": {
896
+ "textW": 209.87999999999997,
897
+ "textH": 26.4,
898
+ "lines": 1,
899
+ "lineWidths": [
900
+ 209.87999999999997
901
+ ],
902
+ "overflowY": 0,
903
+ "overflowX": 0
904
+ },
905
+ "text": "实施路线(五阶段)"
906
+ },
907
+ {
908
+ "id": "tl_line",
909
+ "kind": "line",
910
+ "bounds": {
911
+ "x": 80,
912
+ "y": 200,
913
+ "w": 780,
914
+ "h": 1
915
+ },
916
+ "points": [
917
+ [
918
+ 80,
919
+ 200
920
+ ],
921
+ [
922
+ 860,
923
+ 200
924
+ ]
925
+ ]
926
+ },
927
+ {
928
+ "id": "st1",
929
+ "kind": "shape",
930
+ "bounds": {
931
+ "x": 60,
932
+ "y": 140,
933
+ "w": 140,
934
+ "h": 60
935
+ },
936
+ "shape": "pentagon",
937
+ "fill": "#2563EB",
938
+ "rotation": 0
939
+ },
940
+ {
941
+ "id": "st1_t",
942
+ "kind": "text",
943
+ "bounds": {
944
+ "x": 70,
945
+ "y": 148,
946
+ "w": 120,
947
+ "h": 44
948
+ },
949
+ "style": {
950
+ "fontSize": 16,
951
+ "fontFamily": "微软雅黑",
952
+ "color": "#FFFFFF",
953
+ "bold": true,
954
+ "align": "center",
955
+ "lineHeight": 1.2,
956
+ "wrap": true
957
+ },
958
+ "metrics": {
959
+ "textW": 33.92,
960
+ "textH": 19.2,
961
+ "lines": 1,
962
+ "lineWidths": [
963
+ 33.92
964
+ ],
965
+ "overflowY": 0,
966
+ "overflowX": 0
967
+ },
968
+ "text": "建模"
969
+ },
970
+ {
971
+ "id": "st2",
972
+ "kind": "shape",
973
+ "bounds": {
974
+ "x": 220,
975
+ "y": 140,
976
+ "w": 140,
977
+ "h": 60
978
+ },
979
+ "shape": "pentagon",
980
+ "fill": "#3B82F6",
981
+ "rotation": 0
982
+ },
983
+ {
984
+ "id": "st2_t",
985
+ "kind": "text",
986
+ "bounds": {
987
+ "x": 230,
988
+ "y": 148,
989
+ "w": 120,
990
+ "h": 44
991
+ },
992
+ "style": {
993
+ "fontSize": 16,
994
+ "fontFamily": "微软雅黑",
995
+ "color": "#FFFFFF",
996
+ "bold": true,
997
+ "align": "center",
998
+ "lineHeight": 1.2,
999
+ "wrap": true
1000
+ },
1001
+ "metrics": {
1002
+ "textW": 33.92,
1003
+ "textH": 19.2,
1004
+ "lines": 1,
1005
+ "lineWidths": [
1006
+ 33.92
1007
+ ],
1008
+ "overflowY": 0,
1009
+ "overflowX": 0
1010
+ },
1011
+ "text": "映射"
1012
+ },
1013
+ {
1014
+ "id": "st3",
1015
+ "kind": "shape",
1016
+ "bounds": {
1017
+ "x": 380,
1018
+ "y": 140,
1019
+ "w": 140,
1020
+ "h": 60
1021
+ },
1022
+ "shape": "pentagon",
1023
+ "fill": "#F59E0B",
1024
+ "rotation": 0
1025
+ },
1026
+ {
1027
+ "id": "st3_t",
1028
+ "kind": "text",
1029
+ "bounds": {
1030
+ "x": 390,
1031
+ "y": 148,
1032
+ "w": 120,
1033
+ "h": 44
1034
+ },
1035
+ "style": {
1036
+ "fontSize": 16,
1037
+ "fontFamily": "微软雅黑",
1038
+ "color": "#FFFFFF",
1039
+ "bold": true,
1040
+ "align": "center",
1041
+ "lineHeight": 1.2,
1042
+ "wrap": true
1043
+ },
1044
+ "metrics": {
1045
+ "textW": 33.92,
1046
+ "textH": 19.2,
1047
+ "lines": 1,
1048
+ "lineWidths": [
1049
+ 33.92
1050
+ ],
1051
+ "overflowY": 0,
1052
+ "overflowX": 0
1053
+ },
1054
+ "text": "仿真"
1055
+ },
1056
+ {
1057
+ "id": "st4",
1058
+ "kind": "shape",
1059
+ "bounds": {
1060
+ "x": 540,
1061
+ "y": 140,
1062
+ "w": 140,
1063
+ "h": 60
1064
+ },
1065
+ "shape": "pentagon",
1066
+ "fill": "#8B5CF6",
1067
+ "rotation": 0
1068
+ },
1069
+ {
1070
+ "id": "st4_t",
1071
+ "kind": "text",
1072
+ "bounds": {
1073
+ "x": 550,
1074
+ "y": 148,
1075
+ "w": 120,
1076
+ "h": 44
1077
+ },
1078
+ "style": {
1079
+ "fontSize": 16,
1080
+ "fontFamily": "微软雅黑",
1081
+ "color": "#FFFFFF",
1082
+ "bold": true,
1083
+ "align": "center",
1084
+ "lineHeight": 1.2,
1085
+ "wrap": true
1086
+ },
1087
+ "metrics": {
1088
+ "textW": 33.92,
1089
+ "textH": 19.2,
1090
+ "lines": 1,
1091
+ "lineWidths": [
1092
+ 33.92
1093
+ ],
1094
+ "overflowY": 0,
1095
+ "overflowX": 0
1096
+ },
1097
+ "text": "验证"
1098
+ },
1099
+ {
1100
+ "id": "st5",
1101
+ "kind": "shape",
1102
+ "bounds": {
1103
+ "x": 700,
1104
+ "y": 140,
1105
+ "w": 140,
1106
+ "h": 60
1107
+ },
1108
+ "shape": "pentagon",
1109
+ "fill": "#10B981",
1110
+ "rotation": 0
1111
+ },
1112
+ {
1113
+ "id": "st5_t",
1114
+ "kind": "text",
1115
+ "bounds": {
1116
+ "x": 710,
1117
+ "y": 148,
1118
+ "w": 120,
1119
+ "h": 44
1120
+ },
1121
+ "style": {
1122
+ "fontSize": 16,
1123
+ "fontFamily": "微软雅黑",
1124
+ "color": "#FFFFFF",
1125
+ "bold": true,
1126
+ "align": "center",
1127
+ "lineHeight": 1.2,
1128
+ "wrap": true
1129
+ },
1130
+ "metrics": {
1131
+ "textW": 33.92,
1132
+ "textH": 19.2,
1133
+ "lines": 1,
1134
+ "lineWidths": [
1135
+ 33.92
1136
+ ],
1137
+ "overflowY": 0,
1138
+ "overflowX": 0
1139
+ },
1140
+ "text": "推广"
1141
+ },
1142
+ {
1143
+ "id": "tl_note",
1144
+ "kind": "text",
1145
+ "bounds": {
1146
+ "x": 80,
1147
+ "y": 300,
1148
+ "w": 800,
1149
+ "h": 100
1150
+ },
1151
+ "style": {
1152
+ "fontSize": 14,
1153
+ "fontFamily": "微软雅黑",
1154
+ "color": "#1F2937",
1155
+ "lineHeight": 1.2,
1156
+ "wrap": true
1157
+ },
1158
+ "metrics": {
1159
+ "textW": 740.6000000000003,
1160
+ "textH": 33.6,
1161
+ "lines": 2,
1162
+ "lineWidths": [
1163
+ 465.50000000000006,
1164
+ 210
1165
+ ],
1166
+ "overflowY": 0,
1167
+ "overflowX": 0
1168
+ },
1169
+ "text": "单向推进 + 每阶段门禁:建模评审 → 映射校验 → 仿真对标 → 验证报告 → 批量复制\n(时间线为示意图,非真实排期)"
1170
+ }
1171
+ ]
1172
+ },
1173
+ {
1174
+ "index": 5,
1175
+ "pageNo": 6,
1176
+ "file": "pages/06_longtext.yaml",
1177
+ "name": "pages/06_longtext",
1178
+ "background": {
1179
+ "type": "solid",
1180
+ "color": "#F8FAFC"
1181
+ },
1182
+ "safeArea": {
1183
+ "top": 34,
1184
+ "bottom": 26,
1185
+ "left": 40,
1186
+ "right": 40
1187
+ },
1188
+ "expectedOverlaps": [],
1189
+ "expectedOutOfSafeArea": [],
1190
+ "contrastExempt": [],
1191
+ "overlapMode": "declared",
1192
+ "elements": [
1193
+ {
1194
+ "id": "lt_head",
1195
+ "kind": "text",
1196
+ "bounds": {
1197
+ "x": 60,
1198
+ "y": 60,
1199
+ "w": 500,
1200
+ "h": 40
1201
+ },
1202
+ "style": {
1203
+ "fontSize": 22,
1204
+ "fontFamily": "微软雅黑",
1205
+ "color": "#1F2937",
1206
+ "bold": true,
1207
+ "lineHeight": 1.2,
1208
+ "wrap": true
1209
+ },
1210
+ "metrics": {
1211
+ "textW": 382.5799999999999,
1212
+ "textH": 26.4,
1213
+ "lines": 1,
1214
+ "lineWidths": [
1215
+ 364.97999999999996
1216
+ ],
1217
+ "overflowY": 0,
1218
+ "overflowX": 0
1219
+ },
1220
+ "text": "长文本容纳(保守估算 + 显式断行)"
1221
+ },
1222
+ {
1223
+ "id": "lt_body",
1224
+ "kind": "text",
1225
+ "bounds": {
1226
+ "x": 60,
1227
+ "y": 130,
1228
+ "w": 840,
1229
+ "h": 340
1230
+ },
1231
+ "style": {
1232
+ "fontSize": 14,
1233
+ "fontFamily": "微软雅黑",
1234
+ "color": "#1F2937",
1235
+ "lineHeight": 1.2,
1236
+ "wrap": true
1237
+ },
1238
+ "metrics": {
1239
+ "textW": 2016.7000000000012,
1240
+ "textH": 67.2,
1241
+ "lines": 4,
1242
+ "lineWidths": [
1243
+ 596.4000000000001,
1244
+ 322,
1245
+ 597.8,
1246
+ 417.2
1247
+ ],
1248
+ "overflowY": 0,
1249
+ "overflowX": 1177
1250
+ },
1251
+ "text": "这一段用于验证长文本在保守估算下的处理:中文全角加粗按 1.06 系数、行高 1.2、标点禁则——\n显式断行是长句的最佳实践,容器也必须给足高度。\n本夹具故意把每行控制在 40 字以内,并预留 340px 高度(约 20 行×16.8px),确保门禁零错误,\n同时验证保守估算不误报:若容器足够,estimate 与实测应一致。"
1252
+ }
1253
+ ]
1254
+ },
1255
+ {
1256
+ "index": 6,
1257
+ "pageNo": 7,
1258
+ "file": "pages/07_safearea.yaml",
1259
+ "name": "pages/07_safearea",
1260
+ "background": {
1261
+ "type": "solid",
1262
+ "color": "#F8FAFC"
1263
+ },
1264
+ "safeArea": {
1265
+ "top": 34,
1266
+ "bottom": 26,
1267
+ "left": 40,
1268
+ "right": 40
1269
+ },
1270
+ "expectedOverlaps": [
1271
+ {
1272
+ "pair": [
1273
+ "logo",
1274
+ "logo_t"
1275
+ ]
1276
+ },
1277
+ {
1278
+ "pair": [
1279
+ "footer",
1280
+ "footer_t"
1281
+ ]
1282
+ }
1283
+ ],
1284
+ "expectedOutOfSafeArea": [
1285
+ "logo",
1286
+ "logo_t",
1287
+ "footer",
1288
+ "footer_t"
1289
+ ],
1290
+ "contrastExempt": [],
1291
+ "overlapMode": "declared",
1292
+ "elements": [
1293
+ {
1294
+ "id": "logo",
1295
+ "kind": "shape",
1296
+ "bounds": {
1297
+ "x": 895,
1298
+ "y": 8,
1299
+ "w": 40,
1300
+ "h": 30
1301
+ },
1302
+ "shape": "ellipse",
1303
+ "fill": "#2563EB",
1304
+ "rotation": 0
1305
+ },
1306
+ {
1307
+ "id": "logo_t",
1308
+ "kind": "text",
1309
+ "bounds": {
1310
+ "x": 897,
1311
+ "y": 12,
1312
+ "w": 36,
1313
+ "h": 24
1314
+ },
1315
+ "style": {
1316
+ "fontSize": 14,
1317
+ "fontFamily": "微软雅黑",
1318
+ "color": "#FFFFFF",
1319
+ "align": "center",
1320
+ "lineHeight": 1.2,
1321
+ "wrap": true
1322
+ },
1323
+ "metrics": {
1324
+ "textW": 8.4,
1325
+ "textH": 16.8,
1326
+ "lines": 1,
1327
+ "lineWidths": [
1328
+ 8.4
1329
+ ],
1330
+ "overflowY": 0,
1331
+ "overflowX": 0
1332
+ },
1333
+ "text": "S"
1334
+ },
1335
+ {
1336
+ "id": "sa_title",
1337
+ "kind": "text",
1338
+ "bounds": {
1339
+ "x": 60,
1340
+ "y": 70,
1341
+ "w": 600,
1342
+ "h": 40
1343
+ },
1344
+ "style": {
1345
+ "fontSize": 22,
1346
+ "fontFamily": "微软雅黑",
1347
+ "color": "#1F2937",
1348
+ "bold": true,
1349
+ "lineHeight": 1.2,
1350
+ "wrap": true
1351
+ },
1352
+ "metrics": {
1353
+ "textW": 460.67999999999995,
1354
+ "textH": 26.4,
1355
+ "lines": 1,
1356
+ "lineWidths": [
1357
+ 451.87999999999994
1358
+ ],
1359
+ "overflowY": 0,
1360
+ "overflowX": 0
1361
+ },
1362
+ "text": "安全区与页脚带声明(logo 落在安全区外)"
1363
+ },
1364
+ {
1365
+ "id": "sa_body",
1366
+ "kind": "text",
1367
+ "bounds": {
1368
+ "x": 60,
1369
+ "y": 140,
1370
+ "w": 840,
1371
+ "h": 200
1372
+ },
1373
+ "style": {
1374
+ "fontSize": 14,
1375
+ "fontFamily": "微软雅黑",
1376
+ "color": "#1F2937",
1377
+ "lineHeight": 1.2,
1378
+ "wrap": true
1379
+ },
1380
+ "metrics": {
1381
+ "textW": 1121.3999999999996,
1382
+ "textH": 33.6,
1383
+ "lines": 2,
1384
+ "lineWidths": [
1385
+ 443.79999999999995,
1386
+ 634.9000000000001
1387
+ ],
1388
+ "overflowY": 0,
1389
+ "overflowX": 281
1390
+ },
1391
+ "text": "主题 safeArea 定义为顶/底/左/右 34/26/40/40px:内容不得侵入。\n页脚带(y≥514)属于安全区外——如需放角标,用 expectedOutOfSafeArea 声明(已声明 logo)。"
1392
+ },
1393
+ {
1394
+ "id": "footer",
1395
+ "kind": "shape",
1396
+ "bounds": {
1397
+ "x": 0,
1398
+ "y": 514,
1399
+ "w": 960,
1400
+ "h": 26
1401
+ },
1402
+ "shape": "rect",
1403
+ "fill": "#E2E8F0",
1404
+ "rotation": 0
1405
+ },
1406
+ {
1407
+ "id": "footer_t",
1408
+ "kind": "text",
1409
+ "bounds": {
1410
+ "x": 60,
1411
+ "y": 518,
1412
+ "w": 300,
1413
+ "h": 20
1414
+ },
1415
+ "style": {
1416
+ "fontSize": 12,
1417
+ "fontFamily": "微软雅黑",
1418
+ "color": "#64748B",
1419
+ "lineHeight": 1.2,
1420
+ "wrap": true
1421
+ },
1422
+ "metrics": {
1423
+ "textW": 157.79999999999998,
1424
+ "textH": 14.399999999999999,
1425
+ "lines": 1,
1426
+ "lineWidths": [
1427
+ 148.2
1428
+ ],
1429
+ "overflowY": 0,
1430
+ "overflowX": 0
1431
+ },
1432
+ "text": "页脚带:夹具页脚 © v1.0.0"
1433
+ }
1434
+ ]
1435
+ },
1436
+ {
1437
+ "index": 7,
1438
+ "pageNo": 8,
1439
+ "file": "pages/08_contrast.yaml",
1440
+ "name": "pages/08_contrast",
1441
+ "background": {
1442
+ "type": "solid",
1443
+ "color": "#F8FAFC"
1444
+ },
1445
+ "safeArea": {
1446
+ "top": 34,
1447
+ "bottom": 26,
1448
+ "left": 40,
1449
+ "right": 40
1450
+ },
1451
+ "expectedOverlaps": [
1452
+ {
1453
+ "pair": [
1454
+ "carrier",
1455
+ "carrier_t"
1456
+ ]
1457
+ }
1458
+ ],
1459
+ "expectedOutOfSafeArea": [],
1460
+ "contrastExempt": [],
1461
+ "overlapMode": "declared",
1462
+ "elements": [
1463
+ {
1464
+ "id": "ct_head",
1465
+ "kind": "text",
1466
+ "bounds": {
1467
+ "x": 60,
1468
+ "y": 60,
1469
+ "w": 600,
1470
+ "h": 40
1471
+ },
1472
+ "style": {
1473
+ "fontSize": 22,
1474
+ "fontFamily": "微软雅黑",
1475
+ "color": "#1F2937",
1476
+ "bold": true,
1477
+ "lineHeight": 1.2,
1478
+ "wrap": true
1479
+ },
1480
+ "metrics": {
1481
+ "textW": 326.47999999999996,
1482
+ "textH": 26.4,
1483
+ "lines": 1,
1484
+ "lineWidths": [
1485
+ 326.47999999999996
1486
+ ],
1487
+ "overflowY": 0,
1488
+ "overflowX": 0
1489
+ },
1490
+ "text": "对比度承载面(渐变深底白字)"
1491
+ },
1492
+ {
1493
+ "id": "carrier",
1494
+ "kind": "shape",
1495
+ "bounds": {
1496
+ "x": 60,
1497
+ "y": 150,
1498
+ "w": 400,
1499
+ "h": 180
1500
+ },
1501
+ "shape": "parallelogram",
1502
+ "fill": {
1503
+ "type": "gradient",
1504
+ "stops": [
1505
+ {
1506
+ "pos": 0,
1507
+ "color": "#0F172A"
1508
+ },
1509
+ {
1510
+ "pos": 100,
1511
+ "color": "#2563EB"
1512
+ }
1513
+ ],
1514
+ "angle": 90
1515
+ },
1516
+ "rotation": 0
1517
+ },
1518
+ {
1519
+ "id": "carrier_t",
1520
+ "kind": "text",
1521
+ "bounds": {
1522
+ "x": 110,
1523
+ "y": 230,
1524
+ "w": 300,
1525
+ "h": 60
1526
+ },
1527
+ "style": {
1528
+ "fontSize": 16,
1529
+ "fontFamily": "微软雅黑",
1530
+ "color": "#FFFFFF",
1531
+ "bold": true,
1532
+ "align": "center",
1533
+ "lineHeight": 1.2,
1534
+ "wrap": true
1535
+ },
1536
+ "metrics": {
1537
+ "textW": 101.76000000000002,
1538
+ "textH": 19.2,
1539
+ "lines": 1,
1540
+ "lineWidths": [
1541
+ 101.76000000000002
1542
+ ],
1543
+ "overflowY": 0,
1544
+ "overflowX": 0
1545
+ },
1546
+ "text": "深底上的白字"
1547
+ },
1548
+ {
1549
+ "id": "ct_note",
1550
+ "kind": "text",
1551
+ "bounds": {
1552
+ "x": 520,
1553
+ "y": 170,
1554
+ "w": 380,
1555
+ "h": 140
1556
+ },
1557
+ "style": {
1558
+ "fontSize": 14,
1559
+ "fontFamily": "微软雅黑",
1560
+ "color": "#1F2937",
1561
+ "lineHeight": 1.2,
1562
+ "wrap": true
1563
+ },
1564
+ "metrics": {
1565
+ "textW": 593.6,
1566
+ "textH": 33.6,
1567
+ "lines": 2,
1568
+ "lineWidths": [
1569
+ 373.8,
1570
+ 202.99999999999997
1571
+ ],
1572
+ "overflowY": 0,
1573
+ "overflowX": 214
1574
+ },
1575
+ "text": "对比度启发式以最近承载面(渐变中途 stop)为基准——本页不应报\"白字 vs 页面背景\"误报。"
1576
+ }
1577
+ ]
1578
+ },
1579
+ {
1580
+ "index": 8,
1581
+ "pageNo": 9,
1582
+ "file": "pages/09_custgeom.yaml",
1583
+ "name": "pages/09_custgeom",
1584
+ "background": {
1585
+ "type": "solid",
1586
+ "color": "#F8FAFC"
1587
+ },
1588
+ "safeArea": {
1589
+ "top": 34,
1590
+ "bottom": 26,
1591
+ "left": 40,
1592
+ "right": 40
1593
+ },
1594
+ "expectedOverlaps": [],
1595
+ "expectedOutOfSafeArea": [
1596
+ "arc"
1597
+ ],
1598
+ "contrastExempt": [],
1599
+ "overlapMode": "declared",
1600
+ "elements": [
1601
+ {
1602
+ "id": "cg_head",
1603
+ "kind": "text",
1604
+ "bounds": {
1605
+ "x": 60,
1606
+ "y": 60,
1607
+ "w": 600,
1608
+ "h": 40
1609
+ },
1610
+ "style": {
1611
+ "fontSize": 22,
1612
+ "fontFamily": "微软雅黑",
1613
+ "color": "#1F2937",
1614
+ "bold": true,
1615
+ "lineHeight": 1.2,
1616
+ "wrap": true
1617
+ },
1618
+ "metrics": {
1619
+ "textW": 376.19999999999993,
1620
+ "textH": 26.4,
1621
+ "lines": 1,
1622
+ "lineWidths": [
1623
+ 367.3999999999999
1624
+ ],
1625
+ "overflowY": 0,
1626
+ "overflowX": 0
1627
+ },
1628
+ "text": "custGeom 自定义几何(弧带装饰)"
1629
+ },
1630
+ {
1631
+ "id": "arc",
1632
+ "kind": "shape",
1633
+ "bounds": {
1634
+ "x": 600,
1635
+ "y": 320,
1636
+ "w": 320,
1637
+ "h": 200
1638
+ },
1639
+ "shape": "custGeom",
1640
+ "fill": {
1641
+ "color": "#2563EB",
1642
+ "alpha": 35
1643
+ },
1644
+ "path": {
1645
+ "w": 320,
1646
+ "h": 200,
1647
+ "commands": [
1648
+ {
1649
+ "cmd": "moveTo",
1650
+ "pts": [
1651
+ [
1652
+ 0,
1653
+ 200
1654
+ ]
1655
+ ]
1656
+ },
1657
+ {
1658
+ "cmd": "arcTo",
1659
+ "pts": [
1660
+ [
1661
+ 160,
1662
+ 100
1663
+ ]
1664
+ ],
1665
+ "wR": 160,
1666
+ "hR": 100,
1667
+ "stAng": 0,
1668
+ "swAng": 5400000
1669
+ },
1670
+ {
1671
+ "cmd": "lnTo",
1672
+ "pts": [
1673
+ [
1674
+ 200,
1675
+ 60
1676
+ ]
1677
+ ]
1678
+ },
1679
+ {
1680
+ "cmd": "cubicBezTo",
1681
+ "pts": [
1682
+ [
1683
+ 180,
1684
+ 40
1685
+ ],
1686
+ [
1687
+ 120,
1688
+ 20
1689
+ ],
1690
+ [
1691
+ 0,
1692
+ 20
1693
+ ]
1694
+ ]
1695
+ },
1696
+ {
1697
+ "cmd": "close"
1698
+ }
1699
+ ]
1700
+ },
1701
+ "rotation": 0
1702
+ },
1703
+ {
1704
+ "id": "cg_body",
1705
+ "kind": "text",
1706
+ "bounds": {
1707
+ "x": 60,
1708
+ "y": 140,
1709
+ "w": 500,
1710
+ "h": 160
1711
+ },
1712
+ "style": {
1713
+ "fontSize": 14,
1714
+ "fontFamily": "微软雅黑",
1715
+ "color": "#1F2937",
1716
+ "lineHeight": 1.2,
1717
+ "wrap": true
1718
+ },
1719
+ "metrics": {
1720
+ "textW": 664.2999999999995,
1721
+ "textH": 33.6,
1722
+ "lines": 2,
1723
+ "lineWidths": [
1724
+ 350.7,
1725
+ 302.40000000000003
1726
+ ],
1727
+ "overflowY": 0,
1728
+ "overflowX": 164
1729
+ },
1730
+ "text": "弧带为装饰层(role: decoration 豁免重叠);几何:moveTo/arcTo/lnTo/cubicBezTo/close。"
1731
+ },
1732
+ {
1733
+ "id": "deco",
1734
+ "kind": "shape",
1735
+ "bounds": {
1736
+ "x": 700,
1737
+ "y": 60,
1738
+ "w": 120,
1739
+ "h": 120
1740
+ },
1741
+ "role": "decoration",
1742
+ "shape": "ellipse",
1743
+ "fill": {
1744
+ "color": "#F59E0B",
1745
+ "alpha": 30
1746
+ },
1747
+ "rotation": 0
1748
+ }
1749
+ ]
1750
+ },
1751
+ {
1752
+ "index": 9,
1753
+ "pageNo": 10,
1754
+ "file": "pages/10_numbers.yaml",
1755
+ "name": "pages/10_numbers",
1756
+ "background": {
1757
+ "type": "solid",
1758
+ "color": "#F8FAFC"
1759
+ },
1760
+ "safeArea": {
1761
+ "top": 34,
1762
+ "bottom": 26,
1763
+ "left": 40,
1764
+ "right": 40
1765
+ },
1766
+ "expectedOverlaps": [
1767
+ {
1768
+ "pair": [
1769
+ "num_card",
1770
+ "num_v"
1771
+ ]
1772
+ },
1773
+ {
1774
+ "pair": [
1775
+ "num_card",
1776
+ "num_l"
1777
+ ]
1778
+ }
1779
+ ],
1780
+ "expectedOutOfSafeArea": [],
1781
+ "contrastExempt": [],
1782
+ "overlapMode": "declared",
1783
+ "elements": [
1784
+ {
1785
+ "id": "num_card",
1786
+ "kind": "shape",
1787
+ "bounds": {
1788
+ "x": 60,
1789
+ "y": 90,
1790
+ "w": 380,
1791
+ "h": 220
1792
+ },
1793
+ "shape": "roundRect",
1794
+ "fill": "#FFFFFF",
1795
+ "rotation": 0
1796
+ },
1797
+ {
1798
+ "id": "num_v",
1799
+ "kind": "text",
1800
+ "bounds": {
1801
+ "x": 100,
1802
+ "y": 120,
1803
+ "w": 300,
1804
+ "h": 80
1805
+ },
1806
+ "style": {
1807
+ "fontSize": 32,
1808
+ "fontFamily": "微软雅黑",
1809
+ "color": "#2563EB",
1810
+ "bold": true,
1811
+ "align": "center",
1812
+ "lineHeight": 1.2,
1813
+ "wrap": true
1814
+ },
1815
+ "metrics": {
1816
+ "textW": 101.75999999999999,
1817
+ "textH": 38.4,
1818
+ "lines": 1,
1819
+ "lineWidths": [
1820
+ 101.75999999999999
1821
+ ],
1822
+ "overflowY": 0,
1823
+ "overflowX": 0
1824
+ },
1825
+ "text": "45.6%"
1826
+ },
1827
+ {
1828
+ "id": "num_l",
1829
+ "kind": "text",
1830
+ "bounds": {
1831
+ "x": 100,
1832
+ "y": 220,
1833
+ "w": 300,
1834
+ "h": 40
1835
+ },
1836
+ "style": {
1837
+ "fontSize": 12,
1838
+ "fontFamily": "微软雅黑",
1839
+ "color": "#64748B",
1840
+ "align": "center",
1841
+ "lineHeight": 1.2,
1842
+ "wrap": true
1843
+ },
1844
+ "metrics": {
1845
+ "textW": 168,
1846
+ "textH": 14.399999999999999,
1847
+ "lines": 1,
1848
+ "lineWidths": [
1849
+ 158.4
1850
+ ],
1851
+ "overflowY": 0,
1852
+ "overflowX": 0
1853
+ },
1854
+ "text": "综合效率提升(与 04 页同值)"
1855
+ },
1856
+ {
1857
+ "id": "num_note",
1858
+ "kind": "text",
1859
+ "bounds": {
1860
+ "x": 480,
1861
+ "y": 120,
1862
+ "w": 420,
1863
+ "h": 160
1864
+ },
1865
+ "style": {
1866
+ "fontSize": 14,
1867
+ "fontFamily": "微软雅黑",
1868
+ "color": "#1F2937",
1869
+ "lineHeight": 1.2,
1870
+ "wrap": true
1871
+ },
1872
+ "metrics": {
1873
+ "textW": 611.7999999999997,
1874
+ "textH": 33.6,
1875
+ "lines": 2,
1876
+ "lineWidths": [
1877
+ 381.5,
1878
+ 174.30000000000004
1879
+ ],
1880
+ "overflowY": 0,
1881
+ "overflowX": 192
1882
+ },
1883
+ "text": "跨页演示:本页 45.6% 与第 04 页 key_body 的 45.6% 应出现在 ppt_crosscheck 材料包。"
1884
+ }
1885
+ ]
1886
+ },
1887
+ {
1888
+ "index": 10,
1889
+ "pageNo": 11,
1890
+ "file": "pages/11_section.yaml",
1891
+ "name": "pages/11_section",
1892
+ "background": {
1893
+ "type": "solid",
1894
+ "color": "#F8FAFC"
1895
+ },
1896
+ "safeArea": {
1897
+ "top": 34,
1898
+ "bottom": 26,
1899
+ "left": 40,
1900
+ "right": 40
1901
+ },
1902
+ "expectedOverlaps": [
1903
+ {
1904
+ "pair": [
1905
+ "sec_band",
1906
+ "sec_num"
1907
+ ]
1908
+ },
1909
+ {
1910
+ "pair": [
1911
+ "sec_band",
1912
+ "sec_t"
1913
+ ]
1914
+ }
1915
+ ],
1916
+ "expectedOutOfSafeArea": [
1917
+ "sec_band"
1918
+ ],
1919
+ "contrastExempt": [],
1920
+ "overlapMode": "declared",
1921
+ "elements": [
1922
+ {
1923
+ "id": "sec_band",
1924
+ "kind": "shape",
1925
+ "bounds": {
1926
+ "x": 0,
1927
+ "y": 0,
1928
+ "w": 960,
1929
+ "h": 540
1930
+ },
1931
+ "shape": "rect",
1932
+ "fill": "#0F172A",
1933
+ "rotation": 0
1934
+ },
1935
+ {
1936
+ "id": "sec_num",
1937
+ "kind": "text",
1938
+ "bounds": {
1939
+ "x": 80,
1940
+ "y": 180,
1941
+ "w": 300,
1942
+ "h": 120
1943
+ },
1944
+ "style": {
1945
+ "fontSize": 32,
1946
+ "fontFamily": "微软雅黑",
1947
+ "color": "#F59E0B",
1948
+ "bold": true,
1949
+ "lineHeight": 1.2,
1950
+ "wrap": true
1951
+ },
1952
+ "metrics": {
1953
+ "textW": 38.4,
1954
+ "textH": 38.4,
1955
+ "lines": 1,
1956
+ "lineWidths": [
1957
+ 38.4
1958
+ ],
1959
+ "overflowY": 0,
1960
+ "overflowX": 0
1961
+ },
1962
+ "text": "03"
1963
+ },
1964
+ {
1965
+ "id": "sec_t",
1966
+ "kind": "text",
1967
+ "bounds": {
1968
+ "x": 400,
1969
+ "y": 200,
1970
+ "w": 480,
1971
+ "h": 80
1972
+ },
1973
+ "style": {
1974
+ "fontSize": 32,
1975
+ "fontFamily": "微软雅黑",
1976
+ "color": "#FFFFFF",
1977
+ "bold": true,
1978
+ "lineHeight": 1.2,
1979
+ "wrap": true
1980
+ },
1981
+ "metrics": {
1982
+ "textW": 169.60000000000002,
1983
+ "textH": 38.4,
1984
+ "lines": 1,
1985
+ "lineWidths": [
1986
+ 169.60000000000002
1987
+ ],
1988
+ "overflowY": 0,
1989
+ "overflowX": 0
1990
+ },
1991
+ "text": "验证与展望"
1992
+ }
1993
+ ]
1994
+ },
1995
+ {
1996
+ "index": 11,
1997
+ "pageNo": 12,
1998
+ "file": "pages/12_summary.yaml",
1999
+ "name": "pages/12_summary",
2000
+ "background": {
2001
+ "type": "solid",
2002
+ "color": "#F8FAFC"
2003
+ },
2004
+ "safeArea": {
2005
+ "top": 34,
2006
+ "bottom": 26,
2007
+ "left": 40,
2008
+ "right": 40
2009
+ },
2010
+ "expectedOverlaps": [
2011
+ {
2012
+ "pair": [
2013
+ "sm_a",
2014
+ "sm_a_t"
2015
+ ]
2016
+ },
2017
+ {
2018
+ "pair": [
2019
+ "sm_a",
2020
+ "sm_a_b"
2021
+ ]
2022
+ },
2023
+ {
2024
+ "pair": [
2025
+ "sm_b",
2026
+ "sm_b_t"
2027
+ ]
2028
+ },
2029
+ {
2030
+ "pair": [
2031
+ "sm_b",
2032
+ "sm_b_b"
2033
+ ]
2034
+ },
2035
+ {
2036
+ "pair": [
2037
+ "sm_c",
2038
+ "sm_c_t"
2039
+ ]
2040
+ },
2041
+ {
2042
+ "pair": [
2043
+ "sm_c",
2044
+ "sm_c_b"
2045
+ ]
2046
+ }
2047
+ ],
2048
+ "expectedOutOfSafeArea": [],
2049
+ "contrastExempt": [],
2050
+ "overlapMode": "declared",
2051
+ "elements": [
2052
+ {
2053
+ "id": "sm_head",
2054
+ "kind": "text",
2055
+ "bounds": {
2056
+ "x": 60,
2057
+ "y": 60,
2058
+ "w": 600,
2059
+ "h": 40
2060
+ },
2061
+ "style": {
2062
+ "fontSize": 22,
2063
+ "fontFamily": "微软雅黑",
2064
+ "color": "#1F2937",
2065
+ "bold": true,
2066
+ "lineHeight": 1.2,
2067
+ "wrap": true
2068
+ },
2069
+ "metrics": {
2070
+ "textW": 279.84,
2071
+ "textH": 26.4,
2072
+ "lines": 1,
2073
+ "lineWidths": [
2074
+ 279.84
2075
+ ],
2076
+ "overflowY": 0,
2077
+ "overflowX": 0
2078
+ },
2079
+ "text": "总结:一条可验证的生产线"
2080
+ },
2081
+ {
2082
+ "id": "sm_a",
2083
+ "kind": "shape",
2084
+ "bounds": {
2085
+ "x": 60,
2086
+ "y": 130,
2087
+ "w": 260,
2088
+ "h": 180
2089
+ },
2090
+ "shape": "roundRect",
2091
+ "fill": "#DBEAFE",
2092
+ "rotation": 0
2093
+ },
2094
+ {
2095
+ "id": "sm_a_t",
2096
+ "kind": "text",
2097
+ "bounds": {
2098
+ "x": 80,
2099
+ "y": 150,
2100
+ "w": 220,
2101
+ "h": 60
2102
+ },
2103
+ "style": {
2104
+ "fontSize": 16,
2105
+ "fontFamily": "微软雅黑",
2106
+ "color": "#1E3A8A",
2107
+ "bold": true,
2108
+ "align": "center",
2109
+ "lineHeight": 1.2,
2110
+ "wrap": true
2111
+ },
2112
+ "metrics": {
2113
+ "textW": 50.88,
2114
+ "textH": 19.2,
2115
+ "lines": 1,
2116
+ "lineWidths": [
2117
+ 50.88
2118
+ ],
2119
+ "overflowY": 0,
2120
+ "overflowX": 0
2121
+ },
2122
+ "text": "声明制"
2123
+ },
2124
+ {
2125
+ "id": "sm_a_b",
2126
+ "kind": "text",
2127
+ "bounds": {
2128
+ "x": 80,
2129
+ "y": 220,
2130
+ "w": 220,
2131
+ "h": 70
2132
+ },
2133
+ "style": {
2134
+ "fontSize": 14,
2135
+ "fontFamily": "微软雅黑",
2136
+ "color": "#1F2937",
2137
+ "lineHeight": 1.2,
2138
+ "wrap": true
2139
+ },
2140
+ "metrics": {
2141
+ "textW": 168,
2142
+ "textH": 16.8,
2143
+ "lines": 1,
2144
+ "lineWidths": [
2145
+ 168
2146
+ ],
2147
+ "overflowY": 0,
2148
+ "overflowX": 0
2149
+ },
2150
+ "text": "冲突防不住?声明设计意图"
2151
+ },
2152
+ {
2153
+ "id": "sm_b",
2154
+ "kind": "shape",
2155
+ "bounds": {
2156
+ "x": 350,
2157
+ "y": 130,
2158
+ "w": 260,
2159
+ "h": 180
2160
+ },
2161
+ "shape": "roundRect",
2162
+ "fill": "#FEF3C7",
2163
+ "rotation": 0
2164
+ },
2165
+ {
2166
+ "id": "sm_b_t",
2167
+ "kind": "text",
2168
+ "bounds": {
2169
+ "x": 370,
2170
+ "y": 150,
2171
+ "w": 220,
2172
+ "h": 60
2173
+ },
2174
+ "style": {
2175
+ "fontSize": 16,
2176
+ "fontFamily": "微软雅黑",
2177
+ "color": "#92400E",
2178
+ "bold": true,
2179
+ "align": "center",
2180
+ "lineHeight": 1.2,
2181
+ "wrap": true
2182
+ },
2183
+ "metrics": {
2184
+ "textW": 67.84,
2185
+ "textH": 19.2,
2186
+ "lines": 1,
2187
+ "lineWidths": [
2188
+ 67.84
2189
+ ],
2190
+ "overflowY": 0,
2191
+ "overflowX": 0
2192
+ },
2193
+ "text": "双轨审阅"
2194
+ },
2195
+ {
2196
+ "id": "sm_b_b",
2197
+ "kind": "text",
2198
+ "bounds": {
2199
+ "x": 370,
2200
+ "y": 220,
2201
+ "w": 220,
2202
+ "h": 70
2203
+ },
2204
+ "style": {
2205
+ "fontSize": 14,
2206
+ "fontFamily": "微软雅黑",
2207
+ "color": "#1F2937",
2208
+ "lineHeight": 1.2,
2209
+ "wrap": true
2210
+ },
2211
+ "metrics": {
2212
+ "textW": 194.6,
2213
+ "textH": 16.8,
2214
+ "lines": 1,
2215
+ "lineWidths": [
2216
+ 172.2
2217
+ ],
2218
+ "overflowY": 0,
2219
+ "overflowX": 0
2220
+ },
2221
+ "text": "数字门禁 + 视觉审阅 + 真渲染"
2222
+ },
2223
+ {
2224
+ "id": "sm_c",
2225
+ "kind": "shape",
2226
+ "bounds": {
2227
+ "x": 640,
2228
+ "y": 130,
2229
+ "w": 260,
2230
+ "h": 180
2231
+ },
2232
+ "shape": "roundRect",
2233
+ "fill": "#D1FAE5",
2234
+ "rotation": 0
2235
+ },
2236
+ {
2237
+ "id": "sm_c_t",
2238
+ "kind": "text",
2239
+ "bounds": {
2240
+ "x": 660,
2241
+ "y": 150,
2242
+ "w": 220,
2243
+ "h": 60
2244
+ },
2245
+ "style": {
2246
+ "fontSize": 16,
2247
+ "fontFamily": "微软雅黑",
2248
+ "color": "#065F46",
2249
+ "bold": true,
2250
+ "align": "center",
2251
+ "lineHeight": 1.2,
2252
+ "wrap": true
2253
+ },
2254
+ "metrics": {
2255
+ "textW": 67.84,
2256
+ "textH": 19.2,
2257
+ "lines": 1,
2258
+ "lineWidths": [
2259
+ 67.84
2260
+ ],
2261
+ "overflowY": 0,
2262
+ "overflowX": 0
2263
+ },
2264
+ "text": "保真交付"
2265
+ },
2266
+ {
2267
+ "id": "sm_c_b",
2268
+ "kind": "text",
2269
+ "bounds": {
2270
+ "x": 660,
2271
+ "y": 220,
2272
+ "w": 220,
2273
+ "h": 70
2274
+ },
2275
+ "style": {
2276
+ "fontSize": 14,
2277
+ "fontFamily": "微软雅黑",
2278
+ "color": "#1F2937",
2279
+ "lineHeight": 1.2,
2280
+ "wrap": true
2281
+ },
2282
+ "metrics": {
2283
+ "textW": 175.00000000000003,
2284
+ "textH": 16.8,
2285
+ "lines": 1,
2286
+ "lineWidths": [
2287
+ 152.6
2288
+ ],
2289
+ "overflowY": 0,
2290
+ "overflowX": 0
2291
+ },
2292
+ "text": "splice / slice / patch"
2293
+ },
2294
+ {
2295
+ "id": "sm_foot",
2296
+ "kind": "text",
2297
+ "bounds": {
2298
+ "x": 60,
2299
+ "y": 360,
2300
+ "w": 840,
2301
+ "h": 90
2302
+ },
2303
+ "style": {
2304
+ "fontSize": 14,
2305
+ "fontFamily": "微软雅黑",
2306
+ "color": "#1F2937",
2307
+ "lineHeight": 1.2,
2308
+ "wrap": true
2309
+ },
2310
+ "metrics": {
2311
+ "textW": 596.3999999999999,
2312
+ "textH": 16.8,
2313
+ "lines": 1,
2314
+ "lineWidths": [
2315
+ 596.4
2316
+ ],
2317
+ "overflowY": 0,
2318
+ "overflowX": 0
2319
+ },
2320
+ "text": "结论:元素区块冲突被机器防住(声明制),质量可验证(三轨),保真可一指令(splice)。"
2321
+ }
2322
+ ]
2323
+ }
2324
+ ]
2325
+ }