# Live Workflow Sync Notes

Este proyecto tiene scripts viejos de creacion de workflows, pero el workflow productivo actual de Chatwoot no esta representado completo por `create_production.py`.

Fuente viva principal:

- Workflow Richard Chatwoot Fibromuebles: `XoRXrhG7xb5jfHEl`
- Node `Preparar contexto`: versionar/sincronizar desde `workflows/code-nodes/main-prepare-context.js`.
- Prompt del agente: versionar/sincronizar desde `workflows/system-prompt-richard.md`.

Subworkflows relevantes:

- `richard-seguimiento-fibromuebles`: `WT6Wf8HnKm0VFPT7`
- `fibro-tool-calculate-budget`: `2n5LqLQaCEeh9hHw`
- `fibro-tool-prepare-budget`: `v4L6jrljF9vRQ3II`
- `fibro-get-logica-tool`: `1Vr2GvelcY1f9py2`
- `fibro-tool-escalate-to-edd`: `B95tk4wTSn3aoP5c`
- `fibro-sync-odoo-crm`: `fibroSyncOdooCRM`

Reglas operativas a preservar:

- Richard atiende por ahora solo `WA 2439` / inbox 3. `WA 6690` / inbox 4 queda manual hasta habilitacion explicita.
- No usar `aprendizaje-total`: la automation y el label fueron eliminados de Chatwoot.
- `calculate_budget` debe aceptar bloque importable multi-linea en texto plano y devolver `bloque_importable` original.
- `prepare_budget_for_edelmar` debe crear nota privada y nunca mensaje publico con precio.
- `escalate_to_edd` debe recibir `conversation_id`; los guards de `main-prepare-context.js` lo inyectan explicitamente para casos no habituales y comedor con vidrio/detalles.
- En `fibro-tool-escalate-to-edd`, el node `Asignar a Edelmar` debe continuar ante fallo para que una asignacion rota no bloquee la nota privada.
- El prompt principal debe vender de forma consultiva: no pedir "ancho, alto, profundidad y material" como primera respuesta a consultas vagas; pedir foto, referencia o una medida aproximada.
- El workflow principal auto-resuelve casos simples ya contestados, como horario/ubicacion y agradecimientos claros, desde `workflows/code-nodes/main-auto-resolve-simple.js`.
- Odoo no es canal de WhatsApp en v1. Chatwoot manda la conversacion; `fibro-sync-odoo-crm` solo espeja contacto, oportunidad e historial al chatter de Odoo.
- El sync Odoo debe quedar como rama lateral `continueOnFail` / sin esperar subworkflow, para que una caida de Odoo nunca bloquee a Richard ni la respuesta por Chatwoot.
- El seguimiento automatico no debe tocar conversaciones asignadas a una persona ni conversaciones con labels `bot-pausa` o `no-followup`.
- El seguimiento automatico debe procesar todos los items, no solo `$input.first()`, y debe filtrar `inbox_id=3` para no tocar `WA 6690`.
- El seguimiento automatico puede mandar un reenganche util pidiendo foto/referencia/medida aproximada, pero el cierre posterior debe ser privado y resolver sin mensaje publico de despedida.
- Code nodes del seguimiento automatico: `workflows/code-nodes/followup-extract-conversation-ids.js`, `workflows/code-nodes/followup-merge-conversation-id.js`, `workflows/code-nodes/followup-determine-action.js`.
- No guardar tokens reales en este documento ni en exports versionados.

Deploy del sync Odoo:

```bash
cd /home/edd/Proyectos/Edd-OS/projects/fibromuebles-whatsapp-agent/workflows
python3 deploy_odoo_sync.py
```

Variables requeridas en n8n Settings -> Variables o entorno del contenedor:

- `ODOO_BASE_URL`
- `ODOO_DB`
- `ODOO_LOGIN`
- `ODOO_API_KEY`
