vaibuzz
feat: production-ready deployment β€” Dockerfile, schema fixes, PCT_DIFF logic, abs() resolver
1294b5d
Raw
History Blame Contribute Delete
2.32 kB
"""
PolicyPilot β€” FastAPI Application Entrypoint
"""
import logging
import os
from dotenv import load_dotenv
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
load_dotenv()
# Configure logging before importing modules
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
)
from modules.ingestion import router as ingestion_router
from modules.extraction import router as extraction_router
from modules.finalization import router as finalization_router
from modules.rule_engine import router as rule_engine_router
from modules.doc_extraction import router as doc_extraction_router
from modules.reporting import router as reporting_router
from modules.rule_graph import router as rule_graph_router
app = FastAPI(
title="PolicyPilot",
description="AP Policy Rule Extraction and Execution System",
version="1.0.0",
)
# ---------------------------------------------------------------------------
# CORS β€” allow frontend dev server
# ---------------------------------------------------------------------------
frontend_url = os.environ.get("FRONTEND_URL", "http://localhost:5173")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Fixed for Live Website Deployment (Accepts requests from any Vercel URL)
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# ---------------------------------------------------------------------------
# Routers
# ---------------------------------------------------------------------------
app.include_router(ingestion_router, tags=["Module 1 β€” Ingestion"])
app.include_router(extraction_router, tags=["Module 2 β€” Extraction"])
app.include_router(finalization_router, tags=["Module 3 β€” Finalization"])
app.include_router(rule_engine_router, tags=["Module 4 β€” Rule Engine"])
app.include_router(doc_extraction_router, tags=["Module 5 β€” Document Extraction"])
app.include_router(reporting_router, tags=["Module 6 β€” Reporting"])
app.include_router(rule_graph_router, tags=["Module 7 β€” Rule Graph"])
@app.get("/", tags=["Health"])
def health() -> dict:
return {"status": "ok", "service": "PolicyPilot API"}
if __name__ == "__main__":
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)