8cea7dee20
- SiteForge Enterprise V8.10.0-dev.1 upstream source (210 tests) - Fix: v8_workflows._mapped_input now reads both 类型/分类 columns so WXR imports keep post/product types instead of collapsing to page - Docs: trade-pro theme port spec (R3) and implementation plan Co-Authored-By: Claude Code <noreply@anthropic.com>
3.2 KiB
3.2 KiB
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:密钥当前只用于存在的密钥文件,不包含自动轮换。
验收步骤
- 从新空目录解压,初始化
.env(不要覆盖旧生产数据)。 python -m pytest -q,python -m compileall -q app,bash scripts/check.sh。docker compose up -d --build,检查 Web 与 Worker 均健康;/api/health版本为7.2.0。- 通过后台创建网站,重复提交幂等构建,确认正常生成;将
SITEFORGE_MAX_PENDING_JOBS_PER_SITE=1,确认超限 429。 - 用受控夹具验证 DNS 解析到私网、混合地址、重定向到私网均被拒绝。
- 验证备份—恢复、异步任务恢复及正式发布前审计,保存测试记录及镜像摘要。
后续实施次序
完成 P1 剩余的数据库迁移、密钥生命周期、可观测性和故障注入后,再按计划 P2 WordPress 迁移闭环、P3 数据装配、P4 模板编辑、P5 发布闭环开发。P7 生产多实例升级须基于试点和压测数据启动。