103 lines
10 KiB
Markdown
103 lines
10 KiB
Markdown
|
|
# 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](01-inventario-funcional.md).
|
||
|
|
|
||
|
|
## 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.
|
||
|
|
|
||
|
|
```text
|
||
|
|
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](06-escenarios-mockup.md). Volumen persistente utilizado: **0 compañías, 0 personas, 0 activos y 0 recursos**. El fixture de diseño no sustituye esta validación.
|