From a7f068b3096e5c9d368cc7e08d9156bd13121b8f Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Fri, 20 Mar 2026 12:04:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=93=B6=E8=A1=8C=E6=B5=81?= =?UTF-8?q?=E6=B0=B4=E6=A8=A1=E5=9E=8B=E7=9C=9F=E5=AE=9E=E8=A7=84=E5=88=99?= =?UTF-8?q?=E4=B8=A4=E9=98=B6=E6=AE=B5=E8=AE=BE=E8=AE=A1=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-20-bank-tag-real-rule-two-phase-design.md | 359 ++++++++++++++++++ 1 file changed, 359 insertions(+) create mode 100644 docs/design/2026-03-20-bank-tag-real-rule-two-phase-design.md diff --git a/docs/design/2026-03-20-bank-tag-real-rule-two-phase-design.md b/docs/design/2026-03-20-bank-tag-real-rule-two-phase-design.md new file mode 100644 index 00000000..2180dc6a --- /dev/null +++ b/docs/design/2026-03-20-bank-tag-real-rule-two-phase-design.md @@ -0,0 +1,359 @@ +# 银行流水模型真实规则两阶段落地设计文档 + +**模块**: 银行流水打标 +**日期**: 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` 中对应 `