# Agente de Seguimiento Comercial — Track Mar (División Repuestos)

Automatiza la detección y el seguimiento de cotizaciones sin actividad,
contactos en frío sin cerrar y visitas sin resultado cargado, para no
depender de que una persona se acuerde de revisarlo. Diseño completo y
justificación de cada decisión en `Agente_Seguimiento_Comercial_TrackMar.docx`
(entregado junto con este código).

## Antes de correrlo con datos reales

Esto es un esqueleto funcional, no un producto terminado: falta conectarlo al
sistema real de Track Mar. Ver la sección 9 del documento (checklist de
prerrequisitos). En resumen:

1. Completar `.env` (copiar de `.env.example`) con los datos reales de la base
   de datos, de WhatsApp Business API y de SMTP.
2. Ajustar `config.py` → `TABLAS`, con los nombres reales de tablas y columnas
   del sistema propio (los que están puestos son de ejemplo).
3. Revisar las consultas SQL en `db.py` si el esquema real no calza con el
   diccionario de `TABLAS` (por ejemplo, si el estado de una cotización vive
   en otra tabla).
4. Crear en Meta Business Manager las plantillas de WhatsApp de la sección 6
   del documento, esperar su aprobación, y poner sus nombres reales en `.env`.
5. Completar `DESTINATARIOS_GERENCIALES` y la resolución del encargado de
   cada sucursal (hoy es un TODO en `main.py`).

## Instalación

```bash
pip install -r requirements.txt
# más el driver de tu motor de base de datos, ver requirements.txt
cp .env.example .env   # y completar
```

## Uso

```bash
# Modo de prueba (no manda nada real, solo registra en registro_acciones.csv)
python main.py --modo diario --dry-run

# Producción, una vez validado el modo de prueba y completado el checklist
python main.py --modo diario
python main.py --modo semanal
```

Programar `--modo diario` para correr todos los días hábiles, y
`--modo semanal` una vez por semana (cron, Task Scheduler, o el programador de
tareas que use Track Mar).

## Piloto de contacto directo a clientes

Por diseño (sección 10 del documento), el agente **no** le manda mensajes de
WhatsApp a clientes reales hasta que su sucursal esté en
`SUCURSALES_PILOTO_CONTACTO_CLIENTE` en `config.py`. La detección y los
avisos internos sí funcionan para todas las sucursales desde el primer día.
Cuando el piloto esté validado, pasar `CONTACTO_CLIENTE_HABILITADO_PARA_TODAS`
a `True` en `config.py`.

## Archivos

| Archivo | Qué hace |
|---|---|
| `config.py` | Todo lo configurable: conexión a la base, diccionario de tablas/columnas, umbrales, WhatsApp, piloto, destinatarios |
| `db.py` | Consultas de solo lectura a la base de datos |
| `reglas.py` | Reglas de negocio puras (proyección de contactos, validación de teléfono, piloto) |
| `whatsapp.py` | Envío de plantillas por WhatsApp Business API (Meta Cloud API), con modo dry-run |
| `reportes.py` | Arma y manda la alerta diaria y el resumen semanal por email |
| `registro.py` | Trazabilidad de cada acción (CSV) y control anti-duplicados |
| `main.py` | Orquestador: `--modo diario` / `--modo semanal` |
