- 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.
67 lines
4.6 KiB
Markdown
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.
|