diff --git a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml index ca9f245c..76a5a42d 100644 --- a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml +++ b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml @@ -1229,8 +1229,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ai.account_no AS accountNo, ai.invalid_date AS invalidDate, max(tx.txDate) AS lastTxDate, - round(sum(tx.tradeAmount), 2) AS windowTotalAmount, - round(max(tx.tradeAmount), 2) AS windowMaxSingleAmount + round(sum(tx.tradeTotalAmount), 2) AS windowTotalAmount, + round(max(tx.tradeMaxSingleAmount), 2) AS windowMaxSingleAmount from ccdi_account_info ai inner join ccdi_base_staff staff on staff.id_card = ai.owner_id @@ -1241,7 +1241,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" STR_TO_DATE(LEFT(TRIM(bs.TRX_DATE), 19), '%Y-%m-%d %H:%i:%s'), STR_TO_DATE(LEFT(TRIM(bs.TRX_DATE), 10), '%Y-%m-%d') ) AS txDate, - GREATEST(IFNULL(bs.AMOUNT_DR, 0), IFNULL(bs.AMOUNT_CR, 0)) AS tradeAmount + IFNULL(bs.AMOUNT_DR, 0) + IFNULL(bs.AMOUNT_CR, 0) AS tradeTotalAmount, + GREATEST(IFNULL(bs.AMOUNT_DR, 0), IFNULL(bs.AMOUNT_CR, 0)) AS tradeMaxSingleAmount from ccdi_bank_statement bs where bs.project_id = #{projectId} and trim(IFNULL(bs.LE_ACCOUNT_NO, '')) != '' diff --git a/docs/reports/implementation/2026-03-31-abnormal-account-bank-tag-backend-implementation.md b/docs/reports/implementation/2026-03-31-abnormal-account-bank-tag-backend-implementation.md index 160ede0d..d6795602 100644 --- a/docs/reports/implementation/2026-03-31-abnormal-account-bank-tag-backend-implementation.md +++ b/docs/reports/implementation/2026-03-31-abnormal-account-bank-tag-backend-implementation.md @@ -109,8 +109,67 @@ bin/mysql_utf8_exec.sh sql/migration/2026-03-31-add-abnormal-account-rule-test-d - 员工 C 因沉睡期不足 6 个月未命中 - 员工 D 因销户前 30 天无流水未命中 -## 5. 待补充验证 +## 5. 最终验证汇总 -- 最终定向测试汇总 -- 最终改动文件清单 -- 如有联调启动进程,记录已关闭结论 +### 5.1 Java 定向测试 + +- 执行命令: + +```bash +mvn -pl ccdi-project -am -Dsurefire.failIfNoSpecifiedTests=false \ + -Dtest=CcdiAbnormalAccountRuleSqlMetadataTest,CcdiBankTagRuleSqlMetadataTest,CcdiBankTagServiceImplTest,CcdiProjectOverviewEmployeeResultBuilderTest \ + test +``` + +- 执行结果: + - `Tests run: 25, Failures: 0, Errors: 0, Skipped: 0` + - `BUILD SUCCESS` + +### 5.2 端到端链路验证 + +- 已重新执行后端打包: + +```bash +mvn -pl ruoyi-admin -am package -DskipTests +``` + +- 已启动 `ruoyi-admin/target/ruoyi-admin.jar`,并使用测试登录接口获取 token +- 已调用手工重建接口: + +```http +POST /ccdi/project/tags/rebuild +{ + "projectId": 90331, + "modelCode": "ABNORMAL_ACCOUNT" +} +``` + +- 后端执行日志确认: + - 异常账户模型规则数为 `2` + - 实际命中数为 `2` + - 员工风险聚合已刷新 +- 结果表校验确认: + - `SUDDEN_ACCOUNT_CLOSURE` 写入员工 `330101199001010001` + - `DORMANT_ACCOUNT_LARGE_ACTIVATION` 写入员工 `330101199001010002` +- 员工总览聚合表校验确认: + - 员工 A 聚合命中 `ABNORMAL_ACCOUNT / SUDDEN_ACCOUNT_CLOSURE` + - 员工 B 聚合命中 `ABNORMAL_ACCOUNT / DORMANT_ACCOUNT_LARGE_ACTIVATION` + +### 5.3 进程关闭 + +- 端到端验证完成后,已主动关闭本轮启动的后端 `java -jar ruoyi-admin.jar` 进程 +- 关闭日志可见 Quartz 调度器与 Druid 数据源正常释放,无残留后端进程 + +## 6. 最终改动文件清单 + +- `ccdi-project/pom.xml` +- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiBankTagAnalysisMapper.java` +- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java` +- `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml` +- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/sql/CcdiAbnormalAccountRuleSqlMetadataTest.java` +- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/sql/CcdiBankTagRuleSqlMetadataTest.java` +- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImplTest.java` +- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewEmployeeResultBuilderTest.java` +- `sql/migration/2026-03-31-create-ccdi-account-info-and-abnormal-account-rules.sql` +- `sql/migration/2026-03-31-add-abnormal-account-rule-test-data.sql` +- `docs/reports/implementation/2026-03-31-abnormal-account-bank-tag-backend-implementation.md`