gateway/backend/models.py
2025-03-15 19:53:40 +01:00

82 lines
No EOL
2.2 KiB
Python

from pydantic import BaseModel, Field
from typing import List, Dict, Any, Optional
from datetime import datetime
class Agent(BaseModel):
"""Datenmodell für einen Agenten"""
id: str
name: str
type: str
workspace_id: str
capabilities: List[str] = []
description: Optional[str] = None
instructions: Optional[str] = None
class DataObject(BaseModel):
"""Datenmodell für ein Datenobjekt"""
id: str
name: str
type: str # 'document', 'image', etc.
size: Optional[str] = None
upload_date: Optional[str] = None
content_type: Optional[str] = None
path: Optional[str] = None
class Prompt(BaseModel):
"""Datenmodell für einen Prompt"""
id: str
content: str
created_at: str
class Workspace(BaseModel):
"""Datenmodell für einen Workspace"""
id: str
name: str
created_at: str
prompts: List[Prompt] = []
agents: List[Agent] = []
dataObjectReferences: List[str] = []
class WorkflowRequest(BaseModel):
"""Anforderung zur Ausführung eines Workflows"""
workspace_id: str
prompt: str
agents: List[str] # Liste von Agent-IDs
files: List[str] # Liste von Datei-IDs
workflow_name: Optional[str] = None
class WorkflowResponse(BaseModel):
"""Antwort nach dem Start eines Workflows"""
workflow_id: str
status: str
message: str
class LogEntry(BaseModel):
"""Protokolleintrag während der Workflow-Ausführung"""
id: str
message: str
type: str # 'info', 'error', 'start', 'complete', 'success'
timestamp: str
agent_id: Optional[str] = None
agent_name: Optional[str] = None
class Result(BaseModel):
"""Ergebnis eines Agenten während der Workflow-Ausführung"""
id: str
title: str
agent_id: str
agent_name: str
type: str # 'text', 'chart', 'image', etc.
content: str
timestamp: str
metadata: Optional[Dict[str, Any]] = None
class WorkflowStatus(BaseModel):
"""Status eines Workflows"""
id: str
name: Optional[str] = None
status: str # 'running', 'completed', 'failed'
progress: float # 0.0 - 1.0
started_at: str
completed_at: Optional[str] = None
agent_statuses: Optional[Dict[str, str]] = None