from app.service.risk_tools import build_alert_search_result def test_search_result_summary_contains_all_customers_and_products() -> None: items = [ { "alert_no": f"ALERT-{index:03d}", "customer_no": f"CUST-{index % 2 + 1:03d}", "customer_name": "张*" if index % 2 else "李*", "product_code": f"P-{index % 3 + 1:03d}", "product_name": f"产品{index % 3 + 1}", "risk_level": "低", "rule_codes": ["RW-018"], "evidence_summary": "测试证据", "disposition_hint": {"verdict": "可考虑放行"}, } for index in range(12) ] result = build_alert_search_result(items, {"risk_level": "低"}) assert result["total"] == 12 assert len(result["summary"]["customer_groups"]) == 2 assert len(result["summary"]["product_groups"]) == 3 assert result["summary"]["complete"] is True assert result["summary"]["disposition_counts"] == {"可考虑放行": 12} assert len(result["items"]) == 12 assert result["field_meanings"]["customer_no"] == "客户编号" assert result["field_meanings"]["risk_level"] == "风险等级" assert result["field_meanings"]["disposition_hint"] == "列表级只读研判建议"