Files
danyang-match/docs/Phase-matchmaker-dual-client-Completion-Report-2026-10-12.md
T
WorkBuddy 3c2b967274
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
release: freeze 2026-10-15 validated release baseline
2026-10-15 09:47:31 +08:00

206 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 红娘双端最小联动闭环阶段报告
日期: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` 均通过。
本增量待用户在微信开发者工具确认推荐进展区的显示效果;确认后再进入下一项业务。