Spaces:
Sleeping
Sleeping
| """FastAPI server for the Logistics Shipment RL Environment.""" | |
| from fastapi.responses import FileResponse | |
| from fastapi.middleware.cors import CORSMiddleware | |
| import os | |
| try: | |
| from openenv.core.env_server.http_server import create_app | |
| from .environment import LogisticsShipmentEnvironment, LogisticsAction, LogisticsObservation | |
| except ImportError: | |
| from openenv.core.env_server.http_server import create_app | |
| from server.environment import LogisticsShipmentEnvironment, LogisticsAction, LogisticsObservation | |
| # Create the base application | |
| app = create_app( | |
| LogisticsShipmentEnvironment, | |
| LogisticsAction, | |
| LogisticsObservation, | |
| env_name="logistics_shipment_env", | |
| ) | |
| # Add CORS middleware to allow dashboard.html to talk to the server | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], # Allow all origins for the hackathon | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| # Serve the beautiful dashboard at the root | |
| async def serve_dashboard(): | |
| dashboard_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "dashboard.html") | |
| if os.path.exists(dashboard_path): | |
| return FileResponse(dashboard_path) | |
| return {"error": "Dashboard not found", "path": dashboard_path} | |
| async def health(): | |
| return {"status": "ok", "env": "logistics_shipment_env"} | |
| # Serve the slide deck presentation | |
| async def serve_slides(): | |
| slides_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "slides.html") | |
| if os.path.exists(slides_path): | |
| return FileResponse(slides_path, media_type="text/html") | |
| return {"error": "Slides not found"} | |
| def main(): | |
| import uvicorn | |
| uvicorn.run(app, host="0.0.0.0", port=8000) | |
| if __name__ == "__main__": | |
| main() | |