"""
Reglas de negocio puras (sin acceso a datos ni a WhatsApp), para poder
testearlas fácil. Usan los mismos umbrales que la planilla de diagnóstico
(Diagnostico_Comercial_TrackMar.xlsx) para que ambas herramientas coincidan.
"""
import config
from datetime import datetime


def proyeccion_contactos_en_riesgo(contactos_mes_actual: int, dia_del_mes: int, dias_en_el_mes: int) -> bool:
    """True si, al ritmo actual, la sucursal no va a llegar al objetivo mensual
    de contactos en frío (ver Eje 3 del documento)."""
    if dia_del_mes <= 0:
        return False
    ritmo_diario = contactos_mes_actual / dia_del_mes
    proyeccion_mes = ritmo_diario * dias_en_el_mes
    return proyeccion_mes < (config.OBJETIVO_CONTACTOS_FRIO_POR_MES * config.UMBRAL_PROYECCION_CONTACTOS)


def puede_contactar_cliente_por_sucursal(nombre_sucursal: str) -> bool:
    """Respeta el piloto definido en config.py: solo contacta directamente a
    clientes en las sucursales habilitadas, hasta que se decida extenderlo."""
    if config.CONTACTO_CLIENTE_HABILITADO_PARA_TODAS:
        return True
    return nombre_sucursal in config.SUCURSALES_PILOTO_CONTACTO_CLIENTE


def telefono_whatsapp_valido(telefono: str) -> bool:
    """Chequeo mínimo de formato (E.164: '+' seguido de 8 a 15 dígitos).
    Ajustar si el sistema de Track Mar guarda los teléfonos en otro formato."""
    if not telefono:
        return False
    t = telefono.strip().replace(" ", "").replace("-", "")
    if not t.startswith("+"):
        return False
    return t[1:].isdigit() and 8 <= len(t[1:]) <= 15
