# 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
