ALEPH CRM — Decision Log¶
Propósito¶
Documentar las decisiones de diseño del flujo Gemelo → ALEPH → CRM.
D-001 — Orden jerárquico¶
El flujo sigue:
EMPRESA → PERSONA → PERSONA_PROYECTO
Razón: evitar registros huérfanos y mantener integridad en ALEPH.
D-002 — Dry-run obligatorio¶
Toda escritura pasa por:
preview → dry-run → ejecución
Razón: minimizar errores en base productiva y permitir auditoría.
D-003 — Resolución de empresa¶
Se resuelve por:
NIT
nombre normalizado
Estados:
MATCHED
AMBIGUOUS
NOT_FOUND
D-004 — Creación de empresa condicionada¶
Solo se permite crear empresa si existe NIT.
Razón: evitar contaminar maestros con datos incompletos.
D-005 — Contacto mínimo¶
Para CRM operativo se requiere:
full_name
email o phone
D-006 — Regla de nombres¶
1 palabra → nombre
2 palabras → nombre + apellido
3+ palabras → nombre = todas menos última
Siempre:
nombreC = full_name
D-007 — Defaults de EMPRESAS¶
id_tipo = “NA”
id_estado = “OK”
persona_natural = 0
Razón: usar valores válidos mínimos mientras no se modele completamente.
D-008 — Idempotencia CRM¶
Antes de escribir:
PERSONAS:
buscar por email
o por (nombre + NIT)
PERSONA_PROYECTO:
buscar por (id_persona + id_proyecto)
Si ambos existen:
→ CRM_ALREADY_SYNCED
D-009 — Separación lectura/escritura DB¶
run_query → SELECT
run_execute → INSERT/UPDATE
Razón: evitar errores por uso incorrecto de funciones.
D-010 — Proyecto interno obligatorio¶
Para CRM operativo se requiere:
internal_commercial_project_id
Razón: PERSONA_PROYECTO depende de ese identificador.
D-011 — Vendor registration no bloqueante¶
Inicialmente se consideró como prerequisito.
Se corrigió a:
NO bloquea contacto ni actividad inicial
SÍ afecta madurez comercial
Razón: en la práctica comercial se puede iniciar contacto antes del registro.