release: freeze 2026-10-15 validated release baseline
CI/CD Pipeline / UI Contracts (source-structure gates) (push) Canceled after 0s
CI/CD Pipeline / E2E (live stack) (push) Canceled after 0s
CI/CD Pipeline / Backend Build & Test (push) Canceled after 0s
CI/CD Pipeline / Admin Web Build (push) Canceled after 0s
CI/CD Pipeline / Mini Program Compile Check (push) Canceled after 0s
CI/CD Pipeline / Migration Validation (push) Canceled after 0s
CI/CD Pipeline / Test Shell Guard (Phase 23 Gate) (push) Canceled after 0s

This commit is contained in:
WorkBuddy
2026-10-15 09:47:31 +08:00
parent 827c23db1d
commit 3c2b967274
149 changed files with 4324 additions and 348 deletions
@@ -0,0 +1,205 @@
# 红娘双端最小联动闭环阶段报告
日期:2026-10-12
阶段:第一阶段最小联动闭环
结论:PARTIAL
## Docker 验证(2026-10-12)
- 使用已有 Compose 项目 `danyang` 启动,复用了原有 PostgreSQL、Redis、SeaweedFS 数据卷;未删除旧容器或数据。
- `danyang-match-backend`:healthy,`GET http://localhost:8085/api/v1/health/live` 返回 `success=true`、`status=UP`。
- Flyway:成功校验 57 个迁移,数据库版本为 `057`,无待执行迁移。
- `danyang-match-nginx`:healthy,`GET http://localhost:6688/nginx-health` 返回 HTTP 200。
- 管理端和后端镜像均重新构建成功。
## 本次完成
- 固化 Web 与小程序端整合设计:`docs/superpowers/specs/2026-10-12-matchmaker-dual-client-integration-design.md`。
- 固化实施计划:`docs/superpowers/plans/2026-10-12-matchmaker-dual-client-integration.md`。
- 注册并实现红娘小程序服务对象详情页。
- 支持查看授权范围内的服务对象摘要、服务状态和服务历史。
- 支持新增红娘服务跟进记录,提交时使用现有请求层幂等键。
- 修正红娘工作台对小程序统一请求层返回值的读取方式,使工作台统计、分配和联系授权数据可以正确装载。
- Web 红娘管理页增加服务详情和跟进摘要查看入口。
- 后端已有详情、跟进端点和 `ServiceAssignmentPolicy` 已核对,无需重复新增接口。
## 修改文件
- `docs/superpowers/specs/2026-10-12-matchmaker-dual-client-integration-design.md`
- `docs/superpowers/plans/2026-10-12-matchmaker-dual-client-integration.md`
- `docs/Phase-matchmaker-dual-client-Completion-Report-2026-10-12.md`
- `miniapp/app.json`
- `miniapp/pages/matchmaker-workbench/matchmaker-workbench.js`
- `miniapp/pages/matchmaker-service-detail/matchmaker-service-detail.js`
- `miniapp/pages/matchmaker-service-detail/matchmaker-service-detail.wxml`
- `miniapp/pages/matchmaker-service-detail/matchmaker-service-detail.wxss`
- `miniapp/pages/matchmaker-service-detail/matchmaker-service-detail.json`
- `admin-web/src/modules/matchmaker/MatchmakerManagementView.vue`
## 验证结果
| 检查项 | 结果 |
|---|---|
| 小程序 JavaScript 语法 | PASS |
| 小程序 TypeScript 类型检查 | PASS |
| 小程序页面注册和敏感字段守卫 | PASS |
| 管理端 Vite 构建 | PASS |
| `git diff --check` | PASS |
| 后端红娘自动化测试 | NOT_VERIFIED:当前 Windows 环境未提供可用 Maven,仓库 `mvnw` 为 Unix 脚本 |
| 微信开发者工具 WXML/WXSS 真机/编译验收 | NOT_VERIFIED |
| Web 与后端真实环境联调 | NOT_VERIFIED |
Docker 测试复核:
- 核心红娘行为测试组(动作禁止、联系方式禁用、权限守卫、字段隐私等)执行成功,退出码 0。
- 扩展组合测试执行 55 项,其中 6 项出现错误、0 项失败;错误集中于既有 H2 测试夹具的 UUID 类型约束:测试使用 `op-mm-other` 查询 `audit_logs.operator_id`,导致审计断言查询发生数据类型转换错误。该结果不证明完整测试通过,也未将其归因于本次双端改动。
## 当前剩余风险
1. 尚未使用真实账号在 Web 和小程序执行分配、查看、服务记录、撤销和越权完整链路;当前完成的是服务启动和自动化测试验证。
2. 小程序页面中的服务类型显示目前沿用后端值,后续应统一中文状态字典,但不影响第一阶段数据联动。
3. 当前采用页面显示和写操作后的重新拉取,实时 WebSocket 通知属于下一阶段。
4. 联系授权审批岗位、授权期限和用户确认细节仍按安全默认行为保持开放,未新增联系方式权限。
## 第二阶段增量(服务转介回应)
本轮按用户授权进入下一阶段,选择依赖最少的“服务转介回应”子阶段:红娘在运营端发起转介后,普通用户在小程序查看本人转介记录,并由本人确认。后端继续复用既有 `GET /referrals/my-history` 与 `POST /referrals/{id}/confirm`,没有新增数据表或凭据配置。
### 本轮完成
- 新增小程序页面 `pages/referral-confirmation/`,展示服务站/公益活动转介、待确认与已确认状态。
- 确认操作仅调用用户身份接口,复用既有幂等键;成功后重新拉取服务端状态。
- 在善缘公益服务页增加“待确认服务”入口,并注册统一路由常量。
- 页面不提供红娘代确认、拒绝(后端尚无拒绝契约)或联系方式展示。
### 本轮验证
| 检查项 | 结果 |
|---|---|
| 转介页面契约测试(2项) | PASS |
| 新增 JavaScript 语法检查 | PASS |
| 小程序 JSON 解析 | PASS |
| 小程序 TypeScript 类型检查 | PASS |
| 管理端 Vite 构建 | PASS(存在既有 CSS URL 警告) |
| `git diff --check` | PASS |
| 微信凭据服务端最小检查 | PASS;未保存令牌 |
| 微信开发者工具 WXML/WXSS/真实 `wx.login` | NOT_VERIFIED;当前工具环境无开发者工具/真机能力 |
### 第二阶段状态
结论:`PARTIAL`。代码契约与构建检查通过;真实小程序编译、登录及跨端真实账号联调仍待在微信开发者工具或真机完成。后端当前没有“拒绝转介”接口,本轮未在前端伪造该能力。
## 真机反馈修复(红娘端入口)
真机验收发现首屏只能进入用户端。根因是红娘页面虽已注册,但没有用户可达入口,且冷启动未识别 `operatorToken`,会被用户端 bootstrap 的登录跳转覆盖。
本次修复:
- 用户登录页增加“红娘工作人员入口”,进入独立账号密码登录页。
- 用户“我的”页增加同一入口;已有工作人员会话直接进入工作台。
- `App.onLaunch` 增加工作人员会话/红娘深链分流,避免用户端登录态覆盖。
- 新增入口契约与启动分流测试。
修复验证:入口契约 PASS、启动分流 PASS、TypeScript 类型检查 PASS、`git diff --check` PASS。请在微信开发者工具重新编译并从“红娘工作人员入口”验证登录及工作台页面。
## 红娘登录 401 修复(2026-10-12)
真机控制台显示请求 `POST /api/v1/operator/auth/login` 返回 401。核对后端 `OperatorAuthController` 后确认正式端点为 `POST /api/v1/auth/operator/login`;错误路径会先被安全链拦截,因此不会进入账号密码校验。
- 已将小程序红娘登录请求改为 `${API_BASE_URL}/auth/operator/login`。
- 新增登录端点契约测试,锁定前端路径与后端控制器一致。
- 复验结果:登录契约 PASS、入口/启动测试 PASS、后端真实登录检查 PASS、语法检查 PASS。
## 候选建议增量(第二阶段继续)
- 红娘工作台的“查看推荐”改为进入专用用户推荐页,不再误跳普通缘分页。
- 新增用户端红娘推荐页:读取本人推荐、标记已读、由用户本人执行 Like/Pass。
- 兼容后端当前直接返回数组的推荐响应,避免前端按分页对象读取导致列表为空。
- Like/Pass 继续复用用户 `matchStore`,红娘端没有代操作入口。
验证:候选建议契约测试 3 项 PASS;新增页面 JavaScript 语法 PASS;小程序 TypeScript 检查 PASS;登录、转介和候选建议相关契约测试全部 PASS;`git diff --check` PASS。
本增量仍需在微信开发者工具/真机用真实用户账号验证推荐数据、详情、Like/Pass 和 Mutual 跳转。
## 受控联系审批队列修复(2026-10-13)
开发者工具验收后继续复核发现,管理端“联系授权审批”误读红娘本人 `/my` 列表,审批人只能看到自己发起的申请。现已增加独立的 `GET /operator/matchmaker/contact-authorizations/pending`:平台管理员查看全量待审批申请,红娘组长仅查看同组织申请;申请人仍使用 `/my`。
验证:Docker 后端重新编译并健康启动;真实接口创建演示待审批申请后,`/pending` 返回 `pending_approval` 且包含该申请;管理端 `pnpm run type-check`、`pnpm run build` 通过;小程序 11 项契约测试通过。
## 下一阶段
在修复或隔离 H2 审计夹具问题并完成真实账号联调后,再实施服务申请回应、候选建议、活动任务、风险转介和未读通知。当前不将本阶段标记为 PASS,也不自动进入下一阶段。
## 下一阶段增量:用户确认服务方案(2026-10-12)
按产品确认口径,本轮仅增加“用户确认后恢复服务中”:用户本人对 `waiting_user` 服务单确认后,状态变更为 `in_service`;不新增拒绝、撤回或红娘代确认。
### 修改
- 新增用户端 `POST /api/v1/matchmaker/services/{id}/confirm`,只接受当前用户且仅更新 `waiting_user` 状态。
- 新增 `matchmakerService.confirmService` 及服务进度页确认按钮;成功后重新读取服务端状态,提交期间加锁。
- 新增小程序契约测试,覆盖路由、状态迁移和用户端入口限制。
### 验证
| 检查项 | 结果 |
|---|---|
| 小程序契约回归(候选建议、转介、服务确认) | PASS,7 项 |
| JavaScript 语法检查 | PASS |
| 管理端 Vite 构建 | PASS(保留既有 CSS URL 与 chunk 大小警告) |
| Docker 后端重建、强制重建部署 | PASS,backend healthy |
| 真实 HTTP:本人 `waiting_user → in_service` | PASS |
| 真实 HTTP:非本人确认 | PASS,返回 CONFLICT,状态未被改变 |
| 微信开发者工具/真机页面编译 | NOT_VERIFIED |
本轮仍使用模拟微信登录和演示数据;Mock Provider 重启后会重置 code 到用户的内存映射,验收时必须使用同一容器生命周期内的登录会话。
## 下一阶段增量:红娘工作台活动/服务站转介任务展示(2026-10-12)
按“活动任务/转介闭环”最小增量,红娘小程序工作台复用既有 `GET /api/v1/referrals/operator/history`,展示本人发起的公益活动或服务站转介、用户确认状态和时间。该页面只读,不提供红娘代报名、代确认或敏感联系方式;无数据时保持空状态。
### 修改
- 工作台并行读取本人转介历史,并将类型与确认状态转换为中文展示。
- 分配对象无关联服务单时显示对象摘要和联系组长提示,避免点击无效跳转。
- 保持后端 PostgreSQL 转介记录为事实来源,不新增表和演示数据。
### 验证
| 检查项 | 结果 |
|---|---|
| 小程序契约回归(全量 `tests/miniapp`) | PASS,11 项 |
| 小程序 JavaScript 语法检查 | PASS,114 个文件 |
| 管理端 Vite 构建 | PASS(存在既有 CSS URL 与 chunk 大小警告) |
| `git diff --check` | PASS(仅 Windows 换行提示) |
| Docker 演示红娘登录 | PASS,`demo_wanghongniang / demo123` |
| `GET /referrals/operator/history` | PASS,当前模拟数据为空数组 |
| `GET /operator/matchmaker/assignments/my` | PASS,返回 2 条本人有效分配对象 |
| `GET /operator/matchmaker/dashboard` | PASS |
| 微信开发者工具/真机 WXML、WXSS 和页面联动 | NOT_VERIFIED |
### 本阶段状态
结论:`PARTIAL`。红娘端已具备活动/服务站转介结果的读取和展示契约,Docker 接口正常;当前演示库无转介记录,且微信开发者工具/真机验收仍需在用户侧完成。下一步可在有真实转介记录后复验工作台展示,再进入未读通知或服务申请回应等后续范围。
## 开发者工具人工验收补充(2026-10-13)
用户已在微信开发者工具完成红娘端登录及页面联动验收,反馈“暂无问题”。本次验收覆盖红娘入口、账号密码登录、工作台、服务对象详情、服务记录和转介任务展示。
| 检查项 | 结果 |
|---|---|
| 微信开发者工具红娘端登录 | PASS |
| 红娘工作台进入与数据展示 | PASS |
| 服务对象详情与服务记录 | PASS |
| 活动/服务站转介任务展示 | PASS |
据此,前述“微信开发者工具/真机页面联动”风险项已关闭为 `PASS`;真实生产账号、真实 PostgreSQL 数据和真机网络环境仍不等同于本次开发者工具验收。
## 候选建议进展增量(2026-10-13)
- 红娘工作台新增“推荐进展”只读区,读取 `/operator/matchmaker/recommendations`。
- 展示候选建议状态和推荐理由;红娘端不提供 Like/Pass,用户决定权保持在用户端。
- 小程序全量契约测试、启动分流测试、工作台 JavaScript 语法检查和 `git diff --check` 均通过。
本增量待用户在微信开发者工具确认推荐进展区的显示效果;确认后再进入下一项业务。