# Modulo 5 Operacion (Empresas/Cuentas y Contactos 360)

## Alcance
- CRUD de cuentas (`accounts`) y contactos (`contacts`).
- Etiquetas (`tags`) para cuentas/contactos.
- Campos personalizados (`custom_field_definitions` + `custom_field_values`).
- Adjuntos por contacto.
- Historial 360 por contacto (interacciones, eventos, adjuntos, oportunidades).
- Extensiones enterprise (migracion `013_module5_enterprise_extensions.sql`).

## 15 mejoras implementadas
1. Jerarquia de cuentas (`parent_account_id`).
2. Soft delete y restore para cuentas/contactos.
3. Lead scoring automatico (`lead_score`).
4. Timestamp de ultima interaccion (`last_interaction_at`).
5. Relacion multi-cuenta por contacto (`account_contact_links`).
6. Notas con @menciones y pin (`contact_notes`).
7. Tareas por contacto (`contact_tasks`).
8. Segmentos dinamicos (`contact_segments` + `contact_segment_members`).
9. Escaneo de duplicados (`contact_dedupe_candidates`).
10. Merge de duplicados (`contact_merge_log`).
11. Importacion masiva mock con tracking (`contact_import_jobs`, `contact_import_rows`).
12. Logs de sincronizacion externa (`contact_sync_logs`).
13. Timeline 360 unificado (`contactTimeline`).
14. KPIs de contactos (totales, score promedio, tareas vencidas).
15. Endpoints API v1 para KPIs, segmentos, dedupe y tareas.

## Preparacion
- Ejecutar migracion `012_accounts_contacts_360.sql`.
- Ejecutar migracion `013_module5_enterprise_extensions.sql`.
- Verificar modulo `contacts` en dashboard.

## Flujo recomendado
1. Crear cuenta (empresa).
2. Crear contacto asociado a cuenta.
3. Crear tag y asignar a contacto/cuenta.
4. Definir custom field y guardar valor.
5. Registrar interaccion.
6. Subir adjunto.
7. Abrir vista 360 del contacto desde tabla.
8. Crear nota/tarea y validar que aparece en 360.
9. Crear segmento y reconstruir miembros.
10. Escanear duplicados y ejecutar merge.
11. Ejecutar import mock y revisar jobs.
12. Registrar sync log y validar listado.

## Endpoints clave
- `POST /accounts/create?tenant={slug}`
- `POST /accounts/update?tenant={slug}`
- `POST /accounts/delete?tenant={slug}`
- `POST /contacts/create?tenant={slug}`
- `POST /contacts/update?tenant={slug}`
- `POST /contacts/delete?tenant={slug}`
- `POST /tags/create?tenant={slug}`
- `POST /tags/assign-contact?tenant={slug}`
- `POST /contacts/custom-field/define?tenant={slug}`
- `POST /contacts/custom-field/value?tenant={slug}`
- `POST /contacts/interaction/add?tenant={slug}`
- `POST /contacts/attachment/upload?tenant={slug}`
- `GET /api/v1/accounts?tenant={slug}`
- `GET /api/v1/contacts/360?tenant={slug}&contact_id={id}`
- `GET /api/v1/contacts/kpis?tenant={slug}`
- `GET /api/v1/contacts/segments?tenant={slug}`
- `GET /api/v1/contacts/dedupe?tenant={slug}`
- `GET /api/v1/contacts/tasks?tenant={slug}&contact_id={id}`
- `POST /api/v1/contacts/dedupe/scan?tenant={slug}`
- `POST /api/v1/contacts/dedupe/merge?tenant={slug}`
