# 外部人员预警打标规则实施记录

## 1. 修改内容

- 新增外部人员真实打标规则接入，打标任务执行后可自动向 `ccdi_bank_statement_tag_result` 写入 `EXTERNAL_*` 命中结果。
- 新增外部人员主体识别共用 SQL：本方证件号 `bs.cret_no` 非空，且未命中员工、员工亲属；若同一主体同时存在于员工和信贷客户/中介数据中，员工/员工亲属优先，不进入外部人员口径；同时排除本方与对手方姓名或账号相同的本人账户互转。
- 新增 4 条流水级规则：
  - `EXTERNAL_SINGLE_LARGE_AMOUNT`：外部人员单笔大额交易，复用 `LARGE_TRANSACTION` 的 `FREQUENT_TRANSFER` 阈值。
  - `EXTERNAL_NIGHT_TRANSACTION`：外部人员夜间交易，识别 22:00 至次日 06:00 的外部主体交易。
  - `EXTERNAL_GAMBLING_MEMO`：外部人员疑似赌博摘要，识别摘要、交易类型或对手方名称中的赌博敏感词。
  - `EXTERNAL_TO_STAFF_FAMILY_TRANSACTION`：外部人员与员工或员工亲属交易，按对手方账号或对手方名称命中员工/员工亲属，不使用对手方证件号。
- 新增 3 条对象级规则：
  - `EXTERNAL_CUMULATIVE_TRANSACTION_AMOUNT`：外部人员累计交易金额超限，按外部人员证件号聚合，复用 `LARGE_TRANSACTION` 的 `CUMULATIVE_TRANSACTION_AMOUNT` 阈值。
  - `EXTERNAL_ANNUAL_TURNOVER`：外部人员近一年流水超限，按外部人员证件号聚合，复用 `LARGE_TRANSACTION` 的 `ANNUAL_TURNOVER` 阈值。
  - `EXTERNAL_MULTI_PARTY_GAMBLING_TRANSFER`：外部人员疑似多人牌局/赌博资金往来，按同一外部人员、同一交易日、多个对手方聚合，复用 `SUSPICIOUS_GAMBLING` 的 `MULTI_PARTY_AMT_MIN`、`MULTI_PARTY_AMT_MAX` 阈值。
- 新增规则元数据迁移脚本：`sql/migration/2026-06-29-add-external-person-bank-tag-rules.sql`。
- 打标服务 `CcdiBankTagServiceImpl` 新增外部人员流水级、对象级规则分发。
- 参数解析器 `BankTagRuleConfigResolver` 新增跨模型参数映射：外部人员大额类规则读取 `LARGE_TRANSACTION` 阈值，外部人员疑似赌博对象规则读取 `SUSPICIOUS_GAMBLING` 阈值。
- 风险等级口径调整为：外部人员单笔大额、累计交易超限、年流水交易额超限为中风险；外部人员与员工/亲属交易、同日多对手方疑似赌博交易为高风险。
- 结果总览外部人员来源 SQL 同时纳入流水级命中和对象级命中；对象级命中按外部人员证件号关联，展示涉及对象为“资金”。
- 外部人员对手方关联对象识别调整为账号优先：对手方账号命中信贷客户账号时展示“信贷客户”；对手方账号命中员工/员工亲属账号时展示“员工/员工亲属”；只有对手方账号未命中任何已维护账号时，员工/员工亲属才按对手方名称补充识别。

## 2. 影响范围

- 后端打标链路：`CcdiBankTagServiceImpl`、`BankTagRuleConfigResolver`、`CcdiBankTagAnalysisMapper`。
- 数据库规则元数据：`ccdi_bank_tag_rule` 新增外部人员 7 条规则。
- 结果总览外部人员预警会消费 `ccdi_bank_statement_tag_result` 中的 `EXTERNAL_*` 流水级与对象级命中结果。

## 3. 验证情况

- 相关单测通过：`mvn -pl ccdi-project "-Dtest=CcdiBankTagAnalysisMapperXmlTest,CcdiBankTagServiceImplTest,BankTagRuleConfigResolverTest,CcdiProjectOverviewMapperSqlTest" test`，共 54 个用例通过。
- 后端模块编译通过：`mvn -pl ccdi-project -am compile -DskipTests`。
- 本地数据库迁移执行成功：`bin/mysql_utf8_exec.sh sql/migration/2026-06-29-add-external-person-bank-tag-rules.sql`。
- 查询 `ccdi_bank_tag_rule` 确认 7 条外部人员规则均已落库且 `enabled=1`。
- 验证覆盖：
  - 外部人员规则 SQL 存在且不是占位 SQL。
  - 外部人员关系规则包含对手方账号、名称命中员工或员工亲属的判断，不使用对手方证件号。
  - 外部人员总览的对手方关联对象展示优先按账号判断，账号命中信贷客户时不再被同名员工覆盖；员工、员工亲属也是账号优先，账号未命中时才按名称判断。
  - 打标服务能分发外部人员流水级和对象级规则。
  - 外部人员大额类规则能复用原大额交易阈值。
  - 外部人员疑似赌博对象规则能复用原疑似赌博阈值。
  - 结果总览外部人员来源能同时包含流水级和对象级命中。

## 4. 后续运行说明

- 真实环境需要先执行 `sql/migration/2026-06-29-add-external-person-bank-tag-rules.sql`，使 7 条外部人员规则进入 `ccdi_bank_tag_rule`。
- 执行项目流水打标重算后，外部人员规则会自动生成 `EXTERNAL_*` 命中结果，结果总览外部人员预警即可展示真实命中数据。
