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

38 lines
1.3 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 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)