Files
ccdi/docs/reports/implementation/2026-05-21-abnormal-customer-transaction-implementation.md

3.7 KiB
Raw Blame History

与客户之间非正常资金往来实施记录

本次修改

  • 调整 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 报告按名单库类型细分展示异常标签,且不重复展示。