- New 5-step wizard flow at /generate/ (Upload → Configure → Outline → Generate → Edit) - wizardSlice with localStorage persistence for cross-session state - Upload page: drag & drop files, brief text input, file type badges - Configure page: client/deck selectors, slide count slider, tone, language, instructions - Outline review page: split-view with source content + outline editor, template selection - Progress page: SSE streaming + polling fallback for real-time job progress - Review workflow: status badge (Draft/In Review/Approved) with popover transitions - Backend review endpoints: PUT status, POST comment, GET review info with audit logging - Wizard API helpers: clients, master decks, file upload/decompose, job status/cancel Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
59 lines
2.1 KiB
Python
59 lines
2.1 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.v1.ppt.endpoints.review import REVIEW_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(REVIEW_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)
|