feat(static-mount): integrate frontend (13 pages) into FastAPI app

This commit is contained in:
CRM Bot
2026-06-03 22:05:37 +00:00
parent 0f11e4a836
commit 86dac33663
+12
View File
@@ -14,10 +14,13 @@ from __future__ import annotations
import logging
from contextlib import asynccontextmanager
from pathlib import Path
from fastapi import FastAPI, Request, status
from fastapi.exceptions import RequestValidationError
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
from fastapi.staticfiles import StaticFiles
from sqlalchemy import text
from sqlalchemy.exc import SQLAlchemyError
from starlette.exceptions import HTTPException as StarletteHTTPException
@@ -190,6 +193,15 @@ def create_app() -> FastAPI:
app.include_router(tags.router, prefix="/api/v1")
app.include_router(dashboard.router, prefix="/api/v1")
# === Static Files (Frontend) ===
# Mount app/webui/ on root AFTER all routers, so /api/v1/* still matches first.
# StaticFiles mit html=True servt index.html on `/` und alle .html files direkt.
webui_dir = Path(__file__).parent / "webui"
if webui_dir.exists():
app.mount("/", StaticFiles(directory=str(webui_dir), html=True), name="webui")
else:
logger.warning("webui directory not found at %s — frontend not served", webui_dir)
return app