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

4.6 KiB

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.