修复all模式月固定收入规则命中隔离问题

This commit is contained in:
wkc
2026-03-25 10:28:08 +08:00
parent 5eea3c66ff
commit 071c02192d
4 changed files with 268 additions and 10 deletions

View File

@@ -228,6 +228,56 @@ def test_build_rule_hit_plan_should_keep_sql_aligned_target_rules_in_all_mode(mo
assert "FIXED_COUNTERPARTY_TRANSFER" in plan["phase2_statement_hit_rules"]
def test_fetch_inner_flow_should_rebalance_all_mode_records_for_monthly_fixed_income(monkeypatch):
monkeypatch.setattr("services.file_service.settings.RULE_HIT_MODE", "all")
service = FileService(staff_identity_repository=FakeStaffIdentityRepository())
monkeypatch.setattr(
service,
"_generate_primary_binding",
lambda: ("全命中主体", "6222000099990001"),
)
request = {
"groupId": 1001,
"dataChannelCode": "test_code",
"requestDateId": 20240101,
"dataStartDateId": 20240101,
"dataEndDateId": 20240131,
"uploadUserId": 902001,
}
first_log_id = service.fetch_inner_flow(
{
**request,
"customerNo": "customer_monthly_safe_1",
}
)["data"][0]
second_log_id = service.fetch_inner_flow(
{
**request,
"customerNo": "customer_monthly_safe_2",
}
)["data"][0]
first_record = service.file_records[first_log_id]
second_record = service.file_records[second_log_id]
assert "MONTHLY_FIXED_INCOME" in first_record.phase2_statement_hit_rules
assert "FIXED_COUNTERPARTY_TRANSFER" not in first_record.phase2_statement_hit_rules
assert "SUSPICIOUS_INCOME_KEYWORD" not in first_record.phase1_hit_rules
assert "FOREX_SELL_AMT" not in first_record.phase1_hit_rules
assert "SINGLE_LARGE_INCOME" not in first_record.large_transaction_hit_rules
assert "CUMULATIVE_INCOME" not in first_record.large_transaction_hit_rules
assert "ANNUAL_TURNOVER" not in first_record.large_transaction_hit_rules
assert "LARGE_CASH_DEPOSIT" not in first_record.large_transaction_hit_rules
assert "FREQUENT_CASH_DEPOSIT" not in first_record.large_transaction_hit_rules
assert "FIXED_COUNTERPARTY_TRANSFER" in second_record.phase2_statement_hit_rules
assert "SUSPICIOUS_INCOME_KEYWORD" in second_record.phase1_hit_rules
assert "SINGLE_LARGE_INCOME" in second_record.large_transaction_hit_rules
def test_build_rule_hit_plan_should_not_include_placeholder_rules_in_all_mode(monkeypatch):
monkeypatch.setattr("services.file_service.settings.RULE_HIT_MODE", "all")
service = FileService(staff_identity_repository=FakeStaffIdentityRepository())