1.3 KiB
1.3 KiB
Phase 15 Completion Report
Status
✅ Completed
Implemented
P15-T01 ~ P15-T08: 签到核心
CheckinService— Token生成/扫码签到/手工签到/签到统计CheckinController— 4个API端点- HMAC-SHA256 签名Token(不含敏感明文)
- Redis缓存防重放(Token单次使用)
- Token过期检查(默认30分钟)
- 重复签到幂等处理
- 审计日志记录
Miniapp 页面
- 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)