metis-desk/docs/architecture/resources-global-scope/06-matriz-consumidores.md
2026-10-25 01:19:17 +02:00

14 KiB
Raw Blame History

R2.0 — Matriz de consumidores y elegibilidad

Ratificación posterior — 24 de octubre de 2026: D01–D10 y D04-R ratificadas en los términos recomendados de R2.0; variante A, Resource único con scope explícito. Solo se autoriza implementar R2.1a. El registro vigente de alcance y evidencias está en 11 — Lectores compatibles. Los estados «propuesto», «recomendado» y «pendiente» del cuerpo se conservan como evidencia de la versión documental inicial y quedan actualizados por este registro; ratificación conceptual no equivale a ejecución de R2.1b–R2.6.

Matrices normativas propuestas sujetas a decisiones de 02; no describen soporte global implementado. Compañía operativa fija A, aunque el operador tenga permitido abrir otras compañías bajo el modelo compartido. Capacidad global no permite mezclar datos de B en A.

Leyenda: P Permitida, R Rechazada, C Condicionada por las reglas numeradas, H Solo lectura histórica/existente: incluye recuperación de notas/retirada según mapper, nunca asociación nueva. Un estado H no exige que la relación esté cerrada; describe resolución de un vínculo ya existente. Todos los locales A de las filas se suponen activos; inactivos conservan lectura y recuperación según su consumidor actual. Local B siempre se rechaza dentro de A, cualquiera que sea tipo/actividad.

1. Recursos frente a consumidores principales

S-inst y S-perfil son selectores de nuevo vínculo; referencia actual desactivada se muestra aparte para conservar contexto, no como candidato nuevo. G-local es la gestión del propio Resource en A. G-global es administración del producto, siempre exige M de 03. Catálogo es producto mínimo autenticado.

Recurso SoftwareInstallation A ApplicationConfiguration A S-inst A S-perfil A G-local A G-global Catálogo global
Aplicación global activa C F01 C F02 P F03 P F03 R C F04 P
Aplicación global desactivada H F05 H F05 R R R C F04 P, estado inactivo
Aplicación particular A (serie/usage application) C F01 C F02 P F03 P F03 C F06 R R
Aplicación particular B R R R R R R R
Sistema operativo A C F01 R P F03 R C F06 R R
Licencia A R como resourceId; C como licenseResourceId F07 R R en software; C selector licencia F07 R C F06 R R
SMB A R R R R C F06 R R
Certificado A R R R R C F06 R R
Soporte A R R R R C F06 R R
Dominio Windows A R R R R C F06 R R
Resource proyectado Access A, uso general R R R R C F06 R R
Buzón A R R R R C F06 R R
Otro Resource general A R R R R C F06 R R

No existe global license/os/certificate/support/SMB/domain permitido: su creación es inválida, y un dato persistido así constituye inconsistencia, no un candidato rechazado silenciosamente. La fila de aplicación A se evalúa por serie/usage, aunque tuviera una integración local; no se globaliza esa integración. La fila Access de uso general no tiene usage application/os.

2. Consumidores operativos que no se amplían

Access indica grant/need sobre AccessItem(resource); carpetas significa FolderMapping y su cuenta/cobertura. No son un nuevo endpoint de Resource. Remoto es destino de RemoteConnection, no herramienta de asistencia. Estos contratos mantienen selección/validación propias actuales.

Recurso Access grant/need Carpeta perfil Publicación SMB Pertenencia dominio Certificado perfil Asistencia de activo Destino remoto A MailboxUse/MailConfiguration
Aplicación global activa R R R R R R R R
Aplicación global inactiva R R R R R R R R
Aplicación A C F08 C F09 R R R R C F13 R
Aplicación B R R R R R R R R
OS A C F08 C F09 R R R R C F13 R
Licencia A C F08 C F09 R R R R C F13 R
SMB A C F08 C F09 C F10 R R R C F13 R
Certificado A C F08 C F09 R R C F11 R C F13 R
Soporte A C F08 C F09 R R R C F12 C F13 R
Dominio Windows A C F08 C F09 R C F10 R R C F13 R
Access proyectado A, uso general C F08 C F09 R R R R C F13 R
Buzón A C F08 C F09 R R R R C F13 C F14
Otro general A C F08 C F09 R R R R C F13 R

Las C de Access/carpetas no afirman que una licencia, OS o aplicación tengan proyección Access hoy: requieren proyección existente válida de integración access y todas sus reglas. Sin ella se rechazan, no se crea automáticamente por tipo. Esta precisión evita atribuir a Resource una relación directa que realmente apunta a access_items. No se relaja nada por ser el mismo UUID.

RemoteReferences actualmente admite cualquier Resource local como destino, sin filtro usage; la matriz lo conserva expresamente, sin validar como diseño nuevo esa semántica ni ampliar a globales. remote-connection-policy.ts:6 access-relational.ts:32 folder-mapping-policy.ts:7.

3. Reglas completas y responsable

Los servicios de «candidatos/referencias aplicación» son contratos nuevos propuestos, sin nombre de clase definitivo. Los nombres existentes se distinguen en evidencia.

Regla Condición Servicio/capa responsable
F01 Activo de A no retirado; referencia application global elegible o local application/os A; alta/reconfiguración exige activo; pareja abierta única; versión/estado/historia locales Resources nueva resolución software + SoftwareInstallationUseCases/mapSoftwareInput/policies y repositorio Companies
F02 Perfil, persona y activo de A; perfil/persona activos y activo no retirado; aplicación global elegible o local application A; versión solo installed; pareja abierta única Resources nueva resolución application + ApplicationConfigurationUseCases/mapApplicationInput/policies Companies
F03 C autorizado; tipo correcto/activo; búsqueda antes de paginar; referencia seleccionada aparte; no completa versión/licencia ni concede permiso Resources nueva consulta candidatos; UI consumidor valida schema
F04 Manager vigente; raíz scope global; plantilla serie Aplicación global; integración ausente; global inactivo editable/reactivable; no delete ni cambio de ámbito/plantilla Identity capacidad propuesta + ResourceUseCases/rutas globales futuros en Resources
F05 UUID pertenecía a relación ya encontrada por backend; sigue estructuralmente elegible; lectura/notes/retirada permitida según estado; closed no editable; needsReview derivado solo si abierta Resolución Resources incluye inactivos + mappers/builders Companies
F06 Sesión/modelo soporte y contexto A; dueño A; plantilla fija, reglas características/integración/proyección, status y delete locales actuales ResourceInventoryService.list, ResourceUseCases y SequelizeResourceRepository existentes
F07 licenseResourceId opcional local A usage license; al añadir/cambiar activa y expiresOn inclusivo UTC; histórico conserva FK; no calcula cobertura/plazas softwareReferences/softwareLicenseAvailable y contexto local separado
F08 Existe AccessItem kind resource en workspace de A proyectado por integración access; referencias/periodos/permisos/cuentas/grupos conforme a Access; ningún global producto se proyecta AccessWorkspace/Access policy + ResourceAccessWriter local, sin nueva resolución mixta
F09 Need local, perfil/persona A, recurso Access con UNC y ámbito válidos, path/cuenta/cobertura según policy; no relación directa FolderMapping→Resource/producto folderReferences/folderAvailable y folder-mapping-account-policy Companies
F10 Proyección específica resource_network_shares o resource_directory_domains con compañía/template/stockKey correctos; activo y relación local coherentes; historia de publicación/pertenencia permanece local Lectores públicos NetworkShareReader/DirectoryDomainReader Resources; repositorios Assets propietarios
F11 Perfil A y Resource local usage certificate; actividad/vigencia y ubicación propias de configuración; nunca application global CertificateConfiguration policy Companies + inventario local
F12 Resource local support, plantilla/override efectivos; activo A y atributos de conexión locales; FK compuesta actual SequelizeSupportRepository y SupportConnection Assets
F13 Destino Resource local A; persona/origen/activo/sede y autorización teletrabajo según contrato remoto; inactivos provocan revisión/recuperación existentes remoteReferences/remoteNeedsReview Companies + list local
F14 Proyección mailbox local real; usos/configuraciones por compañía, cuenta/persona/perfil según su contrato; producto global no es buzón projectResource Resources + Mailbox/MailConfiguration Companies

software-installation-policy.ts:5 software-installation-input.mapper.ts:15 application-configuration-policy.ts:5 application-configuration-input.mapper.ts:11 software-installation-response.builder.ts:7 application-configuration-response.builder.ts:7 resource-inventory.service.ts:7 resource-compatibility.ts:13 directory-domain-reader.ts:19 network-share-reader.ts:22 sequelize-support.repository.ts:21.

4. Referencias, históricos y lectores secundarios

Consumidor adicional Local Global Regla y responsable
ResourceRevision y specification/characteristics hijas P, heredan dueño inmutable P, heredan ámbito global de raíz Mapper Resources, FK y snapshots; no endpoint directo a tabla hija
Historial SoftwareInstallation de A H de application/os/licencia A H solo application Resolver por propósito software y licencia local separado; historial no modifica Resource
Historial ApplicationConfiguration de A H application A H application Resolver por propósito aplicación, sin historial admin
Procesos de personas / revisión C, referencias operativas de A admitidas hoy C solo a través de ApplicationConfiguration de A que ya usa global ProcessReviewReader/SequelizeProcessRepository, resolución por lote de usados; no ampliación de targets remotos ni garantía de que el proceso revise software de equipo no soportado hoy
Puesto/entorno/ficha activo/perfil C, datos locales de cada relación C, nombres/origen de application usados por relaciones de A API/query consumidores; compactos con estados y contexto; nunca copiar config de B
Dashboard de compañía P, conteos operativos actuales R como Resource local contado; C nombre de producto usado ResourceDashboardReader cuenta scope company; los avisos de relaciones pueden resolver global sin contar producto como instalación
Dashboard transversal de soporte C según modelo de acceso actual C catálogo global separado, sin sumarlo a activos o uso de compañía Mantener totales consistentes con filas/joins; no nuevo permiso transversal concedido por manage
Relaciones tipadas directorio/SMB C, contexto y capacidad específicos R para application global Registry/RelationshipReadAccess y resolutores propietarios conservan contratos
Migración legacy Mailbox/Access/Support C recursos locales de compañía original R conversión a global Migración explícita conserva IDs/referencias; no se vuelve mecanismo de adopción
Coincidencias/adopción inicial C lectura local A y global mínimo C global elegible Proyección nueva de coincidencias/consulta, sin escritura de vínculos; futuro D08 aparte

Referencias estructurales inválidas o corruptas no se presentan como H/unavailable en un repositorio que reconstruye datos propios: fallan con diagnóstico interno saneado. Un UUID enviado desde fuera, ajeno o incompatible, sí se responde unavailable de forma uniforme sin identificar compañía/tipo.

5. Completitud y efectos indirectos

Esta matriz cubre los consumidores persistidos e indirectos de auditoría 05, incluidas proyecciones de IDs compartidos, ResourceRevision, licencias, Access, carpetas, directorio/SMB, asistencia, remoto, procesos y vistas web. Un nuevo consumidor debe declarar propósito, proyección, política local/global y pruebas antes de usar un servicio mixto; no obtiene acceso por importar un DTO.

El conjunto exacto de tests parametrizados se deriva de cada fila/columna P/R/C/H; T05–T08, T14, T26 y M01 del plan 08 lo exigen. No basta un camino feliz application global. Las C son condiciones conjuntas verificables y ninguna permite local B en A ni proyección global operativa.