"""AI Generation router — start generation, poll status, check credits.""" from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.ext.asyncio import AsyncSession from app.database import get_db from app.models import User from app.schemas import GenerateRequest, GenerateStatusResponse from app.middleware.auth import get_current_user router = APIRouter() @router.post("", response_model=GenerateStatusResponse) async def start_generation( body: GenerateRequest, db: AsyncSession = Depends(get_db), user: User = Depends(get_current_user), ): """Start an AI shader generation job. (Track I — stub)""" # TODO: Implement in Track I # - Credits check / BYOK validation # - Enqueue ai_generate job # - Return job_id for polling raise HTTPException( status_code=status.HTTP_501_NOT_IMPLEMENTED, detail="AI generation coming in M5" ) @router.get("/status/{job_id}", response_model=GenerateStatusResponse) async def get_generation_status( job_id: str, user: User = Depends(get_current_user), ): """Poll AI generation job status. (Track I — stub)""" raise HTTPException( status_code=status.HTTP_501_NOT_IMPLEMENTED, detail="AI generation coming in M5" ) @router.get("/credits") async def get_credits(user: User = Depends(get_current_user)): """Check remaining AI generation credits.""" return { "credits_remaining": user.ai_credits_remaining, "subscription_tier": user.subscription_tier, }