erp-mecanicas-diesel/docs/08-epicas/EPIC-MMD-004-inventario.md

243 lines
9.0 KiB
Markdown

# 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