erp-core/docs/01-fase-foundation/MGN-003-roles/historias-usuario/US-MGN003-001.md

4.2 KiB

US-MGN003-001: CRUD de Roles

Identificacion

Campo Valor
ID US-MGN003-001
Modulo MGN-003 Roles/RBAC
Sprint Sprint 2
Prioridad P0 - Critica
Story Points 8
Estado Ready
Autor System
Fecha 2025-12-05

Historia de Usuario

Como administrador del sistema Quiero poder crear, ver, editar y eliminar roles Para gestionar los niveles de acceso de los usuarios a las funcionalidades del sistema


Criterios de Aceptacion

Escenario 1: Crear rol exitosamente

Given un admin autenticado con permiso "roles:create"
When crea un rol con:
  | name        | Vendedor           |
  | description | Equipo de ventas   |
  | permissions | [sales:*, users:read] |
Then el sistema crea el rol
  And el rol tiene slug "vendedor"
  And el rol tiene isBuiltIn = false
  And responde con status 201

Escenario 2: Listar roles con paginacion

Given 12 roles en el tenant (5 built-in + 7 custom)
When el admin solicita GET /api/v1/roles?page=1&limit=10
Then el sistema retorna 10 roles
  And roles built-in aparecen primero
  And incluye usersCount y permissionsCount por rol
  And incluye meta con total=12

Escenario 3: No crear rol con nombre duplicado

Given un rol existente con nombre "Vendedor"
When el admin intenta crear otro rol "Vendedor"
Then el sistema responde con status 409
  And el mensaje es "Ya existe un rol con este nombre"

Escenario 4: No eliminar rol del sistema

Given el rol built-in "admin"
When el admin intenta eliminarlo
Then el sistema responde con status 400
  And el mensaje es "No se pueden eliminar roles del sistema"

Escenario 5: Soft delete con reasignacion

Given rol "Vendedor" con 5 usuarios asignados
When admin elimina el rol con reassignTo="user"
Then el rol tiene deleted_at establecido
  And los 5 usuarios ahora tienen rol "user"
  And el rol no aparece en listados normales

Mockup / Wireframe

+------------------------------------------------------------------+
|  [Logo]   Roles                           [+ Nuevo Rol]          |
+------------------------------------------------------------------+
| Buscar: [___________________] [Tipo: Todos ▼]                    |
+------------------------------------------------------------------+
| | Nombre          | Descripcion        | Permisos | Usuarios | ⚙ |
|---|-----------------|--------------------|-----------|---------|----|
| 🔒| Super Admin     | Acceso total       | 45       | 1       | 👁 |
| 🔒| Admin           | Gestion tenant     | 32       | 3       | 👁 |
| 🔒| Manager         | Supervision        | 18       | 5       | 👁 |
| 🔒| User            | Acceso basico      | 8        | 42      | 👁 |
|   | Vendedor        | Equipo de ventas   | 12       | 8       | ✏🗑|
|   | Contador        | Area contable      | 15       | 2       | ✏🗑|
+------------------------------------------------------------------+

🔒 = Rol del sistema (built-in), no editable/eliminable

Notas Tecnicas

API Endpoints

POST /api/v1/roles
GET /api/v1/roles?page=1&limit=10&type=custom&search=vend
GET /api/v1/roles/:id
PATCH /api/v1/roles/:id
DELETE /api/v1/roles/:id?reassignTo=other-role-id

Validaciones

Campo Regla
name 3-50 chars, unico en tenant
description Max 500 chars
permissionIds Array min 1

Definicion de Done

  • Endpoint POST /api/v1/roles
  • Endpoint GET /api/v1/roles con paginacion
  • Endpoint GET /api/v1/roles/:id
  • Endpoint PATCH /api/v1/roles/:id
  • Endpoint DELETE /api/v1/roles/:id
  • Validacion de roles built-in
  • Frontend: RolesListPage
  • Frontend: CreateRoleModal
  • Frontend: EditRoleModal
  • Tests unitarios
  • Code review aprobado

Estimacion

Tarea Horas
Backend: CRUD endpoints 5h
Backend: Validaciones 2h
Backend: Tests 2h
Frontend: RolesListPage 4h
Frontend: RoleForm 4h
Frontend: Tests 2h
Total 19h

Historial

Version Fecha Autor Cambios
1.0 2025-12-05 System Creacion inicial