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

33 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 官方工程编译。
**兼容提醒:** 历史发布快照恢复不会修改已经发布的网站;为了让恢复内容上线,必须在站点设计审核后重新发布、构建和部署。