diff --git a/app/api/routes.py b/app/api/routes.py index b84fd4a..2004e6b 100644 --- a/app/api/routes.py +++ b/app/api/routes.py @@ -1,14 +1,94 @@ -from fastapi import APIRouter -from app.api.schemas import ChatRequest, ChatResponse +from typing import List, Dict, Any + +from fastapi import APIRouter, Depends +from sqlalchemy.orm import Session + +from app.api.schemas import ( + ChatRequest, + ChatResponse, + ConsultarEstoqueRequest, + ValidarClienteVendaRequest, + AvaliarVeiculoTrocaRequest, + AgendarRevisaoRequest, + CancelarPedidoRequest, +) +from app.db.database import SessionLocal from app.services.orquestrador_service import OrquestradorService +from app.services.handlers import ( + consultar_estoque, + validar_cliente_venda, + avaliar_veiculo_troca, + agendar_revisao, + cancelar_pedido, +) router = APIRouter() -service = OrquestradorService() + + +def get_db(): + db = SessionLocal() + try: + yield db + finally: + db.close() + @router.post("/chat", response_model=ChatResponse) -async def chat(request: ChatRequest): +async def chat(request: ChatRequest, db: Session = Depends(get_db)): + service = OrquestradorService(db) result = await service.handle_message( message=request.message, - user_id=request.user_id + user_id=request.user_id, ) return ChatResponse(response=result) + + +@router.post("/mock/consultar-estoque") +async def consultar_estoque_endpoint( + body: ConsultarEstoqueRequest, +) -> List[Dict[str, Any]]: + return await consultar_estoque( + preco_max=body.preco_max, + categoria=body.categoria, + ) + + +@router.post("/mock/validar-cliente-venda") +async def validar_cliente_venda_endpoint( + body: ValidarClienteVendaRequest, +) -> Dict[str, Any]: + return await validar_cliente_venda( + cpf=body.cpf, + valor_veiculo=body.valor_veiculo, + ) + + +@router.post("/mock/avaliar-veiculo-troca") +async def avaliar_veiculo_troca_endpoint( + body: AvaliarVeiculoTrocaRequest, +) -> Dict[str, Any]: + return await avaliar_veiculo_troca( + modelo=body.modelo, + ano=body.ano, + km=body.km, + ) + + +@router.post("/mock/agendar-revisao") +async def agendar_revisao_endpoint( + body: AgendarRevisaoRequest, +) -> Dict[str, Any]: + return await agendar_revisao( + placa=body.placa, + data_hora=body.data_hora, + ) + + +@router.post("/mock/cancelar-pedido") +async def cancelar_pedido_endpoint( + body: CancelarPedidoRequest, +) -> Dict[str, Any]: + return await cancelar_pedido( + numero_pedido=body.numero_pedido, + motivo=body.motivo, + )