# US-MMD001-007: Importar Catalogos desde Excel

## Metadata

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

---

## Historia de Usuario

**Como** administrador del taller,
**quiero** importar catalogos de servicios y refacciones desde archivos Excel,
**para** poblar rapidamente el sistema con mis datos existentes.

## Descripcion Detallada

Muchos talleres ya tienen sus catalogos en hojas de Excel. El sistema debe permitir importar estos datos de forma masiva, validando el formato y mostrando errores antes de confirmar la importacion.

---

## Criterios de Aceptacion

**Escenario 1: Descargar plantilla Excel**
```gherkin
DADO que quiero importar servicios
CUANDO hago clic en "Descargar plantilla"
ENTONCES se descarga un archivo Excel con las columnas correctas:
  | Columna | Descripcion |
  | codigo | Codigo del servicio |
  | nombre | Nombre del servicio |
  | categoria | Categoria (DIAGNOSTICO, MOTOR, etc.) |
  | unidad | Unidad de medida |
  | precio | Precio unitario |
```

**Escenario 2: Validar archivo antes de importar**
```gherkin
DADO que subo un archivo Excel con 100 servicios
CUANDO el sistema procesa el archivo
ENTONCES muestra un resumen de validacion:
  | Validos | 95 |
  | Con errores | 5 |
  | Total | 100 |
Y muestra los errores especificos por fila
```

**Escenario 3: Importar registros validos**
```gherkin
DADO que tengo 95 registros validos y 5 con errores
CUANDO confirmo la importacion
ENTONCES el sistema importa los 95 validos
Y muestra reporte: "95 servicios importados exitosamente"
Y los 5 con errores quedan pendientes de corregir
```

**Escenario 4: Detectar duplicados**
```gherkin
DADO que importo servicios y uno ya existe (mismo codigo)
CUANDO el sistema valida
ENTONCES marca el registro como "Duplicado"
Y permite elegir: Omitir, Actualizar, o Crear nuevo
```

**Escenario 5: Importar refacciones**
```gherkin
DADO que quiero importar refacciones
CUANDO subo archivo Excel con columnas:
  | codigo | descripcion | categoria | unidad | costo | precio | stock_minimo |
ENTONCES el sistema valida e importa las refacciones
```

---

## Plantillas Excel

### Plantilla Servicios
| Columna | Tipo | Requerido | Ejemplo |
|---------|------|-----------|---------|
| codigo | texto | Si | SRV-001 |
| nombre | texto | Si | Diagnostico Computarizado |
| descripcion | texto | No | Escaneo completo... |
| categoria | texto | Si | DIAGNOSTICO |
| unidad | texto | Si | evento |
| precio | numero | Si | 500.00 |
| tiempo_estimado | numero | No | 60 |

### Plantilla Refacciones
| Columna | Tipo | Requerido | Ejemplo |
|---------|------|-----------|---------|
| codigo | texto | Si | INY-0001 |
| descripcion | texto | Si | Inyector Cummins ISX |
| categoria | texto | Si | INY |
| marca | texto | No | Cummins |
| numero_oem | texto | No | 4954434 |
| unidad | texto | Si | PZA |
| costo | numero | Si | 2500.00 |
| precio | numero | Si | 3500.00 |
| stock_minimo | numero | Si | 2 |
| ubicacion | texto | No | A-01-03 |

---

## Tareas Tecnicas

**Backend:**
- [ ] BE-023: Endpoint POST /api/services/import
- [ ] BE-024: Endpoint POST /api/parts/import
- [ ] BE-025: Servicio de parsing Excel (xlsx)
- [ ] BE-026: Validador de datos con reglas por tipo
- [ ] BE-027: Manejo de duplicados (omitir/actualizar)
- [ ] BE-028: Endpoint GET /api/templates/:type (descarga plantilla)

**Frontend:**
- [ ] FE-020: Crear ImportWizard component
- [ ] FE-021: Vista de preview con errores
- [ ] FE-022: Selector de accion para duplicados
- [ ] FE-023: Barra de progreso para importacion
- [ ] FE-024: Reporte de resultados

---

## Dependencias

**Depende de:**
- [ ] US-MMD001-001: Configurar taller
- [ ] US-MMD001-003: Catalogo de servicios

**Bloquea:**
- [ ] Ninguno (funcionalidad de carga inicial)

---

## Notas Tecnicas

**Endpoints:**
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/templates/services | Descargar plantilla servicios |
| GET | /api/templates/parts | Descargar plantilla refacciones |
| POST | /api/services/import/validate | Validar sin importar |
| POST | /api/services/import | Importar servicios |
| POST | /api/parts/import/validate | Validar sin importar |
| POST | /api/parts/import | Importar refacciones |

**Librerias sugeridas:**
- Backend: `xlsx` o `exceljs` para parsing
- Frontend: `react-dropzone` para upload

**Limites:**
- Maximo 1000 registros por archivo
- Tamanio maximo archivo: 5MB

---

## Definition of Done (DoD)

- [ ] Plantillas descargables
- [ ] Validacion previa a importacion
- [ ] Preview de errores
- [ ] Importacion exitosa con reporte
- [ ] Manejo de duplicados
- [ ] Tests pasando

---

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