# feat(wx-security): Phase 2D admin 后台 + Phase 2C 5 P1 cleanup

**PR**: [#1668](https://git.1814.love:8443/wx/HL/pulls/1668) **Issue**: [#1664](https://git.1814.love:8443/wx/HL/issues/1664) **合并**: 2026-05-05

按官方契约 §六 + §8.6 + §8.7.5 实现 hl-admin 后台 6 个模块；同时清理 Phase 2C 5 个 P1。

## Phase 2C 5 P1 cleanup

- 拆 `UserAuditAsyncService`（独立 service，TravelerAuditService 不再注入 UserMapper）
- @Async + @Transactional 拆分（单 SQL 不需要事务）
- 字段注入 → `Optional<T>` 构造器注入
- insertAuditLog catch 改 ERROR + schema_hint 字段诊断
- BLACKLIST 改 `setBlacklistChecker(Predicate)` 钩子，启动时 BlacklistService 注入

## Admin 后台 6 模块

| 模块 | 路径 |
|---|---|
| 人工复审队列 | GET/POST `/admin/wx-security/manual-review/{page,approve,reject}` |
| 命中日志 | GET `/admin/wx-security/hit-log/page` |
| 白名单 CRUD | `/admin/wx-security/whitelist/{page,post,delete}` |
| 黑名单 CRUD | `/admin/wx-security/blacklist/{page,post,delete}` |
| 评价举报队列 | `/admin/review/report-queue/{page,hide,restore,ignore-report,warn-author}` |
| 头像违规列表 | GET `/admin/user/avatar-rejected/page` |
| 用户风控配置 | `/admin/wx-security/user-risk/{list,put}` |

## 表结构

新增 3 张表（V20260505_008）：
- `wx_security_name_whitelist` — 误伤短语豁免
- `wx_security_name_blacklist` — 真违规词运营维护
- `wx_security_user_risk_config` — 用户行为风控规则（预置 2 条：traveler 24h 5 次违规 / review 24h 20 次举报）

## 错误码

新增段位 `290000-299999` (`AdminWxSecurityErrorCode`) 10 个 + `ReviewErrorCode` 加 HIDE_REASON_REQUIRED + REPORT_NOT_FOUND。

## 不在范围（推后续 PR）

- Phase 2D-B：跨服务复审聚合（review/complaint/refund/feedback 通过 Feign 聚合到 admin BFF）
- Phase 2D-C：user_risk 规则实际应用（异步审 + 举报时查 risk config 拦截）
- 站内信 SDK 集成（项目内未发现现成模式，hide/warnAuthor 留 TODO）

## 测试

- mvn compile 全工程 BUILD SUCCESS
- 242/242 全绿（user-service 161 + order-v2 81）

## 部署注意事项

V20260505_008 在 hl_user_service schema。无字典初始化，无需清缓存。
