# EPICA: EPIC-VT-004 - Inventario

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-VT-004 |
| **Nombre** | Inventario |
| **Modulo** | inventario |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 38 |
| **Sprint(s)** | Sprint 3-4 |

---

## Descripcion

Control de inventario especializado para materia prima de vidrio. Gestiona láminas de vidrio por tipo, espesor y dimensiones, incluyendo trazabilidad de lotes y control de desperdicio. Integra con el módulo de corte para optimizar uso de material.

---

## Objetivo de Negocio

- Control preciso de existencias de vidrio
- Trazabilidad de lotes para garantías
- Minimizar desperdicio de material
- Alertas de reabastecimiento oportunas
- Valorización correcta de inventario

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-VT004-001 | Como almacenista, quiero registrar entrada de láminas de vidrio con lote y proveedor | P0 | 5 | Backlog |
| US-VT004-002 | Como almacenista, quiero consultar stock disponible por tipo y espesor de vidrio | P0 | 3 | Backlog |
| US-VT004-003 | Como operador de corte, quiero reservar lámina específica para orden de producción | P0 | 5 | Backlog |
| US-VT004-004 | Como operador de corte, quiero registrar consumo de lámina con desperdicio generado | P0 | 5 | Backlog |
| US-VT004-005 | Como almacenista, quiero ver alertas de stock mínimo para generar pedidos | P0 | 3 | Backlog |
| US-VT004-006 | Como admin, quiero definir stock mínimo por tipo de vidrio para configurar alertas | P0 | 2 | Backlog |
| US-VT004-007 | Como contador, quiero ver valorización de inventario por método PEPS/UEPS | P1 | 5 | Backlog |
| US-VT004-008 | Como almacenista, quiero realizar inventario físico y ajustar diferencias | P1 | 5 | Backlog |
| US-VT004-009 | Como jefe de producción, quiero ver kardex de movimientos por lámina | P1 | 3 | Backlog |
| US-VT004-010 | Como admin, quiero configurar ubicaciones de almacén para localizar material | P2 | 2 | Backlog |

**Total Story Points:** 38 SP

---

## Tipos de Movimiento

```
ENTRADA
├── Compra a proveedor
├── Devolución de producción
└── Ajuste positivo

SALIDA
├── Consumo en producción
├── Desperdicio
├── Ajuste negativo
└── Baja por rotura

TRANSFERENCIA
└── Entre ubicaciones
```

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Registrar entradas con lote, proveedor, dimensiones
- [ ] Consultar stock por tipo, espesor, ubicación
- [ ] Reservar material para producción
- [ ] Registrar consumos y desperdicios
- [ ] Alertas de stock mínimo
- [ ] Kardex de movimientos
- [ ] Valorización PEPS/UEPS
- [ ] Inventario físico con ajustes

**No Funcionales:**
- [ ] Consulta de stock < 500ms
- [ ] Soporte para 1000+ láminas
- [ ] Historial de 2 años de movimientos

**Tecnicos:**
- [ ] Integración con módulo de corte
- [ ] Integración con módulo de compras
- [ ] Reportes de inventario

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-VT-001 Fundamentos | Backlog | Si |

**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-VT-003 Produccion | Requiere material disponible |
| EPIC-VT-005 Corte | Requiere láminas para cortar |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `inventory`
- [ ] Tablas: 7 (glass_sheets, stock_movements, lots, locations, reservations, etc.)
- [ ] Funciones: 3 (update_stock, calculate_value, reserve_sheet)
- [ ] Indices: Por tipo, espesor, ubicación, lote

**Backend:**
- [ ] Modulo: `inventory`
- [ ] Entities: 5 (GlassSheet, StockMovement, Lot, Location, Reservation)
- [ ] Endpoints: 15
- [ ] Tests: 30

**Frontend:**
- [ ] Paginas: 5 (StockList, SheetDetail, Movements, PhysicalCount, Reports)
- [ ] Componentes: 12 (StockCard, MovementForm, ReservationModal, etc.)
- [ ] Stores: 1 (inventoryStore)

---

## Endpoints API

| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/inventory/stock | Consultar stock |
| POST | /api/inventory/entries | Registrar entrada |
| POST | /api/inventory/exits | Registrar salida |
| POST | /api/inventory/reservations | Crear reservación |
| DELETE | /api/inventory/reservations/:id | Cancelar reservación |
| GET | /api/inventory/kardex/:sheetId | Kardex de lámina |
| GET | /api/inventory/valuation | Valorización |
| POST | /api/inventory/physical-count | Inventario físico |
| GET | /api/inventory/alerts | Alertas de stock |

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Discrepancias de inventario | Alta | Alto | Inventarios frecuentes |
| Lotes no trazables | Media | Alto | Registro obligatorio de lote |
| Desperdicio no registrado | Media | Medio | Validación en corte |

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Catálogo de tipos de vidrio definido
- [ ] Ubicaciones de almacén mapeadas

## Definition of Done (DoD)

- [ ] Entradas y salidas funcionando
- [ ] Kardex completo por lámina
- [ ] Alertas de stock operativas
- [ ] Tests de integración pasando
- [ ] Documentación de API

---

## Historial

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-08 | Creacion de epica | Claude-Agent |

---

**Creada por:** Claude-Agent
**Fecha:** 2025-12-08
**Ultima actualizacion:** 2025-12-08
