|
@@ -6,12 +6,13 @@ import threading
|
|
|
import time
|
|
|
from datetime import timedelta
|
|
|
from typing import Any, Optional, Union
|
|
|
-from uuid import UUID
|
|
|
+from uuid import UUID, uuid4
|
|
|
|
|
|
from flask import current_app
|
|
|
|
|
|
from core.helper.encrypter import decrypt_token, encrypt_token, obfuscated_token
|
|
|
from core.ops.entities.config_entity import (
|
|
|
+ OPS_FILE_PATH,
|
|
|
LangfuseConfig,
|
|
|
LangSmithConfig,
|
|
|
TracingProviderEnum,
|
|
@@ -22,6 +23,7 @@ from core.ops.entities.trace_entity import (
|
|
|
MessageTraceInfo,
|
|
|
ModerationTraceInfo,
|
|
|
SuggestedQuestionTraceInfo,
|
|
|
+ TaskData,
|
|
|
ToolTraceInfo,
|
|
|
TraceTaskName,
|
|
|
WorkflowTraceInfo,
|
|
@@ -30,6 +32,7 @@ from core.ops.langfuse_trace.langfuse_trace import LangFuseDataTrace
|
|
|
from core.ops.langsmith_trace.langsmith_trace import LangSmithDataTrace
|
|
|
from core.ops.utils import get_message_data
|
|
|
from extensions.ext_database import db
|
|
|
+from extensions.ext_storage import storage
|
|
|
from models.model import App, AppModelConfig, Conversation, Message, MessageAgentThought, MessageFile, TraceAppConfig
|
|
|
from models.workflow import WorkflowAppLog, WorkflowRun
|
|
|
from tasks.ops_trace_task import process_trace_tasks
|
|
@@ -740,10 +743,17 @@ class TraceQueueManager:
|
|
|
def send_to_celery(self, tasks: list[TraceTask]):
|
|
|
with self.flask_app.app_context():
|
|
|
for task in tasks:
|
|
|
+ file_id = uuid4().hex
|
|
|
trace_info = task.execute()
|
|
|
- task_data = {
|
|
|
+ task_data = TaskData(
|
|
|
+ app_id=task.app_id,
|
|
|
+ trace_info_type=type(trace_info).__name__,
|
|
|
+ trace_info=trace_info.model_dump() if trace_info else None,
|
|
|
+ )
|
|
|
+ file_path = f"{OPS_FILE_PATH}{task.app_id}/{file_id}.json"
|
|
|
+ storage.save(file_path, task_data.model_dump_json().encode("utf-8"))
|
|
|
+ file_info = {
|
|
|
+ "file_id": file_id,
|
|
|
"app_id": task.app_id,
|
|
|
- "trace_info_type": type(trace_info).__name__,
|
|
|
- "trace_info": trace_info.model_dump() if trace_info else {},
|
|
|
}
|
|
|
- process_trace_tasks.delay(task_data)
|
|
|
+ process_trace_tasks.delay(file_info)
|