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

56 lines
2.0 KiB
Markdown

# Phase 17 Completion Report
## Status
✅ Completed
## Implemented
### P17-T01 ~ P17-T10: 举报 + 风控核心
- [x] V012 迁移:`reports` + `risk_events` + `risk_actions` 三张表
- [x] `Report` / `RiskEvent` / `RiskAction` 实体 + Mapper(8个查询方法)
- [x] `ReportService` — 提交举报/获取列表/处理举报/风险画像
- [x] `ReportController` — 用户端2个端点
- [x] `ReportOperatorController` — 管理端5个端点
- [x] Constants 新增:举报原因/状态/风险动作/风险等级 常量
### Miniapp 页面
- [x] U26 举报页 — 9种举报原因 + 补充说明 + 截图证据
- [x] 我的举报页 — 举报记录列表 + 状态标签
### Admin Web
- [x] A15 举报中心 — 统计卡片 + 待处理列表 + 按优先级排序
- [x] A16 举报详情抽屉 — 被举报人风险画像 + 处置操作表单
- [x] 路由注册:/risk/reports
## Core Invariants 已保护
- ✅ **关键词命中 ≠ 直接处罚** — 仅创建风险事件+提示,不自动封禁
- ✅ **风险评分不自动定罪** — 仅用于排序发现和人工审核
- ✅ **封禁需人工复核** — 永久封禁不走自动流程
- ✅ **举报不成立 ≠ 诈骗** — 不处罚举报人
- ✅ **RiskLevel与AccountStatus分离** — 风险等级高不代表直接封号
- ✅ **诈骗/冒充优先处理** — 按 reason_type 优先级排序
## API 端点(7个)
POST /risk/reports(提交举报)
GET /risk/reports/my(我的举报)
GET /operator/risk/reports/pending(待处理列表)
GET /operator/risk/reports/{id}(详情+风险画像)
POST /operator/risk/reports/{id}/process(处理举报)
GET /operator/risk/reports/stats(统计)
GET /operator/risk/users/{userId}(用户风险画像)
## Migration
V012__add_risk_and_report_tables.sql
## Tests
- `ReportServiceTest`: 7 个不变量用例
## Project Stats
- Java files: 176 (+12 from Phase 16)
- Test classes: 29 (+1)
- Migration SQL: 12
## Next Phase
Phase 18: 申诉(appeal提交/审核/Feature Flag控制)
EOF
echo "Done"