@startuml uml-class-identidad !include _style.iuml skinparam classAttributeIconSize 0 title 2. Diagrama de clases — Identidad y RBAC abstract class Usuario { + id : UUID + nombre : String + email : String + telefono : String + rol : String + activo : Boolean -- + tienePermiso(clave) : Boolean + esAdmin() : Boolean } class Cliente { + fechaRegistro : DateTime + totalOrdenes : Integer -- + crearOrden(servicio, direccion) : Orden } class Prestador { + calificacionPromedio : Decimal + ordenesCompletadas : Integer + zonaOperacion : UUID -- + aceptarOrden(orden) : Boolean + marcarDisponibilidad(dia, ini, fin) : Boolean } class Admin { + rolesAdmin : String -- + abrirCasoSoporte(cliente, motivo) : Boolean + revocarAcceso(usuarioId) : Boolean } class RolAdmin { + id : UUID + clave : String + nombre : String + descripcion : String -- + listarPermisos() : List } class Permiso { + id : UUID + clave : String + dominio : String + descripcion : String } class UsuarioAdmin <> { + usuarioId : UUID + rolId : UUID + activo : Boolean + fechaAsignacion : DateTime -- + desactivar(motivo) : Boolean } class RolPermiso <> { + rolId : UUID + permisoId : UUID } Usuario <|-- Cliente Usuario <|-- Prestador Usuario <|-- Admin Usuario "1" -- "0..*" UsuarioAdmin : asume > RolAdmin "1" -- "0..*" UsuarioAdmin : concede > RolAdmin "1" -- "0..*" RolPermiso : otorga > Permiso "1" -- "0..*" RolPermiso : confiere > footer Fuente: 00.sql + migrations/004_rbac_permisos_zero_trust.sql @enduml