| """ |
| 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.", |
| ) |
|
|
| |
| |
| |
| _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=["*"], |
| ) |
|
|
| |
| |
| |
| 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"} |
|
|
|
|
| |
| |
| |
| _static_dir = pathlib.Path(__file__).parent / "static" |
| if _static_dir.exists(): |
| app.mount("/", StaticFiles(directory=_static_dir, html=True), name="spa") |
|
|