完成银行流水打标规则大写编码与后端落地

This commit is contained in:
wkc
2026-03-18 13:44:15 +08:00
parent 9791dab67e
commit b07b725057
18 changed files with 1241 additions and 25 deletions

View File

@@ -151,18 +151,14 @@
1. 已有现存规则编码的,保持不变
2. Excel 提供了明确英文指标名且适合复用为规则编码的,直接使用英文指标名
3. Excel 未提供英文指标名的,使用稳定占位编码
占位编码格式:
- `<MODEL_CODE>_<两位序号>`
3. Excel 未提供英文指标名的,结合规则实际业务含义生成稳定的语义化编码
示例:
- `ABNORMAL_TRANSACTION_01`
- `SUSPICIOUS_PROPERTY_03`
- `ABNORMAL_CUSTOMER_TRANSACTION`
- `TAX_ASSET_REGISTRATION_MISMATCH`
这样可确保编码稳定、可批量生成、可回溯到 Excel 顺序,同时避免为无英文名规则主观造词
这样可确保编码稳定可读,又能直接体现规则指标语义,避免仅靠数字序号区分规则
### 自动补齐字段规则

View File

@@ -0,0 +1,40 @@
# 银行流水占位规则后端实施记录
## 变更概述
-`assets/模型信息.xlsx` 补齐银行流水打标缺失的 25 条规则初始化数据。
- 为新增规则补齐 `CcdiBankTagAnalysisMapper` 方法声明与 `CcdiBankTagAnalysisMapper.xml` 占位 SQL。
-`CcdiBankTagServiceImpl` 中补齐新增规则分发,保证空结果规则也能正常执行完成。
- 为占位规则补充 XML、Service、参数解析回归测试。
## 涉及文件
- `sql/2026-03-16-bank-tagging.sql`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiBankTagAnalysisMapper.java`
- `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankTagServiceImpl.java`
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiBankTagAnalysisMapperXmlTest.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/BankTagRuleConfigResolverTest.java`
## 实施结果
- 初始化 SQL 中规则总数补齐为 33 条,覆盖 10 个模型组。
- 数字占位 `rule_code` 已按业务语义改为可读编码,例如 `ABNORMAL_CUSTOMER_TRANSACTION``SUPPLIER_CONCENTRATION``SALARY_QUICK_TRANSFER`
- 规则元数据中的 `rule_code``indicator_code` 已统一为全大写;默认参数脚本中的相关 `param_code` 也已同步切换为全大写,并同步调整了解析映射。
- 新增 25 个占位 Mapper 方法与对应 XML `select`,全部使用独立 `where 1 = 0` 空结果 SQL。
- Service 已按 `rule_code` 分发到新增占位方法,空结果不会触发批量写入,任务状态可正常收敛为 `SUCCESS`
- 参数解析器现有逻辑已可安全处理无参数映射的占位规则,因此本次未修改 `BankTagRuleConfigResolver.java`
## 验证记录
- `mvn test -pl ccdi-project -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=CcdiBankTagAnalysisMapperXmlTest`
- `mvn test -pl ccdi-project -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=CcdiBankTagServiceImplTest`
- `mvn test -pl ccdi-project -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=BankTagRuleConfigResolverTest`
- `mvn test -pl ccdi-project -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=CcdiBankTagAnalysisMapperXmlTest,BankTagRuleConfigResolverTest,CcdiBankTagServiceImplTest`
- `mvn -pl ccdi-project -am -DskipTests compile`
## 注意事项
- 计划中的 Maven 单测命令在当前多模块 Reactor 下需要补 `-Dsurefire.failIfNoSpecifiedTests=false`,否则上游无匹配测试的模块会提前失败。
- `assets/模型信息.xlsx` 中“工资无使用记录”对应业务口径原始单元格存在乱码,本次按源数据原样落库,后续若拿到修正版设计数据建议同步修正。

View File

@@ -0,0 +1,34 @@
# 银行流水打标编码大写与数据库同步实施记录
## 变更概述
- 在 [`AGENTS.md`](/Users/wkc/Desktop/ccdi/ccdi/AGENTS.md) 补充银行流水打标相关 `rule_code``indicator_code``param_code` 必须统一全大写的协作约束。
- 将默认参数脚本中遗漏的 `SUSPICIOUS_GAMBLING` 参数编码改为全大写:`MULTI_PARTY_AMT_MIN``MULTI_PARTY_AMT_MAX`
- 新增可重复执行的增量脚本 [`sql/migration/2026-03-18-sync-bank-tag-uppercase-and-rules.sql`](/Users/wkc/Desktop/ccdi/ccdi/sql/migration/2026-03-18-sync-bank-tag-uppercase-and-rules.sql),用于同步规则表、指标编码和参数编码。
## 涉及文件
- [`AGENTS.md`](/Users/wkc/Desktop/ccdi/ccdi/AGENTS.md)
- [`sql/ccdi_model_param.sql`](/Users/wkc/Desktop/ccdi/ccdi/sql/ccdi_model_param.sql)
- [`sql/2026-03-16-update-ccdi-model-param-defaults.sql`](/Users/wkc/Desktop/ccdi/ccdi/sql/2026-03-16-update-ccdi-model-param-defaults.sql)
- [`sql/migration/2026-03-18-sync-bank-tag-uppercase-and-rules.sql`](/Users/wkc/Desktop/ccdi/ccdi/sql/migration/2026-03-18-sync-bank-tag-uppercase-and-rules.sql)
- [`ccdi-project/src/test/java/com/ruoyi/ccdi/project/sql/CcdiModelParamSqlDefaultsTest.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/test/java/com/ruoyi/ccdi/project/sql/CcdiModelParamSqlDefaultsTest.java)
- [`ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImplTest.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImplTest.java)
## 实施结果
- 默认参数 SQL 中银行流水打标相关 `param_code` 已全部统一为全大写,不再保留 `annual_turnover``stock_tfr_large``withdraw_cnt``withdraw_amt``multi_party_amt_min``multi_party_amt_max` 等小写残留。
- 增量脚本已执行,规则表已补齐到 33 条,数据库中的 `rule_code``indicator_code` 均为全大写或 `NULL`
- 参数表中 `LARGE_TRANSACTION``ABNORMAL_BEHAVIOR``SUSPICIOUS_GAMBLING` 模型的默认参数编码已同步为全大写。
## 执行与验证
- 执行脚本:
- `bin/mysql_utf8_exec.sh sql/migration/2026-03-18-sync-bank-tag-uppercase-and-rules.sql`
- 数据库核验:
- `ccdi_bank_tag_rule` 共 33 条规则,`rule_code`/`indicator_code` 全部满足全大写约束。
- `ccdi_model_param` 中相关参数编码核验结果为 `ANNUAL_TURNOVER``STOCK_TFR_LARGE``WITHDRAW_CNT``WITHDRAW_AMT``MULTI_PARTY_AMT_MIN``MULTI_PARTY_AMT_MAX`
## 备注
- 初始化脚本 [`sql/2026-03-16-bank-tagging.sql`](/Users/wkc/Desktop/ccdi/ccdi/sql/2026-03-16-bank-tagging.sql) 因唯一键限制不适合直接重复执行,本次通过增量迁移脚本完成数据库同步,避免重复插入失败。

View File

@@ -0,0 +1,81 @@
# 银行流水打标功能测试记录
## 测试时间
- 2026-03-18
## 测试范围
- 后端规则分发与结果写入
- 手动重算接口
- 项目级重算协调逻辑
- 批量上传完成后的自动触发逻辑
- 项目 `40` 的真实重算结果校验
## 环境信息
- 本地后端服务:`http://127.0.0.1:62318`
- 测试项目:`project_id = 40`
- 项目名称:`大额交易模型测试`
- 数据库现状:
- `ccdi_bank_statement` 中项目 `40` 现有流水 `1289`
- `ccdi_bank_tag_rule` 启用规则 `33` 条,其中 `LARGE_TRANSACTION``8`
## 单元测试验证
- 执行命令:
- `mvn test -pl ccdi-project -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=CcdiBankTagAnalysisMapperXmlTest,CcdiBankTagResultMapperXmlTest,CcdiBankTagControllerTest,CcdiBankTagServiceImplTest,ProjectBankTagRebuildCoordinatorTest,BankTagRuleConfigResolverTest,CcdiBankTagEntityMappingTest,CcdiFileUploadServiceImplTest`
- 执行结果:
- `BUILD SUCCESS`
- 共执行 `45` 个用例,`0` 失败,`0` 错误,`0` 跳过
- 覆盖点:
- `CcdiBankTagAnalysisMapper.xml` 中 8 条大额交易规则与 25 条占位规则 SQL 存在性校验
- 标签结果删除与批量写入 XML 校验
- 手动重算接口参数透传与日志校验
- 打标任务创建、规则执行、失败日志、空结果规则收敛校验
- 运行中任务拒绝手动重算、自动重算补跑标记校验
- 上传完成触发自动重算校验
## 接口回归验证
- 登录接口:
- `POST /login/test`
- 结果:成功获取测试 token
- 手动重算接口:
- `POST /ccdi/project/tags/rebuild`
- 请求体:`{"projectId":40,"modelCode":"LARGE_TRANSACTION"}`
- 返回结果:`{"msg":"标签重算任务已提交","code":200}`
## 数据库校验
- 重算前:
- 最新任务 ID`8`
- `LARGE_TRANSACTION` 结果数:`26`
- 重算后:
- 新增任务 ID`9`
- 任务状态:`SUCCESS`
- `success_rule_count = 8`
- `failed_rule_count = 0`
- `hit_count = 26`
- 运行中任务数:`0`
## 命中结果分布
- `ANNUAL_TURNOVER``1`
- `CUMULATIVE_INCOME``1`
- `FREQUENT_CASH_DEPOSIT``1`
- `HOUSE_OR_CAR_EXPENSE``2`
- `LARGE_CASH_DEPOSIT``6`
- `LARGE_TRANSFER``3`
- `SINGLE_LARGE_INCOME``10`
- `TAX_EXPENSE``2`
## 结论
- 银行流水打标主链路测试通过。
- 手动重算接口可正常提交并完成 `LARGE_TRANSACTION` 模型重算。
- 项目 `40` 本次重算后结果总数仍为 `26`8 条大额交易规则命中分布与历史预期一致,未发现结果漂移。
## 环境清理
- 本次未新启动前后端测试进程,复用了已在运行的本地后端服务,因此无需额外清理进程。