# 外部人员详情与整体风险统计实施记录

## 修改时间

2026-06-25

## 修改内容

- 顶部风险总览改为项目整体口径，按员工统计与外部人员预警汇总相加展示。
- 风险总览卡片新增拆分说明，展示“员工 X · 外部 Y”。
- 新增外部人员风险汇总接口 `/ccdi/project/overview/external-persons/summary`，按外部人员高风险、中风险、低风险、无风险返回汇总。
- 外部人员列表与外部风险模型命中人员的操作改为“查看详情”。
- 新增外部人员详情弹窗，包含基本信息、命中模型、交易明细入口、关系图谱空状态、关联对象入口。
- 风险模型区域从左侧窄列表改回上下结构，上方展示紧凑模型统计块，下方展示筛选条件与命中人员表。
- 外部人员详情弹窗改为复用员工项目分析详情的视觉结构，采用标题区、左侧人物档案、右侧页签工作区；外部人员不展示资产分析、征信摘要等员工专属页签。
- 风险模型统计块只对外部模型展示“外部”来源标识，员工模型不再额外展示“员工”标识。
- 外部人员汇总口径改为“导入流水中的外部主体全集”，再左关联外部预警命中结果，避免未命中模型的外部人员被排除在总人数之外。
- 本地前端开发服务补充 history 路由回退配置，避免直接打开 `/login`、`/ccdiProject/detail/{projectId}` 等路由时返回 404。
- 结果总览一键 PDF 报告补充外部人员内容，包括外部风险汇总、外部模型汇总、外部人员预警明细。
- 外部人员可疑关系关联对象补充“信贷客户”：员工、员工亲属、中介库人员、信贷客户统一优先按对手方账号命中账号库；员工、员工亲属、中介库人员在账号未命中时再按对手方证件号或名称兜底；信贷客户不按名称兜底，只按对手方账号识别。
- 外部人员可疑关系 SQL 剔除本方名称等于对手方名称的交易，避免外部主体本人账户之间互转被识别为关联关系。

## 影响范围

- 前端结果总览：风险总览卡片、风险人员列表、风险模型区域、外部人员详情弹窗。
- 后端结果总览：新增外部人员风险汇总接口与 Mapper 查询。
- 后端外部人员汇总 SQL：新增外部主体全集片段，外部预警列表仍只展示命中外部模型的人员。
- 后端 PDF 报告导出：新增外部人员预警段落，列表导出与一键报告口径保持一致。
- 外部人员可疑关系展示口径：按外部模型命中流水聚合，关联对象按账号库优先识别员工、员工亲属、中介库人员、信贷客户。
- 暂不改变图谱生成逻辑，图谱入口当前为空状态。

## 验证计划

- 后端编译：`mvn -pl ccdi-project -am compile -DskipTests`。
- 前端构建：使用 Node 14.21.3 执行 Vue 构建。
- 本地页面验证：进入真实项目详情页结果总览，确认顶部统计展示员工/外部拆分，外部人员“查看详情”弹窗可打开，交易明细入口可切到流水明细查询，风险模型区域为上下结构。

## 本次追加验证

- 已执行 `mvn -pl ccdi-project -am compile -DskipTests`，编译通过。
- 已使用 `C:\Users\20696\AppData\Roaming\nvm\v14.21.3\node.exe` 执行前端构建，构建通过。
- 前端构建存在既有包体积告警，且 `ruoyi-ui/public` 下临时 docx 文件被打包进 dist；该问题不属于本次外部人员展示逻辑变更。
- 已重启本地前端服务至 `http://localhost:8080/`，使用浏览器请求头验证 `/login` 与 `/ccdiProject/detail/90624001` 直链返回 200。
- 已再次执行 `mvn -pl ccdi-project -am compile -DskipTests`，验证 PDF 报告外部人员字段编译通过。
- 已再次执行 `mvn -pl ccdi-project -am compile -DskipTests`，验证外部人员可疑关系 SQL 补充信贷客户账号匹配后编译通过。
