ums

Modelo Conceptual de Datos

Este documento detalla el esquema de datos conceptual, estructuras de entidades, relaciones y diagramas Entidad-Relacion para el User Management System (UMS) bajo la estrategia spec-driven AI BMAD-METHOD.

Nota de implementacion autoritativa: El modelo ER fisico alineado al codigo se mantiene en database-design-er.md. Este modelo conceptual usa nombres de negocio y debe leerse con el alineamiento de onboarding introducido por EP-09.


1. Diagrama Entidad-Relacion

erDiagram
    ORGANIZATION ||--o{ BRANCH : tiene
    ORGANIZATION ||--o{ ORGANIZATION : jerarquia_padre
    USER ||--o{ EXTERNAL_ACCESS_REQUEST : patrocina
    ORGANIZATION ||--o{ EXTERNAL_ACCESS_REQUEST : recibe
    ORGANIZATION ||--o{ USER : contiene
    ORGANIZATION ||--o{ PROFILE : posee
    TENANT_SIGNUP_REQUEST }o--o| ORGANIZATION : aprobado_como
    USER ||--o{ PROFILE_ACCESS_REQUEST : solicita

    BRANCH ||--o{ PROFILE : delimita
    BRANCH ||--o{ USER_PROFILES : restringe

    USER ||--o{ USER_PROFILES : asignado
    PROFILE ||--o{ USER_PROFILES : contiene

    PROFILE }o--o| AUTH_TEMPLATE : implementa
    PROFILE ||--o{ AUTHORIZATION : declara
    AUTH_TEMPLATE ||--o{ AUTHORIZATION : plantilla

    SYSTEM ||--o{ MODULE : contiene
    MODULE ||--o{ MENU : contiene
    MENU ||--o{ OPTION : contiene
    OPTION ||--o{ ACTION : contiene
    SYSTEM ||--o{ ACTION : declara
    MODULE ||--o{ ACTION : declara
    MENU ||--o{ ACTION : declara

    AUTHORIZATION }o--|| ACTION : apunta_a
    NETWORK ||--o{ PROFILE : restringe

    SYSTEM ||--o{ IDP_CONFIGURATION : usa
    ORGANIZATION ||--o{ IDP_CONFIGURATION : configura
    SYSTEM ||--o{ SYSTEM_CONFIGURATION : tiene
    ORGANIZATION ||--o{ SYSTEM_CONFIGURATION : delimita
    SYSTEM ||--o{ FEATURE_FLAG : gobierna
    FEATURE_FLAG ||--o{ FLAG_EVALUATION_LOG : produce

Alineamiento Conceptual de Onboarding

Entidad Conceptual Fuente Implementada Proposito
TENANT_SIGNUP_REQUEST identity.TenantSignupRequests Traza el alta publica de empresa antes de crear el tenant.
USER con estado pendiente identity.UserAccounts.StatusId = Pending Traza solicitudes de alta de usuario para un tenant existente.
PROFILE_ACCESS_REQUEST approvals.ApprovalRequests Traza solicitudes de perfil desde usuarios en lobby.

Los resultados finales de negocio para alta de usuario y solicitud de perfil son Approved y Denied. La persistencia implementada actualmente guarda la denegacion de perfil como ApprovalStatus.Rejected, que debe traducirse a Denied en boundaries de aplicacion y UI.


2. Especificacion de Atributos de Entidades

A. User Entity

B. Entidad Organization (Organización)

[!IMPORTANT] Esta entidad representa un nodo empresarial. Una organización puede ser el Tenant corporativo principal (INTERNAL), o un actor externo como un CLIENT o SUPPLIER B2B.

C. Branch Entity (Sedes)

[!IMPORTANT] This entity represents a physical or logical sub-unit of an Organization (e.g., Callao Port Terminal, Lurin Warehouse). It is the branch context used for hierarchical, context-aware authorization routing.

D. Profile Entity

E. Authorization Entity

F. Auth Template Entity

G. System Entity

H. Module / Menu / Option / Action Entities

[!NOTE] These form the hierarchical navigation topology compiled into the Authorization Graph. The resource hierarchy is: System → Module → Menu → Option. Actions can be attached at any level (System, Module, Menu, or Option).

I. IDP_CONFIGURATION Entity (NEW — Configuration Context)

J. SYSTEM_CONFIGURATION Entity (NEW — Configuration Context)

K. FEATURE_FLAG Entity (NEW — Configuration Context)

L. FLAG_EVALUATION_LOG Entity (NEW — Audit Context)

M. Entidad EXTERNAL_ACCESS_REQUEST (NUEVO — Contexto de Aprobación B2B)


3.1 Estándar Obligatorio de Catálogos Paramétricos

Todas las entidades de parámetros/configuración/catálogos DEBEN incluir como mínimo:

description DEBE documentar claramente:

  1. para qué se usa,
  2. impacto funcional,
  3. comportamiento esperado,
  4. alcance/contexto de configuración aplicable.

Este estándar aplica a parámetros globales, por tenant y por system/suite; feature flags; políticas; configuraciones de seguridad; workflows; reglas de negocio; y configuraciones de notificación/aprobación.

Ademas, estas entidades deben definir:


4. Key Precedence Axioms (Engine Rules)

  1. Deny-by-Default: An action is blocked until an explicit ALLOW is declared by a profile or template.
  2. Permissive Union: If no DENY is present, the user inherits all active ALLOW blocks from all assigned profiles.
  3. Explicit Deny Dominance: A DENY from any active profile instantly invalidates matching ALLOW blocks across all other profiles.
  4. Branch Scope Precedence: Branch-scoped profiles override org-wide profiles for the matching branch context.