Files
danyang-match/docs/Phase-16-V11-Completion-Report.md
T

2.6 KiB
Raw Blame History

Phase 16 完成报告:活动互选二阶段同意重构

版本基线:v1.0.0-RC.2 → v1.1.0-dev | 日期:2026-09-08 对应 EPIC:EPIC-P16-V11


完成摘要

项目 内容
Phase 16
模块 活动互选二阶段同意重构
状态 ✅ 核心链路已完成(V1.1 MVP)
不变量 INV-014/INV-015 强制执行

核心变更

数据模型(V024)

新建 activity_mutual_connection_consents 表:

  • 每对用户在同一个活动中有一条独立记录
  • 分别追踪 user_a_status 和 user_b_status(pending/accepted/declined)
  • 双方都 accepted 时设置 both_confirmed_at
  • UNIQUE 约束使用 LEAST/GREATEST 保证 (A,B) 和 (B,A) 是同一对

不变量强制实现

不变量 实现方式
INV-014: Activity Mutual 不能直接创建 Match confirmConnection() 只更新 consent 状态,不自动创建 Match
INV-015: 双方确认后才创建 Activity Match confirmActivityInterest() 在 RelationshipService 中调用,仅在 bothConfirmed 时触发
INV-010: 复用已有 active Match hasActiveMatch() 检查优先于新建
INV-010: prior Unmatch 新建 episode findLatestMatch() 检查是否曾 unmatch

API 端点

方法 路径 说明
GET /activities/{id}/mutual/results 检测双向互选结果
POST /activities/{id}/mutual/consent 创建互选同意记录
POST /activities/{id}/mutual/confirm 用户确认开启沟通
POST /activities/{id}/mutual/decline 用户拒绝
GET /activities/{id}/mutual/status/{partnerId} 查询个人同意状态
GET /mutual/my-results 获取我的互选结果列表

Miniapp 页面

页面 编号 功能
activity-mutual-result U60 展示所有互选结果,已确认可开聊
activity-mutual-waiting U61 单对互选详情页,支持确认/拒绝/等待状态

前端状态流转

[未表达] → [双方互选产生] → [等待确认] → [用户A确认] → [用户B确认] → [Match创建,可聊天]
                              ↓                    ↓
                         [用户A拒绝]         [用户B拒绝] → [单向关闭]

待补充

任务 阶段 说明
T13 timeout handling 后续 互选超时自动过期逻辑
Admin Web 互选管理 Phase 19 运营后台查看互选统计
E2E 测试补全 Phase 23 完整两阶段流程测试

Phase 16 核心链路完成。下一阶段:Phase 17(举报与风控扩展)