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

46 lines
1.7 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.
# Phase 14 Completion Report
## Status
✅ Completed
## Implemented
### P14-T01 ~ P14-T13: 活动核心
- [x] `Activity` + `ActivityRegistration` 实体
- [x] `ActivityMapper`(含名额统计查询)
- [x] `ActivityRegistrationMapper`(含唯一约束查询 + 原子名额检查)
- [x] `ActivityService` — CRUD/报名/审核/取消/我的活动
- [x] `ActivityController`(用户端6端点)
- [x] `ActivityOperatorController`(后台7端点)
### P14: 数据库
- [x] V010 迁移:activities + activity_registrations 表
- 唯一约束:UNIQUE(activity_id, user_id) 防重复报名
- 状态约束:activity_status + registration_status
### Miniapp 页面
- [x] U27 活动首页
- [x] U28 活动详情
- [x] U29 活动报名
- [x] U30 我的活动
## Core Invariants 已保护
- ✅ **活动名额并发安全** — 事务内原子检查 + UNIQUE约束兜底
- ✅ **重复报名安全** — 数据库唯一约束 (activity_id, user_id)
- ✅ **Pending不占正式名额** — 仅approved状态计入名额统计
- ✅ **活动取消后通知所有已审核用户**
## API 端点(13个)
用户端:GET /activities · GET /activities/upcoming · GET /activities/{id}
POST /activities/{id}/register · DELETE /activities/{id}/register · GET /activities/my
后台:POST /operator/activities · PUT /operator/activities/{id}/publish
PUT /operator/activities/{id}/cancel · GET /operator/activities/{id}/registrations
POST /operator/activities/registrations/{rid}/approve
POST /operator/activities/registrations/{rid}/reject
## Tests
- `ActivityServiceTest`: 4 个用例(状态常量 + 并发安全Invariants)
## Next Phase
Phase 15: 签到(Signed Checkin Token + Staff Scan + Duplicate Check)