# Modulo 10 Operacion (Automatizaciones y Workflows)

## Alcance
- Reglas `si X entonces Y` por tenant (`automation_rules`).
- Trigger por eventos de negocio (`automation_event_log`).
- Ejecuciones auditables por regla (`automation_rule_runs`).
- Alertas operativas por fallos (`automation_alerts`).
- Webhooks de salida (`automation_webhook_endpoints`, `automation_webhook_deliveries`).
- Programacion de eventos por cron (`automation_schedules`).

## Preparacion
- Ejecutar migraciones:
- `003_crm_modules.sql`
- `023_automations_workflows.sql`
- `024_automations_enterprise_hardening.sql`

## Flujo recomendado
1. Crear regla con `trigger_event`, condicion y accion.
2. Registrar evento (API o proceso interno).
3. Ejecutar motor de reglas para ese evento.
4. Revisar `runs` y `alerts`.
5. Ajustar prioridad, retries y politica de fallo.

## Endpoints API v1
- `GET /api/v1/automations/rules?tenant={slug}`
- `POST /api/v1/automations/rules?tenant={slug}`
- `GET /api/v1/automations/events?tenant={slug}&limit=50`
- `POST /api/v1/automations/events?tenant={slug}`
- `POST /api/v1/automations/simulate?tenant={slug}`
- `GET|POST /api/v1/automations/condition-schemas?tenant={slug}`
- `GET|POST /api/v1/automations/retry-policies?tenant={slug}`
- `GET /api/v1/automations/dead-letters?tenant={slug}&limit=80`
- `GET /api/v1/automations/runs?tenant={slug}&limit=80`
- `GET /api/v1/automations/alerts?tenant={slug}&limit=80`
- `POST /api/v1/automations/alerts/ack?tenant={slug}`
- `POST /api/v1/automations/run?tenant={slug}`
- `POST /api/v1/automations/webhooks/process?tenant={slug}`

## Cron
- `POST /cron/automations?tenant={slug}`
- `POST /cron/automations-webhooks?tenant={slug}`
- Opcional por trigger: `POST /cron/automations?tenant={slug}&event_name=lead.qualified`

## Acciones soportadas (motor actual)
- `create_notification` / `notify_owner`: crea registro en `notifications`.
- `webhook_enqueue`: encola entregas en `automation_webhook_deliveries`.
- `create_activity`: genera actividad automatica en `sales_activities`.

## Seed demo
- Regla: `Lead alto valor -> notificar equipo` (`lead.qualified`).
- Schedule: `Heartbeat workflow` (cada 30 minutos).
- Webhook endpoint demo desactivado para `lead.qualified`.

## Cierre enterprise (15 mejoras en 024)
1. Versionado de reglas (`automation_rule_versions` + `automation_rules.version`).
2. Simulacion/dry-run (`automation_simulations`).
3. Registro de esquemas de condicion (`automation_condition_schemas`).
4. Politicas de retry/backoff (`automation_retry_policies` + columnas en deliveries).
5. Dead-letter queue (`automation_dead_letters`).
6. Idempotencia de eventos (`idempotency_key`, `event_hash` en `automation_event_log`).
7. Rate limits por regla/evento (`automation_rate_limits`).
8. Deteccion de loops y trazas (`trace_id`, `chain_depth`, `automation_execution_traces`).
9. Permisos granulares (`automation_permissions`).
10. Catalogo de acciones (`automation_action_templates`).
11. Snapshots de metricas (`automation_daily_snapshots`).
12. Politicas de escalamiento (`automation_alert_policies`).
13. Historial de escalaciones (`automation_alert_escalations`).
14. Seguridad webhook (firma/antireplay con `automation_webhook_replay_guards`).
15. Marco de testing automatizado (`automation_test_cases`, `automation_test_runs`).
