Arquitectura de informacion cliente L1 - martin-hendricks/MISO-PROYECTO-FINAL-SOLVENTA GitHub Wiki

Arquitectura de información · Cliente L1

Misma IA en Android y web. Cuatro destinos persistentes; Nueva cotización es un CTA, no un quinto destino. Una Cotizacion existe para originar una Poliza nueva: al aceptarla se crea como Poliza y pasa a vivir en Pólizas. Tanto Cotizacion como Poliza se clasifican por ramo; los datos de riesgo del formulario cambian con el ramo (HU-3: producto + datos mínimos del riesgo). No se reutiliza el formulario de dispositivo en vida, viaje ni crédito.

Fuentes: Backlog UI cliente L1 · Design System / Screens · Web Customer Experience / Screens · Mobile Navigation Map · Validación usabilidad (Karen Guerrero, 18 Sep 2026) · PDF §2.2 / §5.1–5.2


1. Objetos de información

flowchart LR
  Cliente["Cliente"] --> Ramo["Ramo"]
  Ramo --> Cotizacion["Cotizacion"]
  Cotizacion --> DatosRiesgo["DatosRiesgo<br/>esquema de ese ramo"]
  DatosRiesgo -->|"se crea para una Poliza nueva"| Oferta["Oferta firme"]
  Oferta -->|"Aceptar"| Emision["Emision"]
  Emision -->|"exito: se crea como Poliza"| Poliza["Poliza"]
  Emision -->|"rechazo"| SinPoliza["No hay Poliza"]
  Poliza --> Billetera["Destino Polizas"]
  Poliza -->|"cubre"| Siniestro["Siniestro"]
  Poliza -->|"ciclo de vida, lectura"| Aviso["Aviso vencimiento / renovacion"]

  style Cotizacion fill:#E8F4F4,stroke:#005050
  style DatosRiesgo fill:#E8F4F4,stroke:#005050
  style Poliza fill:#D4F7D4,stroke:#2E7D32
  style SinPoliza fill:#FDECEA,stroke:#C62828
Loading
Objeto Dónde vive en la IA Qué no es
Ramo Clasifica Cotizacion y Poliza. Portafolio PDF §2.2: viaje, dispositivos, microseguros de vida, clima/vuelos (seguro paramétrico en el caso) y protección de pagos ligada a crédito. No es un quinto destino. L1 no muestra un catálogo de seis productos (HU-1 / HU-92).
Cotizacion Flujo anidado de Inicio. Envelope común (HU-3 / HU-6): ramo + DatosRiesgo → oferta (prima, moneda, venceEn). CTA descubrible desde Inicio y desde lista-polizas vacía (primera cotización). No es destino raíz ni tab. No hay lista «Mis cotizaciones». El formulario no es único para todos los ramos.
DatosRiesgo Cuerpo de nueva-cotizacion (o del flujo hipotecario). Esquema por ramo. No es «valor del dispositivo» genérico. Vida, viaje o crédito no reutilizan campos de dispositivo.
Poliza Destino Pólizas (lista-polizas → detalle-poliza). Tras emitir, poliza-emitida entrega a ese destino. Conserva el ramo y el riesgo cotizado. En cada vista (éxito, Inicio, lista, detalle) se lee ramo + estado y un resumen del tipo. Lista/detalle muestran recomendaciones de siniestro de ese ramo. Sin red, las mismas vistas leen cobertura y credencial en caché (HU-51) y muestran el banner de sincronización al volver (HU-52). No se origina vacía: nace de una cotización aceptada. No es otra ruta «billetera offline».
Siniestro Destino Siniestros. Requiere póliza vigente. El aviso usa campos y recomendaciones del ramo de esa póliza (mismo destino, otro DatosRiesgo). El pago automático (clima/vuelos) lee el umbral (HU-33); no vuelve a cotizar ni se llama «paramétrico» en canal. El cliente no decide el caso (eso es operador, fuera de L1).
Perfil / consentimiento Destino Perfil (sheets Android / diálogos web). Alta de habeas data es pre-login. Consentimiento de perfilamiento (HU-53) es insumo de protección de pagos / vida hipotecario, no de dispositivo. Cada grant lleva enlace o vista al texto legal (ley colombiana en canal). No origina cotización de dispositivo ni hipotecario desde el hub.
Evidencia Paso de aviso-siniestro en evidencia-siniestro. Android: foto, video y recibo/daño (HU-38), con geo JIT. Web: archivo adjunto; la geolocalización del navegador es opcional. No es un destino. No pide cámara ni GPS en el splash.
Verificación biométrica Solo Android. Prueba de vida (selfie, HU-48) es un paso del alta, después del registro y antes del consentimiento. El regreso usa el prompt del sistema (huella o rostro, HU-49) sobre login; si falla, el fallback es correo y contraseña (HU-50). No sustituye el alta con datos ni el login con contraseña. Web no pide biometría.
Aviso push Solo Android. Permiso JIT (no en splash, no hay campana). La bandeja del sistema avisa pago automático, vencimiento, renovación y estado del siniestro. El toque abre la vista que ya existe: parametrico, aviso-vencimiento, aviso-renovacion o detalle-siniestro. No es un destino «Notificaciones». En web el mismo hecho se lee en la pantalla in-app.
Prestador Anidado de Siniestros: mapa-prestadores (catálogo stub en mapa, ordenado por distancia, HU-39 / HU-40) y asistencia-sitio (pedido con la ubicación del cliente, HU-41). No es un quinto destino ni un rastreo en segundo plano. Web no tiene mapa.
Soporte digitalizado Paso del trámite en Android: escaner-documentos captura con recorte (HU-42) y se adjunta al aviso o a la póliza (HU-43). No es un destino ni un escáner de escritorio. Web sigue con el archivo adjunto.

Regla de producto: la cotización in-app llama el mismo núcleo que el socio/asesor (HU-3 → HU-6 → HU-7). El cliente acepta (HU-20 / HU-114); el núcleo emite o rechaza. Si emite, el objeto que el cliente consulta después es la póliza, no la cotización.

Etiqueta de objeto (validación 18 Sep 2026): toda card o pantalla de Cotizacion, Oferta, Poliza o Siniestro muestra ramo + estado (y el riesgo cotizado cuando ya existe). Un éxito «Póliza emitida» sin tipo deja al usuario perdido. Web se entendió mejor que Android solo porque nombraba el producto; L1 no adopta SOAT/Hogar — el portafolio es PDF §2.2.

Términos de canal: jerga de seguros en Colombia (póliza, ramo, prima, siniestro, habeas data). Ayuda in-situ (“¿qué es esto?”) en la vista; no un quinto destino. i18n de otros mercados es posterior.

Ramos y datos de riesgo

nueva-cotizacion es un solo lugar en el sitemap. Lo que cambia es el contenido: el ramo elegido selecciona el esquema de DatosRiesgo y muestra una descripción corta de ese ramo. Pedir Valor del dispositivo en un microseguro de vida es un error de modelo, no un detalle de UI.

Prima vs valor asegurado. La prima es el precio del seguro que devuelve el motor (HU-4 / HU-6: prima, moneda, venceEn). No es el valor del bien. En Protección de dispositivos sí se calcula a partir de (entre otros factores) el valor del equipo: un Pixel de $2.400.000 no se cotiza igual que uno de $800.000. En vida la prima sale de la suma asegurada y la edad; en viaje, del destino y la duración; en clima/vuelos, del evento y el umbral; en pagos/hipotecario, de la cuota o el crédito. El usuario debe ver esa diferencia en el formulario, no un campo de dispositivo reciclado.

Insumos comunes a cualquier Cotizacion (HU-3, HU-6): producto/ramo, DatosRiesgo de ese ramo, y la oferta devuelta (prima, moneda, venceEn). Lo que no es común son los campos de riesgo.

Ramo (PDF §2.2) Objeto de riesgo Qué pide la Cotizacion Qué no pide Dónde en L1
Protección de dispositivos El aparato cubierto (Robo, Pantalla, Hurto calificado) Descripción del ramo + valor del dispositivo (COP), marca/modelo, ¿más de 12 meses? (HU-92 / HU-104). Sin IMEI, mapa ni Open Finance en el form. Prima derivada del valor del equipo. Destino de viaje, saldo de crédito, umbral climático Variante Dispositivo de nueva-cotizacion.
Seguros de viaje El viaje / tiquete (PDF §1: embeber al comprar un tiquete) Descripción del ramo + destino y duración (mínimo para tarificar un trayecto). Valor / marca de un dispositivo Variante Viaje de nueva-cotizacion (mismo nodo, otro DatosRiesgo).
Microseguros de vida La persona asegurada Descripción del ramo + suma asegurada y edad. Identidad ya capturada en el alta (HU-45). El riesgo es de vida, no de un bien. Valor del dispositivo, marca/modelo, antigüedad del equipo Variante Vida de nueva-cotizacion.
Clima y vuelos El evento cubierto (retraso de vuelo o clima, PDF §5.1 #4). En el caso se llama seguro paramétrico; en canal el cliente ve Pago automático. Descripción del ramo + tipo de evento, referencia (vuelo o zona) y umbral (HU-33). El cliente no «reporta» el siniestro: el evento dispara el pago. Valor de un dispositivo; formulario de aviso asistido; la palabra paramétrico en título Variante Clima y vuelos de nueva-cotizacion para cotizar; el resultado del disparo sigue en parametrico (título Pago automático).
Protección de pagos ligada a crédito El crédito (consumo o vida hipotecario, PDF §2.4) Descripción del ramo + cuota/plazo (consumo) o valor/plazo del crédito (hipotecario). Originación hipotecaria: consentimiento de perfilamiento (HU-53) como paso del mismo flujo. Valor / marca / antigüedad de un dispositivo; tratar el consentimiento como destino paralelo Variantes Pagos / Hipotecario de nueva-cotizacion. Hipotecario continúa en consentimiento-hipotecario → oferta-hipotecario → emisión. Nunca desde Perfil.

L1 cotiza en un solo lugar (nueva-cotizacion, HU-1 / HU-92): no hay un tab por ramo. El selector de tipo cambia el formulario, la descripción y los factores de la prima. Extender el catálogo (más campos o ramos) es HA-25, no un quinto destino.

El aviso de siniestro es el mismo destino para todos los ramos; los campos (y las recomendaciones) siguen el ramo de la póliza vigente. Esas recomendaciones también se leen en lista/detalle de póliza, no solo al reportar. En dispositivo, Android pide foto, video y recibo/daño con geo JIT (PDF §5.2); web adjunta archivo. Vehículo o vida, cuando existan en catálogo, no reutilizan el formulario de pantalla rota.

Capacidades del dispositivo (PDF §5.2). Son del canal móvil y viven anidadas en los cuatro destinos. No abren un quinto tab. Web no las copia: la gestión completa sigue en escritorio, y el aviso equivalente es la pantalla in-app.


2. Sitemap L1 (Android y web)

Splash es solo Android. Web arranca en login / idioma-region. login-error y los estados denegados de evidencia son variantes de pantalla, no rutas.

Shell A: stepper visible y numerado en orden real. En Android: idioma → registro → prueba de vida → consentimiento. En web el alta no tiene prueba de vida: idioma → registro → consentimiento. El onboarding presenta funcionalidad y beneficios de la app, en tono de seguro, no de marketing genérico. Splash no pide permisos (PDF §5.2: cámara, geo y notificaciones son JIT). Login reitera beneficios y, en Android, ofrece huella o rostro con fallback a contraseña; no sustituye el stepper.

Inicio (Shell B): resumen agrupado por objeto — oferta vigente · póliza · siniestro en curso · hipotecario si hay originación — no una lista plana de CTAs. Cada bloque lleva contexto (ramo + estado + siguiente paso). Nueva cotización sigue siendo CTA (no tab): descubrible en Inicio y en Pólizas vacías (primera vez). nueva-cotizacion es un solo nodo: el formulario es el DatosRiesgo del ramo elegido, con descripción del tipo. Vida hipotecario sigue con consentimiento como paso de ese flujo, no una card paralela. Sin red, Pólizas sigue siendo el mismo destino: la lista y el detalle leen la caché y avisan cuando sincronizan.

Un flujo vs un tab: alta, cotización→emisión→pago, hipotecario, aviso de siniestro, mapa de prestadores y escaneo avanzan por pasos bajo el destino padre. Cambiar de tab es atajo explícito, no otra card del mismo peso. El hilo cotizar → aceptar → emitir → pagar → renovación (lectura HU-64/HU-65; configurar automática es post-mvp) debe verse en las vistas de emisión y de póliza. El push no es un paso: el permiso es un overlay JIT y la bandeja abre una vista que ya está en el sitemap.

flowchart TB
  subgraph Pre["Shell A · Pre-login · nav oculta"]
    Splash["splash-solventa<br/>solo Android"]
    Idioma["idioma-region<br/>paso 1"]
    Alta["onboarding / registro<br/>paso 2"]
    Vida["prueba-de-vida<br/>paso 3 · solo Android"]
    Login["login<br/>biometria o contrasena"]
    ConsentAlta["consentimiento-datos<br/>habeas data"]
    Splash --> Idioma
    Idioma --> Alta
    Idioma --> Login
    Alta -->|"Ya tengo cuenta"| Login
    Login -->|"Crear cuenta"| Alta
    Alta -->|"Android"| Vida --> ConsentAlta
    Alta -->|"web"| ConsentAlta
    Login --> Inicio
    ConsentAlta --> Inicio
  end

  subgraph App["Post-login · 4 destinos"]
    Inicio["Inicio<br/>resumen por objeto"]
    Polizas["Polizas"]
    Siniestros["Siniestros"]
    Perfil["Perfil"]
  end

  subgraph InicioNest["Anidadas de Inicio · Shell C"]
    NuevaCot["nueva-cotizacion<br/>DatosRiesgo del ramo"]
    VerOferta["ver-oferta<br/>Cotizacion vigente"]
    HipConsent["consentimiento-hipotecario<br/>paso del flujo"]
    HipOferta["oferta-hipotecario"]
    Rechazo["suscripcion-rechazada"]
  end

  subgraph Emit["Shell D / E · nav oculta"]
    Emision["emision-progreso"]
    Emitida["poliza-emitida<br/>ramo + numero"]
  end

  subgraph PolNest["Anidadas de Polizas · Shell C"]
    ListaPol["lista-polizas<br/>online u offline"]
    DetallePol["detalle-poliza<br/>cobertura y credencial"]
    Venc["aviso-vencimiento"]
    Renov["aviso-renovacion"]
  end

  subgraph SinNest["Anidadas de Siniestros · Shell C"]
    ListaSin["lista-siniestros"]
    AvisoSin["aviso-siniestro<br/>campos del ramo"]
    Evidencia["evidencia-siniestro<br/>foto, video, recibo"]
    Scan["escaner-documentos"]
    Confirm["confirmacion-siniestro"]
    DetalleSin["detalle-siniestro"]
    Param["Pago automatico"]
    Mapa["mapa-prestadores"]
    Asist["asistencia-sitio"]
  end

  subgraph PerfNest["Overlays de Perfil · Close, no push"]
    Sheets["idioma · consentimientos<br/>permisos JIT incl. push · cerrar sesion"]
  end

  Inicio -->|"CTA Nueva cotizacion"| NuevaCot
  Inicio -->|"oferta vigente / Aceptar"| VerOferta
  NuevaCot -->|"Cotizar"| VerOferta
  VerOferta -->|"Aceptar Cotizacion"| Emision
  HipOferta -->|"Aceptar oferta"| Emision
  Inicio --> HipConsent --> HipOferta
  Emision -->|"exito: Cotizacion se crea como Poliza"| Emitida
  Emision -->|"rechazo"| Rechazo
  Emitida -->|"Ver mi poliza"| DetallePol
  Emitida -->|"Ir al inicio"| Inicio
  Rechazo -->|"Volver al inicio"| Inicio

  Polizas --- ListaPol
  ListaPol --> DetallePol
  ListaPol -.->|"primera vez / lista vacia"| NuevaCot
  DetallePol --> Venc
  DetallePol --> Renov

  Siniestros --- ListaSin
  ListaSin -->|"FAB Reportar"| AvisoSin
  AvisoSin --> Evidencia --> Confirm --> ListaSin
  AvisoSin --> Scan --> Confirm
  ListaSin -->|"Ver avance"| DetalleSin
  ListaSin --> Param
  ListaSin --> Mapa --> Asist

  Perfil --- Sheets

  Inicio -.->|"atajo si hay poliza"| DetallePol
  Inicio -.->|"atajo si hay caso"| DetalleSin

  style NuevaCot fill:#E8F4F4,stroke:#005050
  style VerOferta fill:#E8F4F4,stroke:#005050
  style Emitida fill:#D4F7D4,stroke:#2E7D32
  style DetallePol fill:#D4F7D4,stroke:#2E7D32
  style ListaPol fill:#D4F7D4,stroke:#2E7D32
Loading

3. Destinos, chrome y padre

Cuatro destinos en NavigationBar (Android) o TopNav / hamburger 390 (web). El CTA Nueva cotización no se subraya como destino; sí debe verse en Inicio y en Pólizas si la lista está vacía. PDF §5.2: web y móvil no son la misma interfaz en dos tamaños. El contenido de negocio (ramo, objetos, estados) sí es el mismo. Cámara, biometría, push, mapa, billetera offline y escáner son del dispositivo: no se duplican en web. Copy de canal: ley colombiana; ayuda in-situ, no otro destino.

Shell Qué cubre Nav
A Splash, idioma, onboarding/registro, prueba de vida (solo Android), login (biometría o contraseña en Android; correo y contraseña en web), consentimiento de alta. Stepper en orden real. Onboarding = beneficios/funcionalidad; consentimiento con texto legal enlazado. Sin permisos en splash. Oculta
B Inicio (resumen por objeto), lista-pólizas (online u offline), lista-siniestros, hub-perfil Visible, este destino
C Cotización, oferta, detalle, avisos, reportar, evidencia, escáner, mapa de prestadores, asistencia, pago automático, hipotecario, rechazo Visible, tab/destino padre
D / E emision-progreso, poliza-emitida Oculta; no se cambia de tab a mitad de emisión
Anidada Padre
nueva-cotizacion, ver-oferta, hipotecario (consentimiento = paso + documento legal), suscripcion-rechazada Inicio (el CTA también puede abrirse desde Pólizas vacías; el padre del flujo sigue siendo Inicio)
detalle-poliza (resumen de ramo + recs de siniestro; sin red, cobertura y credencial), aviso-vencimiento, aviso-renovacion (lectura; el paso de renovación debe verse). El banner de sincronización es un estado de estas vistas, no una ruta Pólizas
aviso-siniestro (campos según ramo de la póliza), evidencia (foto, video, recibo), escaner-documentos, confirmacion-siniestro, detalle-siniestro, mapa-prestadores, asistencia-sitio, pago automático (parametrico), permisos JIT (cámara, ubicación, notificaciones) Siniestros
prueba-de-vida Shell A, entre registro y consentimiento. Solo Android
Prompt biométrico y fallback a contraseña Estados de login, no rutas nuevas
Bandeja del sistema No es ruta. Abre parametrico, aviso-vencimiento, aviso-renovacion o detalle-siniestro
Sheets / diálogos de idioma, consentimientos y permisos Perfil (Close; no empujan onboarding ni hipotecario)

4. Fuera de esta IA

No hay quinto destino ni campana in-app. El permiso de notificaciones es un overlay JIT y la bandeja del sistema abre una vista que ya existe; no hay un centro de notificaciones (G-05).

Mapa de prestadores, billetera offline, escáner y biometría (G-07–G-10) sí entran en esta IA, anidados en los destinos de la sección 3. No son pantallas del canal web.

Siguen fuera: el portal de socios (HU-80), los tableros y SLAs (HU-69) y el portal asesor/operador. Son otro producto. Un glosario de la vista es ayuda in-situ, no un destino. Configurar renovación automática (HU-66 / HU-67) es post-mvp; esta IA muestra el paso en lectura (HU-64 / HU-65).

SOAT / Hogar en el prototipo web no son ramos de esta IA (PDF §2.2).


5. Validación de usabilidad (Karen, 18 Sep 2026)

Sesión sobre prototipos Figma Android y web. Detalle: Resultado de validación usabilidad de usuario.

El sitemap de cuatro destinos se sostuvo. Lo que falló es el contenido de las vistas:

Hallazgo Regla de IA
No sabe qué póliza se emitió ni si Inicio es el home Toda vista de objeto lleva ramo + estado; Inicio agrupa por objeto con contexto
No encontró Nueva cotización; Inicio tiene demasiados CTAs Inicio = resumen agrupado; CTA de cotizar visible, no tab; también en Pólizas vacías
Numeración de onboarding incorrecta; no muestra beneficios Shell A con stepper en orden real; onboarding = funcionalidad/beneficios
Lista de pólizas sin descripción del tipo lista-polizas / detalle: resumen del ramo
Según el tipo, no se sabe qué hacer en un siniestro Recomendaciones e insumos del ramo en póliza y en aviso-siniestro
Consentimientos sin texto legal Enlace o vista al documento; términos de ley colombiana
Jerga de seguros; pide asistencia en la vista Ayuda in-situ; no quinto destino. Copy de aplicación de seguros, no marketing genérico
Cards y tabs se mezclan; no se ve si es el mismo flujo Un flujo = pasos + padre; el cambio de tab es atajo explícito
No se leen cotización → firme → póliza → pago ni renovación automática Hilo visible en emisión y póliza; configurar renovación es post-mvp, el paso sí se muestra
«Pago paramétrico» no es lenguaje de usuario Canal: Pago automático (parametrico solo como slug)
Consentimiento Vida Crediticia parece otro producto Hipotecario = un flujo; el grant es un paso
Web se entendió porque nombraba SOAT / vencimiento Paridad de etiquetas, no copiar SOAT/Hogar al L1
⚠️ **GitHub.com Fallback** ⚠️