Spaces:
Sleeping
Sleeping
| import logging | |
| from fastapi import FastAPI, HTTPException | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from pydantic import BaseModel | |
| from services import queue_manager | |
| logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s") | |
| app = FastAPI(title="AI ADD Generator", version="1.0") | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| # --------------------------- | |
| # Pydantic models | |
| # --------------------------- | |
| class IdeaRequest(BaseModel): | |
| idea: str | |
| class ConfirmationRequest(BaseModel): | |
| task_id: str | |
| confirm: bool | |
| # --------------------------- | |
| # API endpoints | |
| # --------------------------- | |
| async def submit_idea(request: IdeaRequest): | |
| task_id = await queue_manager.add_task(request.idea) | |
| return {"status": "submitted", "task_id": task_id} | |
| async def confirm_task(request: ConfirmationRequest): | |
| task = queue_manager.get_task_status(request.task_id) | |
| if not task: | |
| raise HTTPException(status_code=404, detail="Task not found") | |
| if task["status"] != queue_manager.TaskStatus.WAITING_CONFIRMATION: | |
| raise HTTPException(status_code=400, detail="Task not waiting for confirmation") | |
| await queue_manager.confirm_task(request.task_id) | |
| return {"status": "confirmed", "task": task} | |
| async def status(task_id: str): | |
| task = queue_manager.get_task_status(task_id) | |
| if not task: | |
| raise HTTPException(status_code=404, detail="Task not found") | |
| return task | |
| async def health(): | |
| return {"status": "running"} | |