Estado: Aceptado
Fecha: 2026-06-04
Responsable de Decisión: Arquitectura
Relacionados:
El objetivo de largo plazo de UMS es actuar como un proveedor claro de grafo de autorizacion para los sistemas cliente. Los clientes deben poder activar, desactivar, ejecutar o denegar opciones usando un contrato estable, legible por negocio y semantico.
El grafo actual ya contiene datos ricos de autorizacion, pero tambien expone identificadores tecnicos internos (Guid) en varias secciones. Esos identificadores son utiles dentro del backend, para correlacion y para flujos de diagnostico, pero no son ideales como contrato principal para sistemas cliente descendentes.
La direccion del producto es volver el grafo expuesto al cliente:
UMS tratara el grafo de autorizacion para clientes como el contrato semantico actual y mantendra los IDs fuera de la superficie cliente por defecto.
El grafo expuesto a sistemas cliente debe apoyarse principalmente en:
codevaluedescriptioneffectsourcescopevalidUntilschemaVersionLos GUID tecnicos permanecen como detalles internos de implementacion salvo que un escenario de diagnostico o migracion los requiera.
Los siguientes identificadores no deberian ser requeridos por clientes estandar:
user.idtenant.idsystemSuite.idrole.idprofile.idbranch.idEstos valores pueden seguir existiendo en modelos internos, registros de auditoria y vistas administrativas internas, pero no deberian ser necesarios para decisiones normales de autorizacion.
Un contrato diagnostico opcional puede exponer GUIDs solo cuando:
includeIds=true o una bandera equivalente de soporteEste modo existe para troubleshooting, correlacion y soporte de migracion, no para consumo normal de clientes.
Los sistemas cliente deben usar codigos de negocio estables para interpretar el grafo:
Esto mantiene la logica del cliente independiente de identificadores generados por la base de datos.
UMS no introduce un contrato separado de refresh token para el grafo semantico. El grafo sigue siendo valido hasta validUntil. Cuando expira, el cliente se autentica de nuevo y recibe un snapshot fresco del grafo.
Esto evita estados parciales donde un token se renueva pero el modelo de autorizacion queda desfasado o inconsistente.
Para los sistemas cliente, el grafo debe ser la carga util autorizada durante su ventana de validez. El cliente no deberia inferir acceso desde GUIDs de backend ni reconsultar UMS para cada accion.
{
"schemaVersion": "1.0.0",
"graphId": "optional-support-correlation-id",
"context": {
"tenant": {
"code": "TECHNO",
"value": "Techno Logistics",
"status": "ACTIVE",
"isManagementOwner": false
},
"systemSuite": {
"code": "WMS_SUITE",
"value": "Warehouse Management Suite",
"status": "PUBLISHED"
},
"role": {
"code": "WAREHOUSE_SUPERVISOR",
"value": "Warehouse Supervisor",
"hierarchyLevel": 3
},
"profile": {
"scope": "BranchScoped",
"isActive": true
},
"branch": {
"code": "LIM-01",
"value": "Lima Main Branch"
}
},
"permissions": [
{
"resourceCode": "INVENTORY",
"actionCode": "VIEW",
"effect": "Allow",
"source": "Template"
}
],
"scopes": [
"INVENTORY.VIEW"
],
"featureFlags": [
{
"flagCode": "NEW_MENU_EXPERIMENT",
"isEnabled": true
}
],
"effectiveConfig": {
"sessionTimeoutMinutes": 60,
"accessTokenDurationMs": 3600000
},
"generatedAt": "2026-06-04T12:00:00Z",
"validUntil": "2026-06-04T13:00:00Z"
}
La estructura exacta puede evolucionar, pero el contrato debe permanecer semantico y estable para los sistemas cliente.
| Area | Guia |
|---|---|
| Graph builder | Producir campos semanticos como proyeccion cliente por defecto |
| Modelo interno | Mantener GUIDs en agregados backend y registros de auditoria |
| Endpoints cliente | Preferir respuestas basadas en code/value/description |
| Modo diagnostico | Exponer IDs solo a flujos internos autenticados de soporte |
| SDKs | Consumir campos semanticos como superficie canonica de decision |
| Documentacion | Mantener sincronizados los documentos de contrato en ingles y espanol |