优化无外部人员涉疑交易查询
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
# 涉疑交易无外部人员短路后端实施计划
|
||||
|
||||
## 背景
|
||||
|
||||
生产结果总览首屏中,`/ccdi/project/overview/suspicious-transactions` 在无外部人员项目上可能超过前端 10 秒超时。该接口的汇总 SQL 无条件拼接外部人员预警分支,导致只上传员工数据的项目仍会执行外部人员复杂关联。
|
||||
|
||||
## 目标
|
||||
|
||||
- 保持涉疑交易原有口径不变。
|
||||
- 当项目不存在外部人员主体时,跳过涉疑交易中的外部人员预警分支。
|
||||
- 当查询类型为 `EXTERNAL_PERSON` 且项目不存在外部人员主体时,直接返回空结果。
|
||||
|
||||
## 实施步骤
|
||||
|
||||
1. 在 `CcdiProjectSuspiciousTransactionQueryDTO` 增加内部开关 `includeExternalPerson`。
|
||||
2. 在 `CcdiProjectOverviewMapper` 增加轻量外部人员主体存在性判断。
|
||||
3. 在 `CcdiProjectOverviewMapper.xml` 中将 `externalSuspiciousTransactionSql` 的 `union all` 改为按 `includeExternalPerson` 条件拼接。
|
||||
4. 在 `CcdiProjectOverviewServiceImpl` 中按 `suspiciousType` 设置外部人员分支开关;`EXTERNAL_PERSON` 无主体时直接返回空分页或空导出列表。
|
||||
5. 补充 Mapper SQL 结构测试和 Service 行为测试。
|
||||
|
||||
## 验证
|
||||
|
||||
- 运行涉疑交易相关单测。
|
||||
- 运行结果总览 Mapper SQL 结构测试。
|
||||
- 验证无外部人员项目不再执行涉疑交易外部人员分支。
|
||||
@@ -0,0 +1,40 @@
|
||||
# 涉疑交易无外部人员短路实施记录
|
||||
|
||||
## 修改内容
|
||||
|
||||
- 为涉疑交易查询 DTO 增加 `includeExternalPerson` 内部开关。
|
||||
- 新增 `selectExternalPersonSubjectExistsByProjectId`,使用 `limit 1` 轻量判断项目是否存在外部人员主体。
|
||||
- 将涉疑交易 SQL 中外部人员预警 `union all` 改为按 `includeExternalPerson` 条件拼接。
|
||||
- 在涉疑交易分页和导出服务入口设置外部人员分支开关;`EXTERNAL_PERSON` 且无外部人员主体时直接返回空结果。
|
||||
- 补充 Service 单测和 Mapper SQL 结构测试。
|
||||
|
||||
## 影响范围
|
||||
|
||||
- 影响接口:
|
||||
- `GET /ccdi/project/overview/suspicious-transactions`
|
||||
- 涉疑交易导出相关服务调用
|
||||
- 不改变员工本人、员工亲属、模型规则、名单命中等涉疑交易原有查询口径。
|
||||
- 不修改前端逻辑和数据库表结构。
|
||||
|
||||
## 验证情况
|
||||
|
||||
- 首次执行以下命令时,未带 `-am` 编译依赖模块,`ccdi-project` 使用本地旧版 `ccdi-lsfx` 依赖,导致编译阶段出现 LSFX 接口签名不一致报错,未进入测试阶段:
|
||||
|
||||
```bash
|
||||
mvn -pl ccdi-project "-Dtest=CcdiProjectOverviewServiceSuspiciousTransactionTest,CcdiProjectOverviewMapperSqlTest" test
|
||||
```
|
||||
|
||||
- 已使用 `-am` 重新构建依赖模块并执行定向单测:
|
||||
|
||||
```bash
|
||||
mvn -pl ccdi-project -am "-Dtest=CcdiProjectOverviewServiceSuspiciousTransactionTest,CcdiProjectOverviewMapperSqlTest" "-Dsurefire.failIfNoSpecifiedTests=false" test
|
||||
```
|
||||
|
||||
- 结果:通过,`Tests run: 14, Failures: 0, Errors: 0, Skipped: 0`。
|
||||
- 覆盖测试:
|
||||
- `CcdiProjectOverviewServiceSuspiciousTransactionTest`
|
||||
- `CcdiProjectOverviewMapperSqlTest`
|
||||
|
||||
## 备注
|
||||
|
||||
本次修复针对无外部人员项目的性能短路,避免为了计算“没有外部人员”而执行外部人员预警复杂关联。
|
||||
Reference in New Issue
Block a user