14 KiB
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
scopeexplí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.