Files
cms-SiteForge/docs/COMPLETION_PLAN_ALIGNMENT_V7_1.md
T

55 lines
5.1 KiB
Markdown
Raw Normal View History

# SiteForge 7.1.0 — 对照《COMPLETION_PLAN(1).md》优化结果
> 对照文件:用户提供《SiteForge 网站工厂 — 完整实现与生产落地计划》v2.0(2026-10-22)。
> 状态:**P0 代码修复及本地测试完成;真实 Docker / 云 CI / 浏览器网络访问 / 线上回滚尚待指定部署环境验收。**
> 注意:该计划评审的是 v5 源码及 v4 运行实例;本项目的实际起点是 **V7.0.0**。不应把计划中的 v5 数字直接改写成实际运行结论。
## 评审中的关键结论
1. **“代码更新 ≠ 生产部署已生效”**:保留生产实例的健康版本和提交标识对账,杜绝仅凭 ZIP 文件判断升级成功。
2. **P0 必须先修**:预览导航根路径 404、Compose 重复构建标签、Worker 错误继承 Web HTTP 探针、favicon、Linux CI 和离线恢复。
3. **安全底座不足仍是最高风险**:任意 URL 的 DNS 解析与重定向、数据导入包的 XXE/压缩炸弹、数据库只读权限、密钥引用策略,必须先在 P1 统一设计而非每个连接器各自实现。
4. **发布闭环尚未生产验收**:不可变构建、审批、原子发布、线上探测、回滚、CDN 控制需正式环境测试。
5. **多语言需要内容级映射**:仅克隆站点不能形成正确的翻译组/hreflang。
## 本次 P0 工作与验证证据
| 文档任务 | 实际修改 | 验证状态 |
|---|---|---|
| P0-1 平台/部署版本一致 | 平台改为 7.1.0;health 返回 `version` 与 `commit`;后台文字、Docker 标签、init 配置对应升级;Dockerfile 加 OCI revision 标签 | 本地 API / UI 代码测试通过;目标服务器镜像摘要仍需部署后对账 |
| P0-2 预览根链接 404 | `app/preview_rewrite.py`:仅在预览 HTTP 响应中改写 href/src/action/poster;绝对外站 URL 不动;静态 ZIP 原封不动 | 新增真实构建/TestClient 回归,检查 `/products/` 预览状态 200 |
| P0-3 Worker 健康检查 | 去除 Dockerfile 的 Web 专属内置探针;Web 仍检查 HTTP;Worker 使用 `/data/worker-heartbeat` 独立探针 | 单元及 Compose 结构测试通过;Docker Engine 未运行 |
| P0-4 favicon | 新增 `/favicon.ico` 真正文件与路由 | HTTP 测试 200 |
| P0-5 同镜像标签重复构建 | Web 唯一进行 build,Worker 引用同一镜像并依赖 Web 容器启动;本地 / 企业 Compose 同步调整 | Compose 结构测试通过;GitHub CI 新增单命令 `up -d --build` 冒烟,尚待 CI 云端运行 |
| P0-6 跨平台 CI | `scripts/check.sh` 与 `scripts/check.ps1`;CI 使用 Bash 检查 Python、所有 JS、pytest;增加 Docker Compose 双服务 healthy 冒烟 | Linux 本地 79 项通过;GitHub Actions 尚待在仓库运行 |
| P0-7 密钥卫生 | 保持 `.env`、`secrets/` 在 Git ignore / Docker ignore;初始化脚本不覆盖已有密钥 | 静态检查完成;真实环境密钥轮换须由管理员执行,不能从交付包代替生产凭据 |
| P0-8 备份恢复 | 新增 SQLite WAL 在线备份 → 独立目录恢复 → 核对站点与媒体的测试 | 本地隔离测试通过;真实 Docker 数据卷离线恢复演练待完成 |
## P0 的真实退出条件(仍需在你自己的 Docker 环境完成)
- 运行 `docker compose up -d --build`,**Web 和 Worker 均显示 healthy**。
- `/api/health` 返回 `7.1.0` 和你提供的 `SITEFORGE_GIT_SHA`(生产环境不应是 `unknown`)。
- 对目标镜像记录 `docker image inspect` 摘要,截图或保存启动日志。
- PC 1440、手机 390/360 登录、导航、构建、预览无失败。
- 在独立测试卷完成备份、恢复和回滚验证,不直接覆盖旧站正式数据。
- 轮换暴露过的管理员密码、会话密钥及发布 Agent 密钥。
## 后续开发顺序(依照原计划)
| 阶段 | 首先要完成的工程 | 完成门槛 |
|---|---|---|
| P1 | 显式 DB schema 迁移表、通用任务/审计、SSR F/DNS/重定向安全客户端、secret ID 引用、配额 | 故障注入与越权、私网请求拒绝测试通过 |
| P2 | WP REST/WXR/Sitemap 断点续跑、幂等、URL/SEO 基线、迁移会话 | 本地 WP 固定夹具 + 授权真实站匿名验收报告 |
| P3 | XML/API/只读 MySQL 连接器、导入暂存与批次回滚 | 5,000 条可恢复导入、失败不重复写入 |
| P4 | Schema 区块、整站主题包、兼容性预检、草稿与设备样式 | 多页面模板安装/回退和视觉回归通过 |
| P5 | SFTP/S3 不可变版本、审批、原子切换、线上探测 | 容器化部署/故障/回滚测试通过 |
| P6 | locale / translation_groups / hreflang | 多语言页面双向 hreflang 与 sitemap 一致 |
| P7 | PostgreSQL + 分布式队列高可用、SSO、监控、备份、SLO | 真实并发与灾备压测和安全审计 |
## 技术边界
- 本次未将当前 PostgreSQL 兼容层表述为正式数据迁移/高可用认证。
- 未声称官方 Art Design Pro 项目已构建:它仍以独立接入代码形式存在。
- 浏览器自动化在当前隔离环境访问本地 HTTP 返回 `ERR_BLOCKED_BY_ADMINISTRATOR`;这属于测试环境访问限制,**不作为页面已通过浏览器测试的证据**。
- Docker Engine 当前未安装,不能宣称 Compose 真正已启动。