def analyze_charging_capabilities()

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,
    )