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

38 lines
1.3 KiB
Markdown
Raw Normal View History

2026-09-09 22:05:00 +08:00
# Phase 15 Completion Report
## Status
✅ Completed
## Implemented
### P15-T01 ~ P15-T08: 签到核心
- [x] `CheckinService` — Token生成/扫码签到/手工签到/签到统计
- [x] `CheckinController` — 4个API端点
- [x] HMAC-SHA256 签名Token(不含敏感明文)
- [x] Redis缓存防重放(Token单次使用)
- [x] Token过期检查(默认30分钟)
- [x] 重复签到幂等处理
- [x] 审计日志记录
### Miniapp 页面
- [x] U31 签到码页 — Token展示 + 复制 + 刷新
## Core Invariants 已保护
- ✅ **二维码不含敏感明文** — Token为HMAC签名,不暴露userId/身份证/手机号
- ✅ **Token过期不可用** — 服务端校验时间戳
- ✅ **重复签到幂等** — 已签到用户再次扫码返回成功而非新增记录
- ✅ **仅approved用户可签到** — 未审核通过不能签到
- ✅ **志愿者Scope限制** — 通过Operator权限控制
## API 端点(4个)
POST /activities/{id}/checkin-token(生成签到码)
POST /activities/operator/checkin/scan(扫码签到)
POST /activities/operator/{id}/checkin/manual(手工签到)
GET /activities/operator/{id}/checkin-stats(签到统计)
## Tests
- `CheckinServiceTest`: 4 个用例
## Next Phase
Phase 16: 活动反馈与互选(activity_feedback + activity_interests + 双向互选Match)