Spaces:
Running
Running
vaibuzz
feat: production-ready deployment β Dockerfile, schema fixes, PCT_DIFF logic, abs() resolver
1294b5d | """ | |
| 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"]) | |
| 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) | |