补充第二期流水模型后端实施记录

This commit is contained in:
wkc
2026-03-20 15:00:29 +08:00
parent f270d79502
commit dcf4ea603a
3 changed files with 117 additions and 10 deletions

View File

@@ -0,0 +1,80 @@
# 银行流水真实规则第二期后端实施记录
## 第二期规则范围
- `LOW_INCOME_RELATIVE_LARGE_TRANSACTION`
- `MULTI_PARTY_GAMBLING_TRANSFER`
- `MONTHLY_FIXED_INCOME`
- `FIXED_COUNTERPARTY_TRANSFER`
- `HOUSE_REGISTRATION_MISMATCH`
- `PROPERTY_FEE_REGISTRATION_MISMATCH`
- `TAX_ASSET_REGISTRATION_MISMATCH`
- `SUPPLIER_CONCENTRATION`
- `SALARY_QUICK_TRANSFER`
- `SALARY_UNUSED`
## 修改内容
- 补齐第二期规则参数映射与阈值透传
- 替换第二期 3 条资产比对明细规则占位 SQL
- 替换第二期 7 条对象聚合规则占位 SQL
- 对齐第二期规则元数据脚本、实施记录与验证记录
## 参数与分发调整
-`BankTagRuleConfigResolver` 中补齐第二期阈值规则参数映射:
- `MULTI_PARTY_GAMBLING_TRANSFER -> MULTI_PARTY_AMT_MIN, MULTI_PARTY_AMT_MAX`
- `MONTHLY_FIXED_INCOME -> MONTHLY_FIXED_INCOME`
- `FIXED_COUNTERPARTY_TRANSFER -> FIXED_COUNTERPARTY_TRANSFER_MIN, FIXED_COUNTERPARTY_TRANSFER_MAX`
- 明确以下规则为无阈值规则,继续返回空参数集:
- `LOW_INCOME_RELATIVE_LARGE_TRANSACTION`
- `SUPPLIER_CONCENTRATION`
- `HOUSE_REGISTRATION_MISMATCH`
- `PROPERTY_FEE_REGISTRATION_MISMATCH`
- `TAX_ASSET_REGISTRATION_MISMATCH`
- `SALARY_QUICK_TRANSFER`
- `SALARY_UNUSED`
-`CcdiBankTagServiceImpl` 中为第二期 3 条阈值型对象规则改为显式透传解析后的阈值,避免继续走占位分支。
## 资产比对真实 SQL
-`CcdiBankTagAnalysisMapper.xml` 中将以下 3 条明细规则替换为真实 SQL
- `HOUSE_REGISTRATION_MISMATCH`
- `PROPERTY_FEE_REGISTRATION_MISMATCH`
- `TAX_ASSET_REGISTRATION_MISMATCH`
- 三条规则统一基于 `ccdi_asset_info` 校验员工及关系人当前资产登记情况,并继续输出 `bankStatementId/groupId/logId/reasonDetail`
- 房产登记口径统一使用当前项目数据中的实际枚举值:
- `asset_main_type = '房产'`
- `asset_sub_type = '住宅'`
- `asset_status = '正常'`
## 对象聚合真实 SQL
-`CcdiBankTagAnalysisMapper.xml` 中将以下 7 条对象规则替换为真实 SQL
- `LOW_INCOME_RELATIVE_LARGE_TRANSACTION`
- `MULTI_PARTY_GAMBLING_TRANSFER`
- `MONTHLY_FIXED_INCOME`
- `FIXED_COUNTERPARTY_TRANSFER`
- `SUPPLIER_CONCENTRATION`
- `SALARY_QUICK_TRANSFER`
- `SALARY_UNUSED`
- 对象型规则统一按员工维度收口,返回 `objectType = 'STAFF_ID_CARD'``objectKey = 员工身份证号`,与结果表唯一键保持一致。
- 各规则口径落地如下:
- `LOW_INCOME_RELATIVE_LARGE_TRANSACTION`:基于关系人年收入折算月收入,筛出无收入或月收入低于 3000 元且累计交易超 10 万元的员工。
- `MULTI_PARTY_GAMBLING_TRANSFER`:按员工同日交易聚合,要求金额落在配置区间、交易笔数超过 2 笔且对手方至少 2 个。
- `MONTHLY_FIXED_INCOME`:统计近 12 个月非工资稳定转入,满足月收入阈值、命中月数不少于 6 个月且波动率受控。
- `FIXED_COUNTERPARTY_TRANSFER`:统计近 12 个月固定对手方按季度转入,季度金额落在配置区间且持续出现。
- `SUPPLIER_CONCENTRATION`:基于采购交易表计算员工负责采购中单一供应商占比是否超过 70%。
- `SALARY_QUICK_TRANSFER`:识别工资入账后 24 小时内快速转出超过 80% 的员工。
- `SALARY_UNUSED`:识别工资入账后剔除代扣项目,连续 30 天无消费或转账支出的员工。
## 元数据脚本调整
-`sql/2026-03-16-bank-tagging.sql` 中将第二期已落地规则的 `remark` 从占位描述更新为真实规则说明。
- `FIXED_COUNTERPARTY_TRANSFER.indicator_code` 调整为 `NULL`,避免继续保留不准确的单指标编码。
- 修正 `SALARY_UNUSED` 的业务口径文本乱码问题。
- 同步将 `TAX_ASSET_REGISTRATION_MISMATCH` 的业务口径更新为当前真实 SQL 已执行的房产登记校验表述。
## 与第一期衔接关系
- 第一期已完成的 9 条规则保持不变,本次不回退第一期参数映射、明细规则与对象规则实现。
- 第二期实现后,当前 19 条已落地真实规则共用同一套任务执行、结果落表、风险人数刷新与概览统计链路。
- 本次回归继续覆盖项目概览相关测试,确认第二期改动未影响已有风险概览接口结构与 SQL。
## 全量收口结论
- 第二期 10 条规则已全部替换为真实后端实现,不再依赖 `where 1 = 0` 占位 SQL。
- 第二期规则参数编码、规则编码、脚本元数据均保持全大写约定。
- 当前银行流水真实规则第一期与第二期后端范围已全部接入现有项目级打标主链路。

View File

@@ -0,0 +1,27 @@
# 银行流水真实规则第二期后端验证记录
## 执行命令
```bash
mvn test -pl ccdi-project -Dtest=BankTagRuleConfigResolverTest
mvn test -pl ccdi-project -Dtest=CcdiModelParamSqlDefaultsTest
mvn test -pl ccdi-project -Dtest=CcdiBankTagAnalysisMapperXmlTest
mvn test -pl ccdi-project -Dtest=CcdiBankTagAnalysisMapperXmlTest,CcdiBankTagServiceImplTest
mvn test -pl ccdi-project -Dtest=CcdiBankTagAnalysisMapperXmlTest,BankTagRuleConfigResolverTest,CcdiBankTagServiceImplTest,CcdiBankTagServiceRiskCountRefreshTest,CcdiProjectOverviewServiceStructureTest,CcdiProjectOverviewMapperSqlTest,CcdiProjectOverviewServiceImplTest,CcdiProjectOverviewControllerTest
```
## 执行时间
- 2026-03-20 14:59 重新执行最终回归命令 `mvn test -pl ccdi-project -Dtest=CcdiBankTagAnalysisMapperXmlTest,BankTagRuleConfigResolverTest,CcdiBankTagServiceImplTest,CcdiBankTagServiceRiskCountRefreshTest,CcdiProjectOverviewServiceStructureTest,CcdiProjectOverviewMapperSqlTest,CcdiProjectOverviewServiceImplTest,CcdiProjectOverviewControllerTest`47 个测试全部通过0 failure0 error。
- 本轮最终回归 `BUILD SUCCESS`Maven 输出完成时间为 `2026-03-20T14:59:17+08:00`
## 结果摘要
- 第二期 10 条规则已全部通过结构测试或分发测试校验,不再保留占位 SQL。
- `BankTagRuleConfigResolverTest` 已覆盖第二期 3 条阈值规则与 7 条无参规则的参数解析行为。
- `CcdiBankTagAnalysisMapperXmlTest` 已确认第二期 3 条资产比对规则和 7 条对象规则均输出真实查询字段,剩余占位规则数量按预期下降。
- `CcdiBankTagServiceImplTest` 已确认第二期阈值型对象规则参数成功接入服务分发链路,无参规则继续走空参数配置。
- 项目概览相关 4 组测试继续通过,说明第二期规则接入未破坏风险人数刷新、概览 SQL 与概览接口结构。
- 测试日志中出现的 `threshold missing``refresh failed` 为断言异常场景的预期输出,不代表本轮回归失败。
## 结论
- 第二期后端实现已完成10 条规则均已接入现有项目级流水打标主链路。
- 当前验证范围为 Maven 单元测试与 SQL 结构测试,未启动额外前后端进程,因此无需执行进程清理。