v5.6.0 — 微信 SVG 交互能力路线图(P1+P2)+ 真机真值表
本次发布完成微信公众号 SVG 能力路线图的全部 P0 → P1 → P2:从"自家管线先把 SVG 打坏",到"AI 填槽即产出过校验的合法交互 SVG",并首次用 31 探针真机真值表校准了规则边界。
后端测试 250 → 619 passed,前端 282 → 369 passed。
✨ 新增
- 交互效果引擎(P1-1):8 个 opensvg 派生插槽化配方,覆盖六类交互(展开/轮播/滑动/长按/答题/翻卡),文本/图片/颜色槽 + 时序参数,填槽渲染强制过校验;支持区块级插入(不再整篇覆盖)。新端点
GET/POST /api/v1/agent/effects。 - 真后端 LLM 生成(P1-4):接入 Claude API(
claude-opus-4-8)。LLM 只产结构化 DSL、绝不直接写 SVG,经 effect registry 确定性渲染——注入面与校验面全部收敛。无 API key 时优雅降级。 - 编辑器内交互预览(P1-3):「公众号效果」(sanitize 后) ↔「交互预览」(原始 SVG,sandboxed iframe,SMIL 点击可真实验证) 模式切换。
- 反向导入 + 多平台 profile(P2-4):微信文章/通用 HTML 反向解析为 mbdoc(SVG 子树逐字保真),
POST /api/v1/publish/import-html;wechat(行为字节等价) +generic(更宽松) 渲染 profile。 - 编辑体验(P2-1/2/3):SVG 可视化面板(颜色/热区/SMIL 时序)替代纯 textarea;模板缩略图 + 参数化配色文案;StructurePanel 解析 SVG 内部交互结构并可点击定位。
🔬 真机真值表(关键发现)
31 探针经 add_draft 真推草稿箱 + 回读,产出 docs/research/wechat-svg-truth-table.md。
微信剥除
id=定义,却保留url(#id)/href=#id/begin=id.click引用 → 一切依赖 id 的渐变/滤镜/clipPath/mask/use/跨元素 SMIL 在真机悬空失效,仅begin=click同元素自触发可用。
该结论已转化为校验器 id-stripped-dangling-ref 告警,从生成阶段拦截。
🛠 校准与安全
- 白名单按 T/CASME 1609—2024 + 真值表校准:
stroke/rx/ry放行、静态stroke-dasharray不再误杀;新增<style>/SVG<a>/外链<image>三类告警;事件处理器拦截改为通配on[a-z]+=。 - LLM 输出、反向导入 HTML、模板槽值全部视为不可信,双重门禁;对抗式审查修复跨类槽位二次替换、
url(javascript:)样式注入、<image>危险 scheme 等多条注入路径。安全底线未回退。
完整条目见 CHANGELOG.md。
🤖 Generated with Claude Code