# /home/andrespa/alterra.inteliventa.ai/regularizar_seguimientos.py
# -*- coding: utf-8 -*-

import re
import time
from datetime import datetime
from interaccion_planok import crear_seguimiento

# ===== Config fijos según tu instrucción =====
ID_TIPO_CONTACTO = 36
ID_EXPECTATIVA   = 3
COMENTARIO       = "Cliente Centralizador."
FECHA_RECONTACTO = "2025-11-03T00:00:00.000Z"
MANTENER_EJEC    = True

# Opcional: hacer pruebas sin enviar
DRY_RUN = False
SLEEP_BETWEEN = 0.25   # segundos entre llamadas, por cortesía

DATA = """
Id_cliente ; ID_proyecto ; ID_medio_llegada
151158 ; 34 ; 17226
153094 ; 33 ; 16990
153095 ; 30 ; 16222
92993  ; 34 ; 17543
111525 ; 31 ; 16449
92705  ; 32 ; 16701
136323 ; 36 ; 17713
138825 ; 34 ; 17226
125933 ; 31 ; 16549
116891 ; 33 ; 16989
153102 ; 34 ; 17855
95068  ; 32 ; 16729
69132  ; 33 ; 16961
22406  ; 31 ; 16550
153104 ; 32 ; 16729
120041 ; 31 ; 16549
153105 ; 34 ; 17226
136850 ; 32 ; 16729
141965 ; 34 ; 17592
56166  ; 31 ; 16549
73917  ; 31 ; 16550
134782 ; 31 ; 17869
135053 ; 31 ; 16549
153107 ; 33 ; 16990
153108 ; 31 ; 16449
101353 ; 32 ; 16730
153109 ; 30 ; 16223
153110 ; 33 ; 16990
153111 ; 34 ; 17536
30996  ; 31 ; 17852
153112 ; 32 ; 16694
59203  ; 32 ; 16814
23069  ; 33 ; 16990
153113 ; 32 ; 16694
111706 ; 30 ; 16222
153115 ; 33 ; 16990
16560  ; 34 ; 17535
153116 ; 30 ; 16223
97450  ; 31 ; 16449
153117 ; 32 ; 16730
145444 ; 34 ; 17592
144189 ; 36 ; 17844
153120 ; 34 ; 17535
152350 ; 34 ; 17543
153121 ; 32 ; 17856
26696  ; 31 ; 16549
28264  ; 30 ; 16222
94131  ; 30 ; 16222
111527 ; 30 ; 16304
70704  ; 34 ; 17873
35209  ; 32 ; 16694
52267  ; 32 ; 17870
122566 ; 32 ; 17856
153129 ; 31 ; 17869
126933 ; 33 ; 16961
54483  ; 36 ; 17844
54162  ; 32 ; 16730
153135 ; 31 ; 17869
150557 ; 30 ; 16223
153138 ; 36 ; 17857
54780  ; 34 ; 17535
153139 ; 32 ; 16694
111538 ; 32 ; 16694
137853 ; 32 ; 16729
16387  ; 31 ; 17869
66141  ; 31 ; 16549
153145 ; 30 ; 16223
139313 ; 31 ; 16549
153146 ; 30 ; 16222
153147 ; 33 ; 16990
97545  ; 32 ; 16729
57446  ; 30 ; 17854
108265 ; 33 ; 16990
152939 ; 34 ; 17592
134565 ; 30 ; 16304
153150 ; 34 ; 17226
61830  ; 31 ; 16449
120489 ; 36 ; 17844
61830  ; 36 ; 17713
152746 ; 34 ; 17873
141674 ; 34 ; 17535
35064  ; 30 ; 16223
66108  ; 32 ; 16694
100886 ; 36 ; 17713
106288 ; 30 ; 16223
153158 ; 30 ; 16305
60140  ; 34 ; 17226
32303  ; 30 ; 16222
76479  ; 32 ; 17870
153160 ; 31 ; 17869
152431 ; 34 ; 17218
129547 ; 32 ; 17870
153163 ; 31 ; 17852
153165 ; 34 ; 17543
101726 ; 33 ; 16990
21421  ; 36 ; 17844
140852 ; 34 ; 17226
135252 ; 30 ; 16223
135850 ; 32 ; 17870
153169 ; 32 ; 16701
79600  ; 33 ; 16990
56542  ; 30 ; 17865
153171 ; 32 ; 16694
153172 ; 33 ; 16990
152792 ; 31 ; 16449
41898  ; 36 ; 17845
29104  ; 34 ; 17849
153174 ; 30 ; 17875
153175 ; 33 ; 16990
79592  ; 32 ; 16729
54743  ; 34 ; 17592
83391  ; 36 ; 17844
153177 ; 31 ; 17869
18471  ; 36 ; 17844
153178 ; 33 ; 16961
60147  ; 30 ; 16194
80960  ; 36 ; 17844
153181 ; 31 ; 16550
153182 ; 33 ; 16990
153184 ; 33 ; 16989
140856 ; 33 ; 16989
153185 ; 34 ; 17873
89860  ; 34 ; 17873
153187 ; 32 ; 17863
128477 ; 32 ; 16701
142274 ; 34 ; 17873
153188 ; 36 ; 17713
153190 ; 34 ; 17855
133950 ; 34 ; 17543
129975 ; 36 ; 17705
97135  ; 36 ; 17713
101353 ; 34 ; 17866
7690   ; 34 ; 17535
153199 ; 31 ; 16449
112273 ; 36 ; 17713
153199 ; 36 ; 17713
136253 ; 30 ; 16304
113347 ; 32 ; 16730
""".strip()

def parse_rows(block: str):
    rows = []
    for line in block.splitlines():
        line = line.strip()
        if not line or line.lower().startswith("id_cliente"):
            continue
        # admite separadores ; o espacios múltiples
        parts = [p.strip() for p in re.split(r"\s*;\s*|\s{2,}", line) if p.strip()]
        if len(parts) != 3:
            print(f"⚠️  Línea ignorada (formato inesperado): {line}")
            continue
        try:
            id_cliente = int(parts[0])
            id_proyecto = int(parts[1])
            id_medio   = int(parts[2])
            rows.append((id_cliente, id_proyecto, id_medio))
        except ValueError:
            print(f"⚠️  Línea ignorada (valores no enteros): {line}")
    return rows

def main():
    pares = parse_rows(DATA)
    ok, fail = 0, 0
    print(f"Total a procesar: {len(pares)}")
    for idx, (id_cli, id_proy, id_medio) in enumerate(pares, 1):
        print(f"[{idx}/{len(pares)}] Cliente={id_cli} Proyecto={id_proy} Medio={id_medio}")
        if DRY_RUN:
            print("  DRY_RUN → no se envía.")
            continue
        try:
            seg_id = crear_seguimiento(
                id_cliente=id_cli,
                id_proyecto=id_proy,
                id_medio=id_medio,
                id_tipo_contacto=ID_TIPO_CONTACTO,
                id_expectativa=ID_EXPECTATIVA,
                comentario=COMENTARIO,
                fecha_recontacto_str=FECHA_RECONTACTO,
                mantener_ejecutivo=MANTENER_EJEC,
                rutvendedor=None  # déjalo en None a menos que quieras forzar
            )
            if seg_id:
                ok += 1
                print(f"  ✅ Seguimiento creado: ID={seg_id}")
            else:
                fail += 1
                print(f"  ❌ No se obtuvo ID de seguimiento (ver logs).")
        except Exception as e:
            fail += 1
            print(f"  ❌ Error: {e}")
        time.sleep(SLEEP_BETWEEN)
    print(f"\nResumen → OK: {ok} | Fails: {fail}")

if __name__ == "__main__":
    main()
