Diagramas de flujo app - martin-hendricks/MISO-PROYECTO-FINAL-SOLVENTA GitHub Wiki
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.
- Flujo maestro (los 6 recorridos)
- Recorrido #1 — Cotización embebida
- Recorrido #2 — Suscripción y emisión
- Recorrido #3 — Siniestro asistido
- Recorrido #4 — Siniestro paramétrico (evento → pago)
- Recorrido #5 — Perfilamiento vida hipotecario
- Recorrido #6 — Ciclo de vida de la póliza
- Flujo transversal — Identidad y onboarding móvil
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
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])
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
(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.)
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
(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.)
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
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])
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
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
- 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.