补充结果总览员工结果表后端实施记录

This commit is contained in:
wkc
2026-03-22 11:54:35 +08:00
parent ef106169dc
commit 644485c4a2
2 changed files with 93 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
# 结果总览员工结果表后端实施记录
## 设计对照
- 本次实现对照设计文档 [`2026-03-20-results-overview-employee-result-table-design.md`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/docs/design/2026-03-20-results-overview-employee-result-table-design.md) 落地。
- 实现范围与设计保持一致:
- 新增结果总览员工结果表
- 命中结果写库后同事务重算员工结果表
- 结果总览 4 类查询切换为只读员工结果表
- 模型卡片 `warningCount` 保持为原始标签命中次数
## 本次改动
- 在 [`2026-03-20-create-project-overview-employee-result-table.sql`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/sql/migration/2026-03-20-create-project-overview-employee-result-table.sql) 新增 `ccdi_project_overview_employee_result` 建表脚本,落地 `project_id + staff_id_card` 唯一键、风险统计字段、模型/规则快照字段和审计字段。
- 在 [`CcdiProjectOverviewEmployeeResult.java`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/entity/CcdiProjectOverviewEmployeeResult.java)、[`CcdiProjectOverviewEmployeeResultMapper.java`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewEmployeeResultMapper.java)、[`CcdiProjectOverviewEmployeeResultMapper.xml`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewEmployeeResultMapper.xml) 补齐结果表实体、最小 CRUD 和“按项目查询员工归并命中明细”的内部查询。
- 新增 [`CcdiProjectOverviewEmployeeHitRowVO.java`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectOverviewEmployeeHitRowVO.java)、[`CcdiProjectOverviewEmployeeRuleSummaryVO.java`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectOverviewEmployeeRuleSummaryVO.java)、[`CcdiProjectOverviewEmployeeModelSummaryVO.java`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectOverviewEmployeeModelSummaryVO.java) 与 [`CcdiProjectOverviewEmployeeResultBuilder.java`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewEmployeeResultBuilder.java),把“员工本人 + 亲属归并到员工本人”的现有口径前移到写库后的重算阶段,并输出:
- `risk_point`
- `model_codes_csv`
- `model_names_json`
- `hit_rules_json`
- `model_hit_summary_json`
- 在 [`ICcdiProjectOverviewService.java`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiProjectOverviewService.java) 与 [`CcdiProjectOverviewServiceImpl.java`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImpl.java) 新增 `refreshOverviewEmployeeResults`,按固定顺序执行:
- 校验项目存在
- 删除当前项目历史员工结果
- 查询全量员工归并命中明细
- 通过 builder 聚合为结果表实体
- 批量写入员工结果表
- 基于聚合结果同步项目高/中/低风险人数
- 在 [`CcdiBankTagServiceImpl.java`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java) 把标签成功链路从“只刷新项目风险人数”切换为“重算员工结果表并同步风险人数”,使标签重算失败时整条任务失败并回滚。
- 在 [`CcdiProjectOverviewMapper.xml`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml) 将以下 4 类结果总览查询切换为只读 `ccdi_project_overview_employee_result`
- 风险人员总览
- 中高风险 TOP10
- 风险模型卡片
- 风险模型命中人员分页
- 模型卡片改为基于 `model_hit_summary_json` 展开统计,`warningCount` 继续按原始标签命中次数累加。
- 模型人员分页改为基于 `model_codes_csv``ANY / ALL` 过滤,并通过 `model_hit_summary_json``hit_rules_json` 还原 `modelNames``hitTagList`,保留 `keyword``deptId``pageNum``pageSize` 能力。
## 处理说明
- 没有新增平行 Controller 或对外接口,继续复用现有 `CcdiProjectOverviewController + Service + Mapper` 入口。
- 没有引入异步刷新、缓存或补丁式兜底逻辑,按设计保持“按项目整块重算”的最短实现路径。
- 为兼容现有 MySQL 能力,结果表快照查询使用 `json_extract + JSON 数组下标展开`,没有引入 `json_table` 或窗口函数。
- `hit_rules_json` 在规则快照中补充 `modelCode`,以便模型人员分页在按模型筛选时仍能只返回当前筛选模型范围内的异常标签。
## 提交记录
- `ec006f2` 新增结果总览员工结果表结构
- `0a58ac3` 实现结果总览员工结果聚合构建
- `f539c4b` 接入结果总览员工结果同步重算
- `ef10616` 切换结果总览查询到员工结果表

View File

@@ -0,0 +1,43 @@
# 结果总览员工结果表后端验证记录
## 验证范围
- 员工结果表 DDL、实体、Mapper 与 XML 基础映射
- 员工归并命中明细聚合与快照字段生成
- 标签写库后的同事务重算链路
- 结果总览 4 类查询切换到员工结果表后的 SQL 与服务封装
## 验证命令
```bash
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewEmployeeResultEntityTest,CcdiProjectOverviewEmployeeResultMapperXmlTest
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewEmployeeResultBuilderTest
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceStructureTest,CcdiProjectOverviewServiceImplTest,CcdiBankTagServiceRiskCountRefreshTest
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewMapperSqlTest,CcdiProjectOverviewMapperRiskModelCardsTest,CcdiProjectOverviewMapperRiskModelPeopleTest,CcdiProjectOverviewServiceImplTest
```
## 验证结果
- 2026-03-22 执行 `mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewEmployeeResultEntityTest,CcdiProjectOverviewEmployeeResultMapperXmlTest`
- 首次红灯确认缺少结果表实体、Mapper 与 SQL 脚本。
- 完成最小实现后复跑2 个测试全部通过。
- 2026-03-22 执行 `mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewEmployeeResultBuilderTest`
- 首次红灯,确认缺少员工归并命中明细 VO 与 builder。
- 完成聚合实现并修正测试样本后复跑1 个测试通过。
- 2026-03-22 执行 `mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceStructureTest,CcdiProjectOverviewServiceImplTest,CcdiBankTagServiceRiskCountRefreshTest`
- 首次红灯,确认 `ICcdiProjectOverviewService` 尚未暴露员工结果表重算方法,标签重算链路尚未接入新方法。
- 接入 `refreshOverviewEmployeeResults` 并切换标签成功链路后复跑13 个测试全部通过。
- 2026-03-22 执行 `mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewMapperSqlTest,CcdiProjectOverviewMapperRiskModelCardsTest,CcdiProjectOverviewMapperRiskModelPeopleTest,CcdiProjectOverviewServiceImplTest`
- 首次红灯,确认结果总览 SQL 仍直接依赖运行时归并基表。
- 切换到员工结果表与快照展开 SQL并收敛测试断言后复跑16 个测试全部通过。
## SQL 执行情况
- 本次未在数据库执行 [`2026-03-20-create-project-overview-employee-result-table.sql`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/codex/results-overview-employee-result-table/sql/migration/2026-03-20-create-project-overview-employee-result-table.sql)。
- 因此未执行 `bin/mysql_utf8_exec.sh sql/migration/2026-03-20-create-project-overview-employee-result-table.sql`
## 结论
- 结果总览员工结果表后端链路已按设计落地,覆盖建表、聚合构建、同事务重算与页面查询切换。
- 模型卡片 `warningCount` 仍保持为原始标签命中次数,没有退化为员工人数或规则去重数。
- 本轮验证全部基于 Maven 定向测试完成,相关命令均已在 2026-03-22 实际执行且通过。