from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.orm import Session from app.api.routes.dependencies import db_error_detail, get_db from app.api.schemas import ChatRequest, ChatResponse from app.services.orchestration.orquestrador_service import OrquestradorService router = APIRouter(tags=["Chat"]) @router.post("/chat", response_model=ChatResponse) async def chat(request: ChatRequest, db: Session = Depends(get_db)): """Processa mensagem do usuario via orquestrador e retorna resposta do chat.""" try: service = OrquestradorService(db) result = await service.handle_message( message=request.message, user_id=request.user_id, ) return ChatResponse(response=result) except SQLAlchemyError as exc: raise HTTPException( status_code=503, detail=db_error_detail(exc), ) except ValueError as exc: # Erros de configuracao de Vertex (regiao/projeto/modelo) raise HTTPException(status_code=500, detail=f"Configuracao invalida do Vertex AI: {exc}") except RuntimeError as exc: raise HTTPException(status_code=503, detail=f"Falha temporaria no LLM/Vertex AI: {exc}")