# 微信支付宝提现打标规则实施记录

## 修改背景

- 当前 `WITHDRAW_CNT` 使用 `AMOUNT_CR >= 0` 与微信、支付宝关键词识别频繁提现，容易把消费、转账、充值、退款等第三方支付流水误计为提现。
- `WITHDRAW_AMT` 规则元数据和参数已存在，但 Mapper SQL 仍为占位实现，实际不会命中。
- 本次参考桌面本地知识库中支付宝、微信提现识别口径：优先使用 `BANK in ('ALIPAY','WECHAT')` 与提现特征；当 `BANK` 未识别到微信或支付宝时，再使用平台关键词与提现特征组合兜底。

## 修改内容

- 在 `CcdiBankTagAnalysisMapper.xml` 新增 `thirdPartyWithdrawIncomePredicate`，统一识别微信、支付宝提现到账流水。
- 调整 `WITHDRAW_CNT`：
  - 金额方向改为 `AMOUNT_CR > 0`，表示提现到账收入。
  - 不再仅凭微信、支付宝、财付通等平台关键词计数。
  - 按员工和交易日统计提现到账次数，超过 `WITHDRAW_CNT` 阈值命中。
- 补齐 `WITHDRAW_AMT`：
  - 按员工和交易日汇总提现到账收入金额。
  - 超过 `WITHDRAW_AMT` 阈值命中。
- Java 调用链补充 `WITHDRAW_AMT` 参数传递：
  - Mapper 方法增加 `amountThreshold` 参数。
  - Service 执行规则时传入 `WITHDRAW_AMT` 参数。
  - 参数解析器增加 `WITHDRAW_AMT -> WITHDRAW_AMT` 映射。

## 性能考虑

- SQL 保留 `project_id`、`AMOUNT_CR > 0`、员工身份证关联等基础过滤，先缩小参与匹配的数据集。
- `BANK in ('ALIPAY','WECHAT')` 使用精确判断优先命中。
- 只有 `BANK` 未识别为 `ALIPAY/WECHAT` 时，才走支付宝、微信、财付通等关键词兜底，降低误报和无谓匹配范围。

## 影响范围

- 仅影响异常行为模型下：
  - `WITHDRAW_CNT` 微信支付宝频繁提现
  - `WITHDRAW_AMT` 微信支付宝提现超额
- 不修改前端、数据库结构和菜单权限。

## 验证情况

- XML 解析校验通过：`CcdiBankTagAnalysisMapper.xml` 可正常解析，当前包含 35 个 `select` 与 10 个 `sql` 片段。
- 后端编译验证通过：`mvn -pl ccdi-project -am compile -DskipTests` 执行成功。
- 文本核对通过：`WITHDRAW_CNT` 已不再使用 `AMOUNT_CR >= 0`，`WITHDRAW_AMT` 已不再使用占位 SQL。
- 编译过程中 Maven 提示 `ccdi-info-collection` 存在既有 `ccdi-lsfx` 重复依赖声明警告，本次未修改该模块。
