Files

5.4 KiB
Raw Permalink Blame History

测试结果

  • 日期: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。