rebuild(stage-14): deliver migration and recovery tooling

This commit is contained in:
leefer
2026-07-30 08:29:37 +08:00
parent 9eb7b548f3
commit fa7a8dde06
17 changed files with 1397 additions and 3 deletions
+14 -1
View File
@@ -2,7 +2,8 @@ import asyncio
import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi import FastAPI, HTTPException
from fastapi.responses import FileResponse
from backend.bootstrap.container import build_container
from backend.bootstrap.logging import configure_logging
@@ -59,4 +60,16 @@ def create_application(settings: Settings | None = None) -> FastAPI:
install_request_context(application)
install_error_handlers(application)
application.include_router(api_router, prefix="/api")
if runtime.frontend_dist_directory.joinpath("index.html").is_file():
frontend_root = runtime.frontend_dist_directory.resolve()
@application.get("/{requested_path:path}", include_in_schema=False)
def frontend(requested_path: str) -> FileResponse:
if requested_path == "api" or requested_path.startswith("api/"):
raise HTTPException(status_code=404)
candidate = frontend_root.joinpath(requested_path).resolve()
if candidate.is_relative_to(frontend_root) and candidate.is_file():
return FileResponse(candidate)
return FileResponse(frontend_root / "index.html")
return application