# 结果总览查看详情弹窗对象异常逐卡展示实施记录

## 变更日期

- 2026-03-25

## 变更范围

- 后端：`ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml`
- 后端测试：`ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperSqlTest.java`
- 前端 Mock：`ruoyi-ui/src/views/ccdiProject/components/detail/preliminaryCheck.mock.js`

## 实施内容

### 1. 对象异常查询改为按对象 + 规则拆卡

- `selectPersonAnalysisObjectRows` 不再按对象维度聚合全部异常。
- 查询改为按 `coalesce(tr.object_key, tr.object_type) + tr.rule_code` 分组。
- `summary` 改为当前规则名称。
- `reasonDetail` 改为当前规则对应的异常原因快照。

### 2. 异常对象摘要卡片展示口径调整

- 保持前端对象卡片渲染结构不变，继续一条记录对应一张卡。
- 由于后端返回已拆成“对象 + 规则”一条一张卡，页面自然表现为“每种对象异常，一个卡片”。

### 3. Mock 与测试同步

- 更新前端 Mock 数据，将同一对象的多种异常拆成多张卡片样例。
- 更新后端 SQL 测试，校验对象异常查询已按 `tr.rule_code` 分组，且不再使用 `group_concat` 合并 `rule_name` 与 `reason_detail`。

## 结果

- 同一对象命中多种对象异常时，弹窗中的异常对象摘要已按“每种对象异常一个卡片”展示。
- 现有对象卡片布局与字段展示方式保持不变。
