完成银行流水打标规则大写编码与后端落地
This commit is contained in:
@@ -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 顺序,同时避免为无英文名规则主观造词。
|
||||
这样可确保编码既稳定可读,又能直接体现规则指标语义,避免仅靠数字序号区分规则。
|
||||
|
||||
### 自动补齐字段规则
|
||||
|
||||
|
||||
@@ -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` 中“工资无使用记录”对应业务口径原始单元格存在乱码,本次按源数据原样落库,后续若拿到修正版设计数据建议同步修正。
|
||||
@@ -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) 因唯一键限制不适合直接重复执行,本次通过增量迁移脚本完成数据库同步,避免重复插入失败。
|
||||
81
docs/tests/records/2026-03-18-bank-tagging-test.md
Normal file
81
docs/tests/records/2026-03-18-bank-tagging-test.md
Normal 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 条大额交易规则命中分布与历史预期一致,未发现结果漂移。
|
||||
|
||||
## 环境清理
|
||||
|
||||
- 本次未新启动前后端测试进程,复用了已在运行的本地后端服务,因此无需额外清理进程。
|
||||
Reference in New Issue
Block a user