Skip to content

Manual de Flujos de Decisión

Introducción

Los flujos de decisión son una herramienta poderosa que te permite definir procesos automatizados para la gestión de créditos. A través de archivos YAML, puedes crear flujos personalizados que guían el proceso de evaluación y aprobación de créditos.

¿Qué son los flujos de decisión?

Un flujo de decisión es una secuencia de acciones que se ejecutan en orden para procesar un crédito. Cada acción puede:

  • Realizar verificaciones
  • Actualizar estados
  • Generar documentos
  • Realizar cobros
  • Gestionar garantías
  • Sincronizar con sistemas externos
  • Y más...

¿Por qué son útiles?

  • Automatización: Reduces la intervención manual
  • Consistencia: Aseguras que todos los créditos sigan el mismo proceso
  • Flexibilidad: Puedes crear flujos específicos para diferentes tipos de crédito
  • Mantenibilidad: Los flujos son fáciles de modificar y actualizar

Estructura de un Flujo

Componentes Básicos

Un flujo YAML tiene esta estructura básica:

yaml
name: "Nombre del Flujo"
description: "Descripción del flujo"
version: "1.0"
stages:
  - name: "Etapa 1"
    actions:
      - action: "tipo_de_accion"
        params:
          param1: "valor1"
          param2: "valor2"

Estados del Crédito

Los créditos pueden estar en estos estados:

  • processing: En proceso
  • pending: Pendiente de decisión
  • approved: Aprobado
  • rejected: Rechazado
  • forDisbursement: Listo para desembolso
  • disbursed: Desembolsado
  • delivered: Entregado
  • completed: Completado
  • desisted: Desistido
  • debt: En mora
  • undelivered: No entregado

Acciones Disponibles

Acciones de Cobro y Pagos

Cobro (charge)

Realiza cobros asociados al crédito.

yaml
- action: "charge"
  params:
    key: "cuota-inicial" # Identificador único del cobro
    description: "Cobro de cuota inicial" # Descripción del cobro
    type: "initial_fee" # Tipo de cobro (initial_fee, costs)
    costs: ["costo1", "costo2"] # Lista de costos (opcional)
    nextStatus: "pending" # Estado siguiente después del cobro

Acciones de Documentos

Crear Documentos (create-documents)

Genera y gestiona documentos necesarios.

yaml
- action: "create-documents"
  params:
    templates: # Lista de plantillas a generar
      - "pagare"
      - "contrato"
    notify: true # Notificar al usuario

Acciones de Análisis

Estudio (analysis)

Realiza estudios y validaciones del crédito.

yaml
- action: "analysis"
  params:
    key: "estudio-completo" # Identificador del estudio
    cached: true # Usar resultados en caché
    verification: # Configuración de verificación
      run: true # Ejecutar verificación
    scoring: # Configuración de scoring
      run: true # Ejecutar scoring
      reports: # Reportes a generar
        run: true # Ejecutar reportes
        datacreditoAcierta: true
        datacreditoConsultarHC: true
        datacreditoQualities: true
        datacreditoQuanto: true
        electrobelloNovaSoft: true
        impresistemCustomer: true
        impresistemCreditLimit: true
        impresistemBehavior: true
      models: # Modelos de scoring
        - "CreditScoreImpresistem"
        - "CreditScoreLegal"
    capacity: # Análisis de capacidad
      run: true # Ejecutar análisis de capacidad
    creditLimit: # Análisis de cupo
      run: true # Ejecutar análisis de cupo

Acciones de Aprobación

Reglas de Aprobación (approval-rules)

Evalúa reglas de decisión.

yaml
- action: "approval-rules"
  params:
    from: "group" # Grupo de reglas
    slug: "experian" # Identificador de reglas
    defaultAction: "continue" # Acción por defecto

Acciones de Validación

Validación de Identidad (check-id)

Realiza la validación de identidad.

yaml
- action: "check-id"
  params:
    flowID: "validacion-basica" # ID del flujo de validación
    flowName: "ADO" # Nombre del flujo
    useActive: true # Usar validación activa (default: true)

Acciones de Cupo

Uso de Cupo (use-credit-limit)

Gestiona el uso del cupo de crédito.

yaml
- action: "use-credit-limit"
  params:
    amount: 1000000 # Monto a usar
    description: "Uso de cupo inicial" # Descripción

Sincronización de Cupo (sync-credit-limit)

Sincroniza el cupo de crédito con sistemas externos.

yaml
- action: "sync-credit-limit"
  params:
    force: true # Forzar sincronización

Acciones de Garantías

Deceval

yaml
# Crear girador
- action: "deceval-create-girador"
  params:
    force: true # Forzar la operación

# Crear pagaré
- action: "deceval-create-pagare"
  params:
    force: true # Forzar la operación

# Firmar pagaré
- action: "deceval-sign-pagare"
  params:
    force: true # Forzar la operación

# Consultar pagaré
- action: "deceval-get-pagare"
  params:
    force: true # Forzar la operación

FNG

yaml
# Reserva de garantía
- action: "make-fng-reservation"
  params:
    force: true # Forzar la operación

# Registro de garantía
- action: "make-fng-registration"
  params:
    force: true # Forzar la operación

Acciones de Sincronización

Siesa

yaml
# Sincronización de crédito
- action: "siesa-credit-sync"
  params:
    force: true # Forzar la sincronización

# Sincronización de crédito con webhook
- action: "siesa-credit-sync-w"
  params:
    force: true # Forzar la sincronización

Acciones de Notificación

Webhooks (webhook)

Envía notificaciones a webhooks configurados.

yaml
- action: "webhook"
  params:
    event: "credit.approved" # Evento a notificar
    data: # Datos a enviar
      creditId: "{{credit.id}}"

Acciones de Gestión de Crédito

Actualización de Crédito (update-credit)

Actualiza el estado del crédito.

yaml
- action: "update-credit"
  params:
    status: "approved" # Nuevo estado
    description: "Crédito aprobado por reglas automáticas" # Descripción

Actualización de Línea de Crédito (update-creditline)

Cambia la línea de crédito asociada.

yaml
- action: "update-creditline"
  params:
    creditline: "uuid-de-linea" # UUID de la línea
    description: "Cambio de línea de crédito" # Descripción

Desembolso (disbursement)

Realiza el desembolso del crédito.

yaml
- action: "disbursement"
  params:
    provider: "payvalida" # Proveedor de desembolso
    type: "transfer" # Tipo de desembolso

Acciones de Perfil

Perfil Incompleto (profile-incomplete)

Verifica si el perfil está incompleto.

yaml
- action: "profile-incomplete"
  params:
    required: ["income", "address"] # Campos requeridos

Formulario (form)

Gestiona formularios del crédito.

yaml
- action: "form"
  params:
    template: "basic-info" # Plantilla del formulario
    fields: # Campos a mostrar
      - "income"
      - "address"
    alwaysAskRequired: true # Siempre preguntar campos requeridos

Acciones de Colateral

Colateral (colateral)

Gestiona información colateral del crédito.

yaml
- action: "colateral"
  params:
    type: "property" # Tipo de colateral
    value: 1000000 # Valor del colateral

Acciones Condicionales

Condicional (conditional)

Permite flujos condicionales.

yaml
- action: "conditional"
  params:
    when: "debtorHasEnoughCreditLimit()" # Condición
    then: # Acciones si se cumple
      - action: "update-credit"
        params:
          status: "approved"
    else: # Acciones si no se cumple
      - action: "update-credit"
        params:
          status: "rejected"

Funciones Disponibles en Condicionales

Verificación de Cliente

  • debtorIsImpresistemCustomer(): Verifica si es cliente Impresistem
  • debtorHasEnoughCreditLimit(): Verifica cupo suficiente
  • debtorHasCreditLimit(): Verifica existencia de cupo
  • hasCreditLimit(): Verifica cupo por modelo de scoring
  • hasDebtDays(): Verifica días de mora
  • hasOutstandingCredits(): Verifica créditos pendientes
  • financialStateIsOutdated(): Verifica estado financiero desactualizado

Verificación de Garantías

  • warrantyIsReserved(): Verifica reserva de garantía FNG
  • warrantyIsRegistered(): Verifica registro de garantía FNG
  • giradorWasCreated(): Verifica creación de girador en Deceval
  • pagareWasCreated(): Verifica creación de pagaré en Deceval
  • pagareWasSigned(): Verifica firma de pagaré en Deceval
  • pagareWasQueried(): Verifica consulta de pagaré en Deceval

Ejemplos Prácticos

Flujo Básico de Aprobación

yaml
name: "Flujo Básico"
description: "Flujo simple de aprobación"
version: "1.0"
stages:
  - name: "Validación Inicial"
    actions:
      - action: "check-id"
        params:
          flowID: "validacion-basica"
          flowName: "ADO"
      - action: "analysis"
        params:
          key: "estudio-basico"
          verification:
            run: true
  - name: "Decisión"
    actions:
      - action: "approval-rules"
        params:
          from: "group"
          slug: "experian"

Flujo con Garantías

yaml
name: "Flujo con Garantías"
description: "Flujo que incluye gestión de garantías"
version: "1.0"
stages:
  - name: "Garantías"
    actions:
      - action: "make-fng-reservation"
        params:
          force: true
      - action: "deceval-create-girador"
        params:
          force: true
      - action: "deceval-create-pagare"
        params:
          force: true

Ejemplos Prácticos de Uso de Funciones

Ejemplo 1: Validación de Perfil y Monto

yaml
# Este flujo demuestra cómo validar que un perfil esté completo y que el monto solicitado
# esté dentro de un rango aceptable antes de proceder con la aprobación.
# Si el perfil está completo y el monto está entre 1M y 5M, se procede con reglas de aprobación.
# Si no, se marca el perfil como incompleto y se solicitan los campos faltantes.

- action: "conditional"
  params:
    when: "isProfileComplete() && isAmountInRange(1000000, 5000000)"
    then:
      - action: "approval-rules"
        params:
          from: "group"
          slug: "experian"
    else:
      - action: "profile-incomplete"
        params:
          required: ["income", "address"]

Ejemplo 2: Validación de Garantías

yaml
# Este flujo maneja el proceso de garantías FNG, verificando si ya existe una reserva válida.
# Si existe una reserva válida, procede con el registro.
# Si no existe o no es válida, crea una nueva reserva.
# Este patrón es útil para evitar duplicación de garantías y manejar reintentos.

- action: "conditional"
  params:
    when: "hasWarranty('fng', 'reservation') && isWarrantyValid('fng', 'reservation')"
    then:
      - action: "make-fng-registration"
        params:
          force: true
    else:
      - action: "make-fng-reservation"
        params:
          force: true

Ejemplo 3: Validación de Línea de Crédito

yaml
# Este flujo verifica la elegibilidad de un cliente para usar su línea de crédito.
# Comprueba que:
# 1. La línea de crédito sea válida
# 2. Sea de tipo personal
# 3. Tenga un monto mínimo de 1M
# Si cumple todas las condiciones, procede a usar el cupo.
# Si no, rechaza el crédito con una explicación clara.

- action: "conditional"
  params:
    when: "hasValidCreditLine() && hasCreditLineType('personal') && hasCreditLineMinAmount(1000000)"
    then:
      - action: "use-credit-limit"
        params:
          amount: 1000000
          description: "Uso de cupo inicial"
    else:
      - action: "update-credit"
        params:
          status: "rejected"
          description: "Línea de crédito no válida"

Ejemplo 4: Validación de Fechas y Montos

yaml
# Este flujo implementa reglas de negocio específicas para fechas y montos.
# Verifica que:
# 1. La fecha de inicio del crédito esté dentro del año 2024
# 2. El monto solicitado sea múltiplo de 100,000
# Estas validaciones son útiles para implementar políticas de negocio específicas
# como períodos promocionales o montos predefinidos.

- action: "conditional"
  params:
    when: "isDateBetween(credit.startDate, '2024-01-01', '2024-12-31') && isAmountMultipleOf(100000)"
    then:
      - action: "approval-rules"
        params:
          from: "group"
          slug: "experian"
    else:
      - action: "update-credit"
        params:
          status: "rejected"
          description: "Fecha o monto no válido"

Ejemplo 5: Flujo Completo de Aprobación

yaml
# Este flujo demuestra un proceso completo de aprobación que combina múltiples validaciones:
# 1. Verifica el perfil del cliente
# 2. Valida el monto y plazo solicitados
# 3. Verifica la línea de crédito
# 4. Gestiona las garantías necesarias
# 5. Aplica reglas de aprobación específicas según el monto

name: "Flujo Completo de Aprobación"
description: "Proceso completo de validación y aprobación de crédito"
version: "1.0"
stages:
  - name: "Validación Inicial"
    actions:
      - action: "conditional"
        params:
          when: "isProfileComplete() && hasRequiredProfileFields(['income', 'address', 'employment'])"
          then:
            - action: "analysis"
              params:
                key: "estudio-basico"
                verification:
                  run: true
          else:
            - action: "profile-incomplete"
              params:
                required: ["income", "address", "employment"]

  - name: "Validación de Monto y Plazo"
    actions:
      - action: "conditional"
        params:
          when: "isAmountInRange(1000000, 5000000) && isTermInRange(12, 36)"
          then:
            - action: "conditional"
              params:
                when: "hasValidCreditLine() && hasCreditLineType('personal')"
                then:
                  - action: "use-credit-limit"
                    params:
                      amount: 1000000
                      description: "Uso de cupo inicial"
                else:
                  - action: "update-credit"
                    params:
                      status: "rejected"
                      description: "Línea de crédito no válida"
          else:
            - action: "update-credit"
              params:
                status: "rejected"
                description: "Monto o plazo fuera de rango"

  - name: "Gestión de Garantías"
    actions:
      - action: "conditional"
        params:
          when: "isAmountInRange(3000000, 5000000)"
          then:
            - action: "make-fng-reservation"
              params:
                force: true
            - action: "deceval-create-girador"
              params:
                force: true
            - action: "deceval-create-pagare"
              params:
                force: true

  - name: "Aprobación Final"
    actions:
      - action: "conditional"
        params:
          when: "isAmountInRange(1000000, 3000000)"
          then:
            - action: "approval-rules"
              params:
                from: "group"
                slug: "basico"
          else:
            - action: "approval-rules"
              params:
                from: "group"
                slug: "experian"

Ejemplo 6: Flujo de Renovación de Crédito

yaml
# Este flujo maneja el proceso de renovación de un crédito existente:
# 1. Verifica que el crédito actual esté en buen estado
# 2. Valida que no haya días de mora
# 3. Comprueba que el cliente tenga cupo disponible
# 4. Aplica reglas de aprobación específicas para renovaciones

name: "Flujo de Renovación"
description: "Proceso de renovación de crédito existente"
version: "1.0"
stages:
  - name: "Validación de Estado Actual"
    actions:
      - action: "conditional"
        params:
          when: "hasCreditStatus('completed') && !hasDebtDays()"
          then:
            - action: "conditional"
              params:
                when: "hasCreditLimit() && debtorHasEnoughCreditLimit()"
                then:
                  - action: "approval-rules"
                    params:
                      from: "group"
                      slug: "renovacion"
                else:
                  - action: "update-credit"
                    params:
                      status: "rejected"
                      description: "Sin cupo disponible para renovación"
          else:
            - action: "update-credit"
              params:
                status: "rejected"
                description: "Crédito actual no elegible para renovación"

Mejores Prácticas

Estructuración de Flujos

  1. Divide en etapas lógicas

    • Agrupa acciones relacionadas
    • Usa nombres descriptivos
    • Mantén las etapas enfocadas
  2. Manejo de errores

    • Incluye validaciones
    • Define acciones de fallback
    • Registra errores claramente
  3. Reutilización

    • Crea flujos base
    • Extiende flujos existentes
    • Usa parámetros configurables

Consejos Generales

  1. Documentación

    • Documenta cada etapa
    • Explica parámetros importantes
    • Incluye ejemplos de uso
  2. Pruebas

    • Prueba cada flujo
    • Verifica transiciones
    • Valida resultados
  3. Mantenimiento

    • Versiona los flujos
    • Mantén un historial de cambios
    • Actualiza documentación

Referencia

Lista Completa de Acciones

AcciónDescripciónParámetros Comunes
chargeRealiza cobroskey, type, description
create-documentsGenera documentostemplates, notify
analysisRealiza estudioskey, verification, scoring
approval-rulesEvalúa reglasfrom, slug, defaultAction
check-idValidación de identidadflowID, flowName
conditionalFlujos condicionaleswhen, then, else
use-credit-limitGestiona cupoamount, description
sync-credit-limitSincroniza cupoforce
deceval-create-giradorCrea giradorforce
deceval-create-pagareCrea pagaréforce
deceval-sign-pagareFirma pagaréforce
deceval-get-pagareConsulta pagaréforce
make-fng-reservationReserva FNGforce
make-fng-registrationRegistra FNGforce
siesa-credit-syncSincroniza Siesaforce
siesa-credit-sync-wSincroniza Siesa con webhookforce
webhookEnvía notificacionesevent, data
colateralGestiona colateraltype, value
update-creditActualiza créditostatus, description
update-creditlineActualiza líneacreditline, description
disbursementRealiza desembolsoprovider, type
profile-incompleteVerifica perfilrequired
formGestiona formulariostemplate, fields

Soporte y Ayuda

Si necesitas ayuda con los flujos de decisión:

  1. Consulta la documentación técnica
  2. Contacta al equipo de soporte
  3. Revisa los logs del sistema
  4. Utiliza las herramientas de monitoreo

Acciones Adicionales

Acciones de Garantía

Deceval

yaml
# Crear girador
- action: "deceval-create-girador"
  params:
    force: boolean

# Crear pagaré
- action: "deceval-create-pagare"
  params:
    force: boolean

# Firmar pagaré
- action: "deceval-sign-pagare"
  params:
    force: boolean

# Consultar pagaré
- action: "deceval-get-pagare"
  params:
    force: boolean

FNG

yaml
# Reserva de garantía
- action: "make-fng-reservation"
  params:
    force: boolean

# Registro de garantía
- action: "make-fng-registration"
  params:
    force: boolean

Acciones de Cupo de Crédito

yaml
# Usar cupo
- action: "use-credit-limit"
  params:
    amount: number
    description: string

# Sincronizar cupo
- action: "sync-credit-limit"
  params:
    force: boolean

Acciones de Formulario

yaml
# Gestionar formulario
- action: "form"
  params:
    template: string
    fields: string[]
    alwaysAskRequired: boolean

Acciones de Perfil

yaml
# Verificar perfil incompleto
- action: "profile-incomplete"
  params:
    required: string[]

Funciones Adicionales

Funciones de Estado de Crédito

yaml
# Verifica si el crédito tiene un estado específico
hasCreditStatus(status: string): boolean
# Ejemplo:
when: "hasCreditStatus('approved')"

# Verifica si el crédito está en un estado específico
isCreditInStatus(status: string): boolean
# Ejemplo:
when: "isCreditInStatus('pending')"

# Verifica si el crédito tiene fecha de inicio
hasCreditStartedAt(): boolean
# Ejemplo:
when: "hasCreditStartedAt()"

# Verifica si el crédito tiene fecha de finalización
hasCreditCompletedAt(): boolean
# Ejemplo:
when: "hasCreditCompletedAt()"

Funciones de Perfil

yaml
# Verifica si el perfil tiene un campo específico
hasProfileField(field: string): boolean
# Ejemplo:
when: "hasProfileField('income')"

# Verifica si el perfil está completo
isProfileComplete(): boolean
# Ejemplo:
when: "isProfileComplete()"

# Verifica si el perfil tiene validaciones
hasProfileValidation(): boolean
# Ejemplo:
when: "hasProfileValidation()"

# Verifica si el perfil tiene un campo con un valor específico
hasProfileFieldValue(field: string, value: any): boolean
# Ejemplo:
when: "hasProfileFieldValue('income', 5000000)"

# Verifica si el perfil tiene campos requeridos
hasRequiredProfileFields(fields: string[]): boolean
# Ejemplo:
when: "hasRequiredProfileFields(['income', 'address', 'employment'])"

Funciones de Garantía

yaml
# Verifica si existe una garantía de un tipo y etapa específicos
hasWarranty(type: string, stage: string): boolean
# Ejemplo:
when: "hasWarranty('fng', 'reservation')"

# Verifica si una garantía es válida
isWarrantyValid(type: string, stage: string): boolean
# Ejemplo:
when: "isWarrantyValid('deceval', 'signature')"

# Verifica si una garantía tiene error
hasWarrantyError(type: string, stage: string): boolean
# Ejemplo:
when: "hasWarrantyError('fng', 'registration')"

# Verifica si una garantía tiene un estado específico
hasWarrantyStatus(type: string, stage: string, status: string): boolean
# Ejemplo:
when: "hasWarrantyStatus('deceval', 'pagare', 'signed')"

# Verifica si una garantía tiene contenido
hasWarrantyContent(type: string, stage: string): boolean
# Ejemplo:
when: "hasWarrantyContent('fng', 'reservation')"

Funciones de Línea de Crédito

yaml
# Verifica si existe una línea de crédito
hasCreditLine(): boolean
# Ejemplo:
when: "hasCreditLine()"

# Verifica si la línea de crédito es válida
hasValidCreditLine(): boolean
# Ejemplo:
when: "hasValidCreditLine()"

# Verifica si la línea de crédito tiene reglas
hasCreditLineRules(): boolean
# Ejemplo:
when: "hasCreditLineRules()"

# Verifica si la línea de crédito tiene reglas de aprobación
hasCreditLineApprovalRules(): boolean
# Ejemplo:
when: "hasCreditLineApprovalRules()"

# Verifica si la línea de crédito tiene un tipo específico
hasCreditLineType(type: string): boolean
# Ejemplo:
when: "hasCreditLineType('personal')"

# Verifica si la línea de crédito tiene un monto mínimo
hasCreditLineMinAmount(amount: number): boolean
# Ejemplo:
when: "hasCreditLineMinAmount(1000000)"

Funciones de Monto y Términos

yaml
# Verifica si el monto está dentro de un rango
isAmountInRange(min: number, max: number): boolean
# Ejemplo:
when: "isAmountInRange(1000000, 5000000)"

# Verifica si el plazo está dentro de un rango
isTermInRange(min: number, max: number): boolean
# Ejemplo:
when: "isTermInRange(12, 36)"

# Verifica si la tasa está dentro de un rango
isRateInRange(min: number, max: number): boolean
# Ejemplo:
when: "isRateInRange(0.01, 0.05)"

# Verifica si el monto es múltiplo de un valor
isAmountMultipleOf(value: number): boolean
# Ejemplo:
when: "isAmountMultipleOf(100000)"

Funciones de Validación

yaml
# Verifica si un valor está en una lista
isInList(value: any, list: any[]): boolean
# Ejemplo:
when: "isInList(credit.type, ['personal', 'business'])"

# Verifica si un valor coincide con un patrón
matchesPattern(value: string, pattern: string): boolean
# Ejemplo:
when: "matchesPattern(profile.email, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$')"

# Verifica si un valor está entre dos fechas
isDateBetween(date: string, start: string, end: string): boolean
# Ejemplo:
when: "isDateBetween(credit.startDate, '2024-01-01', '2024-12-31')"

Variables Disponibles

Variables de Crédito

yaml
variables:
  credit.id: uuid
  credit.status: string
  credit.type: string
  credit.amount: number
  credit.rate: number
  credit.term: number
  credit.startDate: date
  credit.endDate: date

Variables de Perfil

yaml
variables:
  profile.id: uuid
  profile.type: string
  profile.fields: object
  profile.validation: object

Variables de Garantía

yaml
variables:
  warranty.type: string
  warranty.stage: string
  warranty.status: string
  warranty.error: string
  warranty.content: object

Variables de Línea de Crédito

yaml
variables:
  creditLine.id: uuid
  creditLine.type: string
  creditLine.name: string
  creditLine.rules: array
  creditLine.approvalRules: array

Condiciones Adicionales

Condiciones de Crédito

yaml
conditions:
  creditAmount:
    min: number
    max: number
  creditTerm:
    min: number
    max: number
  creditRate:
    min: number
    max: number

Condiciones de Perfil

yaml
conditions:
  requiredFields: string[]
  validationRules: object
  fieldTypes: object

Condiciones de Garantía

yaml
conditions:
  requiredTypes: string[]
  requiredStages: string[]
  validationRules: object

Condiciones de Línea de Crédito

yaml
conditions:
  requiredRules: string[]
  requiredApprovalRules: string[]
  validationRules: object

Ejemplos de Uso

Ejemplo de Flujo con Garantías y Cupo

yaml
name: "Flujo Completo con Garantías"
description: "Flujo que incluye gestión de garantías y cupo"
version: "1.0"
stages:
  - name: "Validación Inicial"
    actions:
      - action: "check-id"
        params:
          flowID: "validacion-basica"
          flowName: "ADO"
      - action: "analysis"
        params:
          key: "estudio-basico"
          verification:
            run: true
  - name: "Gestión de Cupo"
    actions:
      - action: "use-credit-limit"
        params:
          amount: 1000000
          description: "Uso de cupo inicial"
      - action: "sync-credit-limit"
        params:
          force: true
  - name: "Garantías"
    actions:
      - action: "make-fng-reservation"
        params:
          force: true
      - action: "deceval-create-girador"
        params:
          force: true
      - action: "deceval-create-pagare"
        params:
          force: true
  - name: "Documentos"
    actions:
      - action: "create-documents"
        params:
          templates:
            - "pagare"
            - "contrato"
          notify: true

Ejemplo de Flujo con Validaciones de Perfil

yaml
name: "Flujo con Validación de Perfil"
description: "Flujo que incluye validaciones de perfil"
version: "1.0"
stages:
  - name: "Validación de Perfil"
    actions:
      - action: "profile-incomplete"
        params:
          required: ["income", "address", "employment"]
      - action: "form"
        params:
          template: "basic-info"
          fields:
            - "income"
            - "address"
            - "employment"
          alwaysAskRequired: true
  - name: "Análisis"
    actions:
      - action: "analysis"
        params:
          key: "estudio-completo"
          verification:
            run: true
          scoring:
            run: true
            reports:
              run: true
              datacreditoAcierta: true
              datacreditoConsultarHC: true

Ejemplo de Flujo con Condiciones

yaml
name: "Flujo con Condiciones"
description: "Flujo que utiliza condiciones para el flujo"
version: "1.0"
stages:
  - name: "Validación de Monto"
    actions:
      - action: "conditional"
        params:
          when: "credit.amount >= 1000000"
          then:
            - action: "approval-rules"
              params:
                from: "group"
                slug: "experian"
          else:
            - action: "approval-rules"
              params:
                from: "group"
                slug: "basico"
  - name: "Validación de Garantía"
    actions:
      - action: "conditional"
        params:
          when: "hasWarranty('fng', 'reservation')"
          then:
            - action: "make-fng-registration"
              params:
                force: true
          else:
            - action: "make-fng-reservation"
              params:
                force: true

Referencia Completa

Lista Actualizada de Acciones

AcciónDescripciónParámetros Comunes
chargeRealiza cobroskey, type, description
create-documentsGenera documentostemplates, notify
analysisRealiza estudioskey, verification, scoring
approval-rulesEvalúa reglasfrom, slug, defaultAction
check-idValidación de identidadflowID, flowName
conditionalFlujos condicionaleswhen, then, else
use-credit-limitGestiona cupoamount, description
sync-credit-limitSincroniza cupoforce
deceval-create-giradorCrea giradorforce
deceval-create-pagareCrea pagaréforce
deceval-sign-pagareFirma pagaréforce
deceval-get-pagareConsulta pagaréforce
make-fng-reservationReserva FNGforce
make-fng-registrationRegistra FNGforce
siesa-credit-syncSincroniza Siesaforce
siesa-credit-sync-wSincroniza Siesa con webhookforce
webhookEnvía notificacionesevent, data
colateralGestiona colateraltype, value
update-creditActualiza créditostatus, description
update-creditlineActualiza líneacreditline, description
disbursementRealiza desembolsoprovider, type
profile-incompleteVerifica perfilrequired
formGestiona formulariostemplate, fields