Files
X-Financial/server/tests/test_expense_claim_risk_flags.py

48 lines
1.6 KiB
Python
Raw Normal View History

from app.services.expense_claim_risk_flags import dedupe_claim_risk_flags
def test_dedupe_claim_risk_flags_keeps_highest_severity_for_same_route_issue() -> None:
flags = [
{
"severity": "high",
"label": "多城市行程待说明",
"message": "检测到本次差旅涉及深圳多个目的地,但当前报销事由未说明中转原因。",
"item_ids": ["route-1", "route-2"],
"business_stage": "reimbursement",
},
{
"severity": "medium",
"label": "多城市行程缺少说明中风险",
"message": "本次报销识别到多城市行程,但事由中未说明中转、多地拜访或改签原因。",
"item_ids": ["route-2"],
"business_stage": "reimbursement",
},
]
deduped = dedupe_claim_risk_flags(flags)
assert [flag["label"] for flag in deduped] == ["多城市行程待说明"]
def test_dedupe_claim_risk_flags_keeps_distinct_item_risks() -> None:
flags = [
{
"severity": "high",
"label": "住宿金额超出报销标准",
"message": "第一张住宿票超出住宿标准。",
"item_id": "hotel-1",
"business_stage": "reimbursement",
},
{
"severity": "medium",
"label": "住宿金额超出报销标准",
"message": "第二张住宿票超出住宿标准。",
"item_id": "hotel-2",
"business_stage": "reimbursement",
},
]
deduped = dedupe_claim_risk_flags(flags)
assert [flag["item_id"] for flag in deduped] == ["hotel-1", "hotel-2"]