# EPICA: EPIC-MMD-004 - Inventario de Refacciones

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-MMD-004 |
| **Nombre** | Inventario de Refacciones |
| **Modulo** | inventario-refacciones |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 42 |
| **Sprint(s)** | Sprint 2-3 |

---

## Descripcion

Modulo de gestion de inventario especializado para refacciones diesel. Extiende el modulo MGN-011 Inventory del core con funcionalidades especificas: catalogos de partes por marca/modelo, equivalencias, ubicaciones en almacen, stock minimo, y solicitudes desde ordenes de servicio.

**Extiende:** MGN-011 Inventory (70% reutilizacion)

---

## Objetivo de Negocio

- Reducir perdidas de inventario de 15% a menos de 2%
- Evitar paros por falta de refacciones criticas
- Control de costos de partes por servicio
- Trazabilidad: que refaccion se uso en que vehiculo
- Facilitar reposicion automatica

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-MMD004-001 | Como almacenista, quiero registrar refacciones con codigo, descripcion y ubicacion para control | P0 | 5 | Backlog |
| US-MMD004-002 | Como almacenista, quiero registrar entrada de refacciones (compra, devolucion) para actualizar stock | P0 | 5 | Backlog |
| US-MMD004-003 | Como mecanico, quiero solicitar refaccion desde orden de servicio para usar en reparacion | P0 | 5 | Backlog |
| US-MMD004-004 | Como almacenista, quiero despachar refacciones solicitadas y actualizar stock automaticamente | P0 | 5 | Backlog |
| US-MMD004-005 | Como almacenista, quiero ver alertas de stock minimo para reabastecer a tiempo | P0 | 5 | Backlog |
| US-MMD004-006 | Como almacenista, quiero buscar refacciones por codigo, descripcion o equivalencia | P0 | 3 | Backlog |
| US-MMD004-007 | Como jefe de taller, quiero ver costo de refacciones por orden de servicio | P1 | 3 | Backlog |
| US-MMD004-008 | Como admin, quiero configurar ubicaciones de almacen (rack, estante, nivel) | P1 | 3 | Backlog |
| US-MMD004-009 | Como admin, quiero importar catalogo de refacciones desde Excel | P1 | 5 | Backlog |
| US-MMD004-010 | Como almacenista, quiero hacer inventario fisico y ajustar diferencias | P2 | 3 | Backlog |

**Total Story Points:** 42 SP

---

## Flujo de Movimientos de Inventario

```
┌────────────────────────────────────────────────────────────┐
│                    ENTRADAS (+)                            │
├────────────────────────────────────────────────────────────┤
│  COMPRA       │ Recepcion de compra a proveedor            │
│  DEVOLUCION   │ Cliente devuelve refaccion no usada        │
│  AJUSTE+      │ Inventario fisico encontro mas             │
│  TRANSFERENCIA│ Recibe de otro almacen (si aplica)         │
└────────────────────────────────────────────────────────────┘

┌────────────────────────────────────────────────────────────┐
│                    SALIDAS (-)                             │
├────────────────────────────────────────────────────────────┤
│  CONSUMO      │ Usada en orden de servicio                 │
│  AJUSTE-      │ Inventario fisico encontro menos           │
│  MERMA        │ Danada, perdida, obsoleta                  │
│  DEVOLUCION   │ Devolucion a proveedor                     │
└────────────────────────────────────────────────────────────┘
```

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Catalogo de refacciones con codigo, descripcion, ubicacion
- [ ] Categorias: INY, FIL, LUB, ELE, FRE, SUS, MOT, TRA
- [ ] Registro de movimientos con tipo y referencia
- [ ] Stock actual calculado automaticamente
- [ ] Alertas de stock minimo configurables
- [ ] Busqueda por codigo, descripcion, equivalencias
- [ ] Solicitud de refaccion desde orden de servicio
- [ ] Kardex por refaccion (historial movimientos)
- [ ] Costo de refacciones por orden

**No Funcionales:**
- [ ] Busqueda < 200ms
- [ ] Actualizacion de stock en tiempo real
- [ ] Soporte 5000+ SKUs

**Tecnicos:**
- [ ] Integracion con modulo Ordenes (consumos)
- [ ] Integracion con Compras (si existe)
- [ ] Export de inventario a Excel
- [ ] Auditoria de todos los movimientos

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-MMD-001 Fundamentos | Backlog | Si |
| MGN-011 Inventory (Core) | Pendiente | Si |

**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-MMD-002 Ordenes | Requiere refacciones |
| EPIC-MMD-006 Cotizaciones | Requiere precios |
| EPIC-MMA-010 Proveedores | Requiere catalogo |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `parts_management`
- [ ] Tablas: 8 (parts, categories, locations, movements, stock, requests, equivalences, etc.)
- [ ] Funciones: 3 (calcular_stock, registrar_movimiento, alertar_minimo)
- [ ] Indices: Por codigo, categoria, ubicacion

**Backend:**
- [ ] Modulo: `parts-inventory`
- [ ] Extiende: InventoryModule (Core)
- [ ] Entities: 7 (Part, Category, Location, Movement, Stock, Request, Equivalence)
- [ ] Endpoints: 18+
- [ ] Tests: 30+

**Frontend:**
- [ ] Paginas: 4 (PartsList, PartDetail, MovementsLog, StockAlerts)
- [ ] Componentes: 12+ (PartCard, MovementForm, StockBadge, LocationSelect, etc.)
- [ ] Stores: 2 (partsStore, movementsStore)

---

## Estructura de Refaccion

```typescript
interface Part {
  id: string;
  code: string;              // Codigo interno (ej: INY-0001)
  barcode?: string;          // Codigo de barras
  description: string;       // Descripcion completa
  short_name: string;        // Nombre corto
  category_id: string;       // INY, FIL, LUB, etc.
  brand?: string;            // Marca (Bosch, Delphi, etc.)
  oem_number?: string;       // Numero original fabricante
  unit: string;              // PZA, LT, KG, MTS
  cost: number;              // Costo de compra
  price: number;             // Precio de venta
  min_stock: number;         // Stock minimo
  max_stock?: number;        // Stock maximo
  location_id: string;       // Ubicacion en almacen
  equivalences: string[];    // Codigos equivalentes
  status: 'active' | 'discontinued';
}
```

---

## Endpoints API

| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/parts | Listar refacciones (paginado, filtros) |
| POST | /api/parts | Crear refaccion |
| GET | /api/parts/:id | Detalle refaccion |
| PATCH | /api/parts/:id | Actualizar refaccion |
| GET | /api/parts/:id/kardex | Kardex de movimientos |
| POST | /api/movements | Registrar movimiento |
| GET | /api/stock/alerts | Alertas de stock bajo |
| POST | /api/parts/request | Solicitar desde orden |
| POST | /api/parts/import | Importar desde Excel |
| GET | /api/inventory/report | Reporte de inventario |

---

## Categorias de Refacciones

| Codigo | Categoria | Ejemplos |
|--------|-----------|----------|
| INY | Inyectores y Bombas | Inyectores, bombas, toberas |
| FIL | Filtros | Aire, aceite, diesel, hidraulico |
| LUB | Lubricantes | Aceites motor, transmision, hidraulico |
| ELE | Electrico | Sensores, alternadores, marchas |
| FRE | Frenos | Balatas, discos, tambores, cilindros |
| SUS | Suspension | Amortiguadores, rotulas, bujes |
| MOT | Motor | Empaques, anillos, camisas, valvulas |
| TRA | Transmision | Clutch, sincronizadores, baleros |
| ACC | Accesorios | Faros, espejos, mangueras |
| HER | Herramientas | Consumibles de taller |

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Stock inicial incorrecto | Alta | Medio | Inventario fisico inicial |
| Movimientos no registrados | Media | Alto | Registro obligatorio desde orden |
| Equivalencias incorrectas | Media | Medio | Validacion manual |

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Categorias definidas
- [x] Flujo de movimientos claro
- [ ] Catalogo inicial de refacciones

## Definition of Done (DoD)

- [ ] CRUD de refacciones funcionando
- [ ] Movimientos con actualizacion de stock
- [ ] Alertas de stock minimo
- [ ] Solicitud desde ordenes
- [ ] Import Excel
- [ ] Kardex por refaccion
- [ ] Tests pasando

---

## Historial

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

---

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