from __future__ import annotations from typing import Any from pydantic import BaseModel, Field from app.schemas.task import ParsedIntent class ChatSessionCreateRequest(BaseModel): tenant_id: str = "tenant-demo" channel: str = "WEB" class ChatMessageItem(BaseModel): message_id: str role: str content: str message_type: str task_id: str | None = None created_at: str class ChatSessionData(BaseModel): session_id: str tenant_id: str channel: str title: str | None = None last_task_id: str | None = None sample_prompts: list[str] = Field(default_factory=list) messages: list[ChatMessageItem] = Field(default_factory=list) class ChatSendMessageRequest(BaseModel): content: str context: dict[str, Any] = Field(default_factory=dict) class ChatSendMessageData(BaseModel): session_id: str task_id: str task_status: str parsed_intent: ParsedIntent missing_slots: list[str] risk_level: str next_action: str assistant_message: ChatMessageItem class ChatConfirmTaskRequest(BaseModel): comment: str | None = None class ChatConfirmTaskData(BaseModel): session_id: str task_id: str task_status: str approval_status: str assistant_message: ChatMessageItem