Initial commit - dashboard leads
This commit is contained in:
57
backend/diag_con_msje_sin_campania.py
Normal file
57
backend/diag_con_msje_sin_campania.py
Normal file
@@ -0,0 +1,57 @@
|
||||
"""
|
||||
Diagnostico: contactos que SI tienen mensajes, pero NINGUNO de campaña.
|
||||
Muestra sus mensajes (content) para revisar por que no hicieron match.
|
||||
"""
|
||||
import os
|
||||
import psycopg2
|
||||
from dotenv import load_dotenv
|
||||
import data_manager_v2 as dm # reutiliza las frases de campaña
|
||||
|
||||
load_dotenv()
|
||||
|
||||
PG_HOST = os.getenv("PG_HOST")
|
||||
PG_DB = os.getenv("PG_DATABASE") or os.getenv("PG_DB")
|
||||
PG_USER = os.getenv("PG_USER")
|
||||
PG_PASS = os.getenv("PG_PASSWORD") or os.getenv("PG_PASS")
|
||||
PG_PORT = os.getenv("PG_PORT", "5432")
|
||||
|
||||
FRASES = [c[0] for c in dm._campanias_supabase()]
|
||||
likes = " OR ".join(["m.content LIKE %s"] * len(FRASES))
|
||||
params = [f"%{fr}%" for fr in FRASES]
|
||||
|
||||
conn = psycopg2.connect(host=PG_HOST, dbname=PG_DB, user=PG_USER,
|
||||
password=PG_PASS, port=PG_PORT, connect_timeout=30)
|
||||
cur = conn.cursor()
|
||||
|
||||
# Buscar contactos con >=1 mensaje pero 0 de campaña (traemos algunos pocos)
|
||||
sql = f"""
|
||||
SELECT c.id, c.phone_number, c.created_at,
|
||||
COUNT(m.id) AS total_msjes,
|
||||
SUM(CASE WHEN ({likes}) THEN 1 ELSE 0 END) AS msjes_campania
|
||||
FROM contacts c
|
||||
JOIN conversations cv ON cv.contact_id = c.id
|
||||
JOIN messages m ON m.conversation_id = cv.id AND m.sender_type = 'Contact'
|
||||
GROUP BY c.id, c.phone_number, c.created_at
|
||||
HAVING COUNT(m.id) >= 1 AND SUM(CASE WHEN ({likes}) THEN 1 ELSE 0 END) = 0
|
||||
ORDER BY c.created_at DESC
|
||||
LIMIT 5
|
||||
"""
|
||||
cur.execute(sql, params + params)
|
||||
contactos = cur.fetchall()
|
||||
|
||||
for cid, ph, creado, tot, camp in contactos:
|
||||
print("=" * 80)
|
||||
print(f"CONTACTO id={cid} tel={ph} creado={creado} #msjes={tot} campaña={camp}")
|
||||
# Mostrar sus mensajes (content) del contacto
|
||||
cur.execute("""
|
||||
SELECT m.created_at, LEFT(m.content, 90)
|
||||
FROM messages m
|
||||
JOIN conversations cv ON m.conversation_id = cv.id
|
||||
WHERE cv.contact_id = %s AND m.sender_type = 'Contact'
|
||||
ORDER BY m.created_at ASC
|
||||
LIMIT 10
|
||||
""", (cid,))
|
||||
for fecha, txt in cur.fetchall():
|
||||
print(f" [{fecha}] {txt!r}")
|
||||
|
||||
conn.close()
|
||||
Reference in New Issue
Block a user