feat(risk): 申请单阶段风险可见性细化与规则表更新

- 申请单阶段将 policy/trip/amount 类风险对申请人可见、可自行修正,画像/审批流程类仍走领导可见
- 平台风险标记与语义推断统一采用该策略,更新对应单元测试
- 风险规则中 city_mismatch 等城市匹配规则移除 expense_application 阶段,仅保留 reimbursement
- 同步更新交通/通信/差旅/出差等财务规则表
This commit is contained in:
caoxiaozhu
2026-06-20 10:17:18 +08:00
parent 4d04f4e7af
commit 3d69f8501f
21 changed files with 23 additions and 50 deletions

View File

@@ -60,20 +60,20 @@ def build_platform_risk_flag(
default=default_business_stage,
)
risk_domain = infer_risk_domain(manifest)
default_visibility_scope = (
"budget_manager"
if risk_domain == "budget"
else "leader"
if business_stage == "expense_application"
else "submitter"
)
default_actionability = (
"budget_governance"
if risk_domain == "budget"
else "review_decision"
if business_stage == "expense_application"
else "fixable_by_submitter"
)
# 申请单阶段:信息完整性/差旅/金额类风险申请人可自行补充修正,对申请人可见;
# 预算走预算审批人;其余(画像/审批流程)仍走领导可见。
if risk_domain == "budget":
default_visibility_scope = "budget_manager"
default_actionability = "budget_governance"
elif business_stage == "expense_application" and risk_domain in {"policy", "trip", "amount"}:
default_visibility_scope = "submitter"
default_actionability = "fixable_by_submitter"
elif business_stage == "expense_application":
default_visibility_scope = "leader"
default_actionability = "review_decision"
else:
default_visibility_scope = "submitter"
default_actionability = "fixable_by_submitter"
visibility_scope = normalize_risk_visibility_scope(
metadata.get("visibility_scope") or manifest.get("visibility_scope"),
default_visibility_scope,

View File

@@ -178,6 +178,10 @@ def infer_risk_semantics(
return risk_domain, "submitter", "fixable_by_submitter"
return risk_domain, "finance", "finance_check"
if business_stage == EXPENSE_APPLICATION_BUSINESS_STAGE:
# 申请单阶段:信息完整性/差旅/金额类风险申请人可自行补充修正,
# 对申请人可见;其余(如画像、审批流程)仍走领导可见。
if risk_domain in {"policy", "trip", "amount"}:
return risk_domain, "submitter", "fixable_by_submitter"
return risk_domain, "leader", "review_decision"
return risk_domain, "leader", "review_decision"