← Todos los flujos
FLUJO F02

Análisis documental y aprobación

El analista revisa documento por documento el expediente digitalizado de un siniestro en etapa «Clasificación y análisis»: verifica los datos extraídos de cada documento contra el PDF original, completa la causa del siniestro, la cobertura afectada y el lugar de ocurrencia (país y provincia), guarda cada documento y aprueba el caso, que pasa a la etapa «En proceso».

CON HALLAZGOS Rol: Analista (analista.extra4) Modifica datos
31pasos
45llamadas a la API
16errores de consola
1respuestas con error
0archivos descargados
124.4sduración

📁 Evidencias

Este flujo no descargó archivos. Sus 31 capturas están en la carpeta F02-analisis-documental/; hacé clic en cualquiera para ampliarla.

⚠️ 3 hallazgo(s) en este flujo

Los casos en «Clasificación y análisis» no son alcanzables desde la UImedio

Existen casos en la etapa Clasificación y análisis (verificado por API: 01K2ZWGTDSCC87761Q08AJY5MC entre otros) pero no están asignados a analista.extra4, y la bandeja del analista filtra por asignación: la pestaña aparece vacía y no hay ningún camino en la interfaz para abrir la pantalla de análisis de esos casos. Solo se llega por URL directa. (paso 5)

La aprobación devolvió un mensaje de erroralto

Toast: «Hubo problemas al cargar y almacenar los archivos de DH Sol. Por favor, realice esta acción manualmente.» (paso 30)

El caso NO aparece en «En proceso» tras aprobaralto

GET /Claims/state/InProcess devolvió 2 casos y 01K2ZWGTDSCC87761Q08AJY5MC no está entre ellos. (paso 30)

1

Pantalla de login

Formulario de acceso: usuario y contraseña (se validan contra LDAP)

Paso 1
Elemento
Login #User / #Password
Pantalla
#/login-page
2

Login como analista.extra4

POST /v1/Authentication/login → HTTP 200. El backend valida contra LDAP y devuelve el JWT (un solo rol). Landing: /dashboard-page

Paso 2
Elemento
Botón Ingresar button[type=submit]
Pantalla
#/dashboard-page
API
POST /v1/Authentication/login 200GET /v1/app/Dashboard/oldest-claims 200GET /v1/app/Dashboard/bank-claims/open 200GET /v1/app/Dashboard/monthly-average-elapsed-time/all 200GET /v1/app/Dashboard/state-claims/all 200
3

Ir a «Mis casos» desde el menú lateral

El Angular Router intercepta el click (el href del sidebar es path-based, no hash)

Paso 3
Elemento
Menú: Mis casos a.sidebar-menu-link
Pantalla
#/home-page
API
GET /v1/app/Claims/detail/states 200GET /v1/app/Claims/state/ClassificationAnalysis 200
4

Bandeja «Mis casos»: pestaña «Clasificación y análisis»

Al abrir Mis casos el sistema muestra el carrusel de etapas del siniestro y deja seleccionada por defecto la primera: Clasificación y análisis, donde esperan los casos recién ingresados que el analista debe revisar.

Paso 4
Elemento
Carrusel de etapas mat-radio-group.proceso-caso
Pantalla
#/home-page
5

La bandeja de análisis está VACÍA para este analista

La tabla muestra 0 caso(s). En el ambiente hay 3 casos en etapa Clasificación y análisis, pero ninguno está asignado a analista.extra4, y la bandeja filtra por analista asignado: el analista no tiene forma de llegar a esos casos desde la interfaz.

Paso 5
Elemento
Tabla de casos en análisis table[mat-table]
Pantalla
#/home-page
6

Abrir la pantalla de análisis del caso por URL directa

Como la bandeja no ofrece acceso, se navega directo a la pantalla de análisis del caso (gestion-page). El sistema carga el expediente completo: GET /Claims/{id}/analysis devuelve los documentos digitalizados con sus campos ya extraídos por OCR.

Paso 6
Elemento
Ruta /home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC location.hash = '#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC'
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
GET /v1/app/Claims/01K2ZWGTDSCC87761Q08AJY5MC/analysis 200GET /v1/app/Claims/Countries 200GET /v1/app/Claims/Coverages/01K2ZWGTDSCC87761Q08AJY5MC/cause/01KX31REH2KJT62B7HP44GP9DE 200GET /v1/app/Claims/Countries/1/Provinces 200
7

La pantalla de análisis: paneles de documentos + visor del PDF

A la izquierda hay un panel plegable por cada documento del expediente (4 documentos: Cédula de identidad beneficiario; Certificado de defunción; Cédula de identidad; Hoja de Riesgo). Al abrir un panel, a la derecha se muestra el PDF digitalizado de ese documento para que el analista compare los datos extraídos contra el papel. El botón «Ver PDF original» alterna al PDF completo de la denuncia.

Paso 7
Elemento
Acordeón de documentos mat-accordion.acordeon
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
8

Documento «Cédula de identidad beneficiario»: 3 campos

El analista abre el panel «Cédula de identidad beneficiario» y revisa sus campos contra el PDF que se despliega a la derecha. Campos (3, 0 sin completar): DocumentNumber = «8429883»; FullName = «SERGIO SERAPIO ÁLVAREZ GONZALES»; BirthDate = «14/11/1994».

Paso 8
Elemento
Panel Cédula de identidad beneficiario mat-expansion-panel >> nth=0
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
GET /v1/app/File/01EY5ELRG4NMOWW7JGKNGKB5UC22JV5LGN 200
Errores
Failed to load resource: net::ERR_INVALID_URL
Unexpected server response. PDF.js v4.6.688 (build: 9fa5ff466) Message: Unexpected server response (0) while retrieving PDF "data:application/pdf;base64,undefined".
ERROR UnexpectedResponseException
9

Documento «Certificado de defunción»: 7 campos

El analista abre el panel «Certificado de defunción» y revisa sus campos contra el PDF que se despliega a la derecha. Campos (7, 0 sin completar): DeathDate = «26/05/2024»; CauseOfDeath = «INSUFICIENCIA RESPIRATORIA»; OccurrenceLocation = «LA PAZ»; Cause = «MUERTE POR ENFERMEDAD»; Coverage = «MUERTE»; OccurrenceCountryCode = «BOLIVIA»; OccurrenceProvinceCode = «LA PAZ».

Paso 9
Elemento
Panel Certificado de defunción mat-expansion-panel >> nth=1
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
GET /v1/app/File/01EY5ELREXBH5IQZOGPZFYSJ2YUKK2PED2 200
10

Documento «Cédula de identidad»: 3 campos

El analista abre el panel «Cédula de identidad» y revisa sus campos contra el PDF que se despliega a la derecha. Campos (3, 0 sin completar): DocumentNumber = «9197495»; FullName = «DOMINGO GUZMAN ALVAREZ GONZALES»; BirthDate = «04/08/1998».

Paso 10
Elemento
Panel Cédula de identidad mat-expansion-panel >> nth=2
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
GET /v1/app/File/01EY5ELRDT5PSBMXJY4FFLW2PBYKIFP2D5 200
11

Documento «Hoja de Riesgo»: 13 campos

El analista abre el panel «Hoja de Riesgo» y revisa sus campos contra el PDF que se despliega a la derecha. Campos (13, 0 sin completar): OperationNumber = «2298498»; DisbursementDate = «25/11/2023»; CoinType = «BOLIVIANOS»; DisbursedAmount = «32.100,00»; CreditHolder = «ALVAREZ GONZALES DOMINGO GUZMÁN»; BankExecutiveName = «CHÁVEZ CHIPANA JACKSON»; InterestRate = «0,05»; ClaimDate = «26/05/2024»; LastPaymentDate = «01/05/2025»; NonDeferredPrincipalBalanceAtClaimDate = «4.000.000»; DeferredPrincipalBalanceAtClaimDate = «1.000.000»; DeferredPrincipalInterest = «50.000»; ProratedInterest = «12.000».

Paso 11
Elemento
Panel Hoja de Riesgo mat-expansion-panel >> nth=3
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
GET /v1/app/File/01EY5ELRBR6NFAYW5YMNHZFJMNC5MRJ4SX 200
12

Volver al Certificado de defunción para clasificar el siniestro

El certificado dice que la persona falleció por INSUFICIENCIA RESPIRATORIA en LA PAZ. El analista debe traducir eso a los catálogos del sistema: causa del siniestro, cobertura de la póliza afectada y lugar de ocurrencia (país y provincia). El municipio lo resuelve el sistema automáticamente.

Paso 12
Elemento
Panel Certificado de defunción
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
GET /v1/app/File/01EY5ELREXBH5IQZOGPZFYSJ2YUKK2PED2 200
13

Abrir combo «Causa» del siniestro

El overlay CDK de Material despliega las opciones

Paso 13
Elemento
«Causa» del siniestro mat-select[data-slag='DeathCertificate-Cause']
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
14

Elegir «MUERTE POR ENFERMEDAD» en «Causa» del siniestro

El analista clasifica la causa según el certificado (insuficiencia respiratoria = muerte por enfermedad). Al elegirla, el sistema consulta qué coberturas de la póliza aplican a esa causa (GET /Claims/Coverages/{claimId}/cause/{causeId}) y limpia el combo Cobertura para recargarlo.

Paso 14
Elemento
«Causa» del siniestro mat-option:has-text('MUERTE POR ENFERMEDAD')
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
15

El combo «Cobertura» se cargó según la causa elegida

Coberturas disponibles para MUERTE POR ENFERMEDAD: MUERTE, SEPELIO. Estas opciones dependen de la causa: si el analista cambiara la causa, la lista sería otra.

Paso 15
Elemento
Combo Cobertura (abierto) mat-select[data-slag='DeathCertificate-Coverage']
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
16

Elegir «MUERTE» en Cobertura

La cobertura afectada de la póliza es MUERTE (la otra opción era SEPELIO).

Paso 16
Elemento
Cobertura
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
17

Abrir combo «País» de ocurrencia

El overlay CDK de Material despliega las opciones

Paso 17
Elemento
«País» de ocurrencia mat-select[data-slag='DeathCertificate-OccurrenceCountryCode']
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
18

Elegir «BOLIVIA» en «País» de ocurrencia

Al elegir BOLIVIA, el sistema carga las provincias de ese país (GET /Claims/Countries/1/Provinces). Si el país no fuera Bolivia, la provincia quedaría en «NO APLICA».

Paso 18
Elemento
«País» de ocurrencia mat-option:has-text('BOLIVIA')
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
19

El combo «Provincia» se cargó con las provincias de Bolivia

Provincias disponibles (10): BENI, COCHABAMBA, LA PAZ, ORURO, PANDO, POTOSI, SANTA CRUZ, CHUQUISACA, TARIJA, NO APLICA. El certificado dice LA PAZ. El municipio de ocurrencia no se pide en pantalla: lo resuelve el sistema automáticamente (capital de la provincia elegida).

Paso 19
Elemento
Combo Provincia (abierto) mat-select[data-slag='DeathCertificate-OccurrenceProvinceCode']
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
20

Elegir «LA PAZ» en Provincia

Lugar de ocurrencia completo: BOLIVIA / LA PAZ, tal como figura en el certificado de defunción.

Paso 20
Elemento
Provincia
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
21

«Guardar y continuar» del Certificado de defunción

POST …/save-partial → HTTP 204. El guardado fue aceptado y la pantalla se RECARGA por completo (comportamiento real del sistema: window.location.reload). Tras la recarga, el encabezado del documento guardado aparece marcado como completo (tilde verde).

Paso 21
Elemento
Botón Guardar y continuar button:has-text('Guardar y continuar')
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
POST /v1/app/Claims/claim/01K2ZWGTDSCC87761Q08AJY5MC/document/01K2ZS9NKK5HJ9A1Y81A98AN7D/DEATH_CERTIFICATE.pdf/save-partial 204GET /v1/app/Claims/01K2ZWGTDSCC87761Q08AJY5MC/analysis 200GET /v1/app/Claims/Countries 200GET /v1/app/Claims/Coverages/01K2ZWGTDSCC87761Q08AJY5MC/cause/01KX31REH2KJT62B7HP44GP9DE 200GET /v1/app/Claims/Countries/1/Provinces 200
22

Verificación: los datos siguen ahí después de la recarga

Reabierto el panel, los combos conservan lo elegido — Causa: «MUERTE POR ENFERMEDAD», Cobertura: «MUERTE», País: «BOLIVIA», Provincia: «LA PAZ». El guardado quedó persistido en la base, no solo en pantalla.

Paso 22
Elemento
Panel Certificado de defunción (tras recarga)
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
GET /v1/app/File/01EY5ELREXBH5IQZOGPZFYSJ2YUKK2PED2 200
Errores
Failed to load resource: net::ERR_INVALID_URL
Unexpected server response. PDF.js v4.6.688 (build: 9fa5ff466) Message: Unexpected server response (0) while retrieving PDF "data:application/pdf;base64,undefined".
ERROR UnexpectedResponseException
23

«Guardar y continuar» del documento «Cédula de identidad beneficiario»

POST …/save-partial → HTTP 204. El botón Aprobar exige que TODOS los documentos hayan pasado por Guardar y continuar (así el sistema los marca como revisados). Cada guardado vuelve a recargar la página.

Paso 23
Elemento
Botón Guardar y continuar
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
GET /v1/app/File/01EY5ELRG4NMOWW7JGKNGKB5UC22JV5LGN 200POST /v1/app/Claims/claim/01K2ZWGTDSCC87761Q08AJY5MC/document/01K2ZS9NM3K0NYP810AXSHSGY7/BENEFICIARY_IDENTIFICATION_CARD_CI_[8429883].pdf/save-partial 204GET /v1/app/Claims/01K2ZWGTDSCC87761Q08AJY5MC/analysis 200GET /v1/app/Claims/Countries 200GET /v1/app/Claims/Coverages/01K2ZWGTDSCC87761Q08AJY5MC/cause/01KX31REH2KJT62B7HP44GP9DE 200GET /v1/app/Claims/Countries/1/Provinces 200
24

«Guardar y continuar» del documento «Cédula de identidad»

POST …/save-partial → HTTP 204. El botón Aprobar exige que TODOS los documentos hayan pasado por Guardar y continuar (así el sistema los marca como revisados). Cada guardado vuelve a recargar la página.

Paso 24
Elemento
Botón Guardar y continuar
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
GET /v1/app/File/01EY5ELRDT5PSBMXJY4FFLW2PBYKIFP2D5 200POST /v1/app/Claims/claim/01K2ZWGTDSCC87761Q08AJY5MC/document/01K2ZS9NKTFZNXBMR6MTWWXCZ0/INSURED_IDENTIFICATION_CARD.pdf/save-partial 204GET /v1/app/Claims/01K2ZWGTDSCC87761Q08AJY5MC/analysis 200GET /v1/app/Claims/Countries 200GET /v1/app/Claims/Coverages/01K2ZWGTDSCC87761Q08AJY5MC/cause/01KX31REH2KJT62B7HP44GP9DE 200GET /v1/app/Claims/Countries/1/Provinces 200
Errores
Failed to load resource: net::ERR_INVALID_URL
Unexpected server response. PDF.js v4.6.688 (build: 9fa5ff466) Message: Unexpected server response (0) while retrieving PDF "data:application/pdf;base64,undefined".
ERROR UnexpectedResponseException
25

«Guardar y continuar» del documento «Hoja de Riesgo»

POST …/save-partial → HTTP 204. El botón Aprobar exige que TODOS los documentos hayan pasado por Guardar y continuar (así el sistema los marca como revisados). Cada guardado vuelve a recargar la página.

Paso 25
Elemento
Botón Guardar y continuar
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
GET /v1/app/File/01EY5ELRBR6NFAYW5YMNHZFJMNC5MRJ4SX 200POST /v1/app/Claims/claim/01K2ZWGTDSCC87761Q08AJY5MC/document/01K2ZS9NMBNP14EMM1N6V6VQCH/PAYMENT_RISK.pdf/save-partial 204GET /v1/app/Claims/01K2ZWGTDSCC87761Q08AJY5MC/analysis 200GET /v1/app/Claims/Countries 200GET /v1/app/Claims/Coverages/01K2ZWGTDSCC87761Q08AJY5MC/cause/01KX31REH2KJT62B7HP44GP9DE 200GET /v1/app/Claims/Countries/1/Provinces 200
Errores
Failed to load resource: net::ERR_INVALID_URL
Unexpected server response. PDF.js v4.6.688 (build: 9fa5ff466) Message: Unexpected server response (0) while retrieving PDF "data:application/pdf;base64,undefined".
ERROR UnexpectedResponseException
26

Los cuatro documentos quedaron marcados como revisados

Estado de los paneles: completo, completo, completo, completo. Con todos los documentos guardados, el caso ya puede aprobarse. Nota: la Hoja de Riesgo tiene 7 campos sin completar (tasa de interés, fecha de reclamo, saldos…) y el sistema igualmente permite continuar.

Paso 26
Elemento
Encabezados de paneles
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
27

El botón «Aprobar», abajo a la derecha

Aprobar cierra la etapa de análisis y envía el caso a «En proceso». Desde el fix del WI #1266 (hallazgo H12, PR #95) el click ya no ejecuta directo: primero corre la validación de documentos y después se abre un diálogo de confirmación que gatea la acción irreversible, igual que el resto de las acciones que cambian la etapa del caso.

Paso 27
Elemento
Botón Aprobar button.boton.success
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
28

El sistema pide confirmación antes de aprobar

Diálogo de confirmación nuevo (fix WI #1266): tras validar los documentos, la aprobación queda gateada por un «¿Confirma…?» con botones Cancelar/Aceptar. Recién al aceptar se ejecuta la transición de etapa.

Paso 28
Elemento
Diálogo de confirmación mat-dialog-container
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
Ventana emergente
close ¿Confirma que desea aprobar y enviar el caso a la etapa En Proceso? Cancelar close Aceptar check
closeCancelar closeAceptar check
29

Aprobando: el sistema procesa el caso

Velo de proceso visible: «Analizando información del caso». Por detrás corre PUT /Claims/{id}/analised (cierra el análisis) y PUT /Claims/{id}/saveDocumentDh (archiva los documentos en el gestor documental DH Sol).

Paso 29
Elemento
Velo de proceso
Pantalla
#/home-page/gestion-page/01K2ZWGTDSCC87761Q08AJY5MC
API
PUT /v1/app/Claims/01K2ZWGTDSCC87761Q08AJY5MC/analised 200
30

Resultado de la aprobación

Toast del sistema: «Hubo problemas al cargar y almacenar los archivos de DH Sol. Por favor, realice esta acción manualmente.». El sistema redirigió a la bandeja Mis casos.

Paso 30
Elemento
Toast + redirect
Pantalla
#/home-page
API
PUT /v1/app/Claims/01K2ZWGTDSCC87761Q08AJY5MC/saveDocumentDh 404GET /v1/app/Claims/detail/states 200GET /v1/app/Claims/state/ClassificationAnalysis 200
Errores
Failed to load resource: the server responded with a status of 404 ()
Error capturado en saveDocumentDh: Wv
Error: 404
Error 404: Documento no encontrado.
31

La bandeja «En proceso» ya muestra el caso aprobado

Filtrando por el apellido del asegurado (ALVAREZ), la tabla muestra 2 fila(s): 788 | 2025-2746 CUSSY HUAYNOCA ESTANISLAO 2345359 Banco Sol 03/09/2025 6138,79 Invalidez true En proceso check_circle cancel contract_delete cloud_upload more_horiz // 1142 Creación SISE Pendiente GONZALES CAZON TRIFON 1086400 Banco Sol 23/10/2025 6688,24 Invalidez true En proceso check_circle cancel contract_delete cloud_upload more_horiz. No se ve el caso en la tabla.

Paso 31
Elemento
Bandeja En proceso table[mat-table]
Pantalla
#/home-page
API
GET /v1/app/Claims/state/InProcess 200