SVGlide 线上可编辑协议元素穿透报告
目标
把问题重新锚定在 SVGlide +create-svg 链路:确认 raw Satori / contract SVG 如何提交到 slide 后端,并定义如何从“视觉保真但全页图片”升级为“线上真正可编辑的协议元素”。XML 全页图片 fallback 只能作为诊断或临时视觉兜底,不是目标架构。
团队设置
| 角色 | 职责 | 结论 |
|---|---|---|
| CLI 契约审查者 | 检查 generate_svg 到 +create-svg | prepare 当前把 artboard_satori 默认包成整页 PNG |
| slide parser 审查者 | 检查后端 direct SVG parser | 确认 text、shape、line、image、chart marker 等可编辑路径存在 |
| E2E 验收审查者 | 定义线上验收矩阵 | 必须新增 editability_gate |
当前事实
generate_svg -> 04-artboard/raw/page-###.visual.svg -> 04-artboard/raw/page-###.visual.png contract_compile -> 04-svg/page-###.svg prepare -> 04-svg/prepared/page-###.svg +create-svg -> slide 后端创建线上文档
当前丢失线上可编辑性的直接节点是
prepare:它在 artboard_satori 模式下生成单个整页 <image slide:role="image">,receipt 记录 full_page_raster_submission 和 online text is not editable。slide parser 支持面
| 输入协议元素 | 线上目标 block | 备注 |
|---|---|---|
<text slide:role="text"> | Text shape | 支持 Satori text style manifest |
<foreignObject slide:role="text"> | Text shape | 支持部分 HTML/CSS 抽取 |
rect/circle/ellipse/path/polygon/polyline | Shape block | path 只支持 MVP 命令 |
line | Line block | 不应伪装成 leaf shape |
image | Image block | 必须有 file meta 或 assets metadata |
g slide:role="chart" | Chart/embed block | 需要 chart metadata 和 preparedCharts |
核心结论
- slide parser 已经有 direct editable SVG 路径。
contract_compile已经能做 raw Satori lowering。prepare为了线上创建成功,把 artboard 输出改成了整页图片。- 现有 gate 只证明能创建和视觉相似,没有证明线上可编辑。
- 需要恢复可编辑提交路径,并新增 readback 后的
editability_gate。
目标链路
用户需求 / 参考资产 -> planner / theme-template selection -> canvas spec -> raw Satori visual SVG -> contract_compile: raw Satori lowering -> prepare: asset token 注入 + 协议校验 + 必要局部降级 -> +create-svg: 提交 SVGlide protocol SVG -> slide direct parser: 生成 editable text/shape/line/image/chart blocks -> readback -> editability_gate -> snapshot_visual_fidelity
P0 防偏移原则
- 不把 XML 全页图片方案当作 SVGlide 目标方案。
- 不允许
artboard_satori默认产物是 full-page raster submission。 - 不允许视觉 fidelity 通过来覆盖 editability 失败。
- 不允许没有 readback block type 证据就宣称线上可编辑。
- 不允许 unsupported nodes 静默消失。
必须新增的验收指标
| 指标 | 通过标准 |
|---|---|
full_page_raster_count | 可编辑线上提交必须为 0 |
editable_text_count | 有文本页面必须 >= 1 |
editable_shape_count | 内容页建议 >= 2,fixture 用精确值 |
raster_area_ratio | 无声明图片页 <= 0.05,有图片资产页建议 <= 0.20 |
image_only_page_count | 可编辑提交必须为 0 |
执行计划
- 建立
editable_onlineprofile,拒绝整页 raster。 - 统一文本协议路径,以 slide parser 当前真实支持路径为准。
- 修正
prepare职责边界:只做 token、metadata、hash、局部降级,不重画整页。 - 新增
editability_gate,readback 统计 editable text/shape/line/image/chart。 - 建立最小线上可编辑 smoke deck,跑通
+create-svglive create、readback、visual fidelity。
下一步建议目标
按 TDD 恢复 SVGlide artboard_satori 的线上可编辑提交路径:先建立 editable_online profile 和 editability_gate,再让 prepare 默认提交 contract SVG 而不是整页 raster,最后用最小 smoke deck 跑通 +create-svg live create、readback、editable block 统计和视觉对比。