From 75a7671a277804be12b86a71fce0cf6832ccb678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?cls=5F=E5=AE=81=E6=B3=A2=E6=9C=AC=E6=9C=BA?= <908705107@qq.com> Date: Mon, 22 Jun 2026 14:36:54 +0800 Subject: [PATCH] fix: enrich workflow run observability --- .../ai_platform/services/workflow_service.py | 46 ++++++++++++++++++- .../src/locales/langs/zh-CN/ai-platform.json | 2 +- .../src/locales/langs/zh-TW/ai-platform.json | 2 +- 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/backend-fastapi/ai_platform/services/workflow_service.py b/backend-fastapi/ai_platform/services/workflow_service.py index 1e4b1a1..c9ca8bb 100644 --- a/backend-fastapi/ai_platform/services/workflow_service.py +++ b/backend-fastapi/ai_platform/services/workflow_service.py @@ -195,6 +195,37 @@ def _build_communication_metadata( return communication +def _copy_observability_metadata( + metadata: Dict[str, Any], + collaboration: Dict[str, Any], + communication: Optional[Dict[str, Any]] = None, +) -> None: + actor = (communication or {}).get('actor') or {} + for key in ( + 'agent_code', + 'agent_name', + 'branch_id', + 'branch_label', + 'collaboration_mode', + 'collaboration_role', + 'model', + 'model_id', + 'model_name', + 'node_label', + 'node_type', + 'provider_name', + 'provider_type', + 'subflow_name', + ): + value = collaboration.get(key) or actor.get(key) + if value not in (None, '', {}, []): + metadata.setdefault(key, value) + + channel = (communication or {}).get('channel') + if channel: + metadata.setdefault('channel', channel) + + def _resolve_handoff_target( current_node_id: str, result: Optional[NodeResult], @@ -237,7 +268,7 @@ def _make_execution_log_entry( collaboration['branch_label'] = branch_label or branch_id if collaboration: metadata['collaboration'] = collaboration - metadata['communication'] = _build_communication_metadata( + communication = _build_communication_metadata( node_map, node_id, node_type, @@ -249,8 +280,14 @@ def _make_execution_log_entry( output=extra.get('output'), error=extra.get('error'), ) + metadata['communication'] = communication + _copy_observability_metadata(metadata, collaboration, communication) metadata['communication']['timestamp'] = extra.get('timestamp') + waiting_config = extra.get('waiting_config') or extra.get('config') + if waiting_config: + metadata.setdefault('waiting_config', waiting_config) entry = { + 'type': event_type, 'node_id': node_id, 'node_type': node_type, 'node_label': _node_label_from_map(node_map, node_id), @@ -306,7 +343,7 @@ def _make_stream_event_log_entry(event: Dict[str, Any]) -> Optional[dict]: output = event_data.get('content') or event_data.get('message') error = event_data.get('error_message') or event_data.get('error') - return { + entry = { 'type': event_type, 'node_id': node_id, 'node_type': node_type, @@ -325,6 +362,8 @@ def _make_stream_event_log_entry(event: Dict[str, Any]) -> Optional[dict]: 'communication': communication, }, } + _copy_observability_metadata(entry['metadata'], collaboration, communication) + return entry def _log_timestamp(log: Dict[str, Any]) -> str: @@ -1705,6 +1744,7 @@ class AIWorkflowService: elapsed_time=elapsed, metadata=_node_result_metadata(result), events=_node_result_events(result), + waiting_config=result.waiting_config, loop_iteration=iteration, )) @@ -2149,6 +2189,7 @@ class AIWorkflowService: elapsed_time=elapsed, metadata=_node_result_metadata(result), events=_node_result_events(result), + waiting_config=result.waiting_config, inputs=copy.deepcopy(node_inputs), target_node_id=target_node_id, ) @@ -2682,6 +2723,7 @@ class AIWorkflowService: elapsed_time=elapsed, metadata=_node_result_metadata(result), events=_node_result_events(result), + waiting_config=result.waiting_config, target_node_id=target_node_id, ) logs.append(log_entry) diff --git a/web/apps/web-ele/src/locales/langs/zh-CN/ai-platform.json b/web/apps/web-ele/src/locales/langs/zh-CN/ai-platform.json index 6294046..95c8586 100644 --- a/web/apps/web-ele/src/locales/langs/zh-CN/ai-platform.json +++ b/web/apps/web-ele/src/locales/langs/zh-CN/ai-platform.json @@ -2536,7 +2536,7 @@ "version": "版本", "draft": "草稿", "timeline": "执行时间线", - "events": "????", + "events": "运行事件", "noLogs": "暂无执行日志", "inputsOutputs": "输入 / 输出" } diff --git a/web/apps/web-ele/src/locales/langs/zh-TW/ai-platform.json b/web/apps/web-ele/src/locales/langs/zh-TW/ai-platform.json index 6dcd488..af8b09b 100644 --- a/web/apps/web-ele/src/locales/langs/zh-TW/ai-platform.json +++ b/web/apps/web-ele/src/locales/langs/zh-TW/ai-platform.json @@ -2536,7 +2536,7 @@ "version": "版本", "draft": "草稿", "timeline": "執行時間線", - "events": "????", + "events": "執行事件", "noLogs": "暫無執行日誌", "inputsOutputs": "輸入 / 輸出" }