Files
clientflow_backend/app/schemas.py
2026-06-09 22:55:58 +01:00

61 lines
1.4 KiB
Python

from typing import Any, Dict, Optional
from pydantic import BaseModel, Field
class CurrentState(BaseModel):
last_action_code: str = "desconhecido"
last_route: str = "desconhecido"
last_task_status: str = "desconhecido"
metadata: Dict[str, Any] = Field(default_factory=dict)
class AnalyzeRequest(BaseModel):
last_customer_message: str = Field(..., min_length=1)
previous_context: str = ""
current_state: CurrentState = Field(default_factory=CurrentState)
source: Optional[str] = "manual"
conversation_id: Optional[str] = None
contact_id: Optional[str] = None
class ActionDecision(BaseModel):
action_code: str
note: str = ""
confidence: float = Field(ge=0.0, le=1.0, default=0.0)
class ActionResult(BaseModel):
action_code: str
route: str
action_required: bool = False
action: str
note: str = ""
safe_to_post: bool = False
class UsageInfo(BaseModel):
id: Optional[str] = None
model: Optional[str] = None
provider: Optional[str] = None
prompt_tokens: int = 0
completion_tokens: int = 0
total_tokens: int = 0
cost: float = 0.0
class AnalyzeResponse(BaseModel):
app: str = "ClientFlow"
model: str
action_decision: ActionDecision
action_result: ActionResult
usage: UsageInfo
needs_review: bool = False
action_run_id: Optional[str] = None
message_id: Optional[str] = None
task_id: Optional[str] = None