66 lines
3.7 KiB
Markdown
66 lines
3.7 KiB
Markdown
# 与客户之间非正常资金往来实施记录
|
||
|
||
## 本次修改
|
||
|
||
- 调整 `ABNORMAL_CUSTOMER_TRANSACTION` 模型执行 SQL。
|
||
- 调整“涉疑交易明细 -> 名单库命中” SQL。
|
||
- 调整涉疑交易明细前端标签展示。
|
||
- 补充 SQL 口径测试,不改表结构。
|
||
|
||
## 模型 SQL 口径
|
||
|
||
- 位置:`ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml`
|
||
- 主体范围:员工本人、`ccdi_staff_fmy_relation.status = 1` 的有效亲属。
|
||
- 金额口径:`GREATEST(IFNULL(amount_dr, 0), IFNULL(amount_cr, 0)) > 1000`。
|
||
- 信贷客户命中:对手方账号命中 `ccdi_account_info.owner_type = 'CREDIT_CUSTOMER'`。
|
||
- 中介账号命中:对手方账号命中 `ccdi_account_info.owner_type = 'INTERMEDIARY'`。
|
||
- 中介企业命中:对手方名称精确命中 `ccdi_enterprise_base_info.enterprise_name`,且企业来源为中介。
|
||
- 中介人员精确命中:对手方名称精确命中 `ccdi_biz_intermediary.name`。
|
||
- 中介人员模糊命中:对手方名称包含 `ccdi_biz_intermediary.name`,仅限 `bank in ('ALIPAY', 'WECHAT')`。
|
||
- 明确不再使用对手方证件号、对手方统一社会信用代码命中。
|
||
|
||
## 名单库命中口径
|
||
|
||
- 位置:`ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml`
|
||
- 信贷客户账号命中时,`nameListHitType` 返回“信贷客户”。
|
||
- 中介账号、人员名称、企业名称命中时,`nameListHitType` 返回“中介”。
|
||
- 名单库命中同样要求交易金额大于 1000。
|
||
- 涉疑交易明细和 PDF 导出按 `bank_statement_id` 聚合,避免同一流水因“模型规则命中”和“名单库命中”重复展示。
|
||
|
||
## 前端展示
|
||
|
||
- 位置:`ruoyi-ui/src/views/ccdiProject/components/detail/RiskDetailSection.vue`
|
||
- `ABNORMAL_CUSTOMER_TRANSACTION` 在异常标签中优先展示。
|
||
- 如果同一流水名单库类型为“中介”,该标签展示为“疑似与中介往来”。
|
||
- 如果同一流水名单库类型为“信贷客户”,该标签展示为“与信贷客户之间非正常资金往来”。
|
||
- 如果没有名单库类型,兜底展示为“与客户之间非正常资金往来”。
|
||
- 不再把“中介/信贷客户”追加成额外异常标签,避免重复展示。
|
||
|
||
## 报告展示
|
||
|
||
- 结果总览 PDF 报告中的涉疑交易明细表同步使用上述标签展示口径。
|
||
- 同一条流水只替换 `ABNORMAL_CUSTOMER_TRANSACTION` 的展示文案,不额外追加“中介/信贷客户”标签。
|
||
|
||
## 影响文件
|
||
|
||
- `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml`
|
||
- `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml`
|
||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectSuspiciousTransactionItemVO.java`
|
||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiBankTagAnalysisMapperXmlTest.java`
|
||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperSqlTest.java`
|
||
- `ruoyi-ui/src/views/ccdiProject/components/detail/RiskDetailSection.vue`
|
||
- `docs/reports/implementation/2026-05-21-abnormal-customer-transaction-implementation.md`
|
||
|
||
## 验证情况
|
||
|
||
- `mvn -pl ccdi-project -am -DskipTests compile` 通过。
|
||
- `mvn -pl ccdi-project "-Dtest=CcdiBankTagAnalysisMapperXmlTest,CcdiProjectOverviewMapperSqlTest" test` 通过,21 个测试。
|
||
- 测试覆盖的伪造场景口径:
|
||
- 信贷客户账号命中。
|
||
- 中介账号命中。
|
||
- 中介人员名称精确命中。
|
||
- 中介人员名称模糊命中仅限 `ALIPAY/WECHAT`。
|
||
- 名单库命中金额门槛大于 1000。
|
||
- 涉疑交易明细按 `bank_statement_id` 聚合去重。
|
||
- 涉疑交易明细和 PDF 报告按名单库类型细分展示异常标签,且不重复展示。
|