feat: 本体字段治理与风险规则模板执行器重构
- 新增本体字段注册表与字段治理审计脚本 - 重构风险规则模板执行器、DSL 验证与清单分类器 - 完善票据夹服务与差旅请求详情页交互 - 优化趋势图表与总览页数据展示 - 增强报销平台风险分级与模拟公司筛选 - 补充本体字段、风险规则生成与票据夹服务测试覆盖
This commit is contained in:
@@ -202,7 +202,7 @@ def test_non_standard_finance_rule_spreadsheets_are_not_seeded() -> None:
|
||||
assert asset is None or asset.config_json["tag"] == "废弃规则"
|
||||
|
||||
|
||||
def test_demo_budget_risk_rules_sync_with_finance_rule_references() -> None:
|
||||
def test_demo_budget_risk_rules_are_excluded_from_risk_rule_center() -> None:
|
||||
with build_session() as db:
|
||||
service = AgentAssetService(db)
|
||||
service.list_assets(asset_type=AgentAssetType.RULE.value)
|
||||
@@ -218,16 +218,7 @@ def test_demo_budget_risk_rules_sync_with_finance_rule_references() -> None:
|
||||
)
|
||||
)
|
||||
|
||||
assert budget_rule is not None
|
||||
assert budget_rule.scenario_json == ["全部"]
|
||||
assert budget_rule.config_json["budget_required"] is True
|
||||
assert budget_rule.config_json["expense_types"] == ["all"]
|
||||
assert budget_rule.config_json["business_stage"] == [
|
||||
"expense_application",
|
||||
"reimbursement",
|
||||
"budget_execution",
|
||||
]
|
||||
assert budget_rule.config_json["finance_rule_code"] == "budget.execution.policy"
|
||||
assert budget_rule is None
|
||||
|
||||
assert communication_rule is not None
|
||||
assert communication_rule.scenario_json == ["通信费"]
|
||||
@@ -237,6 +228,44 @@ def test_demo_budget_risk_rules_sync_with_finance_rule_references() -> None:
|
||||
assert communication_rule.config_json["budget_required"] is True
|
||||
|
||||
|
||||
def test_existing_budget_risk_assets_are_hidden_from_rule_lists() -> None:
|
||||
with build_session() as db:
|
||||
db.add(
|
||||
AgentAsset(
|
||||
asset_type=AgentAssetType.RULE.value,
|
||||
code="risk.budget.legacy.visible",
|
||||
name="历史预算风险",
|
||||
description="旧数据中已经存在的预算风险规则。",
|
||||
domain=AgentAssetDomain.EXPENSE.value,
|
||||
scenario_json=["全部"],
|
||||
owner="pytest",
|
||||
status=AgentAssetStatus.ACTIVE.value,
|
||||
config_json={
|
||||
"detail_mode": "json_risk",
|
||||
"finance_rule_code": "budget.execution.policy",
|
||||
"rule_document": {"file_name": "risk.budget.available_balance_insufficient.json"},
|
||||
},
|
||||
)
|
||||
)
|
||||
db.commit()
|
||||
|
||||
service = AgentAssetService(db)
|
||||
listed_codes = {
|
||||
item.code for item in service.list_assets(asset_type=AgentAssetType.RULE.value)
|
||||
}
|
||||
page = service.list_assets_page(
|
||||
asset_type=AgentAssetType.RULE.value,
|
||||
status=None,
|
||||
domain=None,
|
||||
keyword=None,
|
||||
page=1,
|
||||
page_size=100,
|
||||
)
|
||||
|
||||
assert "risk.budget.legacy.visible" not in listed_codes
|
||||
assert "risk.budget.legacy.visible" not in {item.code for item in page.items}
|
||||
|
||||
|
||||
def test_agent_asset_service_can_activate_rule_after_review() -> None:
|
||||
with build_session() as db:
|
||||
service = AgentAssetService(db)
|
||||
|
||||
Reference in New Issue
Block a user