7.4 KiB
V1.1 下一阶段验证与发布准备计划
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 在现有微信真机、前端门禁和后端 916 项全量测试通过的基础上,补齐真实数据库并发、完整业务闭环、通知数据一致性和发布前冒烟验证。
Architecture: 保持模块化单体和 PostgreSQL Source of Truth。测试分为 H2 单元/集成测试、Docker PostgreSQL 真实数据库测试、运行中服务冒烟和人工 UAT 四层,任何一层的结果独立记录,不互相替代。
Tech Stack: Java 21、Spring Boot 3、Maven、PostgreSQL、Docker Compose、Vue 3、微信原生小程序、Edge。
Spec: docs/善缘丹阳 V1.1 客户需求基线增量开发与修复计划.md、docs/善缘丹阳 V1.1 数据库与API增量设计.md、docs/STATUS.md。
Global Constraints
- 不清理、回滚或覆盖现有未提交改动。
- 不修改已通过真机验收的业务流程,除非新增验证复现出根因。
- PostgreSQL 是 Source of Truth;H2 只用于快速测试,不能替代真实数据库证据。
- Maven 测试容器继续使用阿里云镜像和
--dns 223.5.5.5 --dns 114.114.114.114,不关闭 TLS 校验。 - 管理端页面验收使用已安装的 Edge,不安装 Chrome/Chromium。
- 测试账号、密码和 Token 只通过环境变量注入,不写入仓库和日志。
Task 1: 真实 PostgreSQL 并发测试
Files:
- Inspect:
backend/src/test/java/com/danyang/match/platform/concurrent.ConcurrentTests.java - Modify:
backend/src/test/java/com/danyang/match/platform/concurrent.ConcurrentTests.java - Modify:
backend/src/test/resources/application-test.yml(仅在测试 profile 需要新增 PostgreSQL 开关时) - Test evidence:
.mimosa/postgres-concurrency-test.log
Interfaces:
-
Consumes: Docker Compose PostgreSQL、现有服务层接口和测试数据清理机制。
-
Produces:
CI=true下可执行的 Like 并发和活动容量竞争测试;成功数、重复 Match 数和超容量数有数据库查询断言。 -
Step 1: 复核现有并发测试是否只是内存计数。
- 确认测试使用真实 service/mapper、事务和 PostgreSQL 表,而不是
AtomicInteger结果模拟。
- 确认测试使用真实 service/mapper、事务和 PostgreSQL 表,而不是
-
Step 2: 建立隔离测试数据。
- 每个测试使用唯一 run id;结束时按 run id 删除关系、活动报名和 Match 数据。
-
Step 3: 用 Docker PostgreSQL 执行并发测试。
- 命令:
docker compose -f infrastructure/docker-compose.yml up -d postgres - 命令:
docker run --rm ... mvn -s /tmp/settings.xml -B -Dtest=ConcurrentTests -Denv=postgres test
- 命令:
-
Step 4: 验证边界。
- 断言同一对用户最终最多一个 active Match;活动 approved 数不超过 capacity;失败操作有明确错误码。
-
Step 5: 保存报告并更新
docs/STATUS.md。
Task 2: 完整注册到牵手 E2E
Files:
- Inspect:
backend/src/test/java/com/danyang/match/platform/core/CoreE2ETest.java - Modify:
backend/src/test/java/com/danyang/match/platform/core/CoreE2ETest.java - Test evidence:
.mimosa/core-e2e-postgres-test.log
Interfaces:
-
Consumes: 微信登录模拟 provider、实名认证、资料审核、推荐、Like、双向 Match、聊天和成功牵手服务。
-
Produces: 一个真实 PostgreSQL 事务闭环测试,覆盖状态迁移和关键权限断言。
-
Step 1: 将
@Disabled占位测试拆成真实步骤。 -
Step 2: 每一步先断言数据库状态,再调用下一步。
-
Step 3: 增加负向断言。
- 未审核资料不能进入推荐;未 Mutual 不能聊天;单方成功牵手确认不能完成。
-
Step 4: 在 PostgreSQL profile 执行并保存日志。
-
Step 5: 仅在完整链路通过后移除
@Disabled,否则保留并将状态标记为NOT_VERIFIED。
Task 3: 通知数据转换告警治理
Files:
- Inspect:
backend/src/main/java/com/danyang/match/platform/notification/mapper/NotificationMapper.java - Inspect:
backend/src/test/java/com/danyang/match/platform/notification/* - Modify: 对应测试夹具或 schema 文件;只有复现业务根因时才修改生产代码。
- Test evidence:
.mimosa/notification-fixture-test.log
Interfaces:
-
Consumes:
notifications.user_id的实际 PostgreSQL/H2 类型和通知 mapper 参数类型。 -
Produces: 不再出现
u-notif-guard这类类型转换告警;通知幂等、落库和查询断言保持通过。 -
Step 1: 对照 Flyway PostgreSQL schema 和
schema-h2.sql的 user_id 类型。 -
Step 2: 定位夹具使用字符串 ID 的测试用例。
-
Step 3: 优先修正测试夹具为合法 UUID;若业务确实支持非 UUID,再修正 mapper 类型契约。
-
Step 4: 重跑通知相关测试和全量 Maven 测试。
-
Step 5: 在报告中区分“日志告警已消除”和“业务通知真实发送”两种结论。
Task 4: 运行中服务发布前冒烟
Files:
- Use:
tests/public-id-web-live.cjs - Use:
tests/admin-dashboard-behavior.cjs - Use:
scripts/miniapp-compile-check.mjs - Create:
.mimosa/release-smoke-20261015.log - Update:
docs/STATUS.md
Interfaces:
-
Consumes: Docker 中运行的 backend、PostgreSQL、Redis、nginx、admin-web;Edge 浏览器。
-
Produces: 登录、首页统计、红娘服务、联系授权审批、公开编号、未登录 401、关键页面导航的可复现结果。
-
Step 1: 备份演示库并记录 Flyway 版本。
-
Step 2: 重启整套 Docker 服务并检查健康端点。
-
Step 3: 用 Edge 执行管理端页面验收。
-
Step 4: 执行 API 冒烟并记录状态码、响应 success/code,不记录 Token。
-
Step 5: 验证服务重启后登录、编号查询和工作台统计仍可用。
Task 5: 用户 UAT 与发布决策
Files:
- Use:
docs/STATUS.md - Use:
docs/PENDING_DECISIONS.md - Create:
docs/RELEASE-READINESS-2026-10-15.md
Interfaces:
-
Consumes: 微信真机复验、Edge 管理端冒烟、后端和前端测试报告。
-
Produces:
GO、CONDITIONAL GO或NO-GO决策,以及剩余 P0/P1 清单。 -
Step 1: 由用户在微信开发者工具复验红娘登录、工作台、服务详情、跟进、完成服务、联系授权审批。
-
Step 2: 使用演示数据走一遍用户确认服务 → 管理端完成服务 → 统计回写闭环。
-
Step 3: 核对首页数字是否来自接口,而非静态展示。
-
Step 4: 记录未完成项:第三方开放、限流阈值、真实微信支付/实名服务等范围外能力继续保持
NOT_IMPLEMENTED或NOT_VERIFIED。 -
Step 5: 形成发布决策;没有真实 PostgreSQL 并发和完整 E2E 证据时不得给出正式生产 GO。
暂不执行的范围
- 不实现第三方 API Key/OAuth、开放 OpenAPI、调用配额或新的支付能力;这些属于已登记的范围扩张决策。
- 不安装 Chrome/Chromium,不用浏览器替代微信真机验收。
- 不进行大规模重构、分支清理或未授权数据库数据改写。
推荐执行顺序
- Task 3(先消除测试夹具告警)
- Task 1(真实 PostgreSQL 并发)
- Task 2(完整 E2E)
- Task 4(运行中服务冒烟)
- Task 5(用户 UAT 与发布决策)