# US-MMD001-005: Configurar Bahias de Trabajo

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-MMD001-005 |
| **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 las bahias de trabajo disponibles en mi taller,
**para** poder asignar ordenes de servicio a ubicaciones especificas y controlar la capacidad.

## Descripcion Detallada

Las bahias son los espacios fisicos donde se realizan las reparaciones. Cada bahia puede tener un tipo (mecanica general, banco de pruebas, alineacion, etc.), un mecanico asignado por defecto, y un estado (disponible, ocupada, mantenimiento).

---

## Criterios de Aceptacion

**Escenario 1: Crear bahia de trabajo**
```gherkin
DADO que estoy en la configuracion de bahias
CUANDO creo una nueva bahia con:
  | Campo | Valor |
  | Numero | 1 |
  | Nombre | Bahia Principal |
  | Tipo | Mecanica General |
  | Capacidad | 1 vehiculo |
ENTONCES el sistema crea la bahia
Y aparece en la lista de bahias
```

**Escenario 2: Asignar mecanico por defecto**
```gherkin
DADO que tengo una bahia creada
CUANDO asigno a "Juan Perez" como mecanico por defecto
ENTONCES las ordenes asignadas a esta bahia sugieren a Juan
Y el sistema muestra el mecanico en la vista de bahias
```

**Escenario 3: Ver estado de bahias**
```gherkin
DADO que tengo 5 bahias configuradas
CUANDO veo el tablero de bahias
ENTONCES veo cada bahia con su estado actual:
  | Bahia | Estado | Orden Actual |
  | 1 | Ocupada | OS-2025-0042 |
  | 2 | Disponible | - |
  | 3 | Mantenimiento | - |
```

**Escenario 4: Cambiar bahia a mantenimiento**
```gherkin
DADO que la bahia 3 requiere mantenimiento
CUANDO cambio su estado a "En Mantenimiento"
ENTONCES no se pueden asignar nuevas ordenes a esa bahia
Y se muestra indicador visual de no disponible
```

---

## Tipos de Bahia

| Tipo | Descripcion | Equipamiento Tipico |
|------|-------------|---------------------|
| GENERAL | Mecanica general | Herramientas basicas |
| BANCO_PRUEBAS | Pruebas de banco | Equipo de inyectores/bombas |
| DIAGNOSTICO | Diagnostico computarizado | Scanner, osciloscopio |
| ELECTRICO | Sistema electrico | Equipo de pruebas electricas |
| ALINEACION | Alineacion y balanceo | Alineadora, balanceadora |
| FRENOS | Sistema de frenos | Tornofrenos |

---

## Estados de Bahia

| Estado | Descripcion | Acepta Ordenes |
|--------|-------------|----------------|
| DISPONIBLE | Lista para recibir | Si |
| OCUPADA | Tiene orden en proceso | No |
| MANTENIMIENTO | En mantenimiento | No |
| INACTIVA | Fuera de servicio | No |

---

## Tareas Tecnicas

**Database:**
- [ ] DB-012: Crear tabla `work_bays` en schema `workshop_core`
- [ ] DB-013: Crear tabla `bay_types`
- [ ] DB-014: Relacion con usuarios (mecanico_default)

**Backend:**
- [ ] BE-016: Crear WorkBayEntity
- [ ] BE-017: Crear WorkBayService con CRUD
- [ ] BE-018: Crear WorkBayController
- [ ] BE-019: Validar cambios de estado

**Frontend:**
- [ ] FE-016: Crear BaysConfigPage
- [ ] FE-017: Crear BayCard con estado visual
- [ ] FE-018: Crear BayForm para crear/editar
- [ ] FE-019: Crear BaysBoard (vista tablero)

---

## Dependencias

**Depende de:**
- [ ] US-MMD001-001: Configurar taller
- [ ] US-MMD001-002: Configurar roles (mecanicos)

**Bloquea:**
- [ ] US-MMD002-003: Asignar orden a bahia

---

## Notas Tecnicas

**Endpoints:**
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/bays | Listar bahias |
| POST | /api/bays | Crear bahia |
| PATCH | /api/bays/:id | Actualizar bahia |
| PATCH | /api/bays/:id/status | Cambiar estado |
| GET | /api/bays/board | Vista tablero |

**Estructura:**
```typescript
interface WorkBay {
  id: string;
  number: number;
  name: string;
  type: BayType;
  default_mechanic_id?: string;
  status: 'available' | 'occupied' | 'maintenance' | 'inactive';
  current_order_id?: string;
  notes?: string;
}
```

---

## Definition of Done (DoD)

- [ ] CRUD de bahias funcionando
- [ ] Vista tablero con estados
- [ ] Asignacion de mecanico default
- [ ] Cambio de estados con validacion
- [ ] Tests pasando

---

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