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.
|