Diagramas de flujo app - martin-hendricks/MISO-PROYECTO-FINAL-SOLVENTA GitHub Wiki

🔀 Diagramas de flujo — Solventa

Basado en el problema de negocio (§ Visión de arquitectura) y en los 6 recorridos de extremo a extremo del PDF §5.1, detallados con las historias de usuario del Backlog refinado — Semana 3. Cada flujo va del nombre del recorrido principal hasta el detalle de pasos e HU asociadas.

Índice

  1. Flujo maestro (los 6 recorridos)
  2. Recorrido #1 — Cotización embebida
  3. Recorrido #2 — Suscripción y emisión
  4. Recorrido #3 — Siniestro asistido
  5. Recorrido #4 — Siniestro paramétrico (evento → pago)
  6. Recorrido #5 — Perfilamiento vida hipotecario
  7. Recorrido #6 — Ciclo de vida de la póliza
  8. Flujo transversal — Identidad y onboarding móvil

1. Flujo maestro (los 6 recorridos)

Vista de alto nivel: qué recorridos existen, quién los dispara y cómo se encadenan entre sí (una oferta se convierte en póliza, una póliza puede reclamar un siniestro o cambiar de estado en su ciclo de vida).

flowchart TD
    Start([Cliente / Socio / Asesor]) --> R1

    subgraph R1["Recorrido #1 · Cotización embebida"]
        direction TB
        R1a[Consultar catálogo] --> R1b[Solicitar cotización] --> R1c[Calcular prima + riesgo] --> R1d[Oferta en firme]
    end

    R1 -->|Cliente acepta oferta| R2

    subgraph R2["Recorrido #2 · Suscripción y emisión"]
        direction TB
        R2a[Aceptar oferta] --> R2b[Decisión automática] --> R2c[Cobro de prima] --> R2d[Firma electrónica] --> R2e[Emitir póliza]
    end

    R2 --> Poliza[(Póliza vigente)]

    Poliza -->|Ocurre un siniestro| R3

    subgraph R3["Recorrido #3 · Siniestro asistido"]
        direction TB
        R3a[Reportar con evidencia] --> R3b[Evaluar en back-office] --> R3c[Aprobar / rechazar / enrutar] --> R3d[Pagar indemnización]
    end

    Poliza -->|Evento paramétrico externo| R4

    subgraph R4["Recorrido #4 · Siniestro paramétrico"]
        direction TB
        R4a[Recibir evento] --> R4b[Evaluar umbral] --> R4c[Pago automático] --> R4d[Notificar cliente]
    end

    Start -->|Originación de crédito| R5

    subgraph R5["Recorrido #5 · Perfilamiento vida hipotecario"]
        direction TB
        R5a[Consentimiento] --> R5b[Perfilar con adaptadores] --> R5c[Oferta explicable]
    end

    R5 -->|Cliente acepta| R2

    Poliza -->|Durante la vigencia| R6

    subgraph R6["Recorrido #6 · Ciclo de vida de póliza"]
        direction TB
        R6a[Renovar] --- R6b[Modificar] --- R6c[Cancelar] --- R6d[Reportar a regulador / reaseguradora]
    end

    R3 -.->|Notificación push/in-app| Cliente([Cliente móvil])
    R4 -.->|Notificación push/in-app| Cliente
    R6 -.->|Aviso de vencimiento/renovación| Cliente
Loading

2. Recorrido #1 — Cotización embebida

Orden de HU: HU-1 → HU-2 → HU-3 → HU-4 → HU-5 → HU-6 → HU-7 (reconsulta) → HU-8/9/10/11 (UI web y móvil).

flowchart TD
    A([Socio de distribución / Asesor]) --> B["HU-2 · Consultar catálogo embebido"]
    B --> C{"¿Producto disponible?\n(HU-1: 1 ramo, coberturas fijas)"}
    C -- No --> C1[Mostrar catálogo vacío / no aplica] --> End1([Fin])
    C -- Sí --> D["HU-3 · Enviar solicitud de cotización\n(producto + datos mínimos del riesgo)"]
    D --> E[Generar cotizacionId]
    E --> F["HU-4 · Motor de rating\ncalcula prima base con reglas"]
    F --> G["HU-5 · Adaptador Open Finance (stub)\najusta factor de riesgo"]
    G --> H{"¿Stub responde a tiempo?"}
    H -- Sí --> I[Combinar prima + factor real]
    H -- No / falla --> J["Usar valor de respaldo\n(degradación elegante)"]
    I --> K
    J --> K["HU-6 · Devolver oferta en firme\n(prima, moneda, venceEn, coberturas)"]
    K --> L{"¿Canal?"}
    L -- Web --> M["HU-10 · UI web cotización\n(asesor ve la oferta en el portal)"]
    L -- Móvil / embebido --> N["HU-11 · UI móvil cotización\n(cliente ve precio en el flujo de compra)"]
    M --> O["HU-7 · Reconsultar oferta por id\n(sin recálculo)"]
    N --> O
    O --> P([Oferta lista para aceptar → Recorrido #2])
Loading

3. Recorrido #2 — Suscripción y emisión

Orden de HU: HU-12 → HU-13 → (HU-14 en paralelo) → HU-15 → HU-16 → HU-17 → HU-18; UI: HU-19/20; post-MVP: HU-21.

flowchart TD
    A([Cliente / Asesor]) --> B["HU-12 · Aceptar oferta vigente y no usada"]
    B --> C{"¿Oferta vencida o ya usada?"}
    C -- Sí --> C1[Rechazar: solicitar nueva cotización] --> End1([Fin])
    C -- No --> D["HU-13 · Decisión automática de suscripción\n(aceptar / rechazar riesgo + motivo)"]
    D --> E{"¿Riesgo aceptado?"}
    E -- No --> E1[Notificar rechazo con motivo] --> End2([Fin])
    E -- Sí --> F["HU-14 · Reconstruir insumos y reglas\n(trazabilidad para actuaría, en paralelo)"]
    E -- Sí --> G["HU-15 · Cobro de prima (stub idempotente)"]
    G --> H{"¿Cobro exitoso?"}
    H -- No --> H1[Reintentar sin duplicar cobro] --> G
    H -- Sí --> I["HU-17 · Firma electrónica (stub)"]
    I --> J{"¿Firma ok?"}
    J -- No --> J1[Bloquear emisión, informar al cliente] --> End3([Fin])
    J -- Sí --> K["HU-16 · Emitir póliza\n(número, vigencia, coberturas, estado=vigente)"]
    K --> L{"¿Canal?"}
    L -- Web --> M["HU-19 · UI web: aceptar, firmar y emitir\nen una pantalla con estados reales"]
    L -- Móvil --> N["HU-20 · UI móvil: aceptar y ver póliza emitida"]
    M --> O["HU-18 · Consultar póliza emitida\n(mismo estado en web y móvil)"]
    N --> O
    O --> P([Póliza vigente → Recorrido #3 / #6])

    style P fill:#D4F7D4,stroke:#2E7D32
Loading

(Post-MVP: HU-21 sustituye el stub de cobro por un adaptador real de pasarela de pago móvil, manteniendo el contrato cobro ok/fallo/idempotente.)


4. Recorrido #3 — Siniestro asistido

Orden de HU: HU-22 → HU-23 → HU-24 → HU-25 → HU-26 → HU-27 → (HU-28 o HU-29) → HU-30 → HU-31. Extras post-MVP: HU-38 a HU-43.

flowchart TD
    A([Cliente móvil]) --> B["HU-22 · Aviso de siniestro guiado\n(formulario mínimo + póliza vigente)"]
    B --> C{"¿Póliza vigente?"}
    C -- No --> C1[Bloquear aviso, informar al cliente] --> End1([Fin])
    C -- Sí --> D["HU-23 · Adjuntar foto del siniestro"]
    D --> E["HU-24 · Geoetiquetar evidencia\n(si hay GPS disponible)"]
    E --> F{"¿Hay conexión?"}
    F -- No --> G["HU-25 · Conservar evidencia en cola local\n(offline-first)"] --> H
    F -- Sí --> H["HU-30 · Estado = recibido"]
    H --> I["HU-26 · Operador ve aviso en back-office\n(evidencia + póliza + estado)"]
    I --> J["HU-30 · Estado = en evaluación"]
    J --> K["HU-27 · Aprobar o rechazar\n(con auditoría: quién, cuándo, por qué)"]
    K --> L{"¿Decisión?"}
    L -- Rechazado --> L1["HU-30 · Estado = decidido (rechazado)"] --> M
    L -- Requiere peritaje --> L2["HU-28 · Enrutar a perito\nHU-30 · Estado = enrutado"] --> M
    L -- Aprobado, bajo monto --> L3["HU-29 · Autorizar desembolso (stub, una sola vez)"] --> L4["HU-30 · Estado = pagado"] --> M
    M["HU-31 · Aviso in-app del cambio de estado"] --> End2([Cliente notificado])

    style End2 fill:#D4F7D4,stroke:#2E7D32
Loading

(Extras post-MVP sobre este recorrido: HU-38 recibo/daño adicional, HU-39/40 mapa y prestadores cercanos (stub), HU-41 asistencia en sitio, HU-42/43 escaneo y carga de documentos.)


5. Recorrido #4 — Siniestro paramétrico (evento → pago)

Orden de HU: HU-32 → HU-33 → HU-34 → HU-35 / HU-36 / HU-37.

flowchart TD
    A([Fuente externa: IoT / clima / vuelos]) --> B["HU-32 · Recibir evento paramétrico (stub)\n(id + valor comparable)"]
    B --> C["HU-33 · Evaluar umbral de la póliza"]
    C --> D{"¿Valor supera el umbral?"}
    D -- No --> D1[Registrar evento sin pago] --> End1([Fin])
    D -- Sí --> E["HU-34 · Disparar pago paramétrico (stub)\nsin intervención humana"]
    E --> F{"¿Canal de consulta?"}
    F -- Móvil --> G["HU-36 · Vista móvil: póliza, umbral, monto"]
    F -- Web --> H["HU-37 · Vista web: trazabilidad interna del disparo"]
    G --> I["HU-35 · Aviso de pago paramétrico\n(in-app / canal stub)"]
    H --> I
    I --> End2([Cliente informado del pago])

    style End2 fill:#D4F7D4,stroke:#2E7D32
Loading

6. Recorrido #5 — Perfilamiento vida hipotecario

Orden de HU: HU-53 → HU-54 → HU-55; HU-56 puede probarse junto a HU-54/55; UI: HU-57 / HU-58.

flowchart TD
    A([Cliente en originación de crédito]) --> B["HU-53 · Registrar consentimiento de perfilamiento"]
    B --> C{"¿Consentimiento otorgado?"}
    C -- No --> C1[No se puede perfilar, ofrecer producto estándar] --> End1([Fin])
    C -- Sí --> D["HU-54 · Adaptadores stub\nOpen Finance / Open Data"]
    D --> E{"¿Respuesta a tiempo?"}
    E -- Sí --> F[Insumos completos del perfil]
    E -- No / timeout --> G["HU-56 · Degradar con valor de respaldo\n(no se pierde la originación)"]
    F --> H
    G --> H["HU-55 · Armar perfil y oferta explicable\n(precio + factores internos)"]
    H --> I{"¿Canal?"}
    I -- Móvil --> J["HU-57 · UI móvil: oferta en el flujo de crédito"]
    I -- Web --> K["HU-58 · UI web: asesor explica la oferta en el portal"]
    J --> L([Cliente decide])
    K --> L
    L -->|Acepta| M([Recorrido #2 · Suscripción y emisión])
    L -->|Rechaza| End2([Fin])
Loading

7. Recorrido #6 — Ciclo de vida de póliza

Alcance: un verbo = una HU (HU-59 a HU-65); autoservicio y orquestador post-MVP (HU-66/67).

flowchart TD
    P[(Póliza vigente)] --> Q{"¿Qué acción sobre la póliza?"}

    Q -- Se acerca el vencimiento --> R["HU-64 · Aviso de vencimiento\n(in-app / canal stub)"]
    R --> S["HU-59 · Renovar póliza"]
    S --> S1["HU-65 · Aviso de renovación efectiva"] --> P

    Q -- Cambio de datos/coberturas --> T["HU-60 · Modificar póliza\n(sin reemitir desde cero)"] --> P

    Q -- Cliente solicita baja --> U["HU-61 · Cancelar póliza\n(estado visible en consulta)"] --> End1([Póliza cancelada])

    Q -- Obligación regulatoria --> V["HU-62 · Reporte al regulador (stub)"]
    Q -- Cesión de riesgo --> W["HU-63 · Reporte a reaseguradora (stub)"]

    P -.->|Post-MVP| X["HU-66 · Autoservicio web\n(cliente gestiona sin asesor)"]
    P -.->|Post-MVP| Y["HU-67 · Orquestador maestro web\n(cada capacidad con entrada de UI)"]

    style End1 fill:#FFF3E0,stroke:#F9A825
Loading

8. Flujo transversal — Identidad y onboarding móvil

Base para poder ejecutar los recorridos #2, #3 y #6 desde el canal móvil. MVP: HU-45 a HU-47. Post-MVP: biometría y billetera offline (HU-48 a HU-52).

flowchart TD
    A([Nuevo cliente móvil]) --> B["HU-45 · Onboarding con datos y documento"]
    B --> C["HU-46 · Otorgar consentimiento de datos\n(auditable, habeas data)"]
    C --> D{"¿Consentimiento otorgado?"}
    D -- No --> D1[No se puede continuar el registro] --> End1([Fin])
    D -- Sí --> E["Cuenta creada"]
    E --> F["HU-47 · Consultar pólizas\n(payload ligero)"]

    E -.->|Post-MVP| G["HU-48 · Onboarding con prueba de vida (stub selfie)"]
    E -.->|Post-MVP| H["HU-49 · Autenticación biométrica"]
    H -.-> I{"¿Biometría falla?"}
    I -- Sí --> J["HU-50 · Fallback de acceso alterno"]
    I -- No --> K([Acceso concedido])
    J --> K

    F -.->|Post-MVP, sin red| L["HU-51 · Billetera offline\n(coberturas sin conexión)"]
    L -.-> M["HU-52 · Sincronizar al recuperar red"]

    F --> N([Cliente identificado →\nRecorridos #3 y #6 en móvil])

    style N fill:#D4F7D4,stroke:#2E7D32
Loading

Referencias

  • Recorridos de negocio §5.1 y detalle de HU: Backlog refinado — Semana 3
  • Problema de negocio, objetivos y modelo de dominio: Visión de arquitectura
  • Historias de arquitectura (latencia, disponibilidad, seguridad) que rigen estos flujos: sección Historias de arquitectura (SBA) del backlog refinado.
⚠️ **GitHub.com Fallback** ⚠️