# 外部人员预警实施记录

## 保存路径确认

- 后端实施计划：`docs/plans/backend/2026-06-24-external-person-warning-backend-implementation.md`
- 前端实施计划：`docs/plans/frontend/2026-06-24-external-person-warning-frontend-implementation.md`
- 实施记录：`docs/reports/implementation/2026-06-24-external-person-warning-implementation.md`
- 测试数据 SQL：`sql/migration/2026-06-24-add-external-person-warning-test-data.sql`

## 修改内容

1. 结果总览后端新增外部人员预警接口：
   - `GET /ccdi/project/overview/external-persons`
   - `POST /ccdi/project/overview/external-persons/export`
   - `GET /ccdi/project/overview/external-risk-models/cards`
   - `GET /ccdi/project/overview/external-risk-models/people`
   - `POST /ccdi/project/overview/external-risk-models/people/export`
2. 后端新增外部人员预警 DTO、VO、Excel 导出对象。
3. Mapper 新增外部人员聚合查询，基于本方 `cret_no` 排除员工和员工亲属后识别外部人员。
4. 外部人员主体类型支持中介、客户、外部人员。
5. 风险明细涉疑交易增加 `EXTERNAL_PERSON` 筛选口径。
6. 前端风险人员区域增加靠后的“外部人员预警” Tab，员工风险人员仍为默认入口。
7. 前端风险模型区域后置展示外部人员预警模型，模型导出按钮改为真实导出当前筛选命中明细。
8. 新增外部人员预警联调测试数据 SQL。

## 业务口径

1. 员工仍然是结果总览默认主视图，原员工风险人员、员工模型和员工项目分析不变。
2. 外部人员预警和员工使用同一页面风格，但不展示员工专属字段。
3. 外部人员不进入资产分析、负面征信、部门岗位和员工画像详情。
4. 外部人员预警模型限定为交易和关系类：
   - 外部人员大额交易
   - 外部人员异常交易
   - 外部人员可疑赌博
   - 外部人员可疑关系
5. 中介识别优先使用中介库本人证件号匹配，不使用姓名作为主体识别依据。

## 验证情况

1. 已执行后端编译：
   - `mvn -pl ccdi-project -am compile -DskipTests`
   - 结果：通过。
2. 测试数据 SQL 已生成。因本机执行 `bash bin/mysql_utf8_exec.sh sql/migration/2026-06-24-add-external-person-warning-test-data.sql` 失败，已改用 Java/JDBC 显式执行 `SET NAMES utf8mb4` 和 `SET collation_connection = utf8mb4_general_ci` 后入库成功。
3. 前端执行前已按项目要求检查 Node：
   - `.nvmrc` 为 `14.21.3`
   - 当前 `node -v` 为 `v14.21.3`
   - 当前环境 `npm` 不在 PATH，改用 `C:\Users\20696\AppData\Roaming\nvm\v14.21.3\node.exe node_modules/@vue/cli-service/bin/vue-cli-service.js build`
   - 结果：构建通过，仅有既有资源体积 warning。
4. 数据库验证：
   - 测试项目 `90624001` 已入库 2 个外部人员主体：测试中介王某、测试客户赵某。
   - 外部人员模型命中结果已入库 4 类：外部人员大额交易、外部人员异常交易、外部人员可疑赌博、外部人员可疑关系。
5. 本机已有后端服务监听 `62318`，但未通过脚本重启到最新代码；项目重启脚本依赖 bash/lsof/pgrep，当前 Windows 环境缺可用 bash/WSL。
6. 真实接口登录验证受运行环境 Redis 超时影响，`POST /login/test` 返回 `Redis command timed out`，因此未完成浏览器页面验证。

## 后续验证建议

1. 在具备 bash/lsof/pgrep 的环境使用 `bin/restart_java_backend.sh` 重启后端。
2. Redis 恢复后登录系统，在真实结果总览页面验证：
   - 员工风险人员默认展示不变。
   - 外部人员预警 Tab 可分页加载。
   - 外部人员预警导出可下载。
   - 外部人员模型卡片后置展示。
   - 风险模型导出可按当前筛选下载。
   - 风险明细可筛选“外部人员预警”。
