完善结果总览模型区卡片展示与联动修复
This commit is contained in:
@@ -15,6 +15,8 @@ mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewMapperRiskModelCardsTest
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewMapperRiskModelPeopleTest
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceImplTest
|
||||
mvn test -pl ccdi-project '-Dtest=CcdiProjectOverview*'
|
||||
mvn -pl ruoyi-admin -am package -DskipTests
|
||||
java -jar ruoyi-admin/target/ruoyi-admin.jar --server.port=62319
|
||||
```
|
||||
|
||||
## 验证结果
|
||||
@@ -34,6 +36,21 @@ mvn test -pl ccdi-project '-Dtest=CcdiProjectOverview*'
|
||||
- 2026-03-20 12:05 根据线上异常日志补充 `CcdiProjectOverviewMapperRiskModelPeopleTest` 红灯断言,确认 `selectRiskModelNamesByScope` 存在 `distinct + order by 非 select 列` 的 MySQL 兼容性问题。
|
||||
- 2026-03-20 12:05 将 `selectRiskModelNamesByScope` 调整为 `group by scoped.model_code, scoped.model_name` 后重新执行 `CcdiProjectOverviewMapperRiskModelPeopleTest`,2 个测试全部通过。
|
||||
- 2026-03-20 12:05 再次执行结果总览相关总体验证命令 `mvn test -pl ccdi-project '-Dtest=CcdiProjectOverview*'`,共 22 个测试全部通过,0 failure,0 error。
|
||||
- 2026-03-20 12:19 根据真实接口 `matchMode=ALL` 的 500 日志补充 `CcdiProjectOverviewMapperRiskModelPeopleTest` 红灯断言,确认 `having count(distinct base.model_code) = #{query.modelCodes.size}` 会在 MyBatis `CollectionWrapper.get("size")` 阶段触发 `UnsupportedOperationException`。
|
||||
- 2026-03-20 12:20 将 `ALL` 条件改为绑定 `#{query.modelCodesCount}` 后重新执行 `mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewMapperRiskModelPeopleTest`,2 个测试全部通过。
|
||||
- 2026-03-20 12:20 再次执行结果总览相关总体验证命令 `mvn test -pl ccdi-project '-Dtest=CcdiProjectOverview*'`,共 22 个测试全部通过,0 failure,0 error。
|
||||
- 2026-03-20 12:21 执行 `mvn -pl ruoyi-admin -am package -DskipTests`,主应用重新打包成功。
|
||||
- 2026-03-20 12:56 启动临时后端实例 `java -jar ruoyi-admin/target/ruoyi-admin.jar --server.port=62319` 后,实际调用以下接口均返回 `code=200`:
|
||||
- `/ccdi/project/overview/risk-models/cards?projectId=42`
|
||||
- `/ccdi/project/overview/risk-models/people?projectId=42&pageNum=1&pageSize=5`
|
||||
- `/ccdi/project/overview/risk-models/people?projectId=42&modelCodes=LARGE_TRANSACTION&matchMode=ANY&pageNum=1&pageSize=5`
|
||||
- `/ccdi/project/overview/risk-models/people?projectId=42&modelCodes=LARGE_TRANSACTION&matchMode=ALL&pageNum=1&pageSize=5`
|
||||
- 2026-03-20 13:33 根据“模型触发次数为 0 也要展示卡片”的新要求,先修改 `CcdiProjectOverviewMapperRiskModelCardsTest` 让其红灯,锁定卡片 SQL 必须以 `ccdi_bank_tag_rule` 为全量模型源并对 `warningCount/peopleCount` 做 `0` 值回填。
|
||||
- 2026-03-20 13:34 将 `selectRiskModelCardsByProjectId` 改为 `ccdi_bank_tag_rule` 主表左连当前项目命中聚合后,重新执行 `mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewMapperRiskModelCardsTest`,2 个测试全部通过。
|
||||
- 2026-03-20 13:34 再次执行结果总览相关总体验证命令 `mvn test -pl ccdi-project '-Dtest=CcdiProjectOverview*'`,共 22 个测试全部通过,0 failure,0 error。
|
||||
- 2026-03-20 13:34 查询数据库确认 `ccdi_bank_tag_rule` 启用模型数为 `10`,项目 `42` 命中过的模型数为 `1`,具备“0 次卡片”真实回归条件。
|
||||
- 2026-03-20 13:34 执行 `mvn -pl ruoyi-admin -am package -DskipTests`,主应用重新打包成功。
|
||||
- 2026-03-20 13:34 启动临时后端实例 `java -jar ruoyi-admin/target/ruoyi-admin.jar --server.port=62319`,调用 `/ccdi/project/overview/risk-models/cards?projectId=42` 返回 `10` 张卡片,其中 `LARGE_TRANSACTION` 为 `warningCount=2552, peopleCount=1`,其余 `9` 张卡片均为 `warningCount=0, peopleCount=0`。
|
||||
|
||||
## 结论
|
||||
|
||||
@@ -41,5 +58,7 @@ mvn test -pl ccdi-project '-Dtest=CcdiProjectOverview*'
|
||||
- 人员分页查询已覆盖多模型 `ANY / ALL`、姓名/工号关键字、部门筛选,以及筛选上下文内的 `modelNames`/`hitTagList` 聚合。
|
||||
- 风险模型人员分页 SQL 已补齐 `projectId` 绑定桥接,避免公共 SQL 片段在分页查询场景下触发 MyBatis `Parameter 'projectId' not found` 异常。
|
||||
- 风险模型名称子查询已移除 `distinct + 非 select 列排序` 组合,避免 MySQL 8 在 `ONLY_FULL_GROUP_BY` 兼容校验下抛出 3065 异常。
|
||||
- 风险模型人员分页 `ALL` 条件已改为绑定 DTO 显式计数字段 `modelCodesCount`,避免 MyBatis 在读取 `query.modelCodes.size` 时触发 `UnsupportedOperationException`。
|
||||
- 风险模型卡片统计已改为从 `ccdi_bank_tag_rule` 的启用模型定义出发,再左连项目命中聚合,因此命中次数为 `0` 的模型也会展示卡片并返回 `warningCount=0`、`peopleCount=0`。
|
||||
- 服务层已统一完成项目存在性校验、空列表封装和“查看详情”动作文案赋值。
|
||||
- 本轮验证仅执行 Maven 单元测试,未启动额外前后端进程,因此无需执行进程清理。
|
||||
- 本轮验证除 Maven 测试外,还启动了临时后端实例 `62319` 做真实接口回归;验证结束后已关闭该临时进程。
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
- 模型卡片多选与 `ANY / ALL` 触发方式切换
|
||||
- 员工姓名或工号、部门、分页联动查询
|
||||
- 人员列表工号、模型摘要与异常标签展示
|
||||
- 模型卡片桌面端两行布局与响应式断点
|
||||
|
||||
## 验证命令
|
||||
|
||||
@@ -20,6 +21,7 @@ node tests/unit/preliminary-check-model-filters.test.js
|
||||
node tests/unit/preliminary-check-model-table-columns.test.js
|
||||
node tests/unit/preliminary-check-model-linkage-flow.test.js
|
||||
node tests/unit/preliminary-check-model-and-detail.test.js
|
||||
node tests/unit/preliminary-check-model-card-grid.test.js
|
||||
```
|
||||
|
||||
## 验证结果
|
||||
@@ -34,11 +36,15 @@ node tests/unit/preliminary-check-model-and-detail.test.js
|
||||
- 2026-03-20 完成员工姓名或工号、部门筛选以及工号列、异常标签列改造后,重新执行上述 2 个测试,断言通过。
|
||||
- 2026-03-20 新增并执行 `preliminary-check-model-linkage-flow.test.js`,确认默认全部模型、卡片增删、`ANY / ALL` 切换、关键词/部门/分页参数以及重置逻辑均已落到组件状态与请求参数构造中。
|
||||
- 2026-03-20 追加执行 `preliminary-check-model-and-detail.test.js`,确认模型区与风险明细区的静态文案断言与当前实现一致。
|
||||
- 2026-03-20 执行上述 8 个前端单测命令,总结果全部通过,0 failure,0 error。
|
||||
- 2026-03-20 新增并执行 `preliminary-check-model-card-grid.test.js` 红灯验证,确认模型卡片网格仍为旧的 3 列布局。
|
||||
- 2026-03-20 将 `RiskModelSection.vue` 的模型卡片网格改为桌面端 5 列、平板端 2 列、手机端 1 列后,重新执行 `preliminary-check-model-card-grid.test.js`,断言通过。
|
||||
- 2026-03-20 重新执行 `preliminary-check-model-and-detail.test.js` 与 `preliminary-check-model-linkage-flow.test.js`,确认布局调整未影响模型区静态结构和联动逻辑。
|
||||
- 2026-03-20 执行上述 9 个前端单测命令,总结果全部通过,0 failure,0 error。
|
||||
|
||||
## 结论
|
||||
|
||||
- 结果总览模型区前端已切换为真实接口驱动,入口页负责模型卡片数据,模型区组件负责联动查询。
|
||||
- 模型区已支持多卡片联动、`任意触发 / 同时触发` 切换,以及姓名或工号、部门、分页组合筛选。
|
||||
- 模型卡片区桌面端已改为固定两行展示 10 张卡片,窄屏继续按 2 列 / 1 列自适应收缩。
|
||||
- 人员列表已展示工号、命中模型摘要和异常标签,并复用风险等级颜色映射。
|
||||
- 本轮验证仅执行前端静态单测,未启动额外前后端进程,因此无需执行进程清理。
|
||||
|
||||
Reference in New Issue
Block a user