upgrade: adopt V8.21.3 (V8.13→8.21.3: P5 SFTP/S3, P6 multilingual, editor overhaul, enterprise hardening)

Overlay ~150 upstream items onto our V8.12 base, preserving trade-pro
theme, registry tests, and design docs. Re-applied our patch set
(discovery/env_for/blocks.css/type-mapping/theme_color/frontend entries,
test_theme_pro_v3 mods) — all anchors survived upstream evolution.

New platform enhancement (fixes upgrade-introduced regression):
multilingual.site_locale now honors settings_json.locale, plus
PUT /api/i18n/sites/{id}/locale — standalone English sites get
<html lang='en'> under the V8.15 locale-rewrite pipeline.

compose: adopt V8.21.3 (image 8.21.3-dev.1, /api/ready probes, MySQL/S3
env) with project name pinned to siteforge-v8-10 (data volumes).

Tests: 356 passed / 11 failed — all 11 confirmed pre-existing in
pristine V8.21.3 on this host (10 upstream Windows env + our build test
now green after locale fix). Patch registry updated in plan doc.

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-10-23 12:31:03 +08:00
parent 257c89e159
commit 601451f22b
218 changed files with 10441 additions and 628 deletions
+40
View File
@@ -0,0 +1,40 @@
# SiteForge Enterprise V8.16 — 企业部署基础验收记录
版本:`8.16.0-dev.1`;阶段:**开发集成(非生产认证)**。
## 本轮新增与测试门禁
| 验收项 | 验证路径 | 当前结果 |
| --- | --- | --- |
| PostgreSQL 查询行数字/字段访问 | `tests/test_production_v816.py` | 本地模拟测试通过 |
| PostgreSQL SQL 占位符、注释及 DDL 分句 | 同上 | 本地单元测试通过 |
| PostgreSQL 初始化及 schema ledger | `scripts/verify_pg_bootstrap.py` | 脚本已扩展;需要 PostgreSQL 实例实测 |
| PostgreSQL Worker `FOR UPDATE SKIP LOCKED`、事务与任务恢复 | CI `postgres-smoke` | 自动检查代码已接入;本机没有 PG 服务,未实际通过 |
| Worker 按实例隔离心跳 | `tests/test_production_v816.py` | 本地通过 |
| `/api/ready` 探针成功/失败及脱敏 | `tests/test_production_v816.py` | 本地通过 |
| 全平台自动化回归 | `scripts/check.sh` | 按模块三组通过:95+82+78 = **255 项** |
| HTTP + Worker 实际建站链路 | `python scripts/http_end_to_end.py` | **本地通过**:建站、保存、队列、静态 ZIP、预览 |
| Chromium 桌面/移动端真实交互 | `scripts/browser_smoke.py` | **环境阻断**:`ERR_BLOCKED_BY_ADMINISTRATOR`,未通过 |
| Docker Engine Web + Worker | `docker compose up -d --build` | 本机无 Docker Engine,未运行 |
| Redis 通知故障降级 | 历史单元测试 | 通过;真实 Redis 容器未运行 |
| Art Design Pro 官方构建 | 用户提供官方完整源码后执行 pnpm/构建 | **未完成**;交付包含安装脚本/适配页面,不含官方完整项目 |
| 公网 SFTP/S3/HTTPS 上线和回滚 | 独立预生产环境 | **未完成** |
说明:单进程连续执行所有 pytest 在约 84% 时超时;上述 255 项是三个独立 pytest 进程(95/82/78)分别完成并通过,不等同于单进程全量成功。新增真实 HTTP 集成构建了 10 个 HTML 页面,仍有缺少正式域名、未填充栏目内容的质量警告;只证明代码路径畅通。
## 生产环境验收操作建议(必须在预生产进行)
1. 对 V8.15 的 SQLite 数据卷和所有媒体、归档、发布目录做完整备份,先演练恢复;保留生产回退窗口。
2. 在独立 PG 16+ 测试数据库执行 `scripts/verify_pg_bootstrap.py`。验证 Web、Worker 启动与并发 claim;**不把原 SQLite 文件当作 PostgreSQL 数据迁移**。SQLite → PG 的正式数据迁移、外键校验、内容数量和媒体对账还未实现为可一键生产执行的迁移器。
3. `docker compose -f compose.enterprise.yaml config`、`up -d --build`,分别核对 Web `/api/ready`、Worker 本地健康以及 PostgreSQL/Redis 服务健康。
4. 将两个 Worker 实例分别配置唯一的 `SITEFORGE_WORKER_INSTANCE`,断开其中一个,确认另一个健康状态不会使坏实例误报正常;断电中断后要检查租约回收与远程发布状态对账。
5. 用完整真实数据做创建网站、WordPress 迁移、5000 条产品导入、构建、主题预览和多语言 SEO 检验。在 Chromium 1440/1024/390/360 视口进行后台与前台访问性/响应式验证。
6. 在预生产的实际 SFTP/S3/HTTPS Agent 发布,逐步演练上传失败、激活失败、CDN 缓存、健康检查失败及人工回滚;审批人与执行人分离。
7. 获取合法的 Art Design Pro 官方工程后执行 `scripts/install_into_art_design_pro.py`,完成实际路由/会话/CSRF 联调及 `pnpm build`。目前属于可选桥接,不要把它计为完成。
## 风险边界
- PostgreSQL 兼容桥目前在 PG + Psycopg 真机上仍需完整持续验证,不能因为 SQLite 测试通过就宣称 PG 生产稳定。
- Redis 当前主要用于任务唤醒,任务权威状态仍在数据库;并非完整的分布式消息可靠性交付。
- SFTP/S3 原生发布已支持本地仿真,但公网环境、强制 TLS、服务端权限和切换时缓存行为仍需验收。
- 新版未添加 SSO、MFA 或企业级集中监控系统,也未完成 Art Design Pro 官方源码集成。