copilot-swe-agent[bot]
feat: build complete ReliefLensAI backend
d0f3cbe unverified
Raw
History Blame Contribute Delete
1.82 kB
from __future__ import annotations
import logging
from contextlib import asynccontextmanager
from pathlib import Path
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from api.routes import amd, crisis_room, demo, incidents, reports
from core.config import get_settings
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s — %(name)s — %(levelname)s — %(message)s",
)
logger = logging.getLogger(__name__)
@asynccontextmanager
async def lifespan(app: FastAPI):
settings = get_settings()
storage_path = Path(settings.storage_path)
for sub in ("sessions", "incidents", "signals", "resources", "dispatch"):
(storage_path / sub).mkdir(parents=True, exist_ok=True)
logger.info("ReliefLensAI backend started (demo_mode=%s)", settings.demo_mode)
yield
logger.info("ReliefLensAI backend shutting down")
app = FastAPI(
title="ReliefLensAI",
description="Real-time multimodal disaster triage system powered by AMD MI300X + vLLM",
version="1.0.0",
lifespan=lifespan,
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(crisis_room.router, prefix="/api")
app.include_router(reports.router, prefix="/api")
app.include_router(incidents.router, prefix="/api")
app.include_router(amd.router, prefix="/api")
app.include_router(demo.router, prefix="/api")
@app.get("/health", tags=["health"])
async def health_check() -> dict:
settings = get_settings()
return {
"status": "healthy",
"demo_mode": settings.demo_mode,
"app_env": settings.app_env,
}
@app.get("/", tags=["root"])
async def root() -> dict:
return {"name": "ReliefLensAI", "version": "1.0.0", "status": "ready"}