"""BookingService — microservizio prenotazioni FastAPI. Container Docker autonomo, DB dedicato, zero dipendenze dal resto. Google OAuth2 per admin con vincolo dominio. """ import logging from pathlib import Path from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles from fastapi.responses import FileResponse from app.config import get_settings from app.routers import public, admin, auth, customers from app.routers import settings as settings_router logging.basicConfig(level=logging.INFO, format="%(asctime)s %(name)s %(levelname)s %(message)s") settings = get_settings() app = FastAPI( title=settings.app_name, version="1.3.0", docs_url="/api/docs", redoc_url=None, ) app.add_middleware( CORSMiddleware, allow_origins=settings.cors_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(auth.router) app.include_router(public.router) app.include_router(admin.router) app.include_router(customers.router) app.include_router(settings_router.router) @app.get("/api/health") def health(): return {"status": "ok", "service": settings.app_name, "version": "1.3.0"} FRONTEND_DIR = Path("/app/frontend") if FRONTEND_DIR.exists(): app.mount("/static", StaticFiles(directory=str(FRONTEND_DIR)), name="static") @app.get("/") def serve_index(): return FileResponse(str(FRONTEND_DIR / "index.html")) @app.get("/admin") def serve_admin(): return FileResponse(str(FRONTEND_DIR / "admin.html"))