# 【批量修复·站内信/通知中心】代码审查问题批量修复（含 3 项前端可感知）

> 端：hl-ui 管理后台（站内信 / 通知中心 / 自定义推送）| 服务：hl-user-service | PR #3873 | 已合并 dev-v3 + 部署测试服双实例(8081/8181) + API 行为实测无回归 | 2026-06-16

## ⚠️ 关键说明

对站内信/通知中心模块做了一轮多维代码审查（分层/越权/并发/数据模型/复用/测试 6 维 + 逐条对抗验证），确认并修复一批问题。其中 **3 项前端可感知**，其余为后端分层/安全/可维护性加固（接口路径、出入参结构均不变，前端无需改）。

## 1. 前端可感知（请知悉）

### 1.1 选人接口手机号改为脱敏返回（管理后台·自定义推送选目标）

- **接口**：`GET /admin/notification/custom-push/users`（按关键词搜 C 端用户做推送目标）。
- **变更**：返回的 `phone` 字段由**明文完整手机号**改为**脱敏格式**（如 `137****9999`）。
- **影响**：选人下拉/列表展示请直接用脱敏值即可；若前端原先依赖完整手机号做任何逻辑，请改为不依赖（脱敏是安全合规要求）。
- **实测**：测试服已验证返回 `137****9999` 形态。

### 1.2 自定义推送接口加幂等 + 限流（管理后台·自定义推送）

- **接口**：`POST /admin/notification/custom-push`。
- **变更**：新增幂等 + 单管理员限流。**短时间内相同内容重复提交（双击/网络重试）会被幂等拦截**，不再重复给目标群发站内信/短信；单管理员发起批量推送的频次也有上限。
- **影响**：前端按钮建议照常做提交后置灰；若收到限流/幂等相关错误码提示，属预期防护（避免重复广播扰民 + 短信费用）。

### 1.3 「测试发送」失败返回标准业务错误码（管理后台·通知配置）

- **接口**：`POST /admin/notification/config/{id}/test`。
- **变更**：事件配置不存在/发送失败时，由原先的**通用错误字符串**改为**标准业务错误码**（`200xxx` 段，走统一错误结构），且不再吞掉上游真实错误码。
- **影响**：前端可按错误码编程区分错误类型；提示文案仍为中文，可直接展示。

## 2. 后端加固（接口契约不变，前端无需关注）

- 消除站内信分类汇总的 SQL 字符串硬编码，改合规链式查询（红线①）。
- 通知配置/消息分类编辑接口的 Controller→Service 改走 VO，不再传持久层对象（红线②）。
- 跨聚合数据访问收口、发送日志短信号码脱敏、通道码/状态码常量化（落库值不变）、鉴权取值逻辑去重、并发与空值守卫加固等。

## 验证

- hl-user-service 相关单测 112 项全绿（AdminNotificationControllerTest 20 / AdminMessageServiceTest 17 / CustomPushServiceTest 32 等）。
- 合并部署测试服双实例 8081/8181 均 Started + health UP；经网关 9443 + 真 admin token 实测：选人接口返脱敏手机号、站内信分类汇总返回正常（categoryName 中文非 null），无回归。
- 仅改 hl-user-service，未动数据库 schema / Flyway。
