Files
ccdi/docs/tests/records/2026-03-19-results-overview-risk-api-backend-verification.md

55 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 结果总览风险接口后端验证记录
## 验证范围
- 风险仪表盘接口
- 风险人员总览接口
- 中高风险人员 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 failure0 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会导致仪表盘“无风险人员”出现负数