"""
main.py
FastAPI application entry point — Sprint 4 version.
All routers active including analytics and validation.
"""
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.config import settings
from app.routes.auth import router as auth_router
from app.routes.upload import router as upload_router
from app.routes.jobs import router as jobs_router
from app.routes.results import router as results_router
from app.routes.export import router as export_router
from app.routes.projects import router as projects_router
from app.routes.analytics import router as analytics_router
from app.routes.validation import router as validation_router
from app.models import user, workspace, project, transcript, code_result  # noqa
from app.models.validation import Validation  # noqa

app = FastAPI(
    title=settings.APP_NAME,
    version=settings.APP_VERSION,
    description="LLM-powered qualitative transcript analysis platform",
    docs_url="/docs" if settings.DEBUG else None,
    redoc_url=None,
)

# ── CORS ──────────────────────────────────────────────────────────────────────
origins = [
    "https://transcriptiq.instituteofanalytics.com",
    "http://localhost:5520",
    "http://127.0.0.1:5520",
    "http://localhost:5516",
    "http://127.0.0.1:5516",
    "http://localhost:5515",
    "http://127.0.0.1:5515",
    "http://localhost:5514",
    "http://127.0.0.1:5514",
    "http://localhost:5513",
    "http://127.0.0.1:5513",
    "http://localhost:5512",
    "http://127.0.0.1:5512",
    "http://localhost:5521",
    "http://127.0.0.1:5521",
    "http://localhost:5522",
    "http://127.0.0.1:5522",
    "http://localhost:5523",
    "http://127.0.0.1:5523",
    "http://localhost:5124",
    "http://127.0.0.1:5124",
    "null",
]

app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# ── Routers ───────────────────────────────────────────────────────────────────
app.include_router(auth_router)
app.include_router(projects_router)
app.include_router(upload_router)
app.include_router(jobs_router)
app.include_router(results_router)
app.include_router(export_router)
app.include_router(analytics_router)
app.include_router(validation_router)


@app.get("/health")
def health():
    return {"status": "ok", "version": settings.APP_VERSION}


@app.get("/")
def root():
    return {"message": f"{settings.APP_NAME} API is running"}
