feat: 新增风险图谱算法与系统仪表盘及操作反馈体系
后端新增风险图谱算法模块、风险观察与反馈服务、规则 DSL 校验器和可解释性引擎,完善系统仪表盘和财务仪表盘统计, 优化 agent 运行和编排执行链路,清理旧开发文档,前端新增 系统趋势、负载热力图等多种仪表盘图表组件,完善操作反馈 对话框和工作台日期选择器,优化报销创建和审批详情交互, 补充单元测试覆盖。
This commit is contained in:
@@ -55,6 +55,39 @@ def test_runtime_chat_fails_over_to_backup_before_retrying_main(monkeypatch) ->
|
||||
assert calls == ["main", "backup"]
|
||||
|
||||
|
||||
def test_runtime_chat_complete_with_trace_records_slot_failover(monkeypatch) -> None:
|
||||
_clear_runtime_chat_cooldown()
|
||||
session_factory = build_session_factory()
|
||||
with session_factory() as db:
|
||||
service = RuntimeChatService(db)
|
||||
|
||||
def fake_load_chat_slot(slot: str):
|
||||
return {
|
||||
"slot": slot,
|
||||
"provider": "MiniMax" if slot == "main" else "GLM",
|
||||
"endpoint": "https://example.com/v1",
|
||||
"model": "main-model" if slot == "main" else "backup-model",
|
||||
"apiKey": "secret",
|
||||
}
|
||||
|
||||
def fake_request_chat_completion(config, messages, *, max_tokens, temperature, timeout_seconds):
|
||||
del messages, max_tokens, temperature, timeout_seconds
|
||||
if config["slot"] == "main":
|
||||
raise RuntimeError("incorrect api key")
|
||||
return "backup answer"
|
||||
|
||||
monkeypatch.setattr(service, "_load_chat_slot", fake_load_chat_slot)
|
||||
monkeypatch.setattr(service, "_request_chat_completion", fake_request_chat_completion)
|
||||
|
||||
result = service.complete_with_trace([{"role": "user", "content": "hello"}])
|
||||
|
||||
assert result.text == "backup answer"
|
||||
assert [item.status for item in result.calls] == ["failed", "succeeded"]
|
||||
assert result.calls[0].provider == "MiniMax"
|
||||
assert result.calls[0].error_message == "incorrect api key"
|
||||
assert result.calls_as_dicts()[1]["model"] == "backup-model"
|
||||
|
||||
|
||||
def test_runtime_chat_does_not_rehit_failed_slots_during_cooldown(monkeypatch) -> None:
|
||||
_clear_runtime_chat_cooldown()
|
||||
session_factory = build_session_factory()
|
||||
|
||||
Reference in New Issue
Block a user