Cumplimiento axe nielsen prototipo back office - martin-hendricks/MISO-PROYECTO-FINAL-SOLVENTA GitHub Wiki

Cumplimiento Axe y Nielsen · prototipo back-office

Auditoría de accesibilidad (WCAG 2.2 A/AA, lo que se puede inspeccionar en diseño) y de usabilidad (10 heurísticas de Nielsen) sobre la página Figma Back-office · Asesor / Operador. Incluye Figma Play y si el destino Clientes sirve para administrar clientes.

Fuentes: Prototipo web/móvil §6 · Resultado de validación usabilidad de usuario · Arquitectura de información · Cliente L1 · HU-8 · inspección Figma 20 sep 2026

Figma: Back-office · Asesor / Operador (127:2). Pantallas de asesor/operador + CRUD de clientes. TopNavAdmin, BadgeBO (incl. Activo/Inactivo), DialogConfirm, EmptyState (incl. SinClientes).

axe-core necesita un DOM: no corre sobre Figma. La certificación WCAG del canal (axe + teclado) queda para PF2. Aquí se inspeccionan tokens, contraste, hit targets y nombres de capa, igual que en Cumplimiento Axe y Nielsen · prototipo cliente.


Conclusión

El 20 sep 2026 el tab Clientes abría Mi cartera (cola COT/POL). Ese hallazgo está cerrado: Clientes es CRUD de usuarios web/móvil; Cotizaciones y Pólizas tienen listas propias; el TopNav navega. Siguen abiertos el BtnCalcular que apunta al error, chips a 35 px, el slug bo-pago-parametrico y starting points extra de operador.

Pregunta Respuesta
¿Un asesor puede administrar clientes? Sí, en prototipo. Lista, búsqueda, ficha, alta, edición y baja (con motivo). El objeto es la persona, no la póliza.
¿Play recorre los destinos del wiki? Sí el TopNav (Clientes / Cotizaciones / Pólizas; Avisos → sin permiso para el asesor). Avisos operador y renovar siguen teniendo deep link. Un solo starting point.
¿WCAG de contraste? Casi. Pares del DS cumplen. Chips de filtro a 35 px. Check decorativo 1.44:1 en cola vacía.
¿Nielsen? H3 / H5 / H7 / H9 se sostienen. H1, H2, H4, H6 mejoran (ramos L1, objeto persona). H8 / H10 parciales.

1. Clientes administra personas (cerrado 20 sep 2026)

TopNavAdmin Clientes abre shell-asesor titulado Clientes. Cola de terceros, no de pólizas.

Lo que un asesor necesita sobre un cliente Qué hay
Buscar / filtrar personas Campo Buscar por nombre o documento
Abrir ficha (documento, contacto, consentimientos) Fila → cliente-detalle. Canal Web/Android
Alta o edición de tercero cliente-form / cliente-form-editar
Baja cliente-baja (motivo; no borra pólizas vigentes)
Ver sus cotizaciones y pólizas Conteos en la ficha; las colas viven en los tabs Cotizaciones y Pólizas
Cotizar para ese cliente CTA Cotizar en la ficha → asesor-cotizacion

Frames: shell-asesor, cliente-detalle, cliente-form, cliente-form-editar, cliente-baja, lista-clientes-vacia.

shell-asesor: tab Clientes, lista de personas, canal Web/Android


2. Mezcla de contextos (mismas reglas que Karen)

De la validación del 18 sep 2026: falta de contexto (ramo + estado + paso), un flujo partido entre cards y tabs, SOAT/Hogar, “paramétrico”, stepper opaco.

Hallazgo (cliente) BO después del redibujo
Cards sin qué objeto es Tab Clientes = personas. Cotizaciones = COT-*. Pólizas = POL-*
SOAT / Hogar no son L1 (PDF §2.2) Listas y form de cotización usan dispositivo, vida, clima y vuelos, hipotecario
Un flujo partido entre CTA y tabs Cotizar es CTA del tab Cotizaciones y de la ficha; ya no vive en Clientes
Avisos vs otro rol El home del asesor ya no muestra el KPI de avisos. TopNav Avisos → shell-asesor-sin-permiso
“Paramétrico” Frame bo-pago-parametrico; el cuerpo ya dice Pago automático (sigue el slug)
Hilo cotizar → emitir → pagar Stepper en asesor-emision; las colas muestran estado de BadgeBO

asesor-cotizacion: Protección de dispositivo, no SOAT


3. Figma Play

Starting points en el archivo: uno. Back-office · Asesor / Operador → bo-login (221:1128). Entrar abre shell-asesor (Clientes). Cerrar sesión vuelve al login.

El TopNav sí reacciona en los shells (Clientes, Cotizaciones, Pólizas, Avisos). CRUD: Nuevo → form → lista; fila → ficha; Editar / Dar de baja / Cotizar.

Queda: BtnCalcular en el camino feliz sigue yendo a asesor-cotizacion-error. Los starting points de operador no se añadieron al archivo (los deep links del wiki siguen).

bo-login --Entrar--> shell-asesor (Clientes)
  --Nuevo cliente-->  cliente-form --> shell-asesor
  --fila-->           cliente-detalle --Editar--> cliente-form-editar
                                 --Dar de baja--> cliente-baja --> shell
                                 --Cotizar--> asesor-cotizacion
TopNav --> lista-cotizaciones | lista-polizas | shell-asesor-sin-permiso
Cerrar sesión --> bo-login

Play del wiki:

Flujo URL En el archivo
Asesor · login proto 221-1128 Único starting point
Asesor · clientes proto 131-2 Deep link a la lista; Play arranca en login
Asesor · cotizaciones proto 213-465 Deep link; TopNav también llega
Operador · avisos proto 135-129 Deep link; no está en Flow
Operador · ciclo de vida proto 137-312 Deep link; no está en Flow

Cola de avisos: el asesor llega al sin-permiso; el operador usa este deep link


4. Inspección WCAG (20 sep 2026)

Contraste sobre fills (WCAG 2.2 1.4.3 AA: 4.5:1 texto normal, 3:1 grande). Mismos pares Light del DS que el cliente.

Par Ratio 1.4.3 AA Dónde en el BO
on-surface #181c1c / surface #f7faf9 16.4:1 cumple Títulos, valores, nombres de fila
on-surface-variant #3e4948 / surface 8.9:1 cumple Labels de campo, encabezados de tabla (11 px), footer
on-primary #ffffff / primary #005050 9.3:1 cumple CTA filled, badges Aprobada / Pagada
Error #ba1a1a / surface ≥ 5:1 cumple Valor asegurado inválido; motivo vacío en DialogConfirm
Badge En revisión #506969 / #cce8e7 4.56:1 cumple (límite) 12 px; no hay margen
Check ✓ #005050 / fill #006a6a 1.44:1 no EmptyState / ColaVacia; el mensaje de texto sí contrasta
Condición BO Nota
Estado nunca solo por color cumple Cada BadgeBO lleva texto (En revisión, Aprobada, Activo, Inactivo, …)
Error con texto, no solo borde cumple Hint El valor asegurado debe estar entre $200.000 y $8.000.000 COP.; El motivo es obligatorio para rechazar.
Hit targets botones cumple 49–51 px
Filtros chip (Pendientes / Aprobados / …) parcial 35 px de alto; Material y la auditoría cliente piden ≥ 48. WCAG 2.2 2.5.8 AA pide 24 px: los chips lo cumplen
Nombres de capa ≈ lo que leería un lector cumple en Clientes Tab Clientes = H1 Clientes
Contraste helper #6e7979 (cliente) n/a El BO usa #3e4948 / #ba1a1a en labels de error, no el helper 4.28:1

Regla para PF2: chips de filtro a 48 px; no poner un check teal sobre teal; el nombre del destino y el H1 de la vista deben ser el mismo objeto.

Pago de bajo monto: copy “Pago automático”, frame bo-pago-parametrico


5. Matriz Nielsen · back-office

No copia la matriz del cliente S7. Cada H se puntúa sobre este prototipo (cumple / parcial / no). La columna Karen indica el hallazgo de la sesión de cliente que se repite aquí.

Heurística Karen (cliente) BO Qué se ve
H1 Visibilidad del estado Éxito sin ramo; paso opaco parcial Clientes / Cotizaciones / Pólizas son objetos distintos. Stepper solo en emisión.
H2 Lenguaje del usuario “paramétrico”; jerga parcial Cuerpo de pago dice Pago automático. Slug bo-pago-parametrico.
H3 Control y libertad Volver presente cumple ← Cotizaciones, ← Avisos, baja Cancelar, TopNav con destino.
H4 Consistencia y estándares SOAT/Hogar; cards vs tabs parcial Ramos L1 en listas y cotización. Avisos operador aún puede mostrar Hogar en el detalle del caso.
H5 Prevención de errores Rechazo con motivo cumple Valor fuera de rango; rechazo sin motivo; póliza no vigente / ya cancelada; baja con motivo.
H6 Reconocer antes que recordar Cards sin ramo + estado parcial Ficha de cliente. Columna RAMO L1. Filas de cliente se abren.
H7 Flexibilidad y eficiencia Atajos reconocibles cumple TopNav de cuatro destinos en Play. CRUD y Cotizar desde la ficha.
H8 Diseño minimalista Demasiados CTA del mismo peso parcial Un CTA principal por destino. Cuatro KPIs por lista.
H9 Recuperación de errores Misma ruta, otro estado cumple asesor-cotizacion-error, EmptyState (SinPermiso, ColaVacia, SinClientes), bloqueos de ciclo de vida.
H10 Ayuda y documentación Consentimiento sin documento parcial Hints de validación y copy de baja (habeas data). Footer Accesibilidad no abre nada.

6. Deudas

Cerrado en este paso: CRUD de Clientes, listas Cotizaciones/Pólizas, TopNav en Play, ramos L1 en cotización y colas.

Siguen:

  • BtnCalcular en el camino feliz no debe ir a asesor-cotizacion-error.
  • Salidas de bloqueo: no vigente → Pólizas, no a cotización; ya cancelada → Pólizas, no a renovar.
  • Starting points de operador en el archivo (hoy son deep links).
  • Renombrar frame bo-pago-parametrico alineado a Pago automático.
  • Chips de filtro a 48 px; check del empty state con contraste ≥ 3:1.
  • Copy Hogar que quede en el detalle de avisos.

7. Fuera de alcance

Navegación por teclado en Figma Play, breakpoints 768/390 (el BO es escritorio 1440), portal de socios, axe/TalkBack sobre código (PF2), clonar una página “S7” del back-office.