Files
cms-SiteForge/docs/V8_26_GLOBAL_DESIGN.md
T
浅念 8884e100f9 upgrade: adopt V8.31.1 (theme 1.3/1.4 redesigns, editor deep-canvas, guided launch, component library)
Overlay 190 upstream items (V8.22→8.31) preserving trade-pro theme,
registry tests, and design docs. Re-applied full patch set on identical
anchors (discovery/env_for/blocks.css/type-mapping/locale-override/
theme_color/frontend entries/test_theme_pro_v3 mods) plus compose pins.

Verified: theme suites 35/35; dual-baseline full run 415 passed vs
pristine 386+29 ours, FAILED-set diff EMPTY (same 10 Windows env fails).
Live: container 8.31.1-dev.1 healthy, hesupipe 192 entries intact,
trade-pro build 203 pages 0 errors.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-26 09:43:17 +08:00

2.8 KiB
Raw Blame History

V8.26 全站设计管理 — 实现与验收

基线: SiteForge V8.25.0-dev.1。当前源码版本:V8.26.0-dev.1。

核心架构

已有 site_design_drafts 与 site_design_publications 保存全站草稿与发布快照。本轮不改变数据库 Schema,主要在 app/site_design_v87.py 增加审核差异、审核令牌、历史快照查询与安全恢复。前端主要在 app/templates/editor.html、app/static/editor.js、app/static/editor.css。

  • 导航采用树形数据,层级不超过 3,总元素不超过 48、同层最多 18;仍执行原 URL 白名单校验。
  • GET /api/sites/{site}/site-design/review 将已发布配置与当前草稿逐字段比较,返回变更清单、影响范围及绑定 site_id、草稿版本、当前站点设置哈希的 plan_token。
  • POST /api/sites/{site}/site-design/publish-reviewed 仅 Owner 可调用;在同一数据库事务内校验草稿版本和 token 后发布。旧发布接口为兼容保留,但当前编辑器改用审核发布接口。
  • GET /api/sites/{site}/site-design/publications/{id} 返回所属站点历史版本及结构化差异。
  • GET /api/sites/{site}/site-design/live-hash 返回当前已发布站点设置哈希。
  • POST /api/sites/{site}/site-design/publications/{id}/restore 在单一事务中检查历史归属、当前正式配置哈希、预期草稿版本及目标快照是否合法,然后写入新的全站草稿。不会直接修改 sites.settings_json。

安全保证

  1. 跨站点隔离:历史记录必须属于当前 site_id,否则返回 404;鉴权由 enterprise.require 处理。
  2. 审核过期保护:草稿版本或站点已发布 settings 变化,审核令牌失效;publish-reviewed 返回 409。
  3. 原子发布与恢复:读/校验/更新使用 BEGIN IMMEDIATE 事务窗口,降低读写竞态。
  4. 原有发布安全不变:全站设计发布只影响内容库和下一次静态构建,不会替换线上目录或跳过正式发布审批。
  5. 前端差异防 XSS:所有用户输入展示均使用 textContent,不将差异数据当作 HTML 执行。

验收结果与限制

  • 23 个隔离 Python 测试批次:376 项通过,0 失败、0 超时。
  • JavaScript:13 项通过;node --check 通过。
  • HTTP + Worker:健康检查、登录、CSRF、站点/页面创建、异步构建、ZIP 下载和预览通过。
  • Chromium:离线页面通过 set_content 隔离加载验证新增导航、子菜单、保存、审核与历史模拟(0 脚本错误);没有完成真实登录后台的浏览器 E2E。
  • 未执行真实 PostgreSQL/Redis、远程正式部署与 Art Design Pro 官方工程编译。

兼容提醒: 历史发布快照恢复不会修改已经发布的网站;为了让恢复内容上线,必须在站点设计审核后重新发布、构建和部署。