UMS es unportal de administración de identidades y autorizaciónde clase enterprise (B2B SaaS multi-tenant). No es un producto de consumo masivo: sus usuarios son administradores IT, analistas de seguridad, aprobadores de accesos y —marginalmente— usuarios finales B2B que completan formularios de onboarding.
La experiencia de usuario tiene tres capas funcionalmente distintas con audiencias distintas:
| Capa | Interfaz | Audiencia principal | |
|---|---|---|---|
| PAP — Policy Administration Point | Portal administrativo complejo | Admins de plataforma, admins de tenant | |
| Portal de aprobaciones | Bandeja de tareas + formularios de decisión | Aprobadores, sponsors | |
| Login Portal | Pantalla de autenticación personalizable por tenant | Usuarios finales B2B | ### Principio de diseño central |
Complejidad bajo la superficie, claridad en la superficie.UMS gestiona conceptos técnicamente densos (grafos de permisos, jerarquías de roles, templates, RLS). El diseño debeesconder la complejidad técnicatras interfaces orientadas a tareas de negocio: “Aprobar acceso de este usuario”, “Ver qué permisos tiene esta persona”, “Bloquear acceso por documento vencido”.
Objetivos primarios:
Contexto:Responsable IT de una empresa cliente (ej: Logistics Corp). Gestiona usuarios de su organización, asigna perfiles, aprueba solicitudes de acceso y revisa documentos de cumplimiento.
Objetivos primarios:
Frecuencia de uso:Alta, 2-4 veces por día
Contexto:Manager o Jefe de área que recibe solicitudes de aprobación: onboarding de nuevo usuario, solicitud de acceso externo, promoción de rol. No es técnico; opera principalmente desde la bandeja de aprobaciones.
Objetivos primarios:
Frecuencia de uso:Esporádica, picos en momentos de onboarding masivo
Contexto:Empleado interno que solicita acceso externo para un contratista o partner B2B. Inicia el flujo de External Access Request.
Objetivos primarios:
Objetivos primarios:
Contexto:Empleado de empresa cliente (ej: operador de montacargas en Logistics Corp) que debe autenticarse y, en ocasiones, subir documentos o completar su perfil de onboarding.
Objetivos primarios:
UMS Portal
├── Dashboard Global
│
├── IDENTITY (Identidad)
│ ├── Tenants (Organizaciones)
│ │ ├── Árbol jerárquico de tenants
│ │ └── Detalle de tenant + configuración IdP
│ ├── Usuarios
│ │ ├── Lista filtrable de usuarios
│ │ ├── Detalle de usuario (perfil, estado, documentos, permisos)
│ │ └── Registro de nuevo usuario
│ └── Sedes (Branches)
│
├── AUTHORIZATION (Autorización)
│ ├── Sistemas (System Suites)
│ │ ├── Lista de sistemas registrados
│ │ └── Topología: Módulos → Menús → Opciones → Acciones
│ ├── Roles
│ │ ├── Jerarquía de roles por sistema
│ │ └── Criterios de promoción (IGA)
│ ├── Templates de Permisos
│ │ ├── Lista + estado (DRAFT / PUBLISHED / DEPRECATED)
│ │ └── Editor de permisos del template
│ └── Perfiles
│ ├── Lista de perfiles activos
│ └── Asignación de templates a perfiles
│
├── APPROVALS (Aprobaciones)
│ ├── Bandeja de Aprobaciones (Inbox)
│ │ ├── Pendientes (con indicador SLA)
│ │ ├── Historial (aprobadas / rechazadas / vencidas)
│ │ └── Detalle de solicitud + formulario de decisión
│ └── Configuración de Workflows
│ └── Definición de flujos, aprobadores, SLA
│
├── IGA (Governance)
│ ├── Procesos de Promoción
│ │ ├── Lista de procesos activos por estado
│ │ └── Detalle: criterios cumplidos / pendientes
│ └── Delegaciones
│ ├── Delegaciones activas
│ └── Crear / revocar delegación
│
├── COMPLIANCE (Cumplimiento)
│ ├── Dashboard de Cumplimiento
│ │ ├── Documentos próximos a vencer
│ │ └── Usuarios con documentos críticos vencidos
│ ├── Tipos de Documento
│ │ ├── Catálogo con criticidad y políticas
│ │ └── Reglas de notificación
│ ├── Documentos de Usuario
│ │ ├── Bandeja de validación (PENDING_REVIEW)
│ │ └── Historial de documentos por usuario
│ └── Políticas de Acceso por Expiración
│
├── CONFIGURATION (Configuración)
│ ├── Parámetros del Sistema (jerarquía ENV > SYSTEM > TENANT)
│ ├── Feature Flags
│ │ └── Toggles con targeting multi-dimensional
│ └── Configuración IdP (por tenant)
│
├── AUDIT (Auditoría)
│ ├── Log de Eventos de Dominio
│ ├── Log de Eventos de Seguridad
│ └── Cambios de Permisos
│
└── HERRAMIENTAS
├── Visualizador del Grafo de Permisos
└── Monitor de Sesiones Activas
[Admin de Tenant]
│
▼
Dashboard → Usuarios → Nuevo Usuario
│
▼
Formulario: nombre, email, categoría (INTERNAL), sede
│
▼
Sistema asigna: status=PENDING
Auto-asignación de template si aplica regla (FS-06)
│
├─ [SIN workflow de aprobación] → status=ACTIVE automáticamente
│
└─ [CON workflow de aprobación] → Notificación al aprobador
│
▼
Bandeja del Aprobador → Revisar → Aprobar
│
▼
status=ACTIVE → Notificación al usuario registrado
Pantallas involucradas:Dashboard, Lista de Usuarios, Formulario de Usuario, Detalle de Usuario, Bandeja de Aprobaciones, Detalle de Solicitud
[Sponsor User]
│
▼
Aprobaciones → Nueva Solicitud → Tipo: B2B Access Request
│
▼
Formulario: datos del usuario externo, organización,
justificación, sistema solicitado,
documentos adjuntos requeridos
│
▼
Solicitud creada → status=PENDING
Notificación al aprobador designado por workflow
│
▼
[Aprobador]
Bandeja → Solicitud con risk_score visible
→ Revisar contexto, documentos, sponsor
→ Decisión: APPROVE / REJECT / ESCALATE / DELEGATE
│
├─ APPROVED → Usuario B2B creado, perfil asignado, notificación
└─ REJECTED → Notificación al sponsor con motivo
Pantallas involucradas:Bandeja de Aprobaciones, Formulario de Nueva Solicitud, Detalle de Solicitud con panel de decisión, Historial de Solicitudes
[Usuario Final]
│
▼
Mi Perfil → Documentos → Subir Documento
(tipo, archivo, fecha emisión, fecha vencimiento)
│
▼
status=PENDING_REVIEW
[Compliance Officer]
│
▼
Compliance → Bandeja de Validación → Documento pendiente
→ Previsualización + metadatos
→ VALIDAR o RECHAZAR (con motivo)
│
├─ VALID → Documento activo, acceso habilitado si era bloqueante
└─ REJECTED → Notificación al usuario, debe resubir
│
▼
[Sistema — background worker cada hora]
Si fecha_vencimiento <= hoy:
status=EXPIRED →
EnforcementAction según política:
BLOCK_ACCESS / NOTIFY_ONLY / DOWNGRADE_ROLE / SUSPEND
Pantallas involucradas:Mi Perfil (sección Documentos), Bandeja de Validación de Documentos, Dashboard de Cumplimiento (alerta de expiración)
[Admin / Compliance Officer]
│
▼
Herramientas → Visualizador de Grafo de Permisos
│
▼
Seleccionar: Usuario + Sistema + [Sede opcional]
│
▼
Visualización del grafo compilado:
- Perfiles activos del usuario
- Templates vinculados a cada perfil
- ALLOW / DENY por acción (con fuente del permiso)
- Regla de Deny Dominance destacada si aplica
│
▼
[Opcional] Exportar reporte en JSON / CSV
Pantallas involucradas:Herramientas → Visualizador de Grafo
[Sistema — background worker continuo]
Evaluando: UserPromotionProcess.status=EVALUATING
Verifica flags: seniority, compliance docs, business score
│
├─ No cumplido → continúa EVALUATING (visible en IGA)
└─ Cumplido → status=CRITERIA_MET → Crea ApprovalRequest
│
[Aprobador IGA]
▼
Bandeja → Solicitud de tipo ROLE_PROMOTION
→ Ver: usuario, rol actual, rol destino, criterios cumplidos
→ APPROVE / REJECT
│
├─ APPROVED → status=PROMOTED, perfil actualizado
└─ REJECTED → status=EVALUATING (reinicia ciclo)
Pantallas involucradas:IGA → Procesos de Promoción (lista + detalle), Bandeja de Aprobaciones
[Usuario Final B2B]
│
▼
Downstream App → Redirect a UMS Login Portal
(URL incluye: tenant_id, system_id, redirect_uri)
│
▼
Login Portal muestra:
- Logo y branding del tenant
- Métodos de auth disponibles:
• Passkey / FIDO2
• Magic Link
• Email + MFA
• SSO (si tenant tiene IdP externo)
│
▼
Sistema calcula risk_score (6 factores):
score < 20 → login directo
score 20-40 → MFA recomendado / requerido
score > 70 → MFA + Security Review
│
▼
Auth exitosa → JWT firmado → Redirect a downstream app
Pantallas involucradas:Login Portal (pantalla única, altamente customizable por tenant)
Nivel 1 (Módulo) Nivel 2 (Sección) Nivel 3 (Vista de detalle)
───────────────── ────────────────────── ──────────────────────────
Identity → Tenants → Detalle de Tenant
Usuarios → Detalle de Usuario
Sedes → Detalle de Sede
Authorization → Sistemas → Topología del Sistema
Roles → Detalle de Rol + Jerarquía
Templates → Editor de Template
Perfiles → Detalle de Perfil
Approvals → Bandeja → Detalle de Solicitud
Configuración → Editor de Workflow
IGA → Promociones → Detalle de Proceso
Delegaciones → Detalle de Delegación
Compliance → Dashboard → (vista de cuadro de mando)
Tipos de Documento → Detalle de Tipo
Documentos → Detalle de Documento
Políticas → Editor de Política
Configuration → Parámetros → Editor de Parámetro
Feature Flags → Editor de Flag
Configuración IdP → Editor de IdP
Audit → Eventos de Dominio → Detalle de Evento
Eventos de Seguridad → Detalle de Evento
Cambios de Permisos → Detalle de Cambio
Herramientas → Grafo de Permisos → Vista del grafo
Monitor de Sesiones → Vista de sesiones
Navegación contextual requerida: al ver el detalle de un usuario, deben existir accesos rápidos a sus perfiles, sus documentos y sus solicitudes de aprobación pendientes sin salir de la vista.
┌─────────────────────────────────────────────────────────────────┐
│ [UMS Logo] [Tenant Switcher ▼] [ 3] [Avatar ▼] │
├────────────┬────────────────────────────────────────────────────┤
│ │ │
│ SIDEBAR │ CONTENT AREA │
│ │ │
│ ● Dashboard│ │
│ │ │
│ IDENTITY │ │
│ Tenants │ │
│ Usuarios │ │
│ Sedes │ │
│ │ │
│ AUTHORIZ. │ │
│ Sistemas │ │
│ Roles │ │
│ Templates │ │
│ Perfiles │ │
│ │ │
│ APPROVALS │ │
│ Bandeja ⁽³⁾│ │
│ Workflows │ │
│ │ │
│ IGA │ │
│ Promoc. │ │
│ Delegac. │ │
│ │ │
│ COMPLIANCE │ │
│ Dashboard │ │
│ Documentos│ │
│ Políticas │ │
│ │ │
│ CONFIG │ │
│ Parámetros│ │
│ Feat. Flags│ │
│ IdP │ │
│ │ │
│ AUDIT │ │
│ Eventos │ │
│ │ │
│ HERRAM. │ │
│ Grafo │ │
│ Sesiones │ │
│ │ │
└────────────┴────────────────────────────────────────────────────┘
Identity > Usuarios > Maria García| Sección sidebar | Super Admin | Tenant Admin | Approver | Compliance | IGA Analyst | |
|---|---|---|---|---|---|---|
| Identity | completo | su tenant | lectura | lectura | ||
| Authorization | completo | parcial | lectura | lectura | ||
| Approvals | ||||||
| IGA | ||||||
| Compliance | lectura | |||||
| Configuration | parcial | |||||
| Audit | su tenant | lectura | ||||
| Herramientas | — |
┌─────────────────────────────────────────────────────────────────┐
│ Dashboard Hoy: 15 May 2026│
├───────────┬───────────┬───────────┬─────────────────────────────┤
│ USUARIOS │ PENDIENTES│ DOCS │ ALERTAS CRÍTICAS │
│ ACTIVOS │ APROBAR │ POR VENCER│ │
│ │ │ │ 3 usuarios con docs │
│ 1,247 │ 8 │ 15 │ CRÍTICOS vencidos │
│ ↑ 12 hoy │ 2 SLA < 1h│ < 30 días │ [Ver Compliance] │
│ │ │ │ │
│ [Ver todos│[Ir Bandeja│[Ver Docs] │ SLA vencido: Solicitud │
│ usuarios]│ ] │ │ #REQ-0041 — B2B Access │
│ │ │ │ [Ir a solicitud] │
└───────────┴───────────┴───────────┴─────────────────────────────┤
│ │
│ ACTIVIDAD RECIENTE SOLICITUDES PENDIENTES│
│ ───────────────── ──────────────────────│
│ • maria.garcia activada hace 5m #REQ-0041 B2B Access │
│ • Template "Logistics" publ. hace 1h SLA: vence en 1h │
│ • juan.perez BLOCKED hace 2h #REQ-0039 Onboarding │
│ (doc CRITICAL vencido) SLA: vence en 4h │
│ • Sistema "Route Planner" hace 3h #REQ-0038 Promoción │
│ actualizado SLA: vence mañana │
│ [Ver audit log completo] [Ver todos →] │
│ │
└──────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ Identity > Usuarios │
│ [+ Nuevo Usuario] │
├──────────────────────────────────────────────────────────────────┤
│ Buscar por nombre, email... [Tenant ▼] [Status ▼] [Cat ▼]│
│ [Exportar CSV] │
├────┬──────────────────┬─────────────────┬────────┬──────┬───────┤
│ │ NOMBRE │ EMAIL │ STATUS │ CAT │ACCIONES│
├────┼──────────────────┼─────────────────┼────────┼──────┼───────┤
│ │ Maria García │ m.garcia@co.com │ ACTIVE │ INT │ ⋯ │
│ │ Juan Pérez │ j.perez@co.com │ BLOCKED│ EXT │ ⋯ │
│ │ │ │ Doc │ │ │
│ │ Carlos Lima │ c.lima@b2b.com │ PENDING│ B2B │ ⋯ │
│ │ │ │ ⏳ Apro│ │ │
│ │ Ana Torres │ a.torres@co.com │ ACTIVE │ INT │ ⋯ │
├────┴──────────────────┴─────────────────┴────────┴──────┴───────┤
│ Mostrando 1-25 de 1,247 [< Prev] Pág 1 de 50 [Next >] │
└──────────────────────────────────────────────────────────────────┘
Notas de implementación:
┌──────────────────────────────────────────────────────────────────┐
│ Identity > Usuarios > Maria García [Editar] │
├──────────────────────────────────────────────────────────────────┤
│ ┌────────┐ Maria García Status: ● ACTIVE │
│ │ Avatar │ maria.garcia@logistics.com Cat: INTERNAL │
│ │ MG │ Tenant: Logistics Corp Sede: Callao │
│ └────────┘ Creado: 2026-01-10 Último login: Hoy │
│ │
│ ────────────────────────────────────────────────────────────── │
│ TABS: [Perfiles] [Documentos] [Solicitudes] [Sesiones] [Audit] │
│ ────────────────────────────────────────────────────────────── │
│ │
│ [TAB ACTIVO: PERFILES] [+ Asignar Perfil] │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Perfil: Logistics Analyst │ │
│ │ Sede: Callao Terminal Sistema: Route Planner │ │
│ │ Scope: BRANCH_SCOPED Templates: 3 asignados │ │
│ │ [Ver] [Revocar] │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Perfil: WMS Basic Access │ │
│ │ Sede: — Sistema: WMS │ │
│ │ Scope: ORG_WIDE Templates: 1 asignado │ │
│ │ [Ver] [Revocar] │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ ─────────────────────────────── ACCIONES RÁPIDAS ───────────── │
│ [Ver Grafo de Permisos] [Bloquear Usuario] [Reset MFA] │
└──────────────────────────────────────────────────────────────────┘
TAB: Documentos
│ [TAB ACTIVO: DOCUMENTOS] [+ Subir Documento] │
│ │
│ ┌──────────────┬──────────────────┬────────────┬──────────────┐ │
│ │ TIPO │ CRITICIDAD │ VENCE │ STATUS │ │
│ ├──────────────┼──────────────────┼────────────┼──────────────┤ │
│ │ Carnet Sanid.│ CRITICAL │ 2026-06-01 │ ● VALID │ │
│ │ ID Nacional │ HIGH │ 2028-12-31 │ ● VALID │ │
│ │ Cert. Seguri.│ MEDIUM │ 2026-05-30 │ VENCE 15d │ │
│ └──────────────┴──────────────────┴────────────┴──────────────┘ │
┌──────────────────────────────────────────────────────────────────┐
│ Approvals > Bandeja de Aprobaciones │
├──────────────────────────────────────────────────────────────────┤
│ TABS: [Pendientes (8)] [En progreso (2)] [Historial] [Delegadas]│
├──────────────────────────────────────────────────────────────────┤
│ Buscar... [Tipo ▼] [Prioridad ▼] Ordenar: SLA ▲ │
├────┬──────────────┬──────────────┬──────────┬────────────────────┤
│SLA │ ID / TIPO │ SOLICITANTE │ SUJETO │ ACCIONES │
├────┼──────────────┼──────────────┼──────────┼────────────────────┤
│1h │ REQ-0041 │ Luis Ramos │ ext.b2b@ │ [Revisar] │
│ │ B2B Access │ (Sponsor) │ corp.com │ │
├────┼──────────────┼──────────────┼──────────┼────────────────────┤
│ 4h │ REQ-0039 │ Ana Torres │ new.user │ [Revisar] │
│ │ Onboarding │ │ @co.com │ │
├────┼──────────────┼──────────────┼──────────┼────────────────────┤
│ 1d │ REQ-0038 │ Sistema IGA │ j.perez │ [Revisar] │
│ │ Rol Promoc. │ (Automático) │ @co.com │ │
├────┴──────────────┴──────────────┴──────────┴────────────────────┤
│ 8 solicitudes pendientes · 2 con SLA crítico (<2h) │
└──────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ Approvals > Bandeja > REQ-0041 SLA: vence en 1h │
├──────────────────────────────────────────────────────────────────┤
│ SOLICITUD DE ACCESO EXTERNO B2B │
│ ─────────────────────────────────────────────────────────────── │
│ Usuario solicitado: external.user@contractor.com │
│ Organización: FastFreight Logistics SA │
│ Sistema: Route Planner │
│ Perfil solicitado: Freight Analyst (ORG_WIDE) │
│ Sponsor: Luis Ramos · Operations Manager │
│ Justificación: "Proveedor contratado para Q2-2026. │
│ Requiere acceso para gestión de rutas." │
│ │
│ RISK SCORE: ██████████░░ 68/100 (RECOMEND. REVISIÓN) │
│ · Geographic Anomaly: IP fuera del país (+25) │
│ · Device: dispositivo nuevo (+20) │
│ · Login Frequency: primera vez (+23) │
│ │
│ DOCUMENTOS ADJUNTOS: │
│ Contrato-FastFreight-2026.pdf [Ver] │
│ ID-Carlos-Lima.pdf [Ver] │
│ │
│ HISTORIAL: │
│ 2026-05-15 09:00 Solicitud creada por Luis Ramos │
│ 2026-05-15 10:00 Asignada a ti para aprobación │
│ ─────────────────────────────────────────────────────────────── │
│ │
│ TU DECISIÓN: │
│ [Motivo / Comentario (requerido si rechaza o escala)...] │
│ │
│ [ APROBAR] [ RECHAZAR] [ ESCALAR] [↗ DELEGAR] │
└──────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ Authorization > Sistemas > Route Planner [Publicar] [···]│
├──────────────────────────────────────────────────────────────────┤
│ TOPOLOGÍA DE MÓDULOS [+ Módulo] │
│ ─────────────────────────────────────────────────────────────── │
│ ▼ Planning Module [+ Menú]│
│ ▼ Route Menu [+ Opción] │
│ ├─ Route List View [+ Acción│
│ │ └─ route.read ] │
│ │ └─ route.create │
│ └─ Route Detail View │
│ └─ route.read │
│ └─ route.edit │
│ └─ route.delete │
│ ▶ Reporting Module [+ Menú]│
│ ▶ Admin Module [+ Menú]│
│ ─────────────────────────────────────────────────────────────── │
│ Arrastra para reordenar módulos y menús │
└──────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ Herramientas > Visualizador de Grafo de Permisos │
├──────────────────────────────────────────────────────────────────┤
│ Usuario: [Maria García ▼] Sistema: [Route Planner ▼] │
│ Sede: [Callao Terminal ▼] [Analizar] │
├──────────────────────────────────────────────────────────────────┤
│ │
│ RESULTADO: PERMISOS COMPILADOS │
│ ─────────────────────────────────────────────────────────────── │
│ │
│ PERFIL: Logistics Analyst (Callao) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Template: Analyst Base v2.1 (PUBLISHED) │ │
│ │ route.read route.create │ │
│ │ route.delete (DENY explícito) │ │
│ │ │ │
│ │ Template: Reporting Access v1.0 (PUBLISHED) │ │
│ │ report.view report.export │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ PERFIL: WMS Basic Access (ORG_WIDE) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Template: WMS Reader v1.0 (PUBLISHED) │ │
│ │ wms.read │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ DENY DOMINANCE activo en: route.delete │
│ Fuente: Template "Analyst Base v2.1" — regla explícita │
│ │
│ RESUMEN: 5 acciones permitidas · 1 denegada explícitamente │
│ [Exportar JSON] [Exportar CSV] │
└──────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ Compliance > Dashboard │
├──────────────────────────────────────────────────────────────────┤
│ ┌───────────────┬───────────────┬──────────────┬───────────────┐│
│ │ DOCS VÁLIDOS │ EN REVISIÓN │ POR VENCER │ VENCIDOS ││
│ │ │ │ (< 30 días) │ CRÍTICOS ││
│ │ 1,203 │ 12 │ 15 │ 3 ││
│ │ │ │ Atención │ URGENTE ││
│ └───────────────┴───────────────┴──────────────┴───────────────┘│
│ │
│ USUARIOS BLOQUEADOS POR DOCUMENTOS [Ver todos] │
│ ─────────────────────────────────────────────────────────────── │
│ Juan Pérez — Carnet Sanitario vencido 2026-05-01 │
│ Enforcement: BLOCK_ACCESS · [Ver usuario] │
│ Carlos Ríos — ID Nacional vencido 2026-04-15 │
│ Enforcement: BLOCK_ACCESS · [Ver usuario] │
│ │
│ PRÓXIMOS A VENCER (< 30 días) [Ver todos] │
│ ─────────────────────────────────────────────────────────────── │
│ Maria García — Cert. Seguridad · Vence 2026-05-30 (15 días) │
│ Ana Torres — Carnet Sanitario · Vence 2026-06-01 (17 días) │
│ │
│ BANDEJA DE VALIDACIÓN (12 documentos) [Ver bandeja] │
└──────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ │
│ [LOGO DEL TENANT — dinámico] │
│ │
│ Accede a Route Planner — Logistics Corp │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Email │ │
│ │ ┌────────────────────────────────────────────────┐ │ │
│ │ │ usuario@empresa.com │ │ │
│ │ └────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ [ Continuar con Passkey / FIDO2 ] │ │
│ │ [ Continuar con Magic Link ] │ │
│ │ [ Continuar con SSO corporativo ] │ │
│ │ │ │
│ │ ──────────── o usa contraseña ──────────── │ │
│ │ [ Ingresar con Email + Contraseña ] │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ ¿Problemas para acceder? Contacta a tu administrador │
│ │
│ ────────────────────────────────────────────────────────────── │
│ Powered by UMS · Política de Privacidad · Términos de Uso │
└──────────────────────────────────────────────────────────────────┘
Variante MFA requerida (score > 40):
│ Verificación adicional requerida │
│ Hemos detectado un inicio de sesión desde una ubicación nueva. │
│ │
│ [ Verificar con App Authenticator ] │
│ [ Enviar código a m***@empresa.com ] │
│ [ Enviar SMS a +51 9** *** **89 ] │
┌──────────────────────────────────────────────────────────────────┐
│ Mi Perfil │
├──────────────────────────────────────────────────────────────────┤
│ ┌────────┐ Carlos Lima │
│ │ CL │ carlos.lima@fastfreight.com │
│ └────────┘ Organización: FastFreight Logistics │
│ Status: ● ACTIVE │
│ │
│ TABS: [Mis Accesos] [Mis Documentos] [Seguridad] │
│ │
│ [TAB: MIS DOCUMENTOS] [+ Subir Documento] │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ ● Carnet Sanitario VALID Vence: 2026-12-01 │ │
│ │ Certificado de Seguridad PENDING Subido ayer │ │
│ │ └─ En revisión por el equipo de compliance │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ + Subir nuevo documento │ │
│ │ Tipo: [Seleccionar tipo ▼] │ │
│ │ Archivo: [Seleccionar archivo...] │ │
│ │ Fecha emisión: [__/__/____] │ │
│ │ Fecha vencimiento: [__/__/____] │ │
│ │ [Subir] │ │
│ └────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
Colors:
primary-900: "#1e2a4a" # Azul profundo — header, sidebar
primary-700: "#2d4080" # Azul medio — botones primarios
primary-100: "#e8edff" # Azul claro — fondos de selección
success: "#16a34a" # Verde — ACTIVE, VALID, APPROVED
warning: "#d97706" # Ámbar — PENDING, por vencer, SLA warning
danger: "#dc2626" # Rojo — BLOCKED, EXPIRED, REJECTED, SLA crítico
neutral: "#6b7280" # Gris — texto secundario, bordes
Typography:
font-family: "Inter", system-ui, sans-serif
font-mono: "JetBrains Mono", "Fira Code", monospace # para IDs, JSON
size-base: 14px
size-sm: 12px
size-lg: 16px
size-xl: 20px
Spacing: 4px base grid (4, 8, 12, 16, 24, 32, 48, 64)
Border-radius: 6px (inputs, cards), 4px (badges), 8px (modals)
| Componente | Uso en UMS | Nota | |
|---|---|---|---|
StatusBadge |
Estado de usuario, documento, solicitud | Colores semánticos + ícono | |
SlaCountdown |
SLA en bandeja de aprobaciones | Se vuelve rojo < 2h | |
RiskScoreBar |
Puntaje de riesgo en aprobaciones | Barra con breaks: 20/40/70 | |
DataTable |
Todas las listas (usuarios, perfiles, docs) | Sort, filter, export | |
FilterBar |
Encima de cada DataTable | Tags visibles por filtro activo | |
ConfirmDialog |
Acciones destructivas (bloquear, revocar) | Requiere texto de confirmación | |
TabPanel |
Detalle de usuario, sistemas, etc. | URL hash por tab | |
TreeView |
Jerarquía de tenant, topología de módulos | Expandable/colapsable | |
PermissionMatrix |
Editor de templates | Grid Recurso × Acción con toggle ALLOW/DENY | |
GraphViewer |
Visualizador de permisos compilados | Expandable por perfil/template | |
FileUploader |
Carga de documentos | Drag & drop, validación de tipo/tamaño | |
NotificationToast |
Feedback de acciones | Stack, auto-dismiss 5s | |
ApprovalDecisionForm |
Formulario en detalle de solicitud | Motivo requerido en REJECT/ESCALATE | |
ActivityFeed |
Historial en detalle de usuario | Timeline vertical | |
TenantSwitcher |
Header — solo Super Admin | Search + recent | |
BrandingPreview |
Editor de branding del Login Portal | Preview en tiempo real | ### Patrón de formularios |
Escribe "BLOQUEAR" para confirmar)| Contexto | Mensaje | CTA | |
|---|---|---|---|
| Lista de usuarios (sin resultados de búsqueda) | “No se encontraron usuarios con estos filtros” | [Limpiar filtros] | |
| Lista de usuarios (tenant sin usuarios) | “Aún no hay usuarios registrados en este tenant” | [+ Crear primer usuario] | |
| Bandeja de aprobaciones | “No tienes solicitudes pendientes · Todo al día “ | — | |
| Tab documentos (usuario sin docs) | “Este usuario no ha subido documentos” | [Subir documento] | |
| Historial de audit | “No hay eventos registrados para este período” | [Ampliar rango de fechas] | |
| Grafo de permisos (sin perfiles) | “Este usuario no tiene perfiles asignados” | [Asignar perfil] | — |
┌──────────────────────────────────────────────────────────────────┐
│ │
│ Error al cargar los usuarios │
│ │
│ No se pudo obtener la información. Puede ser un problema │
│ de conectividad temporal. │
│ │
│ Código de error: [UUID del trace si disponible] │
│ │
│ [Reintentar] [Volver al Dashboard] │
│ │
└──────────────────────────────────────────────────────────────────┘
traceId para soporte┌──────────────────────────────────────────────────────────────────┐
│ │
│ Sin acceso a esta sección │
│ │
│ No tienes permisos para ver Configuración > Feature Flags. │
│ │
│ Si crees que deberías tener acceso, contacta a tu │
│ administrador de tenant. │
│ │
│ [Volver al Dashboard] │
│ │
└──────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ ATENCIÓN: Solicitud REQ-0041 vence en 47 minutos │
│ Si no hay decisión, la solicitud expirará automáticamente. │
│ El usuario externo NO obtendrá acceso. [Revisar ahora]│
└──────────────────────────────────────────────────────────────────┘
Banner fijo al tope del contenido (no modal) cuando hay solicitudes con SLA < 2h.
| Regla | Implementación en UMS | |
|---|---|---|
| Contraste de color | Ratio mínimo 4.5:1 para texto normal, 3:1 para texto grande. Verificar todos los badges de status | |
| Navegación por teclado | Tab order lógico en formularios. Modales atrapa el foco. Escape cierra modal | |
| Etiquetas ARIA | aria-label en íconos sin texto. aria-live en toasts y contadores de pendientes |
|
| Roles semánticos | <table> para DataTables con scope en headers. <nav> para sidebar. <main> para content area |
|
| Estados de focus | Outline visible (2px azul) en todos los elementos interactivos. Nunca outline: none sin alternativa |
|
| Mensajes de error | Asociados al input via aria-describedby. No solo con color |
|
| Skip link | “Ir al contenido principal” como primer elemento focusable de la página | |
| Textos alternativos | Avatares con alt="Foto de {nombre}". Íconos decorativos con aria-hidden |
### Reglas de usabilidad enterprise |
[Guardando...])? con explicación inline| Breakpoint | Ancho | Comportamiento |
|———–|——-|—————-|
| xs | < 640px | Mobile — solo Login Portal y Mi Perfil/Self-service |
| sm | 640–1024px | Tablet — sidebar colapsado, tablas adaptadas |
| md | 1024–1280px | Laptop — sidebar colapsado por defecto |
| lg | 1280–1536px | Desktop — sidebar expandido, layout completo |
| xl | > 1536px | Wide — posible panel lateral adicional en detalle | ### Estrategia por móduloPortal Administrativo (PAP) — optimizado para desktop (lg/xl):
md y menores → solo íconos + tooltipsm colapsan a tarjetas apiladas (card list view)sm usa layout de una columna con scroll horizontal para la matrizsm no se muestra; banner: “Para mejor experiencia, usa un monitor”Bandeja de Aprobaciones — soporte tablet (sm+):
sm: lista de solicitudes en tarjetas full-width, sin columnassm| Pantalla / Funcionalidad | FS | Justificación | |
|---|---|---|---|
| Login Portal (básico, con email+pass) | FS-01, FS-08 | Punto de entrada de todo usuario | |
| Gestión de Usuarios (CRUD + status) | FS-01 | Core del sistema | |
| Gestión de Tenants | FS-03 | Prerequisito de todo lo demás | |
| Gestión de Sistemas y Topología | FS-04 | Prerequisito de autorización | |
| Templates de Permisos (CRUD) | FS-02 | Core de autorización | |
| Perfiles (asignación manual) | FS-05 | Core de autorización | |
| Bandeja de Aprobaciones (básica) | FS-10 | Desbloqueante para B2B | |
| Dashboard básico (KPIs principales) | — | Orientación al admin | ### MVP — Sprint 4-6 (funcionalidades de alto valor) |
| Pantalla / Funcionalidad | FS | Justificación | |
|---|---|---|---|
| Subida y Validación de Documentos | FS-11 | Requerido por Compliance | |
| Dashboard de Cumplimiento | FS-15, FS-16 | Visibilidad crítica | |
| Solicitud de Acceso B2B completa | FS-10 | Con risk score visible | |
| Auto-asignación de template | FS-06 | Reduce carga administrativa | |
| Configuración IdP por tenant | FS-03 | Para clientes enterprise | |
| Procesos de Promoción IGA | FS-12 | Governance de roles | |
| Delegación de administración | FS-14 | Escalabilidad de admins | ### Post-MVP (mejoras progresivas) |
| Funcionalidad | FS | Esfuerzo | Valor | |
|---|---|---|---|---|
| Visualizador Grafo de Permisos interactivo | FS-07 | Alto | Alto | |
| Login Portal con Passkeys/FIDO2 | FS-09 | Alto | Alto | |
| MFA Adaptativo con Risk Scoring | FS-09 | Muy alto | Alto | |
| Feature Flags con UI de targeting | FS-13 | Medio | Medio | |
| Configuración jerárquica de parámetros | FS-13 | Medio | Medio | |
| Monitor de sesiones en tiempo real | — | Medio | Medio | |
| Bulk operations en listas (bloqueo masivo) | — | Bajo | Medio | |
| Exportación avanzada (audit reports) | — | Bajo | Medio | |
| Branding editor del Login Portal | FS-08 | Medio | Bajo | |
| Dark mode | — | Bajo | Bajo | — |
Recomendación:Implementar el TreeView con lazy loading de nodos. Añadir búsqueda instantánea dentro del árbol. Ofrecer vista “tabla plana” alternativa con filtro por nivel. Prioridad: Alta.
Recomendación:Incluir tooltips educativos inline en cada concepto. Crear un flujo guiado (wizard) para la primera configuración de autorización. Documentación contextual: panel “¿Cómo funciona?” colapsable en la primera vez que el admin accede a Templates. Prioridad: Alta.
Recomendación:Ofrecer dos vistas: “Vista simplificada” (¿Puede este usuario hacer X en Y módulo? Sí/No) y “Vista técnica” con el detalle del grafo. Prioridad: Media.
Recomendación:Implementar aprobación en lote para solicitudes del mismo tipo (ej: “Aprobar todos los onboardings de FastFreight”). Ordenamiento inteligente por defecto: SLA más crítico primero. Vista de “modo concentrado” que solo muestra la solicitud más urgente. Prioridad: Alta.
Recomendación:En el modal de confirmación de acciones de alto impacto, mostrar el impacto calculado: “Este template está actualmente asignado a 47 perfiles en 3 tenants. Deprecarlo no revocará los perfiles existentes, pero nuevas asignaciones no podrán usar esta versión.” Prioridad: Alta.
Recomendación:El Visualizador debe requerir un permiso explícito (diagnostic.permissions.read). Auditar cada consulta al grafo (quién consultó el grafo de quién). El resultado no debe ser cacheable en el browser. Prioridad: Crítica.
Recomendación:Pre-renderizar el branding via CDN con TTL corto (5 min). Establecer branding default (UMS genérico) como fallback instantáneo. Implementar skeleton del logo antes de cargar el asset real. Prioridad: Alta.
| ID | Supuesto | Base | |
|---|---|---|---|
| S-01 | El portal administrativo es una SPA (Single Page Application) con React o similar — no server-rendered pages | Inferido de la arquitectura Hexagonal y el stack .NET API + frontend separado | |
| S-02 | El Login Portal es una aplicación separada del PAP, servida en un subdominio diferente | Documentado en FS-08: “hosted login portal” con redirect desde downstream apps | |
| S-03 | Los admins siempre operan desde desktop (1280px+); los usuarios finales B2B pueden operar desde mobile | Basado en naturaleza de operaciones y stakeholder profiles | |
| S-04 | Las notificaciones in-app se implementan en la primera iteración como badge + dropdown; no como notificaciones push del browser | No hay mención a Web Push API en la documentación | |
| S-05 | El tenant switcher solo es visible para Super Admins; los Tenant Admins no ven datos de otros tenants | Consistente con arquitectura RLS y scope de acceso | |
| S-06 | El idioma del portal es configurable por tenant (multilenguaje), pero la MVP solo requiere español | No hay mención de i18n obligatoria en los FS del MVP | ### Preguntas abiertas para el Product Owner |
| ID | Pregunta | Impacto si no se decide | |
|---|---|---|---|
| Q-01 | ¿El admin de tenant puede ver/editar usuarios de sedes hijo o solo de su sede? | Afecta el árbol de navegación y los filtros de listas | |
| Q-02 | ¿El flujo de onboarding de usuario interno requiere siempre aprobación, o solo cuando el workflow lo configura? | Afecta el diseño del formulario de nuevo usuario y el flujo de estados | |
| Q-03 | ¿Existen notificaciones por email al usuario cuando su solicitud es aprobada/rechazada en el MVP? | Afecta la confirmación UX post-decisión del aprobador | |
| Q-04 | ¿El editor de templates de permisos es un grid Acción×Recurso o una lista plana? ¿Cuántas acciones puede tener un sistema en producción? | Crítico para el diseño del editor — puede ser muy complejo | |
| Q-05 | ¿Los aprobadores pueden agregar comentarios internos (no visibles al solicitante) en una solicitud? | Afecta el formulario de decisión | |
| Q-06 | ¿El Visualizador de Grafo de Permisos es accesible desde el detalle de usuario directamente, o solo desde Herramientas? | Afecta la navegación contextual | |
| Q-07 | ¿Existe un límite en el número de perfiles que un usuario puede tener simultáneamente? | Afecta el diseño del tab “Perfiles” en detalle de usuario | |
| Q-08 | ¿El bulk upload de usuarios (CSV) está en el scope del MVP? | Afecta la pantalla de Lista de Usuarios | |
| Q-09 | ¿El Login Portal debe soportar modo oscuro / modo alto contraste desde el MVP? | Afecta el esfuerzo de implementación del theming | |
| Q-10 | ¿El Compliance Officer puede rechazar un documento con una razón libre o seleccionando de un catálogo de razones predefinidas? | Afecta el formulario de validación de documentos | — |
| Volver al Master Index | Product Vision | Functional Stories Index |