metis-desk/docs/auditorias/resources-global-scope/05-consumidores-resource.md
2026-10-25 01:19:17 +02:00

19 KiB

05 — Consumidores y referencias

Inventario clasificado

CONFIRMADO salvo indicación. Compatible significa compatibilidad con la propuesta de aplicaciones globales, no que NULL funcione hoy. Las tablas de revisión usan los mismos snapshots que las raíces en software, aplicación, certificado y remoto.

Consumidor Campo / asociación Ámbito actual Validación Impacto global / clasificación
ResourceRevision resourceId Raíz local FK + mapper padre/orden/última revisión Compatible con adaptación de raíz; conservar historia
Valores/especificaciones actuales e históricos resourceId / revisionId Propiedad de Resource FK, PK compuestas y Zod Compatible directamente a nivel de FK; adaptar carga de global
SoftwareInstallation + revisiones resourceId Compañía; uso application/os softwareReferences, softwareAvailable; FK resources.id Compatible con adaptación; application global + OS local
SoftwareInstallation + revisiones licenseResourceId Compañía; uso license Política de referencias, actividad y caducidad; FK Incompatible como licencia global; conservar local
ApplicationConfiguration + revisiones resourceId Compañía; uso application applicationReferences/Available; FK Compatible con adaptación
CertificateConfiguration + revisiones resourceId Compañía; uso certificate Política certificate + FK Incompatible para globalizar en esta fase
RemoteConnection + revisiones values.targetId → targetResourceId Compañía; destino recurso remoteReferences sobre servicio local + FK Mantener local; ampliar list genérico aceptaría aplicaciones globales como destino sin decisión
SupportConnection / asset_support + revisiones resourceId Compañía; uso support Consulta support + FK id y compuesta actual Incompatible con globalización automática
resource_directory_domains resourceId,companyId,templateId Compañía, plantilla windows_domain FK compuesta, stockKey y CHECK DNS Incompatible; no modificar
asset_directory_memberships domainResourceId,companyId Compañía FK a resource_directory_domains, lector propietario Incompatible para aplicaciones; sin cambios
resource_network_shares resourceId,companyId,templateId Compañía, shared_folder FK compuesta y dirección activa única Incompatible para aplicaciones; sin cambios
asset_network_share_publications resourceId,companyId Compañía FK a resource_network_shares; predecessor mismo recurso/compañía Incompatible para aplicaciones; sin cambios
Mailbox, MailboxUse, MailConfiguration Mailbox id igual a Resource id en proyección; mailboxId Compañía projectResource + relaciones de Mailbox Indirecto; no compartir buzones por globalizar productos
AccessItem(resource), AccessRevision id igual a Resource id proyectado Workspace local Integración, projection y política access Indirecto; conservar ámbito operativo
Access grant/need/coverage resourceId en grant/need → access_items; coverage vía grant/need Workspace/compañía access-policy, referencias relacionales No son FK directa a resources; no convertir en permiso global de producto
FolderMapping + revisiones profileId, needId y accessAccountId opcional → AccessItem; need.resourceId → recurso Access proyectado Compañía folderReferences + política de cuenta/cobertura; no FK publicationId en FolderMappingInput Indirecto; no ampliar candidatos
Procesos de personas Referencias a configuraciones/remotos; resourceNames en review Compañía IDs de objetos operativos y revisión Compatible con adaptación de resolución de nombres; no nuevo ResourceId canónico
Dashboard companyId, id en recuentos, entradas, actividad Compañía opcional Consulta propietaria Adaptar clasificación global/local y enlaces; no contar catálogo como instalación
Migraciones de soporte support_tool_resource_migrations.resourceId temporal Compañía FK resources.id + toolId/companyId Migración histórica; no catálogo global vivo
Migración legacy Mailbox/Access IDs de proyección Compañía Lectura de raíz y mapper Conservar IDs y relaciones; no repetir como conversión global
Relaciones tipadas EntityReference provider resources / entityType resources:resource / companyId / id Contexto compañía Registro de capacidades + access.authorize SMB/directorio permanecen locales; no extender todos los resolutores

Evidencias: sql: resource.model.ts:19 typed: resource-relational-schema.ts:98 history: resource-revision-specifications.ts:39 softwareFK: software-installation-snapshot.ts:7 applicationFK: configuration-snapshots.ts:57 certificateFK: configuration-snapshots.ts:80 remoteFK: mail-remote-snapshots.ts:83 remotePolicy: remote-connection-policy.ts:6 supportSQL: support-migration.ts:86 directorySQL: directory-domain-migration.ts:5 directoryMembership: directory-membership-migration.ts:23 shareSQL: network-share-migration.ts:4 sharePublication: network-share-publication-migration.ts:24 projection: resource-compatibility.ts:13 accessFK: access-relational.ts:32 folderInput: folder-mapping-values.ts:5 folderPolicy: folder-mapping-policy.ts:7 folderFK: configuration-snapshots.ts:125 process: process-review-reader.ts:35 processRead: sequelize-process.repository.ts:109 dashboard: resource-dashboard-reader.ts:15 supportMigration: migrate-support-resources.ts:44 relationshipAuth: relationship-read-access.ts:7.

Consultas indirectas y frontera de módulo

Companies obtiene inventario de Resources en cinco repositorios confirmados: software, aplicaciones, certificados, remoto y procesos. Procesos consume nombres para su contexto de revisión; frontend de entorno actual y puesto también cruza configuraciones con inventario por ID. Assets usa servicios explícitos para directorio/SMB y SQL directo para asistencia. No cambiar IResourceInventoryService.list a mixto para todos: remoteReferences acepta cualquier recurso de ese contexto, y un producto global podría convertirse accidentalmente en destino operativo. service: resource-inventory.service.ts:7 softwareRead: sequelize-software-installation.repository.ts:27 applicationRead: sequelize-application-configuration.repository.ts:34 remoteRead: sequelize-remote-connection.repository.ts:92 remotePolicy: remote-connection-policy.ts:6 supportRead: sequelize-support.repository.ts:21 processRead: sequelize-process.repository.ts:109.

Las claves foráneas entrantes son el inventario más sólido de referencias persistidas, complementado por proyecciones de ID compartido, referencias tipadas y resoluciones frontend. No confundir Access.resourceId con FK directa a Resource; aunque ciertos IDs coincidan por proyección, el tipo y propietario son AccessItem. accessFK: access-relational.ts:32 projection: resource-compatibility.ts:13.

Consumidores web afectados

Familia Entradas verificadas Acción futura
Recursos listado/controlador, ResourceEditor, ResourceDetail Mantener gestión local; catálogo global y ficha con permisos explícitos
Software por activo SoftwareInstallationsPanel, SoftwareInstallationForm, SoftwareResourceCreateDialog Candidatos mixtos, origen, búsqueda y nombres de usados
Aplicaciones por perfil applicationOptions, useApplicationConfigurationFormController, ApplicationQuickEditor Misma fuente de candidatos para application
Perfil/puesto/entorno workstations/detail/controllers/use-workstation-configuration-queries.ts, work-environments/detail/hooks/use-environment-queries.ts, work-environments/shared/helpers/work-environment.model.ts Resolver globales aunque no aparezcan en inventario local; conservar agrupación por perfil/activo
Ficha propia de compañía resources/detail/ui/company-resource-related-content.tsx en Companies Enlace de recurso global no debe depender de recurso local encontrado en array
Certificados, remoto, accesos y buzones APIs inventory/catalog y ResourceEditor en sus operaciones Preservar reglas locales; no mostrar productos globales por uso genérico
Catálogos globales GlobalCatalogContent, ResourceCatalogPage Distinguir definiciones de plantilla y productos globales

Rutas relativas de esta tabla bajo modules/companies/src/web/, salvo los componentes de Resources. softwareUI: software-installations-panel.tsx:26 applicationOptions: application-configuration-form-values.ts:8 globalUI: global-catalog-content.tsx:8 resourceController: use-resources-page-controller.ts:24 resourceDetail: resource-detail.tsx:11.

RIESGO: resolver el producto solo en el formulario deja listados, historiales, fichas de compañía, puesto y entorno mostrando UUID/— o enlaces rotos. El contrato de resolución por referencia es requisito de R2.2, anterior a habilitar guardado.

Límites del inventario

La búsqueda abarcó modules/, apps/, packages/, scripts y documentación; archive se clasificó como funcionalidad retirada, sin modificar ni tomarla por consumidor activo. No se detectó otra FK Resource fuera de las familias anteriores en el código activo revisado. NO CONFIRMADO: referencias añadidas manualmente en una BD desplegada, integraciones externas o valores textuales que contengan UUID sin contrato. El borrado dinámico deberá seguir descubriendo FKs nuevas, sin depender exclusivamente de una lista fija de consumidores en este documento. remove: remove-resource.ts:37.

Entradas web que importan Resources

Inventario estático de imports de la superficie pública en otros módulos (no implica que todos deban recibir globales).

Archivo Frontera
modules/assets/src/web/directory-memberships/manage/ui/directory-membership-editor.tsx DTO/schema común
modules/assets/src/web/directory-memberships/select/ui/directory-domain-picker.tsx DTO/schema común
modules/assets/src/web/directory-memberships/shared/api/directory-membership-api.ts DTO/schema común
modules/assets/src/web/network-share-publications/shared/api/network-share-publication-api.ts DTO/schema común
modules/assets/src/web/support-connections/shared/ui/support-resource-create-dialog.tsx API web pública
modules/companies/src/web/access/shared/ui/access-form.tsx API web pública
modules/companies/src/web/application-configurations/create/ui/application-quick-editor.tsx API web pública
modules/companies/src/web/application-configurations/list/controllers/use-application-configurations-page-controller.ts API web pública
modules/companies/src/web/application-configurations/shared/controllers/use-application-configuration-form-controller.ts API web pública
modules/companies/src/web/application-configurations/shared/helpers/application-configuration-form-values.ts DTO/schema común
modules/companies/src/web/certificate-configurations/create/ui/certificate-quick-editor.tsx API web pública
modules/companies/src/web/certificate-configurations/list/controllers/use-certificate-configurations-page-controller.ts API web pública
modules/companies/src/web/certificate-configurations/shared/controllers/use-certificate-configuration-form-controller.ts API web pública
modules/companies/src/web/certificate-configurations/shared/helpers/certificate-configuration-form-values.ts DTO/schema común
modules/companies/src/web/companies/detail/controllers/use-company-detail-controller.ts API web pública
modules/companies/src/web/companies/detail/ui/company-section.tsx API web pública
modules/companies/src/web/mailboxes/shared/ui/mailbox-form.tsx API web pública
modules/companies/src/web/remote-connections/create/ui/remote-quick-editor.tsx API web pública
modules/companies/src/web/remote-connections/detail/helpers/remote-endpoints.ts DTO/schema común
modules/companies/src/web/remote-connections/detail/ui/remote-summary.tsx DTO/schema común
modules/companies/src/web/remote-connections/list/controllers/use-remote-connections-page-controller.ts API web pública
modules/companies/src/web/remote-connections/shared/controllers/use-remote-connection-form-controller.ts API web pública
modules/companies/src/web/resources/detail/ui/company-resource-related-content.tsx DTO/schema común
modules/companies/src/web/software-installations/create/ui/software-resource-create-dialog.tsx API web pública
modules/companies/src/web/software-installations/list/ui/software-installations-panel.tsx API web pública
modules/companies/src/web/work-environments/detail/hooks/use-environment-queries.ts API web pública
modules/companies/src/web/work-environments/shared/helpers/work-environment.model.ts DTO/schema común
modules/companies/src/web/workspace/catalogs/ui/global-catalog-content.tsx API web pública
modules/companies/src/web/workstations/detail/controllers/use-workstation-configuration-queries.ts API web pública