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,434 @@
1
+ {
2
+ "size": {
3
+ "width": 960,
4
+ "height": 540
5
+ },
6
+ "theme": {
7
+ "colors": {
8
+ "c1": "#2563EB",
9
+ "c2": "#F59E0B",
10
+ "c3": "#1F2937",
11
+ "c4": "#FFFFFF",
12
+ "c5": "#64748B"
13
+ },
14
+ "textStyles": {
15
+ "title": {
16
+ "fontSize": 40,
17
+ "color": "#2563EB",
18
+ "bold": true
19
+ },
20
+ "body": {
21
+ "fontSize": 18,
22
+ "color": "#2563EB"
23
+ },
24
+ "label": {
25
+ "fontSize": 12,
26
+ "color": "#2563EB"
27
+ }
28
+ },
29
+ "grid": {
30
+ "base": 8
31
+ },
32
+ "safeArea": null,
33
+ "minFontSize": null,
34
+ "themeConformance": "strict"
35
+ },
36
+ "pages": [
37
+ {
38
+ "index": 0,
39
+ "pageNo": 1,
40
+ "file": "pages/slide_01.yaml",
41
+ "name": "pages/slide_01",
42
+ "background": {
43
+ "type": "solid",
44
+ "color": "#F8FAFC"
45
+ },
46
+ "safeArea": {
47
+ "top": 0,
48
+ "bottom": 0,
49
+ "left": 0,
50
+ "right": 0
51
+ },
52
+ "expectedOverlaps": [],
53
+ "expectedOutOfSafeArea": [],
54
+ "contrastExempt": [],
55
+ "overlapMode": "declared",
56
+ "elements": [
57
+ {
58
+ "id": "hero-rect",
59
+ "kind": "shape",
60
+ "bounds": {
61
+ "x": 0,
62
+ "y": 0,
63
+ "w": 960,
64
+ "h": 120
65
+ },
66
+ "shape": "rect",
67
+ "fill": "#2563EB",
68
+ "rotation": 0
69
+ },
70
+ {
71
+ "id": "title",
72
+ "kind": "text",
73
+ "bounds": {
74
+ "x": 80,
75
+ "y": 180,
76
+ "w": 700,
77
+ "h": 90
78
+ },
79
+ "style": {
80
+ "fontSize": 40,
81
+ "color": "#1F2937",
82
+ "bold": true,
83
+ "lineHeight": 1.2,
84
+ "wrap": true
85
+ },
86
+ "metrics": {
87
+ "textW": 508.79999999999995,
88
+ "textH": 48,
89
+ "lines": 1,
90
+ "lineWidths": [
91
+ 508.79999999999995
92
+ ],
93
+ "overflowY": 0,
94
+ "overflowX": 0
95
+ },
96
+ "text": "季度复盘:增长引擎与风险"
97
+ },
98
+ {
99
+ "id": "subtitle",
100
+ "kind": "text",
101
+ "bounds": {
102
+ "x": 80,
103
+ "y": 290,
104
+ "w": 600,
105
+ "h": 60
106
+ },
107
+ "style": {
108
+ "color": "#F59E0B",
109
+ "fontSize": 18,
110
+ "lineHeight": 1.2,
111
+ "wrap": true
112
+ },
113
+ "metrics": {
114
+ "textW": 170.10000000000002,
115
+ "textH": 21.599999999999998,
116
+ "lines": 1,
117
+ "lineWidths": [
118
+ 148.5
119
+ ],
120
+ "overflowY": 0,
121
+ "overflowX": 0
122
+ },
123
+ "text": "2026 Q3 · 内部汇报"
124
+ },
125
+ {
126
+ "id": "deco",
127
+ "kind": "shape",
128
+ "bounds": {
129
+ "x": 780,
130
+ "y": 360,
131
+ "w": 120,
132
+ "h": 120
133
+ },
134
+ "shape": "ellipse",
135
+ "fill": "#F59E0B",
136
+ "rotation": 0
137
+ }
138
+ ]
139
+ },
140
+ {
141
+ "index": 1,
142
+ "pageNo": 2,
143
+ "file": "pages/slide_02.yaml",
144
+ "name": "pages/slide_02",
145
+ "background": {
146
+ "type": "solid",
147
+ "color": "#F8FAFC"
148
+ },
149
+ "safeArea": {
150
+ "top": 0,
151
+ "bottom": 0,
152
+ "left": 0,
153
+ "right": 0
154
+ },
155
+ "expectedOverlaps": [],
156
+ "expectedOutOfSafeArea": [],
157
+ "contrastExempt": [],
158
+ "overlapMode": "declared",
159
+ "elements": [
160
+ {
161
+ "id": "page-title",
162
+ "kind": "text",
163
+ "bounds": {
164
+ "x": 60,
165
+ "y": 40,
166
+ "w": 840,
167
+ "h": 50
168
+ },
169
+ "style": {
170
+ "fontSize": 28,
171
+ "color": "#1F2937",
172
+ "bold": true,
173
+ "lineHeight": 1.2,
174
+ "wrap": true
175
+ },
176
+ "metrics": {
177
+ "textW": 118.72,
178
+ "textH": 33.6,
179
+ "lines": 1,
180
+ "lineWidths": [
181
+ 118.72
182
+ ],
183
+ "overflowY": 0,
184
+ "overflowX": 0
185
+ },
186
+ "text": "关键进展"
187
+ },
188
+ {
189
+ "id": "body-a",
190
+ "kind": "text",
191
+ "bounds": {
192
+ "x": 60,
193
+ "y": 130,
194
+ "w": 420,
195
+ "h": 200
196
+ },
197
+ "style": {
198
+ "color": "#1F2937",
199
+ "fontSize": 18,
200
+ "lineHeight": 1.2,
201
+ "wrap": true
202
+ },
203
+ "metrics": {
204
+ "textW": 823.5000000000001,
205
+ "textH": 43.199999999999996,
206
+ "lines": 2,
207
+ "lineWidths": [
208
+ 429.3,
209
+ 343.8
210
+ ],
211
+ "overflowY": 0,
212
+ "overflowX": 404
213
+ },
214
+ "text": "线上增长 34%,主要来自新渠道投放;NPS 提升 12 分;复购率升至 41%。 供应链成本环比下降 8%。"
215
+ },
216
+ {
217
+ "id": "metric-rect",
218
+ "kind": "shape",
219
+ "bounds": {
220
+ "x": 540,
221
+ "y": 130,
222
+ "w": 360,
223
+ "h": 80
224
+ },
225
+ "shape": "rect",
226
+ "fill": "#2563EB",
227
+ "rotation": 0
228
+ },
229
+ {
230
+ "id": "metric",
231
+ "kind": "text",
232
+ "bounds": {
233
+ "x": 540,
234
+ "y": 150,
235
+ "w": 360,
236
+ "h": 40
237
+ },
238
+ "style": {
239
+ "fontSize": 22,
240
+ "color": "#FFFFFF",
241
+ "bold": true,
242
+ "align": "center",
243
+ "lineHeight": 1.2,
244
+ "wrap": true
245
+ },
246
+ "metrics": {
247
+ "textW": 112.19999999999999,
248
+ "textH": 26.4,
249
+ "lines": 1,
250
+ "lineWidths": [
251
+ 103.4
252
+ ],
253
+ "overflowY": 0,
254
+ "overflowX": 0
255
+ },
256
+ "text": "+34% 增长"
257
+ },
258
+ {
259
+ "id": "table-b",
260
+ "kind": "table",
261
+ "bounds": {
262
+ "x": 60,
263
+ "y": 380,
264
+ "w": 840,
265
+ "h": 120
266
+ },
267
+ "cols": 4,
268
+ "rows": 4,
269
+ "fontPt": 11,
270
+ "metrics": {
271
+ "overflowY": -36,
272
+ "lines": 5,
273
+ "textH": 84
274
+ }
275
+ }
276
+ ]
277
+ },
278
+ {
279
+ "index": 2,
280
+ "pageNo": 3,
281
+ "file": "pages/slide_03.yaml",
282
+ "name": "pages/slide_03",
283
+ "background": {
284
+ "type": "solid",
285
+ "color": "#F8FAFC"
286
+ },
287
+ "safeArea": {
288
+ "top": 0,
289
+ "bottom": 0,
290
+ "left": 0,
291
+ "right": 0
292
+ },
293
+ "expectedOverlaps": [],
294
+ "expectedOutOfSafeArea": [],
295
+ "contrastExempt": [],
296
+ "overlapMode": "declared",
297
+ "elements": [
298
+ {
299
+ "id": "page-title",
300
+ "kind": "text",
301
+ "bounds": {
302
+ "x": 60,
303
+ "y": 40,
304
+ "w": 840,
305
+ "h": 50
306
+ },
307
+ "style": {
308
+ "fontSize": 28,
309
+ "color": "#1F2937",
310
+ "bold": true,
311
+ "lineHeight": 1.2,
312
+ "wrap": true
313
+ },
314
+ "metrics": {
315
+ "textW": 194.04000000000002,
316
+ "textH": 33.6,
317
+ "lines": 1,
318
+ "lineWidths": [
319
+ 171.64000000000001
320
+ ],
321
+ "overflowY": 0,
322
+ "overflowX": 0
323
+ },
324
+ "text": "渠道 GMV 走势"
325
+ },
326
+ {
327
+ "id": "chart-c-b0-0",
328
+ "kind": "shape",
329
+ "bounds": {
330
+ "x": 208,
331
+ "y": 205,
332
+ "w": 71,
333
+ "h": 176
334
+ },
335
+ "shape": "rect",
336
+ "fill": "#2563EB",
337
+ "rotation": 0
338
+ },
339
+ {
340
+ "id": "chart-c-b1-0",
341
+ "kind": "shape",
342
+ "bounds": {
343
+ "x": 443,
344
+ "y": 183,
345
+ "w": 71,
346
+ "h": 198
347
+ },
348
+ "shape": "rect",
349
+ "fill": "#2563EB",
350
+ "rotation": 0
351
+ },
352
+ {
353
+ "id": "chart-c-b2-0",
354
+ "kind": "shape",
355
+ "bounds": {
356
+ "x": 678,
357
+ "y": 150,
358
+ "w": 71,
359
+ "h": 231
360
+ },
361
+ "shape": "rect",
362
+ "fill": "#2563EB",
363
+ "rotation": 0
364
+ },
365
+ {
366
+ "id": "chart-c-b0-1",
367
+ "kind": "shape",
368
+ "bounds": {
369
+ "x": 278,
370
+ "y": 265,
371
+ "w": 71,
372
+ "h": 116
373
+ },
374
+ "shape": "rect",
375
+ "fill": "#F59E0B",
376
+ "rotation": 0
377
+ },
378
+ {
379
+ "id": "chart-c-b1-1",
380
+ "kind": "shape",
381
+ "bounds": {
382
+ "x": 514,
383
+ "y": 249,
384
+ "w": 71,
385
+ "h": 132
386
+ },
387
+ "shape": "rect",
388
+ "fill": "#F59E0B",
389
+ "rotation": 0
390
+ },
391
+ {
392
+ "id": "chart-c-b2-1",
393
+ "kind": "shape",
394
+ "bounds": {
395
+ "x": 749,
396
+ "y": 216,
397
+ "w": 71,
398
+ "h": 165
399
+ },
400
+ "shape": "rect",
401
+ "fill": "#F59E0B",
402
+ "rotation": 0
403
+ },
404
+ {
405
+ "id": "caption",
406
+ "kind": "text",
407
+ "bounds": {
408
+ "x": 60,
409
+ "y": 480,
410
+ "w": 840,
411
+ "h": 30
412
+ },
413
+ "style": {
414
+ "fontSize": 12,
415
+ "color": "#64748B",
416
+ "lineHeight": 1.2,
417
+ "wrap": true
418
+ },
419
+ "metrics": {
420
+ "textW": 235.79999999999995,
421
+ "textH": 14.399999999999999,
422
+ "lines": 1,
423
+ "lineWidths": [
424
+ 231
425
+ ],
426
+ "overflowY": 0,
427
+ "overflowX": 0
428
+ },
429
+ "text": "数据来源:内部经营报表(2026-09 月报)"
430
+ }
431
+ ]
432
+ }
433
+ ]
434
+ }
Binary file
Binary file
@@ -0,0 +1,27 @@
1
+ pageType: cover
2
+ background: "$bg"
3
+ notes: 开场页
4
+ elements:
5
+ - elementId: hero-rect
6
+ elementType: shape
7
+ kind: rect
8
+ bounds: [0, 0, 960, 120]
9
+ fill: "$primary"
10
+ - elementId: title
11
+ elementType: text
12
+ bounds: [80, 180, 700, 90]
13
+ content:
14
+ style: "$title"
15
+ text: 季度复盘:增长引擎与风险
16
+ - elementId: subtitle
17
+ elementType: text
18
+ bounds: [80, 290, 600, 60]
19
+ content:
20
+ style: "$body"
21
+ color: "$accent"
22
+ text: 2026 Q3 · 内部汇报
23
+ - elementId: deco
24
+ elementType: shape
25
+ kind: ellipse
26
+ bounds: [780, 360, 120, 120]
27
+ fill: "$accent"
@@ -0,0 +1,42 @@
1
+ pageType: content
2
+ background: "$bg"
3
+ expectedOverlaps:
4
+ # 色块徽标:设计阶段声明的有意重叠(数值指标衬在色块上)
5
+ - { pair: [metric-rect, metric] }
6
+ elements:
7
+ - elementId: page-title
8
+ elementType: text
9
+ bounds: [60, 40, 840, 50]
10
+ content:
11
+ style: "$title"
12
+ fontSize: 28
13
+ text: 关键进展
14
+ - elementId: body-a
15
+ elementType: text
16
+ bounds: [60, 130, 420, 200]
17
+ content:
18
+ style: "$body"
19
+ text: 线上增长 34%,主要来自新渠道投放;NPS 提升 12 分;复购率升至 41%。供应链成本环比下降 8%。
20
+ - elementId: metric-rect
21
+ elementType: shape
22
+ kind: rect
23
+ bounds: [540, 130, 360, 80]
24
+ fill: "$primary"
25
+ - elementId: metric
26
+ elementType: text
27
+ bounds: [540, 150, 360, 40]
28
+ content:
29
+ style: "$title"
30
+ fontSize: 22
31
+ color: "#FFFFFF"
32
+ align: center
33
+ text: +34% 增长
34
+ - elementId: table-b
35
+ elementType: table
36
+ bounds: [60, 380, 840, 120]
37
+ cols: [渠道, 投入, 产出, ROI]
38
+ header: true
39
+ rows:
40
+ - [搜索, 120万, 480万, 4.0]
41
+ - [社群, 60万, 210万, 3.5]
42
+ - [直播, 90万, 360万, 4.0]
@@ -0,0 +1,35 @@
1
+ pageType: content
2
+ background: "$bg"
3
+ elements:
4
+ - elementId: page-title
5
+ elementType: text
6
+ bounds: [60, 40, 840, 50]
7
+ content:
8
+ style: "$title"
9
+ fontSize: 28
10
+ text: 渠道 GMV 走势
11
+ - elementId: chart-c
12
+ elementType: chart
13
+ bounds: [60, 130, 840, 330]
14
+ chart:
15
+ type: bar
16
+ data:
17
+ cols: [month, web, app]
18
+ rows:
19
+ - [7月, 320, 210]
20
+ - [8月, 360, 240]
21
+ - [9月, 420, 300]
22
+ series:
23
+ - name: Web
24
+ x: month
25
+ y: web
26
+ - name: App
27
+ x: month
28
+ y: app
29
+ colors: ["$primary", "$accent"]
30
+ - elementId: caption
31
+ elementType: text
32
+ bounds: [60, 480, 840, 30]
33
+ content:
34
+ style: "$caption"
35
+ text: 数据来源:内部经营报表(2026-09 月报)
@@ -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="hero-rect" data-kind="shape" data-shape="rect" style="position:absolute;left:0px;top:0px;width:960px;height:120px;background:#2563EB"></div><div class="el" id="title" data-kind="text" style="position:absolute;left:80px;top:180px;width:700px;height:90px;font-size:40px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">季度复盘:增长引擎与风险</div><div class="el" id="subtitle" data-kind="text" style="position:absolute;left:80px;top:290px;width:600px;height:60px;font-size:18px;line-height:1.5;color:#F59E0B;overflow:visible;white-space:pre-wrap;word-break:break-word">2026 Q3 · 内部汇报</div><div class="el" id="deco" data-kind="shape" data-shape="ellipse" style="position:absolute;left:780px;top:360px;width:120px;height:120px;border-radius:50%;background:#F59E0B"></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="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">关键进展</div><div class="el" id="body-a" data-kind="text" style="position:absolute;left:60px;top:130px;width:420px;height:200px;font-size:18px;line-height:1.5;color:#1F2937;overflow:visible;white-space:pre-wrap;word-break:break-word">线上增长 34%,主要来自新渠道投放;NPS 提升 12 分;复购率升至 41%。供应链成本环比下降 8%。</div><div class="el" id="metric-rect" data-kind="shape" data-shape="rect" style="position:absolute;left:540px;top:130px;width:360px;height:80px;background:#2563EB"></div><div class="el" id="metric" data-kind="text" style="position:absolute;left:540px;top:150px;width:360px;height:40px;font-size:22px;line-height:1.2;color:#FFFFFF;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">+34% 增长</div><table class="el" id="table-b" data-kind="table" style="position:absolute;left:60px;top:380px;width:840px;height:120px;border-collapse:collapse"><tbody><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">渠道</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">投入</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">产出</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">ROI</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">搜索</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">120万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">480万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">4</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">社群</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">60万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">210万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">3.5</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">直播</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">90万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">360万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">4</td></tr></tbody></table></div></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="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">渠道 GMV 走势</div><div class="el" id="chart-c" data-kind="chart" style="position:absolute;left:60px;top:130px;width:840px;height:330px"><svg viewBox="0 0 840 330" width="840" height="330" xmlns="http://www.w3.org/2000/svg" style="display:block"><line x1="36" y1="12" x2="828" y2="12" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="15" font-size="9" fill="#64748b" text-anchor="end">420</text><line x1="36" y1="84.5" x2="828" y2="84.5" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="87.5" font-size="9" fill="#64748b" text-anchor="end">315</text><line x1="36" y1="157" x2="828" y2="157" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="160" font-size="9" fill="#64748b" text-anchor="end">210</text><line x1="36" y1="229.5" x2="828" y2="229.5" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="232.5" font-size="9" fill="#64748b" text-anchor="end">105</text><line x1="36" y1="302" x2="828" y2="302" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="305" font-size="9" fill="#64748b" text-anchor="end">0</text><rect x="100.722" y="81.04761904761904" width="66.5" height="221.0" fill="#2563EB"><title>7月: 320</title></rect><rect x="364.722" y="53.42857142857142" width="66.5" height="248.6" fill="#2563EB"><title>8月: 360</title></rect><rect x="628.722" y="12" width="66.5" height="290.0" fill="#2563EB"><title>9月: 420</title></rect><rect x="168.75" y="157" width="66.5" height="145.0" fill="#F59E0B"><title>7月: 210</title></rect><rect x="432.75" y="136.28571428571428" width="66.5" height="165.7" fill="#F59E0B"><title>8月: 240</title></rect><rect x="696.75" y="94.85714285714285" width="66.5" height="207.1" fill="#F59E0B"><title>9月: 300</title></rect><text x="168.0" y="322" font-size="9" fill="#475569" text-anchor="middle">7月</text><text x="432.0" y="322" font-size="9" fill="#475569" text-anchor="middle">8月</text><text x="696.0" y="322" font-size="9" fill="#475569" text-anchor="middle">9月</text></svg></div><div class="el" id="caption" data-kind="text" style="position:absolute;left:60px;top:480px;width:840px;height:30px;font-size:12px;line-height:1.2;color:#64748B;overflow:visible;white-space:pre-wrap;word-break:break-word">数据来源:内部经营报表(2026-09 月报)</div></div></body></html>
@@ -0,0 +1 @@
1
+ <!doctype html><html><head><meta charset="utf-8"><title>季度复盘演示(冒烟)</title><style>*{box-sizing:border-box;margin:0}body{background:#64748b} .slide{position:relative;width:960px;height:540px;background:#F8FAFC;box-shadow:0 2px 12px rgba(0,0,0,.3);overflow:hidden}</style><style>body{background:#334155;padding:16px}</style></head><body style="background:#334155"><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">1. pages/01_cover</div><div class="slide" style='background:#F8FAFC'><div class="el" id="hero-rect" data-kind="shape" data-shape="rect" style="position:absolute;left:0px;top:0px;width:960px;height:120px;background:#2563EB"></div><div class="el" id="title" data-kind="text" style="position:absolute;left:80px;top:180px;width:700px;height:90px;font-size:40px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">季度复盘:增长引擎与风险</div><div class="el" id="subtitle" data-kind="text" style="position:absolute;left:80px;top:290px;width:600px;height:60px;font-size:18px;line-height:1.5;color:#F59E0B;overflow:visible;white-space:pre-wrap;word-break:break-word">2026 Q3 · 内部汇报</div><div class="el" id="deco" data-kind="shape" data-shape="ellipse" style="position:absolute;left:780px;top:360px;width:120px;height:120px;border-radius:50%;background:#F59E0B"></div></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">2. pages/02_content</div><div class="slide" style='background:#F8FAFC'><div class="el" id="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">关键进展</div><div class="el" id="body-a" data-kind="text" style="position:absolute;left:60px;top:130px;width:420px;height:200px;font-size:18px;line-height:1.5;color:#1F2937;overflow:visible;white-space:pre-wrap;word-break:break-word">线上增长 34%,主要来自新渠道投放;NPS 提升 12 分;复购率升至 41%。供应链成本环比下降 8%。</div><div class="el" id="metric-rect" data-kind="shape" data-shape="rect" style="position:absolute;left:540px;top:130px;width:360px;height:80px;background:#2563EB"></div><div class="el" id="metric" data-kind="text" style="position:absolute;left:540px;top:150px;width:360px;height:40px;font-size:22px;line-height:1.2;color:#FFFFFF;font-weight:bold;text-align:center;overflow:visible;white-space:pre-wrap;word-break:break-word">+34% 增长</div><table class="el" id="table-b" data-kind="table" style="position:absolute;left:60px;top:380px;width:840px;height:120px;border-collapse:collapse"><tbody><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">渠道</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">投入</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">产出</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">ROI</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">搜索</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">120万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">480万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">4</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">社群</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">60万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">210万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">3.5</td></tr><tr><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">直播</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">90万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">360万</td><td style="border:1px solid #cbd5e1;padding:4px 8px;font-size:11px">4</td></tr></tbody></table></div></section><section style="margin:0 auto 24px;width:960px;padding:4px 0"><div style="font:12px monospace;color:#e2e8f0;padding:2px 8px">3. pages/03_chart</div><div class="slide" style='background:#F8FAFC'><div class="el" id="page-title" data-kind="text" style="position:absolute;left:60px;top:40px;width:840px;height:50px;font-size:28px;line-height:1.2;color:#1F2937;font-weight:bold;overflow:visible;white-space:pre-wrap;word-break:break-word">渠道 GMV 走势</div><div class="el" id="chart-c" data-kind="chart" style="position:absolute;left:60px;top:130px;width:840px;height:330px"><svg viewBox="0 0 840 330" width="840" height="330" xmlns="http://www.w3.org/2000/svg" style="display:block"><line x1="36" y1="12" x2="828" y2="12" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="15" font-size="9" fill="#64748b" text-anchor="end">420</text><line x1="36" y1="84.5" x2="828" y2="84.5" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="87.5" font-size="9" fill="#64748b" text-anchor="end">315</text><line x1="36" y1="157" x2="828" y2="157" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="160" font-size="9" fill="#64748b" text-anchor="end">210</text><line x1="36" y1="229.5" x2="828" y2="229.5" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="232.5" font-size="9" fill="#64748b" text-anchor="end">105</text><line x1="36" y1="302" x2="828" y2="302" stroke="#e2e8f0" stroke-width="1"/><text x="32" y="305" font-size="9" fill="#64748b" text-anchor="end">0</text><rect x="100.722" y="81.04761904761904" width="66.5" height="221.0" fill="#2563EB"><title>7月: 320</title></rect><rect x="364.722" y="53.42857142857142" width="66.5" height="248.6" fill="#2563EB"><title>8月: 360</title></rect><rect x="628.722" y="12" width="66.5" height="290.0" fill="#2563EB"><title>9月: 420</title></rect><rect x="168.75" y="157" width="66.5" height="145.0" fill="#F59E0B"><title>7月: 210</title></rect><rect x="432.75" y="136.28571428571428" width="66.5" height="165.7" fill="#F59E0B"><title>8月: 240</title></rect><rect x="696.75" y="94.85714285714285" width="66.5" height="207.1" fill="#F59E0B"><title>9月: 300</title></rect><text x="168.0" y="322" font-size="9" fill="#475569" text-anchor="middle">7月</text><text x="432.0" y="322" font-size="9" fill="#475569" text-anchor="middle">8月</text><text x="696.0" y="322" font-size="9" fill="#475569" text-anchor="middle">9月</text></svg></div><div class="el" id="caption" data-kind="text" style="position:absolute;left:60px;top:480px;width:840px;height:30px;font-size:12px;line-height:1.2;color:#64748B;overflow:visible;white-space:pre-wrap;word-break:break-word">数据来源:内部经营报表(2026-09 月报)</div></div></section></body></html>