Files

125 lines
6.1 KiB
Markdown
Raw Permalink Normal View History

# V1.1 可发布条件实施计划
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** 在不扩大业务范围的前提下,完成丹阳公益婚恋平台 V1.1 的发布前验证,并输出可复现的 `GO`、`CONDITIONAL GO` 或 `NO-GO` 决策。
**Architecture:** 保持模块化单体、PostgreSQL Source of Truth 和现有 Docker Compose。验证分为代码测试、真实 PostgreSQL、运行中服务、人工 UAT、运维发布五层;任一层的结果不替代其他层。
**Tech Stack:** Java 21、Spring Boot 3、PostgreSQL 16、Redis、Docker Compose、Vue 3、微信原生小程序、Edge、Maven 阿里云镜像。
**Spec:** `docs/superpowers/plans/2026-10-15-next-phase-validation-roadmap.md`、`docs/STATUS.md`、`AGENTS.md`。
## Global Constraints
- 不清理、回滚或覆盖现有未提交修改。
- 不把 H2、内存模拟、Mock 微信或演示 Seed 结果写成生产验收证据。
- 不安装 Chrome/Chromium;管理端使用 Edge。
- 测试账号、密码、Token 只通过环境变量注入,不写入仓库或日志。
- 不修改生产业务逻辑,除非真实验证复现出根因并完成回归测试。
- 不执行不可逆数据库清理;所有演示数据操作前先备份。
---
### Task 1:发布基线与环境确认
**Files:**
- Inspect: `git status`、`infrastructure/docker-compose.yml`、`.env.example`、`docs/PENDING_DECISIONS.md`
- Create: `.mimosa/release-baseline-20261015.log`
- Modify: `docs/STATUS.md`
**Interfaces:**
- Produces:当前提交/工作区、Flyway 版本、容器健康状态、配置缺口清单。
- [ ] 检查工作区,不修改既有未提交文件。
- [ ] 检查 `.env` 必需变量是否存在,仅输出变量名,不输出值。
- [ ] 启动或复用完整 Docker 演示栈,确认 PostgreSQL、Redis、后端、管理端、Nginx 健康。
- [ ] 备份演示数据库并记录 Flyway 版本。
- [ ] 将缺失项分为代码可执行项和必须由用户/运营提供的条件。
验收:环境健康、备份文件存在、无敏感值进入日志。
### Task 2:真实 PostgreSQL 并发门禁
**Files:**
- Inspect/Modify:`backend/src/test/java/com/danyang/match/platform/concurrent.ConcurrentTests.java`
- Inspect/Modify:`backend/src/test/resources/application-test.yml`
- Create:`.mimosa/postgres-concurrency-test.log`
**Interfaces:**
- Consumes:隔离 PostgreSQL 数据库、真实 Service/Mapper。
- Produces:Like 并发无重复 active Match;活动报名/审核不超过容量;失败有明确业务错误。
- [ ] 为每次测试生成唯一 run id 和隔离用户/活动数据。
- [ ] 将内存 `AtomicInteger` 模拟替换为真实 Service/Mapper 调用。
- [ ] 执行同一目标的并发 Like 和超容量活动报名/审核。
- [ ] 查询 PostgreSQL 结果,断言重复 Match 为 0、approved 数不超过 capacity。
- [ ] 清理本次 run id 数据并保留日志。
验收:真实 PostgreSQL 测试通过;否则标记 `NOT_VERIFIED`,不得给正式生产 GO。
### Task 3:完整业务闭环 E2E
**Files:**
- Inspect/Modify:`backend/src/test/java/com/danyang/match/platform/core/CoreE2ETest.java`
- Create:`.mimosa/core-e2e-postgres-test.log`
**Interfaces:**
- Consumes:微信 Mock Provider、实名/资料审核、推荐、Like、双向 Match、聊天、牵手服务。
- Produces:真实 PostgreSQL 下可复现的注册到牵手闭环和负向权限断言。
- [ ] 拆解现有 `@Disabled` 占位测试。
- [ ] 每个步骤先查询数据库状态,再进入下一步。
- [ ] 增加未审核资料不能推荐、未 Mutual 不能聊天、单方确认不能完成的负向断言。
- [ ] 在隔离 PostgreSQL 数据库执行并保存日志。
- [ ] 只有完整链路通过才移除 `@Disabled`;否则保留并标记 `NOT_VERIFIED`。
验收:主流程和负向流程均通过。
### 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`
- Modify:`docs/STATUS.md`
**Interfaces:**
- Consumes:完整 Docker 栈、Edge、微信开发者工具。
- Produces:登录、工作台、红娘服务、授权审批、公开编号、401、重启恢复证据。
- [ ] 执行后端健康、管理端 `/admin/`、未登录 401 和公开编号 API 冒烟。
- [ ] 用 Edge 验证管理端登录、工作台统计、红娘服务、服务详情、跟进、完成服务、联系授权审批。
- [ ] 用演示数据走用户确认服务到管理端完成服务的闭环,核对统计回写。
- [ ] 重启后端和前端服务,重复登录、工作台和编号查询。
- [ ] 运行小程序编译检查并由用户在微信开发者工具/真机完成红娘端关键路径复验。
验收:核心页面、接口和重启恢复均通过。
### Task 5:生产配置、备份恢复和人工发布条件
**Files:**
- Inspect:`infrastructure/docker-compose.prod.yml`、`infrastructure/scripts/backup.sh`、`infrastructure/scripts/restore.sh`、`docs/legal/privacy-policy.md`、`docs/security/PIA.md`
- Create:`docs/RELEASE-READINESS-2026-10-15.md`
- Modify:`docs/STATUS.md`
**Interfaces:**
- Produces:发布条件矩阵、剩余 P0/P1、最终 `GO/CONDITIONAL GO/NO-GO`。
- [ ] 验证生产配置关闭 Mock 微信、演示 Seed、Debug、Swagger,并使用注入密钥。
- [ ] 执行加密备份和干净环境恢复演练,记录数据库校验结果。
- [ ] 验证 HTTPS、域名、监控、日志、回滚目标和端口暴露。
- [ ] 核对隐私政策法务确认、微信小程序审核、运营真实内容和待决策项。
- [ ] 形成发布决策:全部 P0 通过才允许 `GO`;有人工条件未完成则 `CONDITIONAL GO`;真实数据库/E2E/安全门禁缺失则 `NO-GO`。
验收:发布报告包含每项证据、负责人、阻塞原因和下一步。
## 执行顺序
1. Task 1:基线和环境
2. Task 2:真实 PostgreSQL 并发
3. Task 3:完整 PostgreSQL E2E
4. Task 4:运行中服务和人工验收
5. Task 5:生产门禁和发布决策