# US-MMD001-001: Configurar Taller como Tenant

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-MMD001-001 |
| **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 mi taller como un tenant independiente en el sistema,
**para** operar de forma aislada con mis propios datos, usuarios y configuraciones.

## Descripcion Detallada

El administrador debe poder registrar su taller en el sistema con todos los datos necesarios para operar. Esto incluye datos basicos del negocio, configuracion de zona horaria, y parametros iniciales.

El taller configurado actuara como un tenant independiente, con total aislamiento de datos respecto a otros talleres.

---

## Criterios de Aceptacion

**Escenario 1: Registro inicial de taller**
```gherkin
DADO que soy un nuevo administrador sin taller configurado
CUANDO completo el formulario de registro con datos validos
  | Campo | Valor |
  | Nombre del Taller | Diesel Express |
  | Direccion | Av. Principal 123 |
  | Telefono | 555-0100 |
  | Email | contacto@diesel.mx |
ENTONCES el sistema crea un nuevo tenant para mi taller
Y me redirige al wizard de configuracion inicial
```

**Escenario 2: Validacion de datos obligatorios**
```gherkin
DADO que estoy en el formulario de registro
CUANDO intento guardar sin completar campos obligatorios
ENTONCES el sistema muestra errores de validacion
Y no permite continuar hasta completar los campos
```

**Escenario 3: Configuracion de zona horaria**
```gherkin
DADO que estoy configurando mi taller
CUANDO selecciono mi zona horaria (America/Mexico_City)
ENTONCES el sistema registra la zona horaria
Y todas las fechas/horas se muestran en esa zona
```

**Escenario 4: Logo del taller**
```gherkin
DADO que estoy en la configuracion del taller
CUANDO subo un logo (PNG/JPG, max 2MB)
ENTONCES el sistema almacena el logo
Y lo muestra en el header y documentos
```

---

## Criterios Adicionales

- [ ] Nombre del taller unico en el sistema
- [ ] Logo soporta PNG, JPG, max 2MB
- [ ] Direccion con campos separados (calle, ciudad, estado, CP)
- [ ] Telefono con formato validado
- [ ] Email con formato valido
- [ ] Wizard de bienvenida al completar

---

## Tareas Tecnicas

**Database:**
- [ ] DB-001: Crear tabla `workshops` en schema `workshop_core`
- [ ] DB-002: Crear RLS policy para aislamiento por `workshop_id`

**Backend:**
- [ ] BE-001: Crear WorkshopEntity con campos requeridos
- [ ] BE-002: Crear WorkshopService con metodo createWorkshop()
- [ ] BE-003: Crear WorkshopController POST /api/workshops
- [ ] BE-004: Implementar validaciones con class-validator

**Frontend:**
- [ ] FE-001: Crear WorkshopSetupPage con formulario
- [ ] FE-002: Crear WorkshopForm component
- [ ] FE-003: Implementar upload de logo
- [ ] FE-004: Crear welcomeWizard component

**Tests:**
- [ ] TEST-001: Test unitario WorkshopService
- [ ] TEST-002: Test e2e flujo de registro

---

## Dependencias

**Depende de:**
- [ ] MGN-004 Tenants (Core) - Completado

**Bloquea:**
- [ ] US-MMD001-002: Configurar roles
- [ ] US-MMD001-003: Catalogo servicios
- [ ] Todas las demas US del modulo

---

## Notas Tecnicas

**Endpoints involucrados:**
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/workshops | Crear nuevo taller |
| GET | /api/workshops/me | Obtener taller actual |
| PATCH | /api/workshops/me | Actualizar taller |
| POST | /api/workshops/me/logo | Subir logo |

**Entidades/Tablas:**
- `workshop_core.workshops`: Datos del taller

**Componentes UI:**
- `WorkshopSetupPage`: Pagina de configuracion
- `WorkshopForm`: Formulario principal
- `LogoUpload`: Componente de subida de logo

---

## Definition of Ready (DoR)

- [x] Historia claramente escrita
- [x] Criterios de aceptacion definidos
- [x] Story points estimados
- [x] Dependencias identificadas
- [ ] Diseno UI disponible
- [ ] MGN-004 Tenants completado

## Definition of Done (DoD)

- [ ] Codigo implementado segun criterios
- [ ] Tests unitarios escritos y pasando
- [ ] Tests de integracion pasando
- [ ] Code review aprobado
- [ ] Documentacion actualizada
- [ ] RLS verificado
- [ ] Demo realizada

---

## Historial de Cambios

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-06 | Creacion | Requirements-Analyst |

---

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