chore: establish V1.1 recovery baseline

This commit is contained in:
2026-09-09 22:05:00 +08:00
commit b46b48eb33
947 changed files with 155471 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
# Phase 18 Completion Report
## Status
✅ Completed
## Implemented
### P18-T01 ~ P18-T08: 申诉核心
- [x] V013 迁移:`appeals` 表(含 status/escalation 约束)
- [x] `Appeal` 实体 + `AppealMapper`(5个查询方法)
- [x] `AppealService` — 账号状态检查 / 提交申诉 / 处理申诉 / 统计
- [x] `AppealController` — 用户端3个端点(含FeatureFlag检查)
- [x] `AppealOperatorController` — 管理端5个端点
- [x] Constants 新增:APPEAL_STATUS_* 5种 / RISK_ACTION_STATUS_* 3种
- [x] FeatureFlagConfig 已有 `appealEnabled = false`
### Miniapp 页面
- [x] U48 账号受限页 — 显示限制状态/原因/是否可申诉
- [x] 申诉提交页 — 原因+证据+联系方式+提交成功态
### Admin Web
- [x] A18 申诉管理页 — 统计卡片 + 待处理列表 + 详情抽屉(3种处置决策)
- [x] 路由注册:/appeals
## Core Invariants 已保护
- ✅ **FeatureFlag 控制开关** — appealEnabled 默认 false,上线前需配置开启
- ✅ **仅 ban/suspend 可申诉** — warning/feature_limit 不支持申诉
- ✅ **申诉幂等** — 同一用户对同一 action 只能有一个 pending/reviewing 申诉
- ✅ **申诉通过 → 解除处置** — approve 后自动将 risk_action 标记为 resolved
- ✅ **申诉被拒 → 维持原处置** — reject 不变更 risk_action
- ✅ **升级人工 → 通知风控员** — escalate 触发 system 通知
- ✅ **处置已失效不可申诉** — 检查 risk_action.status == 'active'
## API 端点(8个)
GET /appeals/account-status(账号状态+是否可申诉)
POST /appeals(提交申诉)
GET /appeals/my(我的申诉)
GET /operator/appeals/pending(待处理列表)
GET /operator/appeals/{id}(详情)
POST /operator/appeals/{id}/process(处理:approve/reject/escalate)
GET /operator/appeals/stats(统计)
GET /operator/appeals/users/{userId}(用户申诉记录)
## Migration
V013__add_appeals_table.sql
## Tests
- `AppealServiceTest`: 9 个不变量用例(含 Mockito 注入)
## Project Stats
- Java files: 184 (+8 from Phase 17)
- Test classes: 30 (+1)
- Migration SQL: 13
- Miniapp pages: 30 (+2)
## Next Phase
Phase 19: 后台完善(用户管理/机构管理/Operator角色管理/敏感访问审计日志查询)