# 结果总览风险接口后端验证记录 ## 验证范围 - 风险仪表盘接口 - 风险人员总览接口 - 中高风险人员 TOP10 接口 - 打标完成后项目风险人数回写 ## 验证命令 ```bash mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceStructureTest,CcdiProjectOverviewMapperSqlTest,CcdiProjectOverviewServiceImplTest,CcdiProjectOverviewControllerTest,CcdiBankTagServiceRiskCountRefreshTest ``` ## 验证结果 - 2026-03-19 14:54:00 执行计划内核心验证命令,`CcdiProjectOverviewServiceStructureTest`、`CcdiProjectOverviewMapperSqlTest`、`CcdiProjectOverviewServiceImplTest`、`CcdiProjectOverviewControllerTest`、`CcdiBankTagServiceRiskCountRefreshTest` 共 11 个测试全部通过 - 2026-03-19 14:55:24 补充执行受影响旧用例 `CcdiBankTagServiceImplTest`,8 个测试全部通过 - 2026-03-19 15:02 在真实联调环境发现 `risk-people` 与 `top-risk-people` 接口报错,根因是数据库版本为 MySQL 5.7.44,不支持 `row_number() over (...)` - 2026-03-19 15:03 新增 MySQL 5.7 兼容性回归测试,改为 `not exists` 方式选择代表性规则后,`CcdiProjectOverviewMapperSqlTest` 重新通过 - 2026-03-19 15:04 重新执行结果总览相关测试组,10 个测试全部通过 - 2026-03-19 15:14 在真实重算 `projectId=43` 时发现回写链路报错,根因是风险人数汇总 map 中的聚合值被映射为 `BigDecimal` - 2026-03-19 15:15 新增 `BigDecimal` 场景回归测试,服务层改为按 `Number.intValue()` 读取风险人数,相关测试重新通过 - 合并验证命令如下: ```bash mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceStructureTest,CcdiProjectOverviewMapperSqlTest,CcdiProjectOverviewServiceImplTest,CcdiProjectOverviewControllerTest,CcdiBankTagServiceRiskCountRefreshTest,CcdiBankTagServiceImplTest ``` - 2026-03-19 15:16:54 在修复 `BigDecimal` 取值问题后重新执行完整验证,`CcdiProjectOverviewServiceStructureTest`、`CcdiProjectOverviewMapperSqlTest`、`CcdiProjectOverviewServiceImplTest`、`CcdiProjectOverviewControllerTest`、`CcdiBankTagServiceRiskCountRefreshTest`、`CcdiBankTagServiceImplTest` 共 21 个测试全部通过 - 合并验证结果:21 个测试全部通过,0 failure,0 error ## 真实接口验证 - 登录接口:`POST /login/test`,返回 `200`,成功拿到 token - 仪表盘接口:`GET /ccdi/project/overview/dashboard?projectId=42`,返回 `200` - 风险人员总览接口:`GET /ccdi/project/overview/risk-people?projectId=42`,返回 `200`,当前返回 1 条员工风险数据 - 中高风险 TOP10 接口:`GET /ccdi/project/overview/top-risk-people?projectId=42`,返回 `200`,当前返回 1 条中风险员工数据 - 2026-03-19 15:15:40 触发 `POST /ccdi/project/tags/rebuild` 对 `projectId=43` 的真实手动重算,任务 `id=22` 最终 `SUCCESS` - 重算后 `ccdi_project.project_id=43` 更新为:`high_risk_count=2`、`medium_risk_count=0`、`low_risk_count=0` - 重算后接口验证: - `GET /ccdi/project/overview/risk-people?projectId=43` 返回 `200`,共 2 条高风险员工数据 - `GET /ccdi/project/overview/top-risk-people?projectId=43` 返回 `200`,共 2 条高风险 TOP 数据 - `GET /ccdi/project/overview/dashboard?projectId=43` 返回 `200`,高风险人数更新为 `2` - 说明:`projectId=43` 的 `target_count` 当前仍为 `0`,因此仪表盘中的“无风险人员”计算结果为 `-2`;这反映的是项目基础人数未维护,与本次风险人数回写链路无关 ## 结论 - 结果总览后端接口、员工风险聚合 SQL、打标后风险人数回写链路已按实施计划完成 - 已额外修复 MySQL 5.7 环境下的窗口函数兼容问题 - 已额外修复真实重算场景下的 `BigDecimal` 风险人数取值问题 - 只读查询接口与风险人数回写链路均已通过真实后端联调验证 - 当前剩余问题是部分项目的 `target_count` 基础数据为 0,会导致仪表盘“无风险人员”出现负数