63 lines
2.6 KiB
Python
63 lines
2.6 KiB
Python
# 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()
|