metis-desk/.artifacts/account-usage/validacion.md

54 lines
3.9 KiB
Markdown
Raw Normal View History

# Edición de Uso de cuentas — 27/10/2026
En el formulario existente Editar → Uso se habilitan Personal, Compartida y Técnica.
El dominio acepta los cambios compatibles conservando UUID, estado y relaciones, y
registra la revisión con el valor previo. Repetir la edición sin cambios no añade revisiones.
Sistema y entorno siguen fijos. No se necesita migración ni cambia el contrato de guardado.
La conversión Compartida → Personal comprueba solapamientos de titulares, incluidos
los históricos, mediante la política de periodos existente. Cambiar entre Técnica y
Personal/Compartida se rechaza si hay relaciones con personas, incluso cerradas:
responsabilidad técnica y acceso tienen contratos distintos. El error traducido
ACCOUNT_USAGE_CONFLICT conserva el borrador y permite seleccionar un uso compatible.
Archivos principales:
- `modules/companies/src/web/access/shared/helpers/access-fields.ts`
- `modules/companies/src/api/domain/access/access-item.entity.ts`
- `modules/companies/src/api/domain/access/access-policy.ts`
- `modules/companies/src/api/domain/access/access-workspace.aggregate.ts`
- `modules/companies/src/api/domain/access/access.test.ts`
- `scripts/account-usage-ui-checks.py`
## Comprobaciones ejecutadas
Correctas:
- `pnpm --filter @metis/companies typecheck` y `pnpm --filter @metis/server typecheck`.
- `TSX_TSCONFIG_PATH=tsconfig.json node --import tsx --test modules/companies/src/api/domain/access/access.test.ts modules/companies/src/web/access/shared/access.test.tsx`.
- Prueba MariaDB `apps/server/src/account-deletion.integration.test.ts` con NODE_ENV=test y DB_NAME=metis_desk_test: cambio Personal → Compartida, relectura y conservación del historial, además de su cobertura de borrado.
- Biome dirigido a los diez archivos TypeScript/JSON cambiados: sin errores ni advertencias. ESLint dirigido: correcto. `git diff --check`: correcto.
- `pnpm build`: correcto, con el aviso existente de tamaño de chunks.
- `python3 scripts/visual-audit.py --account-deletion --check`: 8 comprobaciones específicas de Uso y 17 de regresión de eliminación mediante Playwright MCP Docker stdio. Edición real, selector habilitado, sistema bloqueado, selección por teclado, guardado persistido, mismo UUID/historial, cancelación sin guardar, error por relación incompatible conservando el borrador y recuperación con Compartida.
- Diálogo a 1440, 390 y 320 px sin desbordamiento horizontal. Abiertas e inspeccionadas las capturas de 320 px y error incompatible. El cuerpo mantiene desplazamiento y pie visible.
- Volumen sintético: 15 compañías; principal con 50 personas, 51 activos, 66 recursos, 50 perfiles, 50 puestos y 62 cuentas creadas durante el recorrido. Solo metis_desk_test desechable. Entorno retirado y sesión eliminada.
Se ejecutaron también `pnpm typecheck`, `pnpm lint`, `pnpm test` y `pnpm check` globales.
Mantienen fallos ajenos a este cambio: locale en el calendario vendor, dos pruebas de
textos en companies-page.test.tsx y diagnósticos de lint/formato de otros archivos.
No se modificaron vendor ni esos archivos para ocultarlos. Logs de esta ejecución en
este directorio. No se han cambiado cuentas reales durante las pruebas.
## Skills y límites
Consultadas `rdx-solid`, `ux-inputs-and-forms`, `shadcn` y las reglas React ya revisadas
para este formulario. Influyeron en la validación de relaciones en dominio, el campo
con etiqueta persistente, el uso de las primitivas existentes y la conservación del
borrador sin duplicar estado remoto. No están disponibles los auditores ux-*-audit;
no se invocaron ni instalaron. No se afirma validación WCAG completa, lector de
pantalla, contraste global o tema oscuro.
[Informe MCP](../playwright/authenticated-g5yiyswy/account-usage-report.json)
[Captura de edición a 320 px](../playwright/authenticated-g5yiyswy/account-usage-320.png)
[Error recuperable por relaciones incompatibles](../playwright/authenticated-g5yiyswy/account-usage-incompatible.png)