metis-desk/docs/auditorias/workplace-dashboard/03-auditoria-ui-actual.md

10 KiB

Auditoría de la ficha actual

Fecha: 22 de octubre de 2026. Revisión estática, sin reproducción visual de la ficha. Evidencias E: inventario.

Pantalla y composición

Ruta: /companies/:companyId/workstations/:id. CompanyInventory selecciona la pantalla; WorkstationDetailPage recibe compañía, UUID y lookups de editor. No es un modal de detalle.

CompanyInventory
└─ WorkstationDetailPage (@container)
   ├─ BrowserLink: volver al listado
   ├─ Carga / error de inventario con reintento / UUID no encontrado
   ├─ header
   │  ├─ WorkstationNameEditor
   │  ├─ EntityStatus + sede + responsable enlazados
   │  └─ WorkstationActions
   │     ├─ Editar
   │     └─ Menú → WorkstationLifecycleDialog (desmantelar/borrar)
   ├─ WorkstationDetailContent
   │  └─ Tabs + ScrollableTabsList
   │     ├─ Información (keepMounted)
   │     │  ├─ WorkstationAssets → AssetSummaryCard / EmptyState
   │     │  ├─ WorkstationPeople → PersonAvatar + enlaces
   │     │  └─ WorkstationProfiles → EntityTable + Nuevo perfil
   │     ├─ Software (keepMounted, carga tras primera apertura)
   │     │  └─ SoftwareInstallationsPanel
   │     │     ├─ EntityTable + búsqueda + mostrar cerrados
   │     │     └─ Editor / historial / DeleteRecordDialog
   │     └─ Historial → DetailPanel → WorkstationHistory → TimeLine
   ├─ WorkProfileEditorDialog (cuando se abre)
   └─ WorkstationEditorDialog (cuando se abre)

Fuentes: E08/E11/E12/E28/E29. Información distribuye Equipamiento y Personas en dos columnas desde 1000 px de contenedor; periféricos usan dos desde 560 px. Son condiciones del código, no una validación responsive. El historial incluye estado, nombre, sede, responsable, ordenador y miembros de cada revisión, con autor y fecha; los nombres relacionados se resuelven hoy.

Matriz de cobertura

«BD» significa persistencia declarada en código; no inspección de una instancia. «API» puede requerir varias consultas. Los datos derivados no son columnas nuevas.

Información Existe en BD Disponible en API Visible en ficha Acción disponible Observaciones
Identidad y estado Sí Inventario Sí Renombrar, editar, desmantelar, borrar UUID solo en URL
Sede Sí, FK Compañía/inventario Nombre Ir a sedes Dirección y teléfono no están en cabecera
Responsable Sí, FK Compañía Nombre Ir a persona; cambiar en editor Si no hay responsable, su segmento de cabecera desaparece
Otras personas Perfiles Perfiles + compañía Sí Ir a persona Incluye personas de perfiles inactivos
Departamento Asignación de persona Compañía No Navegación por entidades existentes Contexto indirecto, requiere fecha/persona
Ordenador y miembros Sí Inventario + catálogo Sí Fichas y editar composición Tarjetas, no tabla compacta
Características completas En activo Inventario Resumen de AssetSummaryCard Abrir activo No todo el detalle técnico cabe en tarjeta
Perfiles Sí, por host Perfiles Tabla Crear y abrir perfil Nombre, persona, estado y revisión
Cuenta y notas de perfil Sí Perfiles + Access No en tabla Abrir perfil Datos ya disponibles en otras pantallas
Software del ordenador Sí Instalaciones + recursos/catálogo Pestaña Software Alta, edición, historial y borrado No agrega software de todos los miembros
Licencias de software Recurso vinculado Sí Software Abrir recurso No equivale a cumplimiento global
Carpetas/correo/apps/certificados/impresoras de perfil Sí APIs específicas No Desde ficha de perfil Agregables por perfiles confirmados
Cobertura documental de carpetas Derivada backend DTO de FolderMapping No Gestión de carpeta y accesos No prueba de acceso SMB real
Publicaciones SMB de activos Sí API paginada No En activos/recursos Publicador no significa consumidor
Identidades locales y dominio Sí APIs específicas No En activos/accesos Contexto de equipo
Interfaces, MAC e IP registradas Sí, infraestructura API infraestructura No en bloque específico Consultar activo/infraestructura Sin detección online ni topología inferida
Soporte del ordenador Sí Support API No Pantalla de activo/entorno Diferente de conexión remota de persona
Teletrabajo / conexiones de persona Sí APIs específicas No Secciones con personId No propiedades directas del puesto
Procesos de personas relacionadas Sí Process API No Abrir proceso Contexto indirecto, no incidencias
Revisiones propias Sí Inventario Historial Consultar No hay feed combinado ni diff resumido
Tickets/incidencias Archivado Sin API activa localizada No Sin acción activa No incluir widget operativo

Hallazgos priorizados

Todos los siguientes son CONFIRMADOS por código o PROPUESTOS explícitamente. No hay un fallo visual reproducido en esta auditoría. Prioridades: P1 = evita interpretación funcional equivocada; P2 = mejora consulta habitual; P3 = detalle y pulido.

ID Prioridad Evidencia y efecto Recomendación PROPUESTA
U01 P1 E09 y WorkstationPeople: personas de perfiles activos e inactivos aparecen juntas; la persona solo lleva etiqueta «persona del perfil» Separar uso actual e histórico; mantener responsable como rol independiente. No titular todo el grupo «ocupantes actuales»
U02 P1 E11: todos los miembros no principales se llaman periféricos Usar «Otros activos» o plantilla real; no inventar taxonomía
U03 P1 E09/E28: al cambiar principal, cambian perfiles/software derivados; no hay traslado de datos Explicar alcance del host y ofrecer acceso al historial para consultar composición anterior
U04 P2 E08/E12: la ficha no consulta configuraciones del perfil; estas existen en E21/E30 Resumir por perfil y enlazar su detalle; no copiar cada pantalla de configuración
U05 P2 E28: software e historial separados de la información principal Mostrar resumen útil de software y último cambio en vista general, conservando detalle secundario
U06 P2 E08: cuando no hay responsable la cabecera omite el segmento; E11 ocupa espacio de equipamiento con EmptyState y explicación Hacer explícito el responsable ausente en resumen; compactar vacíos preservando su acción de completar
U07 P2 E11 genera una tarjeta por activo y recorre búsquedas de activo/catálogo por miembro; máximo 200 Lista compacta o tabla al crecer, búsquedas/orden/paginación según patrón; riesgo de densidad y coste, sin medición realizada
U08 P2 Controller ignora catalog.isError en página; WorkstationAssets recibe catálogo vacío por defecto Identificar fallo de metadatos de catálogo sin hacer pasar su ausencia por dato real inexistente
U09 P2 E08 carga con texto; perfiles y personas comparten dependencia de perfiles aunque el responsable ya sea conocido Mantener responsable visible, estado parcial de usuarios y estructura estable. No usar cero hasta completar consulta
U10 P2 E30 useEnvironmentQueries retorna data: undefined si falta cualquiera de 11 fuentes Reutilizar lógica y queries, pero revisar el bloqueo total antes de integrar un dashboard que necesita fallos parciales
U11 P3 E29 resuelve etiquetas históricas mediante nombres actuales Describir historial como valores registrados y referencias; no afirmar snapshot de etiquetas relacionadas
U12 P3 En WorkstationProfiles, revisión usa colores amber explícitos; DESIGN no define warning/success globales Revisar uso según sistema existente, sin inventar tokens ni afirmar contraste fallido no medido

No se localizaron mecanismos de conversión, precios u opt-in relevantes para una auditoría de dark patterns en este flujo. No se ejecutó un auditor externo ni se declara cumplimiento WCAG.

Patrones acertados que conservar

  • Enlaces de entidades mediante BrowserLink, separados de acciones de edición; sedes enlaza a un destino existente.
  • Edición, creación de perfil, ciclo de vida e historial de software en componentes modales separados.
  • Cabecera de identidad, estado textual y distinción entre ordenador principal y demás miembros.
  • EntityTable en perfiles y software; valores ausentes representados con «—» en las celdas inspeccionadas.
  • Estados de error y reintento en inventario y perfiles; Personas no llama vacío a una carga fallida.
  • Perfiles filtrados por compañía y ordenador, con deduplicación de personas.
  • Software se monta después de abrir su pestaña: evita coste inicial innecesario.

Accesibilidad, usabilidad y responsive pendientes

El JSX permite comprobar regiones etiquetadas en DetailPanel, nombres accesibles en acciones, iconos decorativos ocultos, role=status/alert, fechas en TimeLine y uso de primitivas Base UI. Esto no acredita el comportamiento del teclado, el foco ni el contraste calculado.

Playwright MCP respondió a browser_tabs con una sola pestaña about:blank. La comprobación de http://localhost:5173/ con curl falló (HTTP 000, conexión rechazada/no disponible desde este entorno); ss -ltnp no pudo abrir netlink por permisos. No se confirmó otro origen Vite ni una sesión sintética utilizable. No se navegó a una ficha ni se tomó una captura. No se inició la API por la prohibición de ejecutar migraciones. La disponibilidad del MCP está comprobada; la ficha visual no.

Pendiente: escritorio/móvil, ventana baja, zoom 200/400 %, Tab/Shift+Tab, enlaces y menús, Escape y retorno de foco de editores, orden de lectura, nombre completo accesible, no desbordamiento global, contraste, lector de pantalla, estados de carga/refetch/error y volumen. Matriz propuesta de resolución y datos: escenarios. Volumen persistente utilizado: 0 compañías, 0 personas, 0 activos y 0 recursos. El fixture de diseño no sustituye esta validación.