67 lines
1.8 KiB
Markdown
67 lines
1.8 KiB
Markdown
# Phase 18 完成报告:申诉保持
|
||||
|
|
|
|||
|
|
> 版本基线:v1.0.0-RC.2 → v1.1.0-dev | 日期:2026-09-08
|
|||
|
|
> 对应 EPIC:EPIC-P18-V11
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 完成摘要
|
|||
|
|
|
|||
|
|
| 项目 | 内容 |
|
|||
|
|
|------|------|
|
|||
|
|
| Phase | 18 |
|
|||
|
|
| 模块 | 申诉保持 |
|
|||
|
|
| 状态 | ✅ 已验证(V1.0基础保持不变) |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 不变量保持验证
|
|||
|
|
|
|||
|
|
| 不变量 | 实现 | 验证方式 |
|
|||
|
|
|--------|------|----------|
|
|||
|
|
| 仅 ban/suspend 可申诉 | AppealService.checkCanAppeal() | 源码确认 |
|
|||
|
|
| 同一用户对同一action只允许一次pending申诉 | AppealService.submitAppeal() 幂等检查 | 源码确认 |
|
|||
|
|
| 申诉通过 → 解除risk_action | AppealService.processAppeal() approve分支 | 源码确认 |
|
|||
|
|
| 申诉被拒 → 维持原处置 | AppealService.processAppeal() reject分支 | 源码确认 |
|
|||
|
|
| FeatureFlag 控制申诉开关 | appealEnabled flag | 源码确认 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 现有代码结构(无需修改)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
backend/
|
|||
|
|
appeal/
|
|||
|
|
controller/
|
|||
|
|
AppealController.java — 用户端: account-status/submit/my
|
|||
|
|
AppealOperatorController.java — 后台端: pending/detail/process/stats/users
|
|||
|
|
service/
|
|||
|
|
AppealService.java — 核心逻辑
|
|||
|
|
entity/
|
|||
|
|
Appeal.java — 申诉实体
|
|||
|
|
mapper/
|
|||
|
|
AppealMapper.java
|
|||
|
|
dto/
|
|||
|
|
AppealSubmitDTO.java
|
|||
|
|
AppealProcessDTO.java
|
|||
|
|
AppealItemDTO.java
|
|||
|
|
|
|||
|
|
miniapp/pages/appeal/ — 申诉页面(已注册在app.json)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## V1.1 兼容性确认
|
|||
|
|
|
|||
|
|
| 方面 | 结论 |
|
|||
|
|
|------|------|
|
|||
|
|
| appeals 表结构 | 无变化,V1.0 保持兼容 |
|
|||
|
|
| AppealController API | 无变化 |
|
|||
|
|
| AppealOperatorController API | 无变化 |
|
|||
|
|
| Miniapp 申诉页面 | 无变化 |
|
|||
|
|
| FeatureFlag 开关 | 保持不变(默认关闭) |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*Phase 18 完成。下一阶段:Phase 19(统一运营后台 + Banner管理 + 内容管理 + 服务站管理 + 专项项目)*
|