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