| """Main application entry point.""" |
|
|
| from contextlib import asynccontextmanager |
|
|
| from fastapi import FastAPI |
| from src.middlewares.logging import configure_logging, get_logger |
| from src.middlewares.cors import add_cors_middleware |
| from src.middlewares.rate_limit import limiter, _rate_limit_exceeded_handler |
| from slowapi.errors import RateLimitExceeded |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| from src.api.v1.report import router as report_router |
| from src.api.v1.tools import router as tools_router |
| from src.api.v1.help import router as help_router |
| from src.api.v1.traceability import router as traceability_router |
| from src.api.v2.chat import router as chat_v2_router |
| from src.db.postgres.init_db import init_db |
| from src.config.settings import settings |
| import uvicorn |
|
|
| |
| configure_logging() |
| logger = get_logger("main") |
|
|
|
|
| @asynccontextmanager |
| async def lifespan(app: FastAPI): |
| logger.info("Starting application...") |
| if not settings.skip_init_db: |
| await init_db() |
| logger.info("Database initialized") |
| else: |
| logger.info("Skipping database initialization (SKIP_INIT_DB=true)") |
| yield |
|
|
|
|
| |
| app = FastAPI( |
| title="DataEyond Agentic Service", |
| description="Multi-agent AI backend with RAG capabilities", |
| version="0.1.0", |
| lifespan=lifespan, |
| ) |
|
|
| |
| add_cors_middleware(app) |
| app.state.limiter = limiter |
| app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| app.include_router(report_router) |
| app.include_router(tools_router) |
| app.include_router(help_router) |
| app.include_router(traceability_router) |
| app.include_router(chat_v2_router) |
|
|
|
|
| @app.get("/") |
| async def root(): |
| """Root endpoint.""" |
| return { |
| "status": "ok", |
| "service": "DataEyond Agentic Service", |
| "version": "0.1.0" |
| } |
|
|
|
|
| @app.get("/health") |
| async def health_check(): |
| """Health check endpoint.""" |
| return {"status": "healthy"} |
|
|
|
|
| if __name__ == "__main__": |
| uvicorn.run( |
| "main:app", |
| host="0.0.0.0", |
| port=7860, |
| reload=True |
| ) |
|
|