erp-mecanicas-diesel/docs/02-definicion-modulos/MMD-001-fundamentos/historias-usuario/US-MMD001-002-configurar-roles.md

164 lines
4.5 KiB
Markdown

# US-MMD001-002: Configurar Roles de Taller
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | US-MMD001-002 |
| **Epica** | EPIC-MMD-001 - Fundamentos |
| **Modulo** | fundamentos |
| **Prioridad** | P0 |
| **Story Points** | 5 |
| **Sprint** | Sprint 1 |
| **Estado** | Backlog |
| **Asignado a** | Por asignar |
---
## Historia de Usuario
**Como** administrador del taller,
**quiero** configurar roles especificos para mi negocio (mecanico, almacenista, recepcion, jefe de taller),
**para** asignar permisos apropiados a cada tipo de empleado.
## Descripcion Detallada
El sistema debe ofrecer roles predefinidos tipicos de un taller diesel, pero permitir personalizacion. Cada rol tiene permisos especificos sobre modulos y acciones del sistema.
---
## Criterios de Aceptacion
**Escenario 1: Roles predefinidos disponibles**
```gherkin
DADO que accedo a la configuracion de roles
CUANDO veo la lista de roles
ENTONCES veo los roles predefinidos:
| Rol | Descripcion |
| AdminTaller | Acceso completo al taller |
| JefeTaller | Supervisa operaciones y asigna trabajos |
| MecanicoDiesel | Ejecuta diagnosticos y reparaciones |
| Almacenista | Gestiona inventario de refacciones |
| Recepcionista | Atiende clientes y crea ordenes |
| Contador | Accede a reportes y facturacion |
```
**Escenario 2: Ver permisos de un rol**
```gherkin
DADO que selecciono el rol "MecanicoDiesel"
CUANDO veo sus permisos
ENTONCES veo los modulos y acciones permitidas:
| Modulo | Permisos |
| Ordenes | Ver asignadas, actualizar avance |
| Diagnosticos | Crear, editar, ver |
| Refacciones | Solicitar, ver stock |
| Vehiculos | Ver historial |
```
**Escenario 3: Modificar permisos de rol**
```gherkin
DADO que selecciono el rol "Recepcionista"
CUANDO agrego el permiso "Ver reportes basicos"
ENTONCES el sistema guarda el cambio
Y los usuarios con ese rol tienen el nuevo permiso
```
**Escenario 4: Crear rol personalizado**
```gherkin
DADO que necesito un rol "Supervisor Nocturno"
CUANDO creo el rol seleccionando permisos especificos
ENTONCES el sistema guarda el nuevo rol
Y esta disponible para asignar a usuarios
```
---
## Roles Predefinidos
| Rol | Ordenes | Diagnosticos | Inventario | Vehiculos | Cotizaciones | Reportes | Config |
|-----|---------|--------------|------------|-----------|--------------|----------|--------|
| AdminTaller | CRUD | CRUD | CRUD | CRUD | CRUD | CRUD | CRUD |
| JefeTaller | CRUD | CRUD | Ver | CRUD | CRUD | Ver | - |
| MecanicoDiesel | Ver+Editar | CRUD | Solicitar | Ver | - | - | - |
| Almacenista | Ver | - | CRUD | - | - | Ver inv | - |
| Recepcionista | Crear+Ver | - | Ver | Crear+Ver | CRUD | - | - |
| Contador | Ver | - | Ver | - | Ver | CRUD | - |
---
## Tareas Tecnicas
**Database:**
- [ ] DB-003: Crear tabla `workshop_roles` en schema `workshop_core`
- [ ] DB-004: Crear tabla `role_permissions` para matriz de permisos
- [ ] DB-005: Insertar roles y permisos predefinidos (seed)
**Backend:**
- [ ] BE-005: Crear RoleEntity con relacion a permisos
- [ ] BE-006: Crear RoleService con CRUD y asignacion permisos
- [ ] BE-007: Crear RoleController endpoints
- [ ] BE-008: Implementar guard de permisos
**Frontend:**
- [ ] FE-005: Crear RolesConfigPage
- [ ] FE-006: Crear RoleCard y PermissionsMatrix components
- [ ] FE-007: Crear RoleForm para creacion/edicion
- [ ] FE-008: Implementar rolesStore
**Tests:**
- [ ] TEST-003: Test guard de permisos
- [ ] TEST-004: Test asignacion de rol a usuario
---
## Dependencias
**Depende de:**
- [ ] US-MMD001-001: Configurar taller
- [ ] MGN-003 Roles (Core)
**Bloquea:**
- [ ] Asignacion de usuarios a roles
- [ ] Todos los modulos que verifican permisos
---
## Notas Tecnicas
**Endpoints involucrados:**
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/roles | Listar roles del taller |
| POST | /api/roles | Crear rol |
| GET | /api/roles/:id | Detalle rol con permisos |
| PATCH | /api/roles/:id | Actualizar rol |
| DELETE | /api/roles/:id | Eliminar rol (solo custom) |
| GET | /api/permissions | Listar permisos disponibles |
**Entidades/Tablas:**
- `workshop_core.workshop_roles`
- `workshop_core.role_permissions`
- `workshop_core.permissions`
---
## Definition of Ready (DoR)
- [x] Historia claramente escrita
- [x] Criterios de aceptacion definidos
- [x] Matriz de permisos definida
- [x] Roles predefinidos listados
## Definition of Done (DoD)
- [ ] Roles predefinidos creados
- [ ] UI de gestion de roles funcionando
- [ ] Guard de permisos implementado
- [ ] Tests pasando
- [ ] Demo realizada
---
**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-06