83 lines
5.4 KiB
Markdown
83 lines
5.4 KiB
Markdown
# 测试结果
|
||
|
||
- 日期: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、消费或发送消息。
|
||
|
||
## 仅源码部署调整(2026-08-13)
|
||
|
||
### RED
|
||
|
||
- `pnpm test:deployment` 因 `verify-source-deployment.mjs` 尚不存在而失败,证明新测试先于源码发布门禁实现。
|
||
- `pnpm test:environment-baseline` 因 Docker 活动文件和本地 Compose 指令仍存在而失败,证明政策测试能捕获待移除能力。
|
||
- `node --test server/tools/run-test-api.test.mjs` 因 `checkLocalRedis` 尚未导出而失败,证明外部 Redis 预检行为先有测试。
|
||
|
||
### GREEN
|
||
|
||
- 源码部署夹具:初始 5/5;最终 Review 加入任意新 Dockerfile/Compose 路径回归后为 6/6。
|
||
- 环境与部署契约:10/10;活动 Docker 入口不存在,本地外部 Redis和唯一 Ubuntu 源码部署规则通过。
|
||
- Redis 预检:2/2;OS 分配的本机 TCP 端口分别验证可达和不可达,不安装或启动外部服务。
|
||
- 本机 `redis-cli -h 127.0.0.1 -p 6379 ping` 返回 `PONG`。
|
||
- Server 原有 30 项 Vitest 与新增 2 项 Node 测试全部通过。
|
||
- Playwright 桌面与移动视口共 4/4,通过真实本机 Redis、API 健康接口和 Web 同源代理链路。
|
||
|
||
前述 `pnpm verify:docker` 及镜像验证内容是调整前的真实历史证据。2026-08-13 用户确认仅源码部署后,这些能力已被取代并从活动仓库删除,不再执行或作为发布依据。
|
||
|
||
### 最终源码发布验证
|
||
|
||
`pnpm verify:release`:passed。
|
||
|
||
- Node.js 22.11.0、pnpm 10.25.0 运行时检查通过。
|
||
- 环境 10/10、Schema 28/28、契约 3/3、工程边界 8/8、源码部署 6/6。
|
||
- Web 8/8;Server Vitest 30/30,Redis 预检 Node 测试 2/2。
|
||
- Web、API、Scheduler、Worker 生产构建通过。
|
||
- Playwright 桌面/移动共 4/4,通过现有本机 Redis 和真实 API 健康链路。
|
||
- `verify:source` 确认四类产物、三份 systemd 单元与 Nginx 配置一致;未调用 Docker。
|
||
|
||
应用内浏览器补充验证 1440×900 与 390×844:两种视口页面均非空,页面宽度等于视口宽度,无横向溢出、文字重叠或控制台 warning/error;DOM 中导航与“应用就绪”区域完整。
|
||
|
||
最终 Review 发现并修复两项 Important:systemd 模板曾以 `.service.example` 目标名安装,任意新路径的 Dockerfile/Compose 文件曾可绕过固定清单。两项均先增加失败测试,再修复至 GREEN。
|