feat: 新增风险图谱算法与系统仪表盘及操作反馈体系

后端新增风险图谱算法模块、风险观察与反馈服务、规则 DSL
校验器和可解释性引擎,完善系统仪表盘和财务仪表盘统计,
优化 agent 运行和编排执行链路,清理旧开发文档,前端新增
系统趋势、负载热力图等多种仪表盘图表组件,完善操作反馈
对话框和工作台日期选择器,优化报销创建和审批详情交互,
补充单元测试覆盖。
This commit is contained in:
caoxiaozhu
2026-05-30 15:46:51 +08:00
parent 4c59941ec6
commit 7989f3a159
314 changed files with 30073 additions and 20626 deletions

View File

@@ -124,6 +124,28 @@ class AgentAssetRiskRuleGenerateRequest(BaseModel):
requires_attachment: bool = False
class AgentAssetRiskRuleDraftUpdate(BaseModel):
rule_title: str | None = Field(default=None, min_length=2, max_length=80)
expense_category: str | None = Field(default=None, max_length=40)
natural_language: str | None = Field(default=None, min_length=8, max_length=2000)
requires_attachment: bool | None = None
class AgentAssetRiskRuleRevisionCreate(BaseModel):
rule_title: str | None = Field(default=None, min_length=2, max_length=80)
expense_category: str | None = Field(default=None, max_length=40)
natural_language: str | None = Field(default=None, min_length=8, max_length=2000)
requires_attachment: bool | None = None
change_reason: str = Field(min_length=1, max_length=1000)
class AgentAssetRiskRuleRegenerateRequest(BaseModel):
rule_title: str | None = Field(default=None, min_length=2, max_length=80)
expense_category: str | None = Field(default=None, max_length=40)
natural_language: str | None = Field(default=None, min_length=8, max_length=2000)
requires_attachment: bool | None = None
class AgentAssetRiskRuleSampleCase(BaseModel):
case_id: str | None = Field(default=None, max_length=60)
name: str = Field(default="测试样例", min_length=1, max_length=80)
@@ -184,7 +206,9 @@ class AgentAssetRiskRuleSimulationRead(BaseModel):
blocking_reason: str = ""
message: str = ""
field_values: dict[str, Any] = Field(default_factory=dict)
normalized_fields: dict[str, Any] = Field(default_factory=dict)
evidence: dict[str, Any] = Field(default_factory=dict)
trace: dict[str, Any] = Field(default_factory=dict)
attachments: list[dict[str, Any]] = Field(default_factory=list)
recognized_fields: list[dict[str, Any]] = Field(default_factory=list)
missing_fields: list[dict[str, Any]] = Field(default_factory=list)