feat: 新增风险图谱算法与系统仪表盘及操作反馈体系
后端新增风险图谱算法模块、风险观察与反馈服务、规则 DSL 校验器和可解释性引擎,完善系统仪表盘和财务仪表盘统计, 优化 agent 运行和编排执行链路,清理旧开发文档,前端新增 系统趋势、负载热力图等多种仪表盘图表组件,完善操作反馈 对话框和工作台日期选择器,优化报销创建和审批详情交互, 补充单元测试覆盖。
This commit is contained in:
@@ -23,12 +23,12 @@ from app.services.ontology_rules import (
|
||||
DRAFT_FOLLOW_UP_KEYWORDS,
|
||||
DRAFT_KEYWORDS,
|
||||
EXPENSE_APPLICATION_CONTEXT_TYPES,
|
||||
EXPENSE_APPLICATION_KEYWORDS,
|
||||
EXPENSE_NARRATIVE_KEYWORDS,
|
||||
EXPENSE_REVIEW_ACTIONS,
|
||||
EXPLAIN_KEYWORDS,
|
||||
GENERIC_EXPENSE_PROMPTS,
|
||||
KNOWLEDGE_INTENTS,
|
||||
looks_like_expense_application_signal,
|
||||
OPERATE_KEYWORDS,
|
||||
QUERY_KEYWORDS,
|
||||
RISK_KEYWORDS,
|
||||
@@ -90,7 +90,7 @@ class OntologyDetectionMixin:
|
||||
|
||||
@staticmethod
|
||||
def _looks_like_expense_application(compact_query: str) -> bool:
|
||||
return any(keyword in compact_query for keyword in EXPENSE_APPLICATION_KEYWORDS)
|
||||
return looks_like_expense_application_signal(compact_query)
|
||||
|
||||
def _detect_scenario(self, compact_query: str) -> tuple[str, float]:
|
||||
scores = {key: 0.0 for key in SCENARIO_KEYWORDS}
|
||||
@@ -320,7 +320,7 @@ class OntologyDetectionMixin:
|
||||
time_range: OntologyTimeRange,
|
||||
metrics: list[OntologyMetric],
|
||||
constraints: list[OntologyConstraint],
|
||||
) -> LlmOntologyParseResult | None:
|
||||
) -> tuple[LlmOntologyParseResult | None, list[dict[str, Any]], str | None]:
|
||||
messages = self._build_model_messages(
|
||||
payload=payload,
|
||||
query=query,
|
||||
@@ -332,20 +332,22 @@ class OntologyDetectionMixin:
|
||||
metrics=metrics,
|
||||
constraints=constraints,
|
||||
)
|
||||
response_text = self.runtime_chat_service.complete(
|
||||
chat_result = self.runtime_chat_service.complete_with_trace(
|
||||
messages,
|
||||
max_tokens=600,
|
||||
temperature=0.0,
|
||||
)
|
||||
response_text = chat_result.text
|
||||
traces = chat_result.calls_as_dicts()
|
||||
payload_json = self._extract_json_payload(response_text)
|
||||
if payload_json is None:
|
||||
return None
|
||||
return None, traces, "model_output_empty_or_invalid_json"
|
||||
|
||||
try:
|
||||
return LlmOntologyParseResult.model_validate(payload_json)
|
||||
return LlmOntologyParseResult.model_validate(payload_json), traces, None
|
||||
except ValidationError as exc:
|
||||
logger.warning("Semantic model output validation failed: %s", exc)
|
||||
return None
|
||||
return None, traces, "model_output_validation_failed"
|
||||
|
||||
@staticmethod
|
||||
def _build_model_messages(
|
||||
|
||||
Reference in New Issue
Block a user