# 银行流水真实规则第一期后端实施记录

## 第一期规则范围
- `GAMBLING_SENSITIVE_KEYWORD`
- `SPECIAL_AMOUNT_TRANSACTION`
- `SUSPICIOUS_INCOME_KEYWORD`
- `FOREX_BUY_AMT`
- `FOREX_SELL_AMT`
- `LARGE_PURCHASE_TRANSACTION`
- `STOCK_TFR_LARGE`
- `WITHDRAW_CNT`
- `LARGE_STOCK_TRADING`

## 修改内容
- 补齐第一期规则参数映射
- 替换第一期 8 条明细型占位 SQL
- 接通 `WITHDRAW_CNT` 对象型真实 SQL 与阈值分发
- 对齐第一期规则元数据脚本与实施/验证文档

## 参数映射调整
- 在 `BankTagRuleConfigResolver` 中补齐第一期阈值规则映射：
  - `FOREX_BUY_AMT -> SINGLE_PURCHASE_AMOUNT`
  - `FOREX_SELL_AMT -> SINGLE_SETTLEMENT_AMOUNT`
  - `WITHDRAW_CNT -> WITHDRAW_CNT`
  - `STOCK_TFR_LARGE -> STOCK_TFR_LARGE`
  - `LARGE_STOCK_TRADING -> STOCK_TFR_LARGE`
- 明确无阈值规则仍返回空参数集，不为第一期无参规则补虚假参数。

## XML 真实 SQL 替换
- 在 `CcdiBankTagAnalysisMapper.xml` 中将以下占位 SQL 替换为真实规则：
  - 赌博敏感词支出流水
  - 非配偶/子女特殊金额交易流水
  - 收入关键词转入流水
  - 单笔购汇超阈值流水
  - 单笔结汇超阈值流水
  - 单笔大额采购事项
  - 银证转账超阈值流水
  - 三方资管超阈值流水
  - 微信/支付宝单日频繁提现对象
- 明细型规则统一继续输出 `bankStatementId/groupId/logId/reasonDetail`。
- `LARGE_PURCHASE_TRANSACTION` 由于来源为采购交易表，不直接来自银行流水表，保留明细结果字段别名并在 `reasonDetail` 中输出采购事项、金额和供应商信息。

## Service 分发调整
- `CcdiBankTagServiceImpl` 为以下规则改为显式透传解析后的阈值：
  - `FOREX_BUY_AMT`
  - `FOREX_SELL_AMT`
  - `STOCK_TFR_LARGE`
  - `LARGE_STOCK_TRADING`
  - `WITHDRAW_CNT`
- `WITHDRAW_CNT` 命中为空时仍保持任务成功，不回退任务状态与风险人数刷新链路。

## 元数据脚本调整
- 在 `sql/2026-03-16-bank-tagging.sql` 中对齐第一期规则元数据：
  - `FOREX_BUY_AMT.indicator_code` 改为 `SINGLE_PURCHASE_AMOUNT`
  - `FOREX_SELL_AMT.indicator_code` 改为 `SINGLE_SETTLEMENT_AMOUNT`
  - `LARGE_STOCK_TRADING.indicator_code` 改为 `STOCK_TFR_LARGE`
- 将第一期已落地规则的 `remark` 从“占位规则，待补充真实SQL”更新为真实规则描述。

## 与第二期边界
- 第二期规则仍保持原有占位 SQL，不在本次修改范围内：
  - `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`

## 验证执行
- 执行 `mvn test -pl ccdi-project -Dtest=BankTagRuleConfigResolverTest`，补齐参数映射后通过。
- 执行 `mvn test -pl ccdi-project -Dtest=CcdiBankTagAnalysisMapperXmlTest`，第一期 8 条明细规则结构测试通过。
- 执行 `mvn test -pl ccdi-project -Dtest=CcdiBankTagAnalysisMapperXmlTest,CcdiBankTagServiceImplTest`，对象规则与分发测试通过。
- 执行 `mvn test -pl ccdi-project -Dtest=CcdiBankTagAnalysisMapperXmlTest,BankTagRuleConfigResolverTest,CcdiBankTagServiceImplTest,CcdiBankTagServiceRiskCountRefreshTest`，第一期回归共 27 个测试全部通过。
