Skip to content

v5.6.0 — 微信 SVG 交互能力路线图(P1+P2)+ 真机真值表

Choose a tag to compare

@AAAAAnson AAAAAnson released this 13 Jun 07:48

本次发布完成微信公众号 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-htmlwechat(行为字节等价) + 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