""" Phase 9 — API Layer Launches the FastAPI server on http://localhost:8000 Interactive docs: http://localhost:8000/docs """ import os import sys from pathlib import Path import uvicorn BACKEND_ROOT = Path(__file__).resolve().parent sys.path.insert(0, str(BACKEND_ROOT)) # Load environment variables from .env if present _env_file = BACKEND_ROOT / ".env" if _env_file.exists(): for _line in _env_file.read_text().splitlines(): _line = _line.strip() if _line and not _line.startswith("#") and "=" in _line: _k, _v = _line.split("=", 1) os.environ.setdefault(_k.strip(), _v.strip()) HOST = "0.0.0.0" PORT = 8000 if __name__ == "__main__": print(f"\nPhase 9: Portfolio Stress Testing API") print(f"Backend root : {BACKEND_ROOT}") print(f"Server : http://localhost:{PORT}") print(f"API docs : http://localhost:{PORT}/docs") print(f"Redoc : http://localhost:{PORT}/redoc\n") uvicorn.run( "api.main:app", host=HOST, port=PORT, reload=True, reload_dirs=[str(BACKEND_ROOT)], )