in gemini/agents/research-multi-agents/ev_agent/api_handler/api_02_EV_Infra_StationAnalysis.py [0:0]
def analyze_charging_capabilities(stations: List[Dict]) -> ChargingCapabilities:
"""Analyze charging capabilities from station data"""
speeds = {
"dc_fast": ChargingSpeed(),
"level2": ChargingSpeed(),
"level1": ChargingSpeed(),
}
connector_types = {}
total_ports = 0
for station in stations:
# Count ports and analyze charging speeds
dc_ports = int(station.get("ev_dc_fast_num") or 0)
l2_ports = int(station.get("ev_level2_evse_num") or 0)
l1_ports = int(station.get("ev_level1_evse_num") or 0)
total_ports += dc_ports + l2_ports + l1_ports
if dc_ports:
speeds["dc_fast"].count += 1
speeds["dc_fast"].total_ports += dc_ports
speeds["dc_fast"].max_power = max(
speeds["dc_fast"].max_power,
float(station.get("ev_power_level_dc_max") or 0),
)
if l2_ports:
speeds["level2"].count += 1
speeds["level2"].total_ports += l2_ports
speeds["level2"].max_power = max(
speeds["level2"].max_power,
float(station.get("ev_power_level_l2_max") or 0),
)
if l1_ports:
speeds["level1"].count += 1
speeds["level1"].total_ports += l1_ports
speeds["level1"].max_power = max(
speeds["level1"].max_power,
float(station.get("ev_power_level_l1_max") or 0),
)
# Analyze connector types
connectors = station.get("ev_connector_types", []) or []
for connector in connectors:
if connector:
connector_types[connector] = connector_types.get(connector, 0) + 1
# Calculate percentages
total_stations = len(stations)
for speed in speeds.values():
speed.percentage = (
round((speed.count / total_stations * 100), 2) if total_stations > 0 else 0
)
# Create connector distribution list
connector_distribution = [
ConnectorDistribution(
connector_type=c_type,
count=count,
percentage=(
round((count / total_stations * 100), 2) if total_stations > 0 else 0
),
ports_per_station=(
round(count / total_stations, 2) if total_stations > 0 else 0
),
)
for c_type, count in connector_types.items()
]
return ChargingCapabilities(
by_type=speeds,
connector_distribution=connector_distribution,
total_ports=total_ports,
)