# 银行流水模型真实规则两阶段落地设计文档 **模块**: 银行流水打标 **日期**: 2026-03-20 ## 一、背景 当前项目已经具备银行流水打标基础链路: - 规则元数据表 `ccdi_bank_tag_rule` - 结果表 `ccdi_bank_statement_tag_result` - 任务表 `ccdi_bank_tag_task` - 规则执行入口 `CcdiBankTagServiceImpl` - SQL 承载文件 `CcdiBankTagAnalysisMapper.xml` - 参数解析器 `BankTagRuleConfigResolver` 其中“大额交易”模型下的首批规则已经具备真实 SQL,其余不少规则虽然已经补齐了: - `rule_code` - `model_code` - Service 分发入口 - Mapper 方法签名 - XML `select` 但当前 XML 仍是 `where 1 = 0` 的占位 SQL,尚未产生真实命中结果。 根据 [assets/模型信息.xlsx](/Users/wkc/Desktop/ccdi/ccdi/assets/模型信息.xlsx) 当前整理结果,现有未真实实现、且在本环境中已判定可直接执行 SQL 的银行流水模型共 19 条。本次需求是将这 19 条规则从“占位规则”替换为“真实规则”。 ## 二、目标 本次设计目标如下: 1. 将 19 条未真实实现的银行流水模型接入现有真实打标链路。 2. 保持现有规则式架构不变,不新增平行模块或兼容性补丁链路。 3. 将真实命中逻辑统一收敛到 `CcdiBankTagAnalysisMapper.xml`。 4. 补齐规则执行所需的参数映射、初始化 SQL 与验证测试。 5. 为控制改动规模,将 19 条规则拆成两期实施,并分别产出前后端实施计划。 ## 三、范围 ### 3.1 本次范围 - `CcdiBankTagAnalysisMapper.xml` 中 19 条占位规则替换为真实 SQL - `CcdiBankTagServiceImpl` 中对应规则的真实执行分发校准 - `BankTagRuleConfigResolver` 中新增规则参数映射补齐 - `sql/` 下与本次规则相关的初始化脚本或增量脚本调整 - 单元测试、结构测试与回归测试补齐 - 新增 1 份设计文档、2 份后端实施计划、2 份前端实施计划 ### 3.2 不在本次范围 - 不新增前端页面字段、交互或展示组件 - 不引入动态规则引擎、脚本注册中心或 DSL - 不新增数据库表结构 - 不处理 `xlsx` 中当前环境不可直接执行的规则 - 不改造“大额交易”已真实落地的 8 条规则逻辑 ## 四、现状分析 ### 4.1 当前实现结构 当前银行流水打标流程为: 1. `CcdiBankTagServiceImpl.rebuildProject(...)` 加载启用规则。 2. 按 `rule_code` 分发到 `executeStatementRule / executeObjectRule`。 3. 通过 `CcdiBankTagAnalysisMapper` 调用 XML 中的具体 SQL。 4. 将命中结果组装为 `CcdiBankTagResult` 后批量入库。 5. 刷新项目风险人数,供结果总览等后续页面使用。 ### 4.2 当前核心问题 19 条目标规则目前已具备“入口”,但不具备“真实命中能力”: - `ccdi_bank_tag_rule` 中已有规则元数据 - `CcdiBankTagServiceImpl` 中已有大部分分发分支 - `CcdiBankTagAnalysisMapper.java` 中已有对应方法 - `CcdiBankTagAnalysisMapper.xml` 中对应 `