beta-NORM / app /main.py
GitHub Actions
Sync from GitHub 2026-04-30 19:20:11 UTC
8aadaef
Raw
History Blame Contribute Delete
1.87 kB
"""
Punto de entrada de la API. Ejecutar con:
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
"""
import os
import pathlib
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from app.routers import documents, presentations, query
app = FastAPI(
title="chatbot-Norm API",
version="0.2.0",
description="RAG API para consultas sobre NORM y química.",
)
# ---------------------------------------------------------------------------
# CORS — ajustar ALLOWED_ORIGINS en producción vía variable de entorno
# ---------------------------------------------------------------------------
_raw_origins = os.getenv(
"ALLOWED_ORIGINS",
"http://localhost:3000,http://localhost:5173,"
"http://127.0.0.1:3000,http://127.0.0.1:5173",
)
allowed_origins = [o.strip() for o in _raw_origins.split(",") if o.strip()]
app.add_middleware(
CORSMiddleware,
allow_origins=allowed_origins,
allow_origin_regex=r"https?://(localhost|127\.0\.0\.1)(:\d+)?",
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# ---------------------------------------------------------------------------
# Routers
# ---------------------------------------------------------------------------
app.include_router(query.router)
app.include_router(documents.router)
app.include_router(presentations.router)
@app.get("/health")
async def health_check():
return {"status": "ok"}
# ---------------------------------------------------------------------------
# SPA — debe ir al final para no solapar las rutas de la API
# ---------------------------------------------------------------------------
_static_dir = pathlib.Path(__file__).parent / "static"
if _static_dir.exists():
app.mount("/", StaticFiles(directory=_static_dir, html=True), name="spa")