""" Numidium Backend - Main Application Plataforma de Inteligência e Análise de Dados """ from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from contextlib import asynccontextmanager from app.config import settings from app.core.database import init_db from app.api.routes import entities, relationships, events, search, ingest @asynccontextmanager async def lifespan(app: FastAPI): """Startup and shutdown events""" # Startup: Initialize database init_db() print("🚀 Numidium Backend started!") print(f"📊 Database: {settings.database_url}") yield # Shutdown print("👋 Numidium Backend shutting down...") # Create FastAPI app app = FastAPI( title="Numidium API", description=""" ## 🔮 Sistema de Inteligência e Análise de Dados Backend do VANTAGE - Uma plataforma para: - 📥 Ingestão de dados de múltiplas fontes (Wikipedia, News, Manual) - 🔗 Mapeamento de conexões entre entidades - 🗺️ Visualização geográfica - 📊 Análise de grafos e relacionamentos - 🔍 Busca global """, version=settings.app_version, lifespan=lifespan ) # CORS middleware app.add_middleware( CORSMiddleware, allow_origins=settings.cors_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Include routers app.include_router(entities.router, prefix="/api/v1") app.include_router(relationships.router, prefix="/api/v1") app.include_router(events.router, prefix="/api/v1") app.include_router(search.router, prefix="/api/v1") app.include_router(ingest.router, prefix="/api/v1") @app.get("/") def root(): """Root endpoint - API info""" return { "name": "Numidium", "version": settings.app_version, "status": "online", "docs": "/docs", "description": "Sistema de Inteligência e Análise de Dados" } @app.get("/health") def health_check(): """Health check endpoint for HF Spaces""" return {"status": "healthy"} @app.get("/api/v1") def api_info(): """API v1 info""" return { "version": "1.0.0", "endpoints": { "entities": "/api/v1/entities", "relationships": "/api/v1/relationships", "events": "/api/v1/events", "search": "/api/v1/search", "ingest": "/api/v1/ingest" } }