metis-desk/docs/aplicaciones-disponibles-por-compania.md
David 91f1d07e97 Add tests for current operating systems and workplace asset management
- Implement `current-operating-systems-ui.test.py` to validate the functionality of current operating systems in the UI, including tests for source and states, computer changes, responsive design, error handling, and version saving.
- Create `workplace-add-asset.test.py` to test the addition of assets to workstations, covering scenarios such as conflict resolution, responsive design on mobile, error handling during asset creation, and HTTP guards for asset management.
2026-10-25 13:46:06 +01:00

67 lines
4.6 KiB
Markdown

# Aplicaciones disponibles por compañía
En Recursos, la pestaña **Aplicación** combina el catálogo global con las aplicaciones
particulares de la compañía. El origen distingue productos homónimos, sin fusionarlos
ni copiar los globales. El resto de pestañas y el inventario particular mantienen sus
contratos de compañía.
El botón **Añadir aplicación de compañía** abre el formulario existente con la plantilla
de aplicación preseleccionada. El servidor guarda el recurso únicamente en la compañía
de contexto. Las globales abren su ficha de catálogo; las particulares conservan sus
acciones de consulta, edición, activación, desactivación y borrado.
`GET /api/resource-application-candidates/:companyId/catalog` exige sesión y valida la
existencia de la compañía antes de consultar datos. Devuelve resúmenes públicos de
aplicaciones globales y propias, sin notas, historial ni datos de otras compañías.
Utiliza los criterios de búsqueda, estado, orden y paginación del catálogo global,
con cursor ligado a compañía y filtros. Las plantillas propias con uso `application`
también se incluyen; se excluyen sistemas operativos y licencias.
La UI utiliza `CursorEntityTable`, mantiene los criterios en la URL y reinicia la página
al cambiar búsqueda, orden, estado o tamaño. El proveedor ausente se representa con `—`.
Los cambios locales invalidan el catálogo de esa compañía y sus candidatos; los cambios
globales invalidan los catálogos combinados. No se guarda una segunda copia del estado remoto.
Los selectores existentes `ResourceApplicationSelect` y `SoftwareApplicationSelect`
consultan candidatos activos de ambos ámbitos, conservando sus reglas por propósito:
configuraciones de perfil solo aceptan aplicaciones; instalaciones admiten además SO locales.
Para asociar globales deben estar habilitados `RESOURCE_GLOBAL_CATALOG_ENABLED`,
`RESOURCE_GLOBAL_SOFTWARE_ENABLED`, `RESOURCE_GLOBAL_SOFTWARE_CANDIDATES_ENABLED` y
`RESOURCE_GLOBAL_PROFILE_ENABLED`, tras migrar el esquema. Consultar no equivale a habilitar
asociaciones y las lecturas históricas permanecen disponibles con los gates cerrados.
La integración se comprueba con `python3 scripts/resource-scope-test.py --catalog`,
`--software` y `--profiles`. El recorrido de interfaz se reproduce mediante
`python3 scripts/visual-audit.py --company-applications --check`: utiliza exclusivamente
una instalación desechable `metis_desk_test`, con 15 compañías, al menos 50 personas,
activos, perfiles, puestos y aplicaciones propias en la principal, y 60 aplicaciones globales.
No utiliza datos reales ni credenciales del entorno habitual.
Skills consultadas: `ux-tables` para procedencia, acciones y paginación; `shadcn` para
integrar los componentes instalados; `rdx-solid` para contratos, aislamiento y pruebas;
`vercel-react-best-practices` para derivar datos y mantener el estado remoto en TanStack Query.
Los auditores especializados no están instalados; las verificaciones disponibles se
realizan mediante Playwright MCP, sin instalar dependencias adicionales.
## Verificación de la entrega
- Typecheck dirigido de Resources, Server y Companies: correcto.
- Biome y ESLint sobre los archivos del cambio, sintaxis Python y `git diff --check`: correctos.
- Pruebas de Resources: 105 correctas. Prueba de rutas: correcta.
- Integraciones desechables: catálogo 12, software 13 y perfiles 11 comprobaciones correctas.
- Playwright MCP: alta local desde el formulario, aislamiento entre compañías, búsqueda,
paginación, vacío, error/reintento, selectores de software y perfil, Escape y retorno del foco.
Cuatro anchos: 1440, 1280, 768 y 390 px; capturas amplias y estrechas inspeccionadas.
Informe reproducible: `.artifacts/playwright/authenticated-dhutc3tz/company-applications-report.json`.
- `pnpm build`: correcto; se conserva el aviso de tamaño de chunks.
- `pnpm typecheck` global: bloqueado por el tipo opcional `locale` de
`packages/shadcn-ui/src/components/calendar.tsx`, fuera del alcance y vendor.
- `pnpm test` completo, sobre una base desechable: falla en las aserciones de textos
de compañía/persona de `companies-page.test.tsx`, ajenas a los recursos de aplicaciones.
- `pnpm lint` y `pnpm check` globales: fallos de estilo en código concurrente de fotos
de personas y procesos de Companies. No se han modificado esos archivos para esta tarea.
En la instalación habitual se han habilitado los gates existentes y reiniciado el entorno.
La comprobación final de solo lectura en Abeto Design devuelve las 40 aplicaciones
globales y mantiene sus 107 buzones. No se han creado aplicaciones de prueba en la base habitual.