# US-MMD002-003: Asignar Orden a Mecanico y Bahia

## Metadata

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

---

## Historia de Usuario

**Como** jefe de taller,
**quiero** asignar una orden a un mecanico y una bahia de trabajo,
**para** distribuir el trabajo equitativamente y tener control de la capacidad.

## Descripcion Detallada

El jefe de taller revisa las ordenes pendientes y las asigna a los mecanicos disponibles segun su especialidad y carga de trabajo. Tambien selecciona la bahia donde se realizara el servicio.

---

## Criterios de Aceptacion

**Escenario 1: Ver ordenes sin asignar**
```gherkin
DADO que hay ordenes en estado RECIBIDO
CUANDO accedo a "Ordenes pendientes de asignar"
ENTONCES veo lista de ordenes sin mecanico asignado
Y veo hace cuanto tiempo llegaron
```

**Escenario 2: Asignar mecanico y bahia**
```gherkin
DADO que selecciono una orden pendiente
CUANDO asigno a "Juan Perez" en "Bahia 2"
ENTONCES la orden cambia a estado EN_DIAGNOSTICO
Y Juan recibe notificacion de nueva orden
Y Bahia 2 se marca como ocupada
```

**Escenario 3: Ver disponibilidad de mecanicos**
```gherkin
DADO que quiero asignar una orden
CUANDO veo la lista de mecanicos
ENTONCES veo su carga actual:
  | Mecanico | Ordenes activas | Disponibilidad |
  | Juan Perez | 2 | Media |
  | Pedro Lopez | 0 | Alta |
  | Carlos Ruiz | 4 | Baja |
```

**Escenario 4: Ver disponibilidad de bahias**
```gherkin
DADO que quiero asignar una bahia
CUANDO veo el selector de bahias
ENTONCES veo solo bahias disponibles
Y las ocupadas aparecen deshabilitadas con la orden actual
```

**Escenario 5: Reasignar orden**
```gherkin
DADO que una orden ya esta asignada a Juan
CUANDO la reasigno a Pedro
ENTONCES Juan deja de ver la orden
Y Pedro la ve en sus ordenes asignadas
Y se registra el cambio en historial
```

---

## Tareas Tecnicas

**Backend:**
- [ ] BE-045: Endpoint PATCH /api/orders/:id/assign
- [ ] BE-046: Calcular carga de trabajo por mecanico
- [ ] BE-047: Actualizar estado de bahia automaticamente
- [ ] BE-048: Registrar asignaciones en historial
- [ ] BE-049: Enviar notificacion a mecanico

**Frontend:**
- [ ] FE-044: Crear AssignmentPanel component
- [ ] FE-045: Crear MechanicSelector con disponibilidad
- [ ] FE-046: Crear BaySelector con estado
- [ ] FE-047: Vista de ordenes pendientes

---

## Dependencias

**Depende de:**
- [ ] US-MMD002-001: Crear orden
- [ ] US-MMD001-002: Roles (mecanicos)
- [ ] US-MMD001-005: Bahias

**Bloquea:**
- [ ] US-MMD002-004: Ver ordenes asignadas
- [ ] US-MMD002-005: Registrar trabajos

---

## Definition of Done (DoD)

- [ ] Asignar mecanico y bahia
- [ ] Ver disponibilidad de recursos
- [ ] Notificacion a mecanico
- [ ] Historial de asignaciones
- [ ] Tests pasando

---

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