36 lines
3.2 KiB
Markdown
36 lines
3.2 KiB
Markdown
|
|
# SiteForge 7.2.0 — P1 增量实施与验收报告
|
|||
|
|
|
|||
|
|
依据 `COMPLETION_PLAN(1).md` v2.0 P1(平台底座),在 V7.1 源码上迭代。不是 P1 完工证明。
|
|||
|
|
|
|||
|
|
## 已实现(代码及自动化测试)
|
|||
|
|
|
|||
|
|
| P1 条目 | 实际完成范围 | 证据 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| P1-1 Schema 迁移 | SQLite 新增迁移登记表、校验和校验和一项增量迁移;旧模块建表尚未整体纳管,PG 迁移另行验收 | `app/schema_registry.py`, `tests/test_p1_platform.py` |
|
|||
|
|
| P1-2/3 队列控制 | 继承幂等、租约、超时和取消,新增全局/单站排队容量上限与 429;尚无队列总负载压力测试 | `app/jobs.py`, `tests/test_p1_platform.py` |
|
|||
|
|
| P1-4 安全出网 | HTTP(S)、公网 IP、DNS 结果检查;选定地址直接连接并保持 TLS 主机名校验;受限端口、无代理、每跳重校验、响应限流;接入 REST、爬虫、媒体镜像、远程部署 | `app/safe_http.py`, `app/adapters.py`, `app/importers.py`, `app/builder.py`, `app/release_api.py` |
|
|||
|
|
| P1-5 密钥引用 | 可使用 `env:SITEFORGE_...` 或 `file:secret-name` 读取 `/run/secrets`;远程部署向后兼容旧明文环境变量;未完成统一密钥轮换与撤销 | `app/secret_refs.py`, `app/release_api.py` |
|
|||
|
|
| P1-6 诊断能力 | `X-Request-ID`,只记录方法/状态/耗时/请求编号,不记录请求内容和完整 URL | `app/request_trace.py` |
|
|||
|
|
| P1-7 配额 | 构建任务全局及站点限制、图片和旧 ZIP 原有限制加压缩比限制;站点数和长期构建保留限制尚未完成 | `app/jobs.py`, `app/main.py` |
|
|||
|
|
|
|||
|
|
## 已知限制(不得作为生产验收通过)
|
|||
|
|
|
|||
|
|
- Docker Engine、GitHub Actions、真实浏览器、备份恢复和生产回滚仍需在目标环境验证。
|
|||
|
|
- PostgreSQL 多实例事务与旧模块 DDL 全量版本迁移尚未验收;目前推荐继续采用单机 SQLite 测试部署。
|
|||
|
|
- WordPress 深度插件映射、Art Design Pro 官方工程构建及完整视觉编辑器仍存在前期版本已披露的限制。
|
|||
|
|
- HTTP 出网遵循系统信任存储中的 CA,不包含专属证书固定(certificate pinning);公网 IP **地址固定**属于 DNS 重绑定防护,两者不是一回事。
|
|||
|
|
- 外部发布 Agent 需具备独立网络策略、审计和服务器级防火墙。`file:` 密钥当前只用于存在的密钥文件,不包含自动轮换。
|
|||
|
|
|
|||
|
|
## 验收步骤
|
|||
|
|
|
|||
|
|
1. 从新空目录解压,初始化 `.env`(不要覆盖旧生产数据)。
|
|||
|
|
2. `python -m pytest -q`,`python -m compileall -q app`,`bash scripts/check.sh`。
|
|||
|
|
3. `docker compose up -d --build`,检查 Web 与 Worker 均健康;`/api/health` 版本为 `7.2.0`。
|
|||
|
|
4. 通过后台创建网站,重复提交幂等构建,确认正常生成;将 `SITEFORGE_MAX_PENDING_JOBS_PER_SITE=1`,确认超限 429。
|
|||
|
|
5. 用受控夹具验证 DNS 解析到私网、混合地址、重定向到私网均被拒绝。
|
|||
|
|
6. 验证备份—恢复、异步任务恢复及正式发布前审计,保存测试记录及镜像摘要。
|
|||
|
|
|
|||
|
|
## 后续实施次序
|
|||
|
|
|
|||
|
|
完成 P1 剩余的数据库迁移、密钥生命周期、可观测性和故障注入后,再按计划 P2 WordPress 迁移闭环、P3 数据装配、P4 模板编辑、P5 发布闭环开发。P7 生产多实例升级须基于试点和压测数据启动。
|