- 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.
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 typecheckglobal: bloqueado por el tipo opcionallocaledepackages/shadcn-ui/src/components/calendar.tsx, fuera del alcance y vendor.pnpm testcompleto, sobre una base desechable: falla en las aserciones de textos de compañía/persona decompanies-page.test.tsx, ajenas a los recursos de aplicaciones.pnpm lintypnpm checkglobales: 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.