- Step 14: Brand enforcement service (font/color/logo replacement, WCAG contrast check, LLM prompt context) - Step 15: Enhanced outline & slide content generation with brand context, content summary, "no hallucination" instructions - Step 15b: LLM auto-fallback retry logic across providers (FALLBACK_LLM_PROVIDERS env) - Step 16: Redis/ARQ job queue — worker entry point, presentation & master deck workers, job status/SSE endpoints, graceful fallback to BackgroundTasks when Redis unavailable Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
57 lines
2 KiB
Python
57 lines
2 KiB
Python
from fastapi import APIRouter, FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from api.lifespan import app_lifespan
|
|
from api.middlewares import UserConfigEnvUpdateMiddleware
|
|
from api.middlewares.auth_middleware import AuthMiddleware
|
|
from api.v1.ppt.router import API_V1_PPT_ROUTER
|
|
from api.v1.webhook.router import API_V1_WEBHOOK_ROUTER
|
|
from api.v1.mock.router import API_V1_MOCK_ROUTER
|
|
from api.v1.auth.router import AUTH_ROUTER
|
|
from api.v1.admin.users_router import USERS_ROUTER
|
|
from api.v1.admin.teams_router import TEAMS_ROUTER
|
|
from api.v1.admin.clients_router import CLIENTS_ROUTER
|
|
from api.v1.admin.audit_router import AUDIT_ROUTER
|
|
from api.v1.admin.brand_config_router import BRAND_CONFIG_ROUTER
|
|
from api.v1.admin.master_decks_router import MASTER_DECKS_ROUTER
|
|
from api.v1.ppt.endpoints.jobs import JOBS_ROUTER
|
|
from api.middlewares.audit_middleware import AuditMiddleware
|
|
|
|
|
|
app = FastAPI(lifespan=app_lifespan)
|
|
|
|
# Admin router aggregator
|
|
ADMIN_ROUTER = APIRouter(prefix="/api/v1/admin")
|
|
ADMIN_ROUTER.include_router(USERS_ROUTER)
|
|
ADMIN_ROUTER.include_router(TEAMS_ROUTER)
|
|
ADMIN_ROUTER.include_router(CLIENTS_ROUTER)
|
|
ADMIN_ROUTER.include_router(AUDIT_ROUTER)
|
|
ADMIN_ROUTER.include_router(BRAND_CONFIG_ROUTER)
|
|
ADMIN_ROUTER.include_router(MASTER_DECKS_ROUTER)
|
|
|
|
# Routers
|
|
app.include_router(AUTH_ROUTER)
|
|
app.include_router(ADMIN_ROUTER)
|
|
app.include_router(API_V1_PPT_ROUTER)
|
|
app.include_router(JOBS_ROUTER)
|
|
app.include_router(API_V1_WEBHOOK_ROUTER)
|
|
app.include_router(API_V1_MOCK_ROUTER)
|
|
|
|
# Middlewares (executed in reverse order: last added = first executed)
|
|
# 1. CORS must run first (handles preflight OPTIONS)
|
|
origins = ["*"]
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=origins,
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
# 2. Auth middleware (validates JWT, attaches user to request.state)
|
|
app.add_middleware(AuthMiddleware)
|
|
|
|
# 3. Audit middleware (fire-and-forget logging for mutations)
|
|
app.add_middleware(AuditMiddleware)
|
|
|
|
# 4. User config middleware
|
|
app.add_middleware(UserConfigEnvUpdateMiddleware)
|