# US-MMD001-008: Cambiar de Bahia sin Cerrar Sesion

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-MMD001-008 |
| **Epica** | EPIC-MMD-001 - Fundamentos |
| **Modulo** | fundamentos |
| **Prioridad** | P1 |
| **Story Points** | 3 |
| **Sprint** | Sprint 2 |
| **Estado** | Backlog |
| **Asignado a** | Por asignar |

---

## Historia de Usuario

**Como** mecanico o jefe de taller,
**quiero** cambiar de bahia de trabajo sin cerrar sesion,
**para** poder moverme entre estaciones y ver las ordenes de cada una rapidamente.

## Descripcion Detallada

En talleres grandes, un mecanico puede atender multiples bahias o un supervisor necesita revisar el trabajo en diferentes estaciones. El sistema debe permitir cambiar el contexto de bahia actual sin requerir logout/login.

---

## Criterios de Aceptacion

**Escenario 1: Selector de bahia en header**
```gherkin
DADO que estoy logueado como mecanico
CUANDO veo el header de la aplicacion
ENTONCES veo un selector con mi bahia actual: "Bahia 1"
Y puedo hacer clic para ver otras bahias disponibles
```

**Escenario 2: Cambiar bahia activa**
```gherkin
DADO que estoy en "Bahia 1"
CUANDO selecciono "Bahia 3" del selector
ENTONCES el sistema cambia mi contexto a Bahia 3
Y la vista se actualiza mostrando ordenes de Bahia 3
Y el selector muestra "Bahia 3" como activa
```

**Escenario 3: Ver solo bahias autorizadas**
```gherkin
DADO que soy mecanico asignado a Bahia 1 y Bahia 2
CUANDO abro el selector de bahias
ENTONCES solo veo Bahia 1 y Bahia 2
Y no veo Bahia 3 (no estoy autorizado)
```

**Escenario 4: Jefe de taller ve todas las bahias**
```gherkin
DADO que soy Jefe de Taller
CUANDO abro el selector de bahias
ENTONCES veo todas las bahias del taller
Y puedo cambiar a cualquiera para supervisar
```

**Escenario 5: Indicador visual de bahia**
```gherkin
DADO que cambio a Bahia 3
CUANDO navego por la aplicacion
ENTONCES todas las vistas muestran contexto de Bahia 3
Y hay un indicador visible de la bahia actual
```

---

## Tareas Tecnicas

**Backend:**
- [ ] BE-029: Endpoint GET /api/users/me/bays (bahias autorizadas)
- [ ] BE-030: Endpoint POST /api/users/me/current-bay (cambiar bahia)
- [ ] BE-031: Almacenar bahia actual en sesion/token

**Frontend:**
- [ ] FE-025: Crear BaySelector component en header
- [ ] FE-026: Actualizar contexto global al cambiar bahia
- [ ] FE-027: Refrescar vistas al cambiar bahia
- [ ] FE-028: Indicador visual de bahia actual

---

## Dependencias

**Depende de:**
- [ ] US-MMD001-002: Configurar roles
- [ ] US-MMD001-005: Configurar bahias

**Bloquea:**
- [ ] Vista de ordenes filtrada por bahia

---

## Notas Tecnicas

**Contexto de bahia:**
```typescript
interface UserContext {
  user_id: string;
  workshop_id: string;
  current_bay_id: string | null;  // Bahia activa
  authorized_bays: string[];       // Bahias autorizadas
}
```

**Almacenamiento:**
- Bahia actual se guarda en localStorage
- Se envia en header `X-Current-Bay-Id` en cada request
- Backend valida que usuario tenga acceso a esa bahia

---

## Definition of Done (DoD)

- [ ] Selector de bahia en header
- [ ] Cambio de bahia sin logout
- [ ] Filtro por bahias autorizadas
- [ ] Contexto persiste en navegacion
- [ ] Tests pasando

---

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