# US-MMD002-011: Configurar Estados Personalizados

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-MMD002-011 |
| **Epica** | EPIC-MMD-002 - Ordenes de Servicio |
| **Modulo** | ordenes-servicio |
| **Prioridad** | P2 |
| **Story Points** | 3 |
| **Sprint** | Sprint 6 |
| **Estado** | Backlog |

---

## Historia de Usuario

**Como** administrador,
**quiero** configurar estados personalizados de orden,
**para** adaptar el flujo de trabajo a mi proceso especifico.

## Descripcion Detallada

Cada taller puede tener procesos ligeramente diferentes. Permitir personalizar los estados y sus transiciones da flexibilidad sin perder control.

---

## Criterios de Aceptacion

**Escenario 1: Ver estados actuales**
```gherkin
DADO que accedo a configuracion de estados
CUANDO veo la lista
ENTONCES veo los estados predefinidos:
  | Estado | Color | Orden | Editable |
  | RECIBIDO | Gris | 1 | No |
  | EN_DIAGNOSTICO | Azul | 2 | Si |
  | COTIZADO | Amarillo | 3 | Si |
  | APROBADO | Verde | 4 | Si |
  | EN_REPARACION | Naranja | 5 | Si |
  | LISTO | Verde | 6 | No |
  | ENTREGADO | Gris | 7 | No |
```

**Escenario 2: Agregar estado personalizado**
```gherkin
DADO que mi proceso incluye "Control de Calidad"
CUANDO agrego nuevo estado:
  | Nombre | CONTROL_CALIDAD |
  | Etiqueta | Control de Calidad |
  | Color | Morado |
  | Despues de | EN_REPARACION |
ENTONCES el nuevo estado aparece en el flujo
```

**Escenario 3: Configurar transiciones**
```gherkin
DADO que configure el estado CONTROL_CALIDAD
CUANDO defino transiciones:
  | Desde | Hacia |
  | EN_REPARACION | CONTROL_CALIDAD |
  | CONTROL_CALIDAD | LISTO |
  | CONTROL_CALIDAD | EN_REPARACION |
ENTONCES solo esas transiciones son permitidas
```

**Escenario 4: Renombrar estado**
```gherkin
DADO que quiero cambiar etiqueta
CUANDO renombro "EN_DIAGNOSTICO" a "Evaluacion Inicial"
ENTONCES se muestra con el nuevo nombre
Y el codigo interno no cambia
```

---

## Estados Base (No editables)

| Estado | Razon |
|--------|-------|
| RECIBIDO | Inicio del flujo |
| LISTO | Trigger de notificacion |
| ENTREGADO | Cierre del flujo |
| CANCELADO | Estado terminal |

---

## Tareas Tecnicas

**Database:**
- [ ] DB-063: Crear tabla `order_status_config`
- [ ] DB-064: Crear tabla `status_transitions`

**Backend:**
- [ ] BE-127: CRUD de estados personalizados
- [ ] BE-128: Validar transiciones configuradas
- [ ] BE-129: Proteger estados base

**Frontend:**
- [ ] FE-128: Crear StatusConfigPage
- [ ] FE-129: Editor visual de flujo
- [ ] FE-130: Selector de colores

---

## Definition of Done (DoD)

- [ ] Ver estados configurados
- [ ] Agregar estado personalizado
- [ ] Configurar transiciones
- [ ] Renombrar etiquetas
- [ ] Estados base protegidos
- [ ] Tests pasando

---

**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-06
