from fastapi import FastAPI from pydantic import BaseModel import uvicorn app = FastAPI() # Define the request body structure class VendorLog(BaseModel): work_logs: int delay_logs: int quality_logs: int incident_logs: int # Scoring logic @app.post("/score") async def calculate_score(logs: VendorLog): # Simple scoring logic (you can customize this) quality_score = (logs.quality_logs / (logs.work_logs + 1)) * 100 timeliness_score = (1 - logs.delay_logs / (logs.work_logs + 1)) * 100 safety_score = (1 - logs.incident_logs / (logs.work_logs + 1)) * 100 communication_score = 50 # Placeholder, adjust based on your logic # Final score (average of individual scores) final_score = (quality_score + timeliness_score + safety_score + communication_score) / 4 # Alert flag logic (example: flag if final score < 50) alert_flag = final_score < 50 return { "final_score": round(final_score, 2), "alert_flag": alert_flag, "quality_score": round(quality_score, 2), "timeliness_score": round(timeliness_score, 2), "safety_score": round(safety_score, 2), "communication_score": round(communication_score, 2) } # Run the server if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8080)