Spaces:
Sleeping
Sleeping
| from contextlib import asynccontextmanager | |
| from pathlib import Path | |
| from fastapi import FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from fastapi.responses import FileResponse | |
| from fastapi.staticfiles import StaticFiles | |
| from src.api.router import api_router | |
| from src.api.schemas.common import HealthResponse | |
| from src.config import settings | |
| from src.db.session import init_db | |
| async def lifespan(app: FastAPI): | |
| # Startup: ensure directories exist and init DB | |
| settings.raw_dir.mkdir(parents=True, exist_ok=True) | |
| settings.processed_dir.mkdir(parents=True, exist_ok=True) | |
| settings.chroma_db_path.mkdir(parents=True, exist_ok=True) | |
| settings.sqlite_db_path.parent.mkdir(parents=True, exist_ok=True) | |
| await init_db() | |
| yield | |
| app = FastAPI( | |
| title="Natural Hygiene RAG API", | |
| description="Retrieval-Augmented Generation system for Natural Hygiene literature", | |
| version="0.1.0", | |
| lifespan=lifespan, | |
| ) | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| app.include_router(api_router) | |
| # Serve static dashboard | |
| _static_dir = Path(__file__).parent / "static" | |
| async def dashboard(): | |
| return FileResponse(_static_dir / "index.html") | |
| app.mount("/static", StaticFiles(directory=str(_static_dir)), name="static") | |
| async def health_check(): | |
| return HealthResponse() | |