# US-MMD002-007: Ver Tablero Kanban de Ordenes

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-MMD002-007 |
| **Epica** | EPIC-MMD-002 - Ordenes de Servicio |
| **Modulo** | ordenes-servicio |
| **Prioridad** | P0 |
| **Story Points** | 8 |
| **Sprint** | Sprint 5 |
| **Estado** | Backlog |

---

## Historia de Usuario

**Como** jefe de taller,
**quiero** ver un tablero Kanban con todas las ordenes activas,
**para** tener visibilidad del estado de cada servicio y detectar cuellos de botella.

## Descripcion Detallada

El tablero Kanban muestra las ordenes agrupadas por estado en columnas. Permite visualizar rapidamente cuantas ordenes hay en cada etapa y su tiempo de permanencia. Opcionalmente permite arrastrar ordenes entre columnas.

---

## Criterios de Aceptacion

**Escenario 1: Ver tablero con columnas de estado**
```gherkin
DADO que accedo al tablero Kanban
CUANDO se carga la vista
ENTONCES veo columnas para cada estado:
  | RECIBIDO | EN_DIAGNOSTICO | COTIZADO | APROBADO | EN_REPARACION | LISTO |
Y cada columna muestra el conteo de ordenes
```

**Escenario 2: Ver tarjeta de orden**
```gherkin
DADO que veo una orden en el tablero
CUANDO observo su tarjeta
ENTONCES veo:
  | Folio | OS-2025-0042 |
  | Vehiculo | Kenworth T680 - ABC-123 |
  | Cliente | Transportes del Norte |
  | Mecanico | Juan Perez |
  | Tiempo en estado | 2h 30m |
```

**Escenario 3: Indicador de tiempo excedido**
```gherkin
DADO que una orden lleva mas de 24h en un estado
CUANDO veo el tablero
ENTONCES la tarjeta tiene indicador rojo
Y muestra alerta "Atencion requerida"
```

**Escenario 4: Filtrar por mecanico**
```gherkin
DADO que quiero ver ordenes de un mecanico especifico
CUANDO filtro por "Juan Perez"
ENTONCES solo veo ordenes asignadas a Juan
```

**Escenario 5: Arrastrar orden entre columnas**
```gherkin
DADO que una orden esta en EN_REPARACION
CUANDO la arrastro a LISTO
ENTONCES el sistema valida que puede cambiar a ese estado
Y actualiza el estado de la orden
Y registra el cambio en historial
```

**Escenario 6: Abrir detalle de orden**
```gherkin
DADO que hago clic en una tarjeta
CUANDO se abre el detalle
ENTONCES veo informacion completa de la orden
Y puedo editar o agregar trabajos
```

---

## Layout del Tablero

```
┌─────────────────────────────────────────────────────────────────────────┐
│ TABLERO DE ORDENES                          Filtros: [Mecanico ▼] [Hoy]│
├───────────┬───────────┬───────────┬───────────┬───────────┬───────────┤
│ RECIBIDO  │ DIAGNOST  │ COTIZADO  │ APROBADO  │ REPARANDO │ LISTO     │
│    (3)    │    (2)    │    (1)    │    (2)    │    (4)    │    (1)    │
├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
│ ┌───────┐ │ ┌───────┐ │ ┌───────┐ │ ┌───────┐ │ ┌───────┐ │ ┌───────┐ │
│ │OS-042 │ │ │OS-040 │ │ │OS-038 │ │ │OS-035 │ │ │OS-030 │ │ │OS-028 │ │
│ │Kenw...│ │ │Freig..│ │ │Volvo..│ │ │Inter..│ │ │Hino..│ │ │Scania│ │
│ │2h 30m │ │ │4h 15m │ │ │🔴1d  │ │ │30min │ │ │3h    │ │ │15min │ │
│ └───────┘ │ └───────┘ │ └───────┘ │ └───────┘ │ └───────┘ │ └───────┘ │
│ ┌───────┐ │ ┌───────┐ │           │ ┌───────┐ │ ┌───────┐ │           │
│ │OS-041 │ │ │OS-039 │ │           │ │OS-034 │ │ │OS-031 │ │           │
│ │Mack..│ │ │Peter..│ │           │ │Volvo..│ │ │Kenw..│ │           │
│ │45min │ │ │2h    │ │           │ │1h 20m │ │ │5h 45m│ │           │
│ └───────┘ │ └───────┘ │           │           │ └───────┘ │           │
└───────────┴───────────┴───────────┴───────────┴───────────┴───────────┘
```

---

## Tareas Tecnicas

**Backend:**
- [ ] BE-055: Endpoint GET /api/orders/kanban (agrupado por estado)
- [ ] BE-056: Calcular tiempo en estado actual
- [ ] BE-057: Endpoint PATCH /api/orders/:id/move (mover entre estados)
- [ ] BE-058: Validar transiciones de estado permitidas

**Frontend:**
- [ ] FE-053: Crear KanbanBoard component
- [ ] FE-054: Crear KanbanColumn component
- [ ] FE-055: Crear OrderCard component
- [ ] FE-056: Implementar drag & drop (react-beautiful-dnd)
- [ ] FE-057: Indicadores visuales de tiempo
- [ ] FE-058: Filtros por mecanico, fecha, cliente

---

## Transiciones de Estado Permitidas

| Desde | Hacia Permitido |
|-------|-----------------|
| RECIBIDO | EN_DIAGNOSTICO, CANCELADO |
| EN_DIAGNOSTICO | COTIZADO, EN_REPARACION, CANCELADO |
| COTIZADO | APROBADO, RECHAZADO |
| APROBADO | EN_REPARACION, CANCELADO |
| EN_REPARACION | LISTO, ESPERANDO_REFACCIONES |
| ESPERANDO_REFACCIONES | EN_REPARACION |
| LISTO | ENTREGADO |

---

## Dependencias

**Depende de:**
- [ ] US-MMD002-001: Crear orden
- [ ] US-MMD002-003: Asignar orden

**Bloquea:**
- [ ] Ninguno (vista de monitoreo)

---

## Definition of Done (DoD)

- [ ] Tablero con columnas por estado
- [ ] Tarjetas con info de orden
- [ ] Indicadores de tiempo
- [ ] Drag & drop funcional
- [ ] Filtros operativos
- [ ] Responsive (tablet)
- [ ] Tests pasando

---

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