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

## 问题背景
- 2026-03-20 校验发现第二期规则已完成后端真实实现，但当前数据库中的第二期 10 条规则元数据仍停留在占位状态。
- 直接查询 `ccdi_bank_tag_rule` 可见：
  - 10 条第二期规则 `remark` 仍为“占位规则，待补充真实SQL”
  - `FIXED_COUNTERPARTY_TRANSFER.indicator_code` 仍为旧值 `FIXED_COUNTERPARTY_TRANSFER`
  - `SALARY_UNUSED.business_caliber` 仍为乱码
  - `TAX_ASSET_REGISTRATION_MISMATCH.business_caliber` 仍为旧口径

## 根因分析
- 第二期真实规则落地时已更新初始化脚本 [`sql/2026-03-16-bank-tagging.sql`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/bank-tag-real-rule-phase2-backend/sql/2026-03-16-bank-tagging.sql)，但没有同步补一份增量迁移脚本。
- 当前仓库的 SQL 元数据测试此前只覆盖第一期，没有覆盖第二期，所以“只改初始化脚本、遗漏增量脚本”的问题没有被自动拦截。
- 已执行过旧增量脚本、但未重建规则表初始化数据的环境，会继续保留第二期占位元数据。

## 本次修改
- 扩展 SQL 元数据测试 [`CcdiBankTagRuleSqlMetadataTest.java`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/bank-tag-real-rule-phase2-backend/ccdi-project/src/test/java/com/ruoyi/ccdi/project/sql/CcdiBankTagRuleSqlMetadataTest.java)
  - 保留第一期元数据校验
  - 新增第二期初始化脚本与迁移脚本一致性校验
  - 约束第二期 10 条规则的 `indicator_code`、`business_caliber`、`remark` 必须与真实规则实现对齐
- 新增增量脚本 [`2026-03-20-sync-bank-tag-phase2-rule-metadata.sql`](/Users/wkc/Desktop/ccdi/ccdi/.worktrees/bank-tag-real-rule-phase2-backend/sql/migration/2026-03-20-sync-bank-tag-phase2-rule-metadata.sql)
  - 使用 `INSERT ... ON DUPLICATE KEY UPDATE` 同步第二期 10 条规则元数据
  - 清空 `FIXED_COUNTERPARTY_TRANSFER` 的旧 `indicator_code`
  - 修复 `SALARY_UNUSED` 乱码与 `TAX_ASSET_REGISTRATION_MISMATCH` 业务口径
  - 同步 10 条规则的真实规则 `remark`
- 使用 `bin/mysql_utf8_exec.sh` 将第二期元数据修复脚本落到当前验证数据库

## 实施结果
- 第二期规则元数据已与真实后端实现对齐。
- 新增测试可在仓库层拦住“第二期初始化脚本已改、迁移脚本漏补”的回归。
- 当前数据库中的第二期规则不再继续保留占位 `remark`、旧 `indicator_code` 和乱码业务口径。
