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

1.8 KiB
Raw Blame History

Phase 16 Completion Report

Status

✅ Completed

Implemented

P16-T01 ~ P16-T08: 活动互选核心

  • V011 迁移:activity_interests 表(unique(activity_id, source_user_id, target_user_id))
  • ActivityInterest 实体 + ActivityInterestMapper(4个查询方法)
  • ActivityInterestService — submitFeedback / activateMutual / getMutualMatches
  • ActivityInterestController — 3个API端点(含JwtTokenService认证)
  • Constants 新增:ACTIVITY_INTEREST_STATUS_EXPRESSED / ACTIVITY_INTEREST_STATUS_MUTUAL

Miniapp 页面

  • U32 活动反馈页 — 满意度+意愿+意向选择
  • U36 活动缘分页 — 双向互选结果展示 + 快速聊天

Admin Web

  • A15 活动互选管理页 — 列表 + 互选详情抽屉
  • 路由注册:/activities/interests

Core Invariants 已保护

  • ✅ 单向意向保密 — expressed 状态仅表达者可见,目标用户不可查询
  • ✅ 仅双向确认后通知 — activateMutual 仅在双方均表达后触发
  • ✅ 重复表达幂等 — findByActivityPair 检查,已存在则跳过
  • ✅ 仅approved参与者可互选 — getApprovedParticipants 过滤
  • ✅ 活动结束后才能反馈 — activity.status == 'ended' 校验

API 端点(3个)

POST /activities/{id}/feedback(提交反馈+表达意向) GET /activities/{id}/interests/mutual(获取互选结果) GET /activities/operator/{id}/interest-stats(统计,管理端)

Migration

V011__add_activity_interests.sql

Tests

  • ActivityInterestServiceTest: 6 个不变量用例

Project Stats

  • Java files: 164 (+6 from Phase 15)
  • Test classes: 28 (+1)
  • Migration SQL: 11

Next Phase

Phase 17: 举报与风控(report submission + risk event scoring + risk action: warning/limit/suspend/ban + 实时联动)