from datetime import datetime

def validar_asociaciones(juegos, asociaciones, inventario, fecha):
    if not isinstance(fecha, str):
        return {}

    validas = {}

    for juego in juegos:
        inicio = juego.get("localFullDate", "")

        try:
            dia = datetime.fromisoformat(
                inicio.replace("Z", "+00:00")
            ).date().isoformat()
        except (ValueError, TypeError):
            continue

        if dia != fecha:
            continue

        from hermes_lmp_matcher import identificar

        visitante = identificar(juego.get("awayTeamShort", ""))
        local = identificar(juego.get("homeTeamShort", ""))

        if len(visitante) != 1 or len(local) != 1:
            continue

        equipos = visitante | local

        if len(equipos) != 2:
            continue

        clave = inicio + "|" + "|".join(sorted(equipos))
        canal = asociaciones.get(clave)

        if canal is None or canal not in inventario:
            continue

        if canal in validas.values():
            continue

        validas[clave] = canal

    return validas
