Spaces:
Running
Running
from fastapi import FastAPI, HTTPException | |
from fastapi.middleware.cors import CORSMiddleware | |
from fastapi.responses import JSONResponse | |
from getReceiverData import analyze_telecom_data, get_summary_by_state | |
import uvicorn | |
import pandas as pd | |
import numpy as np | |
app = FastAPI() | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=["*"], | |
allow_credentials=True, | |
allow_methods=["*"], | |
allow_headers=["*"], | |
) | |
def sanitize_json(data): | |
if isinstance(data, dict): | |
return {k: sanitize_json(v) for k, v in data.items()} | |
elif isinstance(data, list): | |
return [sanitize_json(v) for v in data] | |
elif isinstance(data, (np.integer, np.int64)): | |
return int(data) | |
elif isinstance(data, (np.floating, np.float64)): | |
return float(data) | |
elif isinstance(data, (np.bool_)): | |
return bool(data) | |
elif pd.isna(data): | |
return None | |
else: | |
return data | |
def get_performance_summary(): | |
results = analyze_telecom_data() | |
summary_data = sanitize_json({ | |
"summary": { | |
"max_connected_state": results["max_connected_state"], | |
"max_connected_state_count": results["max_connected_state_count"], | |
"best_signal_state": results["best_signal_state"], | |
"best_signal_avg": results["best_signal_avg"], | |
"worst_call_drop_state": results["worst_call_drop_state"], | |
"worst_call_drop_rate": results["worst_call_drop_rate"] | |
}, | |
"state_metrics": { | |
"device_count": results["state_device_count"], | |
"signal_strength": results["state_signal_strength"], | |
"call_drop_rate": results["state_call_drop_rate"] | |
}, | |
"top_towns": { | |
"by_device": results["top_town_by_device"], | |
"by_signal": results["top_town_by_signal"], | |
"by_call_drop": results["worst_town_by_call_drop"] | |
}, | |
"town_summary": results["town_summary"] | |
}) | |
return summary_data | |
def get_state_summary(state_name): | |
result = get_summary_by_state(state_name) | |
json_data = sanitize_json(result.to_dict(orient='records')) | |
return {"town_summary": json_data} | |
if __name__ == "__main__": | |
uvicorn.run(app, host="0.0.0.0", port=8000) | |
#get_telecom_summary() | |