hoangs's picture
Upload model.py
b6aeef5 verified
from typing import TypedDict
class PathSummary(TypedDict):
average_speed_m_per_s: float
success_rate: float
total_distance_m: float
def summarize_paths(records: list[dict]) -> PathSummary:
"""Summarize simple path history records.
Each record is expected to have:
- distance_m (float)
- duration_s (float)
- success ("yes"/"no")
"""
if not records:
return {
"average_speed_m_per_s": 0.0,
"success_rate": 0.0,
"total_distance_m": 0.0,
}
total_distance = 0.0
total_duration = 0.0
success_count = 0
for r in records:
d = float(r.get("distance_m", 0.0))
t = float(r.get("duration_s", 0.0))
total_distance += d
total_duration += max(t, 0.0)
if str(r.get("success", "")).lower() == "yes":
success_count += 1
avg_speed = total_distance / total_duration if total_duration > 0 else 0.0
success_rate = success_count / len(records)
return {
"average_speed_m_per_s": round(avg_speed, 3),
"success_rate": round(success_rate, 3),
"total_distance_m": round(total_distance, 3),
}
if __name__ == "__main__":
example_records = [
{"distance_m": 6.0, "duration_s": 40, "success": "yes"},
{"distance_m": 8.0, "duration_s": 50, "success": "no"},
]
print(summarize_paths(example_records))