Files
danyang-match/docs/superpowers/plans/2026-10-12-matchmaker-dual-client-integration.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

6.4 KiB

红娘双端最小联动闭环实施计划

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: 打通红娘 Web 分配、小程序服务对象详情与服务记录、Web 查看结果的第一阶段闭环。

Architecture: 复用现有 Spring Boot 红娘模块、Vue 管理端和微信小程序原生页面。以 matchmaker_assignments 作为数据范围事实来源,以服务端 API 作为状态事实来源,前端只负责展示和提交操作。

Tech Stack: Java 21、Spring Boot 3.x、PostgreSQL、MyBatis-Plus、Vue 3、TypeScript、微信小程序原生 JavaScript/WXML/WXSS。

Spec: docs/superpowers/specs/2026-10-12-matchmaker-dual-client-integration-design.md

Global Constraints

  • 普通红娘只能访问本人有效分配对象。
  • 红娘不能代替用户 Like、Pass、接受活动意向或确认开启聊天。
  • PostgreSQL 是 Source of Truth,前端缓存不能覆盖服务端状态。
  • 联系方式默认拒绝,未完成授权不得返回完整手机号、微信号和详细地址。
  • 不增加依赖,不新建微服务,不改动无关领域。
  • 所有新增业务逻辑先写失败测试,再写最小实现。

Task 1: 固化端点和数据范围测试

Files:

  • Modify: backend/src/test/java/com/danyang/match/platform/matchmaker/* 现有红娘测试
  • Create: backend/src/test/java/com/danyang/match/platform/matchmaker/MatchmakerServiceDetailScopeTest.java
  • Create: backend/src/test/java/com/danyang/match/platform/matchmaker/MatchmakerFollowupScopeTest.java

Interfaces:

  • Consumes: ServiceAssignmentPolicy、MatchmakerServiceService、现有 MatchmakerAssignment 测试夹具。

  • Produces: 可证明“本人有效分配允许、其他红娘/失效分配拒绝”的测试契约。

  • Step 1: 写测试:同一服务对象在有效分配给当前红娘时详情和跟进允许;换成其他红娘、撤销或过期时拒绝。

  • Step 2: 运行单测,确认因现有服务详情/跟进调用路径缺少或未覆盖断言而失败。

  • Step 3: 仅补齐服务层调用现有 ServiceAssignmentPolicy 的最小授权检查和统一错误映射。

  • Step 4: 重新运行新增测试及现有 MatchmakerReferralPhase13Test、MatchmakerAssignmentPermissionTest。

  • Step 5: 记录端点和数据范围结论到阶段报告。

Task 2: 补齐小程序服务对象详情页面

Files:

  • Create: miniapp/pages/matchmaker-service-detail/matchmaker-service-detail.js
  • Create: miniapp/pages/matchmaker-service-detail/matchmaker-service-detail.wxml
  • Create: miniapp/pages/matchmaker-service-detail/matchmaker-service-detail.wxss
  • Create: miniapp/pages/matchmaker-service-detail/matchmaker-service-detail.json
  • Modify: miniapp/app.json
  • Modify: miniapp/pages/matchmaker-workbench/matchmaker-workbench.js

Interfaces:

  • Consumes: GET /operator/matchmaker/services/{id}、GET /operator/matchmaker/services/{id}/history、POST /operator/matchmaker/services/{id}/followup。

  • Produces: 从工作台分配卡片进入详情、查看授权字段、查看历史和提交服务记录。

  • Step 1: 写页面契约测试或静态守卫,验证页面已注册、请求只使用服务 ID、没有联系方式和代操作按钮。

  • Step 2: 运行守卫确认当前页面目录缺失导致失败。

  • Step 3: 实现最小详情页:加载、空状态、失败、无权限、历史列表和记录表单。

  • Step 4: 记录提交成功后重新拉取详情和历史;失败保留表单输入;重复提交由提交锁阻止。

  • Step 5: 运行小程序现有页面守卫和 WXML/WXSS 编译检查。

Task 3: 统一 Web 服务详情和跟进查看

Files:

  • Modify: admin-web/src/modules/matchmaker/MatchmakerManagementView.vue
  • Create or modify: admin-web/src/api/* only if现有 get/post 无法复用
  • Modify: backend/src/main/java/com/danyang/match/platform/matchmaker/controller/MatchmakerOperatorController.java only when Task 1 proves endpoint缺失

Interfaces:

  • Consumes: Task 1 的详情、历史和范围契约。

  • Produces: Web 在本人授权范围内查看服务记录和最新服务状态。

  • Step 1: 写前端行为测试/契约守卫,验证列表点击详情时只传服务 ID,范围错误显示统一提示。

  • Step 2: 运行测试确认当前管理页没有服务详情和跟进查看入口。

  • Step 3: 增加最小抽屉或弹窗,显示服务状态、最近跟进和必要摘要。

  • Step 4: 分配、转交、撤销、结束后刷新当前 Tab,不保留旧对象状态。

  • Step 5: 运行 admin-web 类型检查和构建。

Task 4: 跨端刷新和权限失效处理

Files:

  • Modify: miniapp/pages/matchmaker-workbench/matchmaker-workbench.js
  • Modify: miniapp/pages/matchmaker-service-detail/matchmaker-service-detail.js
  • Modify: miniapp/utils/api.js
  • Modify: admin-web/src/api/client.ts only if现有错误处理不能统一

Interfaces:

  • Consumes: Task 1-3 的端点和错误契约。

  • Produces: 页面显示始终以最新服务端状态为准,权限失效时清理敏感缓存并返回工作台。

  • Step 1: 写请求层测试,验证 401/403/资源失效不会静默吞掉,并能被页面识别。

  • Step 2: 运行测试确认当前请求层行为不足。

  • Step 3: 增加最小的刷新、提交锁、权限失效跳转和非敏感缓存清理。

  • Step 4: 验证 Web 与小程序写操作后都重新读取服务端数据。

  • Step 5: 运行小程序请求层测试和 Web 构建。

Task 5: 第一阶段验收与文档

Files:

  • Create: docs/Phase-matchmaker-dual-client-Completion-Report-2026-10-12.md

  • Modify: docs/STATUS.md only for已验证状态

  • Modify: docs/governance/open-questions.md only for未确认联系授权细节

  • Step 1: 运行后端红娘相关测试、前端构建和小程序静态/编译守卫。

  • Step 2: 以两个红娘账号和一个普通用户账号执行分配、查看、记录、撤销和越权场景。

  • Step 3: 将每项结果标记为 PASS、PARTIAL、FAIL 或 NOT_VERIFIED。

  • Step 4: 只有所有 P0 场景通过才将第一阶段标为 PASS,否则保留 PARTIAL 或 FAIL。

  • Step 5: 输出剩余风险和第二阶段依赖,不自动进入下一阶段。