docs(GOV-009): 封存脚手架复核材料

This commit is contained in:
2026-08-13 19:55:45 +08:00
parent 95b8611bd9
commit f50268b70f
15 changed files with 290 additions and 2 deletions
@@ -0,0 +1,48 @@
# 测试结果
- 日期:2026-08-13
- 实现提交:`95b8611bd9bbc282193591e472e2e19c617e5035`
- 状态:passed
## 测试先行证据
- 三进程配置 Token 缺失、Scheduler/Worker 启动后自行退出:RED;动态模块注入和生命周期锚点实现后 GREEN。
- 消息信封缺少追溯字段、MySQL 接受 5.7.41、真实空库 dump 被误判:RED;完整信封、5.7.42 固定和对象计数判空后 GREEN。
- `.vue` 越界导入未被发现、Vite 无 `/api` 代理:RED;SFC 脚本扫描和同源代理后 GREEN。
- 契约漂移验证模块不存在:RED;生成后限定路径 Git diff 与 Git 跟踪门禁后 3/3 GREEN。
- Vue 外部 `script src`、可变镜像标签和干净 checkout 生命周期用例依次 RED;禁止外部脚本、摘要校验与公开生产 fixture 实现后 GREEN。
- Playwright 访问真实健康接口时代理连接拒绝:RED;同时启动测试 API 并复用可用本机 Redis 后 GREEN。
## 完整验证
`pnpm verify`:passed。
- 运行时:Node.js 22.11.0、pnpm 10.25.0。
- 治理:5/5。
- MySQL 架构规范:2/2。
- 环境与部署契约:11/11。
- Schema 基线:28/28;`v0.0.7 (not_applicable)` 验证通过。
- 生成契约漂移:3/3;OpenAPI 与 Web 生成类型同步,未跟踪生成物会阻断。
- 工程边界:8/8,包含 Vue SFC 内联脚本,以及外部脚本单双引号、无引号和属性换序越界用例。
- 生产镜像引用:5/5;拒绝空值、`latest`、普通 tag 和裸摘要。
- Web Vitest:8/8。
- Server Vitest:30/30,包含 API/Scheduler/Worker 与两个真实子进程生命周期用例。
- Web、API、Scheduler、Worker 生产构建:passed。
- Playwright:桌面/移动共 4/4;页面外壳与 Web → Vite → Nest API 健康链路均通过。
- `git diff --check`、ESLint、Prettier、TypeScript:passed。
`pnpm verify:docker`:passed。
该结果是 2026-08-13 已完成的历史交付验证。按用户随后决定,Docker 不再作为日常开发必跑项;核心功能完成后再决定是否保留 Docker 部署,并仅在最终交付阶段按需重跑。
- Web 与 Server 多阶段镜像真实构建成功。
- Server 镜像以 `node` 非 root 用户运行。
- API、Scheduler、Worker 三个镜像入口存在;Scheduler/Worker 均在容器内持续运行,并在 `SIGTERM` 后退出码为 0。
- 隔离容器内 Redis/API/Web 启动,API 健康 200、Web 首页和 Nginx `/api` 代理通过。
- 临时容器、网络和验证镜像已清理。
## 本机与固定开发基础设施
- 本机 Redis `127.0.0.1:6379` 的 DB 0、1、2 分别执行只读 `PING`,三次均返回 `PONG`;未读取或修改业务键。
- 固定开发 MySQL 只读会话返回 `5.7.42-0ubuntu0.18.04.1`、库 `a_share_analysis_dev`、`utf8mb4`、`utf8mb4_general_ci`、会话时区 `+08:00`;Task 1 对象计数为 0。密码只通过临时进程环境传递,未输出或写入命令参数;未连接、探测或读取生产数据库。
- 本机 RocketMQ 只读 TCP 可达性复核:NameServer `127.0.0.1:9876`、Broker `127.0.0.1:10911`、Proxy `127.0.0.1:8081` 均可达。Node Adapter 仍保持禁用,没有创建 Topic、消费或发送消息。