# diag_caso_469.py - Investiga un telefono puntual: asignacion, respuesta, y
# actividad de la asesora ese dia (para saber si estuvo o no de descanso).
from datetime import datetime
from data_manager_v2 import DataManager

TEL = "923306769"      # telefono a investigar
NOMBRE = "DIANA"
DIA_OBJ = (2026, 8, 10)

dm = DataManager()

# 1) Todos los mensajes de ese contacto (asignaciones y respuestas), en hora Peru
conn = dm.pg_conn(); cur = conn.cursor()
cur.execute("""
SELECT (m.created_at - INTERVAL '5 hours') AS fecha, m.id, m.sender_id, m.sender_type,
       LEFT(m.content, 70)
FROM messages m
JOIN conversations cv ON m.conversation_id = cv.id
JOIN contacts c ON cv.contact_id = c.id
WHERE REPLACE(REPLACE(c.phone_number,'+51',''),'+','') LIKE %s
ORDER BY m.id ASC
""", ('%'+TEL,))
rows = cur.fetchall()
print(f"\n=== Mensajes del contacto {TEL} (hora Peru) ===\n")
print(f"{'fecha':20} {'msg_id':>9} {'sender_id':>9} {'tipo':8} contenido")
print("-"*90)
for fecha, mid, sid, stype, cont in rows:
    marca = "  <- ASESOR" if (sid is not None and 15 <= sid <= 25) else ""
    stype = str(stype or "-"); sid_s = str(sid if sid is not None else "-")
    print(f"{str(fecha):26} {str(mid):>9} {sid_s:>9} {stype:8} {str(cont or '')[:40]}{marca}")

# 2) Que trajo el query de asignacion+respuesta para este telefono
print(f"\n=== Lo que el dashboard tomo como T1 (asignacion) y T2 (respuesta) ===")
for r in dm.traer_asignacion_respuesta():
    if str(r.get('telefono','')).endswith(TEL[-9:]):
        print(f"  T1 asignacion = {r.get('created_at')}")
        print(f"  T2 respuesta  = {r.get('respuesta_fecha')}")
        print(f"  asesor        = {r.get('user_name')}")

# 3) Actividad de Diana ese dia (para saber si trabajo o descanso)
print(f"\n=== Actividad de {NOMBRE} el {DIA_OBJ[2]:02d}/{DIA_OBJ[1]:02d}/{DIA_OBJ[0]} (mensajes enviados) ===")
asig = dm.traer_asignacion_respuesta()
uid_diana = None
for r in asig:
    if NOMBRE in (r.get('user_name') or '').upper() and r.get('user_id') is not None:
        uid_diana = r['user_id']; break
if uid_diana is None:
    print("  (no se hallo user_id de Diana)")
else:
    hrs = []
    for a in dm.traer_actividad_asesores():
        ts = a.get('created_at')
        if a.get('user_id')==uid_diana and isinstance(ts,datetime) and \
           (ts.year,ts.month,ts.day)==DIA_OBJ:
            hrs.append(ts.strftime('%H:%M'))
    if not hrs:
        print(f"  SIN actividad ese dia -> probablemente DESCANSO / no trabajo.")
    else:
        hrs.sort()
        print(f"  {len(hrs)} mensajes. Primera: {hrs[0]}  Ultima: {hrs[-1]}")
        print(f"  (si hay actividad en la tarde 13-18 = turno 1; si en la noche = turno 2)")
conn.close()
