import logging import os from logging.handlers import RotatingFileHandler from pathlib import Path from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.routers import ingest, query from app.core.config import get_settings # Configure logging before app initialization LOG_DIR = Path(__file__).parent / "log" LOG_DIR.mkdir(exist_ok=True) LOG_FILE = LOG_DIR / "backend.log" LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" # Root logger configuration logging.basicConfig( level=logging.INFO, format=LOG_FORMAT, handlers=[ RotatingFileHandler( LOG_FILE, maxBytes=10 * 1024 * 1024, # 10MB per file backupCount=5, # Keep 5 backup files encoding="utf-8", ), logging.StreamHandler(), # Also keep console output ], ) settings = get_settings() app = FastAPI(title="RAG Video Q&A", version="1.0.0") app.add_middleware( CORSMiddleware, allow_origins=settings.cors_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(ingest.router, prefix="/api/v1") app.include_router(query.router, prefix="/api/v1") @app.get("/health") def health_check(): return {"status": "ok"}