# ALEPH CRM — State Machine ## Propósito Definir de forma explícita los estados posibles de un prospecto y sus transiciones dentro del flujo: Gemelo → ALEPH → CRM → ALEPH → Gemelo --- ## Estados principales ### 1. PENDING_COMPANY_DATA Falta información para crear empresa. **Condición:** - `company_nit` es null o inválido **Salida:** - Asignar NIT --- ### 2. CREATE_COMPANY Empresa lista para ser creada en ALEPH. **Condición:** - NIT válido - Empresa no existe en ALEPH **Salida:** - ejecutar `company_writer` --- ### 3. COMPANY_CREATED Empresa ya existe en ALEPH. **Condición:** - `fetch_empresa_by_nit` devuelve resultado --- ### 4. ENRICH_CONTACTS Falta contacto para gestión CRM. **Condición:** - `contacts = 0` **Salida:** - agregar contacto --- ### 5. CREATE_CONTACT_AND_ACTIVITY Listo para CRM operativo. **Condición:** - empresa existe - contacto existe - next_action existe --- ### 6. PENDING_PROJECT Falta proyecto interno. **Condición:** - `internal_commercial_project_id = None` **Salida:** - asignar proyecto interno --- ### 7. CRM_READY Listo para escritura en ALEPH. **Condición:** - empresa existe - contacto válido - proyecto interno existe --- ### 8. CRM_ALREADY_SYNCED Ya existe en ALEPH. **Condición:** - PERSONA existe - PERSONA_PROYECTO existe --- ## Estados auxiliares ### Vendor Registration No es un estado principal, sino un atributo: - `vendor_registration_required` - `vendor_registration_status` Estados posibles: - NOT_STARTED - IN_PROGRESS - SUBMITTED - APPROVED - REJECTED **Regla:** - no bloquea CRM inicial - sí afecta madurez comercial --- ## Transiciones ### Flujo de empresa ```text PENDING_COMPANY_DATA ↓ (asignar NIT) CREATE_COMPANY ↓ (company_writer) COMPANY_CREATED