补充结果总览异常标签模型归属与联动着色
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
# Results Overview Hit Tag Model Color Backend Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** 为项目总览页“核心异常点”和“异常标签”补充标签所属模型字段,支撑前端按选中模型高亮标签颜色。
|
||||
|
||||
**Architecture:** 保持现有结果总览接口与查询入口不变,仅在标签 VO、Mapper XML 和服务映射链路中补充 `modelCode`、`modelName` 字段。风险人员总览、命中模型涉及人员、流水详情统一复用同一模型归属信息,不新增兼容接口、不改动统计口径。
|
||||
|
||||
**Tech Stack:** Java 21, Spring Boot 3, MyBatis XML, Maven, JUnit 5, Mockito
|
||||
|
||||
---
|
||||
|
||||
### Task 1: 先锁定后端标签模型字段契约
|
||||
|
||||
**Files:**
|
||||
- Modify: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImplTest.java`
|
||||
- Modify: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewControllerTest.java`
|
||||
- Modify: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperRiskModelPeopleTest.java`
|
||||
|
||||
- [ ] **Step 1: Write the failing test**
|
||||
|
||||
补充断言,锁定以下预期:
|
||||
|
||||
- 风险模型人员列表返回的 `hitTagList` 项包含 `modelCode`
|
||||
- 风险人员总览返回的核心异常点标签项包含模型字段
|
||||
- Mapper XML 的标签查询明确从 JSON 中提取 `modelCode`、`modelName`
|
||||
|
||||
- [ ] **Step 2: Run test to verify it fails**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceImplTest,CcdiProjectOverviewControllerTest,CcdiProjectOverviewMapperRiskModelPeopleTest
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `FAIL`
|
||||
- 原因是当前标签 VO 与 SQL 尚未暴露模型字段
|
||||
|
||||
- [ ] **Step 3: Commit the test expectation update**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImplTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewControllerTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperRiskModelPeopleTest.java
|
||||
git commit -m "锁定结果总览标签模型字段测试"
|
||||
```
|
||||
|
||||
### Task 2: 扩展标签 VO 与 Mapper 提取字段
|
||||
|
||||
**Files:**
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskHitTagVO.java`
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementHitTagVO.java`
|
||||
- Modify: `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml`
|
||||
|
||||
- [ ] **Step 1: Extend the tag VOs**
|
||||
|
||||
为两个标签 VO 均新增:
|
||||
|
||||
- `private String modelCode;`
|
||||
- `private String modelName;`
|
||||
|
||||
不要新增无关字段,也不要调整现有字段命名。
|
||||
|
||||
- [ ] **Step 2: Update tag SQL extraction**
|
||||
|
||||
在 `CcdiProjectOverviewMapper.xml` 中:
|
||||
|
||||
- `selectRiskHitTagsByScope` 增加 `model_code`、`model_name`
|
||||
- 风险人员总览核心异常点对应查询同步返回模型字段
|
||||
- 保持现有按 `selectedModelCodes` 过滤逻辑不变
|
||||
|
||||
- [ ] **Step 3: Run focused backend tests**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceImplTest,CcdiProjectOverviewMapperRiskModelPeopleTest
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `PASS`
|
||||
|
||||
- [ ] **Step 4: Review interface boundary**
|
||||
|
||||
人工确认:
|
||||
|
||||
- 未新增接口路径
|
||||
- 未修改查询入参
|
||||
- 未变更风险等级与人数统计逻辑
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskHitTagVO.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementHitTagVO.java ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml
|
||||
git commit -m "补充结果总览标签模型字段"
|
||||
```
|
||||
|
||||
### Task 3: 回归验证后端结果总览链路
|
||||
|
||||
**Files:**
|
||||
- Verify: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewControllerTest.java`
|
||||
- Verify: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperSqlTest.java`
|
||||
- Verify: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/CcdiProjectOverviewServiceStructureTest.java`
|
||||
|
||||
- [ ] **Step 1: Run backend regression checks**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewControllerTest,CcdiProjectOverviewMapperSqlTest,CcdiProjectOverviewServiceStructureTest
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `PASS`
|
||||
- 证明结果总览接口边界、SQL 结构和服务接口未被破坏
|
||||
|
||||
- [ ] **Step 2: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewControllerTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperSqlTest.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/CcdiProjectOverviewServiceStructureTest.java
|
||||
git commit -m "回归验证结果总览标签模型字段后端改动"
|
||||
```
|
||||
@@ -0,0 +1,132 @@
|
||||
# Results Overview Hit Tag Model Color Frontend Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** 在项目总览页中将已选模型对应的异常标签显示为红色,未选中的标签保持无色,并让核心异常点与异常标签列遵循同一颜色规则。
|
||||
|
||||
**Architecture:** 继续沿用结果总览现有组件拆分,不新增页面层级。前端只基于后端返回的 `modelCode/modelName` 和当前 `selectedModelCodes` 计算标签视觉状态;当没有选中模型时,标签默认无色,避免误导。风险人员总览、命中模型涉及人员、流水详情共用同一颜色映射工具方法。
|
||||
|
||||
**Tech Stack:** Vue 2, Element UI, Node.js
|
||||
|
||||
---
|
||||
|
||||
### Task 1: 先锁定前端颜色规则测试
|
||||
|
||||
**Files:**
|
||||
- Modify: `ruoyi-ui/tests/unit/preliminary-check-risk-people-hit-tags.test.js`
|
||||
- Modify: `ruoyi-ui/tests/unit/preliminary-check-model-table-columns.test.js`
|
||||
- Modify: `ruoyi-ui/tests/unit/detail-query-hit-tags-list.test.js`
|
||||
|
||||
- [ ] **Step 1: Write the failing test**
|
||||
|
||||
补充静态断言,锁定以下预期:
|
||||
|
||||
- 标签渲染逻辑读取 `tag.modelCode`
|
||||
- 命中模型涉及人员标签根据选中模型切换 `danger` / `info`
|
||||
- 流水详情和列表异常标签共用同一颜色判断方法
|
||||
|
||||
- [ ] **Step 2: Run test to verify it fails**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
cd ruoyi-ui
|
||||
node tests/unit/preliminary-check-risk-people-hit-tags.test.js
|
||||
node tests/unit/preliminary-check-model-table-columns.test.js
|
||||
node tests/unit/detail-query-hit-tags-list.test.js
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `FAIL`
|
||||
- 原因是当前前端仍按 `riskLevel` 映射颜色
|
||||
|
||||
- [ ] **Step 3: Commit the test expectation update**
|
||||
|
||||
```bash
|
||||
git add ruoyi-ui/tests/unit/preliminary-check-risk-people-hit-tags.test.js ruoyi-ui/tests/unit/preliminary-check-model-table-columns.test.js ruoyi-ui/tests/unit/detail-query-hit-tags-list.test.js
|
||||
git commit -m "锁定结果总览标签模型颜色规则"
|
||||
```
|
||||
|
||||
### Task 2: 实现标签模型颜色映射
|
||||
|
||||
**Files:**
|
||||
- Modify: `ruoyi-ui/src/views/ccdiProject/components/detail/RiskPeopleSection.vue`
|
||||
- Modify: `ruoyi-ui/src/views/ccdiProject/components/detail/RiskModelSection.vue`
|
||||
- Modify: `ruoyi-ui/src/views/ccdiProject/components/detail/DetailQuery.vue`
|
||||
- Modify: `ruoyi-ui/src/views/ccdiProject/components/detail/preliminaryCheck.mock.js`
|
||||
|
||||
- [ ] **Step 1: Normalize incoming tag model fields**
|
||||
|
||||
在风险人员总览、命中模型人员、流水详情中统一兼容:
|
||||
|
||||
- `tag.modelCode`
|
||||
- `tag.modelName`
|
||||
|
||||
mock 数据同步补齐模型字段,避免本地演示与真实接口脱节。
|
||||
|
||||
- [ ] **Step 2: Implement color rule**
|
||||
|
||||
颜色规则固定为:
|
||||
|
||||
- 当前标签 `modelCode` 在已选模型集合中时,标签 `type="danger"`
|
||||
- 当前标签不在已选模型集合中时,标签 `type="info"`
|
||||
- 风险人员总览没有模型筛选器时,默认按“未选中”展示为无色
|
||||
|
||||
不要继续使用 `riskLevel` 做颜色分流。
|
||||
|
||||
- [ ] **Step 3: Run focused frontend tests**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
cd ruoyi-ui
|
||||
node tests/unit/preliminary-check-risk-people-hit-tags.test.js
|
||||
node tests/unit/preliminary-check-model-table-columns.test.js
|
||||
node tests/unit/detail-query-hit-tags-list.test.js
|
||||
node tests/unit/preliminary-check-summary-and-people.test.js
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `PASS`
|
||||
|
||||
- [ ] **Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add ruoyi-ui/src/views/ccdiProject/components/detail/RiskPeopleSection.vue ruoyi-ui/src/views/ccdiProject/components/detail/RiskModelSection.vue ruoyi-ui/src/views/ccdiProject/components/detail/DetailQuery.vue ruoyi-ui/src/views/ccdiProject/components/detail/preliminaryCheck.mock.js
|
||||
git commit -m "调整结果总览标签模型颜色展示"
|
||||
```
|
||||
|
||||
### Task 3: 做结果总览前端回归检查
|
||||
|
||||
**Files:**
|
||||
- Verify: `ruoyi-ui/tests/unit/preliminary-check-model-linkage-flow.test.js`
|
||||
- Verify: `ruoyi-ui/tests/unit/preliminary-check-summary-and-people.test.js`
|
||||
- Verify: `ruoyi-ui/tests/unit/project-overview-api.test.js`
|
||||
|
||||
- [ ] **Step 1: Run final regression checks**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
cd ruoyi-ui
|
||||
node tests/unit/preliminary-check-model-linkage-flow.test.js
|
||||
node tests/unit/preliminary-check-summary-and-people.test.js
|
||||
node tests/unit/preliminary-check-risk-people-hit-tags.test.js
|
||||
node tests/unit/preliminary-check-model-table-columns.test.js
|
||||
node tests/unit/detail-query-hit-tags-list.test.js
|
||||
node tests/unit/project-overview-api.test.js
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
- `PASS`
|
||||
- 证明标签联动、页面静态结构和 API 调用都保持稳定
|
||||
|
||||
- [ ] **Step 2: Commit**
|
||||
|
||||
```bash
|
||||
git add ruoyi-ui/tests/unit/preliminary-check-model-linkage-flow.test.js ruoyi-ui/tests/unit/preliminary-check-summary-and-people.test.js ruoyi-ui/tests/unit/project-overview-api.test.js
|
||||
git commit -m "回归验证结果总览标签颜色前端改动"
|
||||
```
|
||||
@@ -0,0 +1,44 @@
|
||||
# 项目总览标签按模型着色实施记录
|
||||
|
||||
## 本次改动
|
||||
|
||||
- 后端扩展结果总览标签对象 [`CcdiProjectRiskHitTagVO`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskHitTagVO),新增 `modelCode`、`modelName` 字段,供前端按模型识别标签归属。
|
||||
- 后端扩展风险人员总览项 [`CcdiProjectRiskPeopleOverviewItemVO`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskPeopleOverviewItemVO),新增 `riskPointTagList`,让“核心异常点”不再只依赖纯文本拆分。
|
||||
- 调整结果总览 Mapper 与服务:
|
||||
- [`CcdiProjectOverviewMapper.xml`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml) 的标签查询改为返回 `model_code`、`model_name`,并按 `modelCode + ruleCode` 分组,避免跨模型标签被合并。
|
||||
- [`CcdiProjectOverviewMapper.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapper.java) 新增 `selectRiskHitTagsByScope` 方法。
|
||||
- [`CcdiProjectOverviewServiceImpl.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImpl.java) 在风险人员总览映射时补充 `riskPointTagList`。
|
||||
- 调整结果总览前端联动:
|
||||
- [`PreliminaryCheck.vue`](/Users/wkc/Desktop/ccdi/ccdi/ruoyi-ui/src/views/ccdiProject/components/detail/PreliminaryCheck.vue) 维护共享的 `selectedModelCodes`,并把模型区选中状态同步给风险人员区。
|
||||
- [`RiskModelSection.vue`](/Users/wkc/Desktop/ccdi/ccdi/ruoyi-ui/src/views/ccdiProject/components/detail/RiskModelSection.vue) 的“异常标签”列改为按模型判断颜色:已选模型标签为红色,未选中标签保持无色。
|
||||
- [`RiskPeopleSection.vue`](/Users/wkc/Desktop/ccdi/ccdi/ruoyi-ui/src/views/ccdiProject/components/detail/RiskPeopleSection.vue) 的“核心异常点”标签改为按共享选中模型着色,未选中时保持无色。
|
||||
- [`preliminaryCheck.mock.js`](/Users/wkc/Desktop/ccdi/ccdi/ruoyi-ui/src/views/ccdiProject/components/detail/preliminaryCheck.mock.js) 补齐标签示例数据中的 `modelCode`、`modelName`。
|
||||
|
||||
## 实现说明
|
||||
|
||||
- 选中模型只影响标签颜色,不再裁掉同一人员的其他模型标签,保证“选中红色、未选中无色”的对比能真实展示。
|
||||
- 风险模型人员列表的行筛选逻辑保持不变,仍由现有 `selectedModelCodes + matchMode` 控制。
|
||||
- 当项目切换为空、重新加载或加载失败时,前端会主动清空共享的模型选中状态,避免旧状态污染新页面。
|
||||
|
||||
## 验证情况
|
||||
|
||||
### 后端
|
||||
|
||||
- `mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceImplTest,CcdiProjectOverviewControllerTest,CcdiProjectOverviewMapperRiskModelPeopleTest`
|
||||
|
||||
### 前端
|
||||
|
||||
- `node ruoyi-ui/tests/unit/project-overview-api.test.js`
|
||||
- `node ruoyi-ui/tests/unit/preliminary-check-api-integration.test.js`
|
||||
- `node ruoyi-ui/tests/unit/preliminary-check-states.test.js`
|
||||
- `node ruoyi-ui/tests/unit/preliminary-check-summary-and-people.test.js`
|
||||
- `node ruoyi-ui/tests/unit/preliminary-check-risk-people-binding.test.js`
|
||||
- `node ruoyi-ui/tests/unit/preliminary-check-risk-people-hit-tags.test.js`
|
||||
- `node ruoyi-ui/tests/unit/preliminary-check-model-linkage-flow.test.js`
|
||||
- `node ruoyi-ui/tests/unit/preliminary-check-model-multiselect.test.js`
|
||||
- `node ruoyi-ui/tests/unit/preliminary-check-model-table-columns.test.js`
|
||||
|
||||
## 未包含内容
|
||||
|
||||
- 未改动项目详情页 [`DetailQuery.vue`](/Users/wkc/Desktop/ccdi/ccdi/ruoyi-ui/src/views/ccdiProject/components/detail/DetailQuery.vue) 的异常标签展示规则。
|
||||
- 未新增新的模型颜色体系,当前仅按“已选模型红色、未选模型无色”执行。
|
||||
Reference in New Issue
Block a user