from fastapi import FastAPI, Depends from pydantic import BaseModel from typing import Optional from sqlalchemy.orm import Session from app.models import get_db from app.engine import FlowEngine from app.config import get_settings settings = get_settings() app = FastAPI( title="WhatsApp Centralizado - Flow Engine", version="1.0.0", ) class ProcessMessageRequest(BaseModel): conversation_id: str contact: dict conversation: dict message: dict class ProcessMessageResponse(BaseModel): handled: bool flow_id: Optional[str] = None @app.get("/health") def health_check(): return {"status": "ok", "service": "flow-engine"} @app.post("/process", response_model=ProcessMessageResponse) async def process_message( request: ProcessMessageRequest, db: Session = Depends(get_db), ): """Process an incoming message through the flow engine""" engine = FlowEngine(db) handled = await engine.process_message( conversation_id=request.conversation_id, contact=request.contact, conversation=request.conversation, message=request.message, ) return ProcessMessageResponse(handled=handled)