# 第一期银行流水规则元数据修复实施记录

## 问题背景
- 2026-03-20 新增模型打标完整验证在数据库核验阶段发现：
  - `FOREX_BUY_AMT.indicator_code` 仍为 `FOREX_BUY_AMT`
  - `FOREX_SELL_AMT.indicator_code` 仍为 `FOREX_SELL_AMT`
  - `LARGE_STOCK_TRADING.indicator_code` 为 `NULL`
- 同时，第一期已落地真实规则的 `remark` 仍停留在“占位规则，待补充真实SQL”。

## 根因分析
- 主初始化脚本 [`sql/2026-03-16-bank-tagging.sql`](/Users/wkc/Desktop/ccdi/ccdi/sql/2026-03-16-bank-tagging.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) 仍写入旧的占位元数据。
- 已执行过 2026-03-18 增量脚本、但未补后续迁移的环境，会停留在旧的 `indicator_code` 与 `remark` 状态。

## 本次修改
- 新增 SQL 资产校验测试 [`ccdi-project/src/test/java/com/ruoyi/ccdi/project/sql/CcdiBankTagRuleSqlMetadataTest.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/test/java/com/ruoyi/ccdi/project/sql/CcdiBankTagRuleSqlMetadataTest.java)
  - 先以缺失迁移脚本的红灯方式固定问题。
  - 约束初始化脚本与增量脚本必须同时对齐：
    - `FOREX_BUY_AMT -> SINGLE_PURCHASE_AMOUNT`
    - `FOREX_SELL_AMT -> SINGLE_SETTLEMENT_AMOUNT`
    - `LARGE_STOCK_TRADING -> STOCK_TFR_LARGE`
    - 三条规则真实说明文案保持一致。
- 新增增量脚本 [`sql/migration/2026-03-20-sync-bank-tag-phase1-rule-metadata.sql`](/Users/wkc/Desktop/ccdi/ccdi/sql/migration/2026-03-20-sync-bank-tag-phase1-rule-metadata.sql)
  - 使用 `INSERT ... ON DUPLICATE KEY UPDATE` 同步第一期 9 条真实规则元数据。
  - 修复三条规则的 `indicator_code`。
  - 同步 9 条规则的真实规则 `remark`。
- 将增量脚本通过 `bin/mysql_utf8_exec.sh` 落到当前验证数据库。

## 实施结果
- 规则元数据已对齐到第一期真实规则状态。
- 新增 SQL 校验测试可在仓库层拦住“只改初始化脚本、遗漏增量脚本”的回归。
- 修复后重新完成接口链路复验，项目 `47` 的自动拉取、手动重算、命中结果查询与详情接口均已通过。
