2.6 KiB
2.6 KiB
project_id=42 大额交易无命中修复记录
问题现象
project_id=42的银行流水共 4133 条。- 项目配置为
config_type=default,当前大额交易默认参数已降到:SINGLE_TRANSACTION_AMOUNT=100CUMULATIVE_TRANSACTION_AMOUNT=1000ANNUAL_TURNOVER=5000LARGE_CASH_DEPOSIT=5000FREQUENT_CASH_DEPOSIT=2FREQUENT_TRANSFER=100
- 但自动打标任务
id=11/12/13均为SUCCESS且hit_count=0。
根因定位
1. 项目 42 现有流水使用了库中不存在的身份证号
ccdi_bank_statement中project_id=42的全部 4133 条流水都使用同一个cret_no=230902199012261247。- 该证件号在
ccdi_base_staff.id_card与ccdi_staff_fmy_relation.relation_cert_no中均不存在。 - 当前大额交易模型多条 SQL 都依赖:
staff.id_card = bs.cret_no- 或
relation.relation_cert_no = bs.cret_no
- 因此即使金额超过阈值,也会在身份关联层被整体过滤掉。
2. Mock 流水服务与既有设计不一致
lsfx-mock-server/services/statement_service.py原先仍以随机流水为主,并固定输出不存在于当前库的cretNo。- 仓库内已有大额交易样本设计与对应测试口径,但运行链路没有稳定复用可识别身份池。
本次处理
代码修复
- 校准
lsfx-mock-server的大额交易样本生成与StatementService集成。 - 保持主体名称 / 本方账号绑定逻辑不变,继续复用同一
logId的主绑定。 - 补充并校准
lsfx-mock-server/tests/test_statement_service.py断言,使其与现有样本口径一致。
数据修正
- 将
project_id=42现有流水中的旧证件号批量修正为当前库真实存在的员工身份证:230902199012261247 -> 330101198802020033
- 影响行数:
4133
触发重算
- 通过后端接口
/ccdi/project/tags/rebuild手动提交重算。 - 最新任务:
id=14trigger_type=MANUALstatus=SUCCESShit_count=2559
验证结果
Mock 测试
- 命令:
PYTHONPATH=. python3 -m pytest tests -q
- 结果:
31 passed
项目 42 命中结果
SINGLE_LARGE_INCOME:2029LARGE_TRANSFER:521ANNUAL_TURNOVER:1CUMULATIVE_INCOME:1
结论
- 本次
project_id=42无命中的直接原因,是流水中的cret_no无法关联到员工/家属身份。 - 修正为现库存在的身份证后,按当前默认系统参数可立即命中规则。
- Mock 流水层也已同步校准,后续新生成数据不再继续复用这组无效证件号。