michangarrito/docs/01-epicas/MCH-009-prediccion-inventario.md
rckrdmrd 184d21d6ce [MCH-DOC-VAL] docs: Estandarizar épicas MCH-006 a MCH-010 con HU formales
Épicas actualizadas con formato SIMCO 4.0.1:
- MCH-006: Onboarding Inteligente (4 HU, 13 SP)
- MCH-007: Templates y Catálogos (4 HU, 8 SP)
- MCH-008: Sistema de Fiados (5 HU, 13 SP)
- MCH-009: Predicción Inventario (5 HU, 13 SP)
- MCH-010: MCP Server (7 HU, 21 SP)

Cambios aplicados:
- Agregado story_points en frontmatter y metadata
- Sección "Historias de Usuario" con formato Como/Quiero/Para
- Criterios de Aceptación con formato [CA-XXX-N]
- Tareas con formato [MCH-TT-XXX-NN]
- Tabla resumen de Story Points

IDs asignados: MCH-US-050 a MCH-US-096

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 04:28:53 -06:00

356 lines
8.9 KiB
Markdown

---
id: EPIC-MCH-009
type: Epic
title: "MCH-009: Prediccion de Inventario"
code: MCH-009
status: Completado
phase: 2
priority: P1
story_points: 13
created_at: 2026-01-10
updated_at: 2026-01-17
simco_version: "4.0.1"
dependencies:
blocks: ["MCH-012"]
depends_on: ["MCH-003", "MCH-004", "MCH-007"]
---
# MCH-009: Prediccion de Inventario
## Metadata
- **Codigo:** MCH-009
- **Fase:** 2 - Inteligencia
- **Prioridad:** P1
- **Estado:** Completado
- **Story Points:** 13
- **Fecha completado:** 2026-01-10
## Descripcion
Sistema de prediccion de inventario basado en historico de ventas: alertas de stock bajo, sugerencias de reabastecimiento, prediccion de demanda, y deteccion de productos de lento movimiento.
## Objetivos
1. Alertas de stock bajo
2. Prediccion de demanda semanal
3. Sugerencias de pedido a proveedor
4. Deteccion de productos sin movimiento
5. Dias de inventario estimados
## Alcance
### Incluido
- Alerta cuando stock < min_stock
- Prediccion basada en promedio movil
- Calculo de punto de reorden
- Lista de sugerencias de compra
- Productos sin venta en X dias
### Excluido
- ML avanzado (LSTM, Prophet)
- Integracion automatica con proveedores
- Pedidos automaticos
## Algoritmos
### Prediccion de Demanda
```
Promedio Movil Ponderado (4 semanas)
- Semana -1: peso 0.4
- Semana -2: peso 0.3
- Semana -3: peso 0.2
- Semana -4: peso 0.1
Demanda_estimada = Σ(ventas_semana * peso)
```
### Punto de Reorden
```
Punto_reorden = (Demanda_diaria * Lead_time) + Stock_seguridad
Donde:
- Demanda_diaria = Demanda_semanal / 7
- Lead_time = dias para recibir pedido (default: 3)
- Stock_seguridad = Demanda_diaria * 2
```
### Dias de Inventario
```
Dias_inventario = Stock_actual / Demanda_diaria
```
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /inventory/low-stock | Productos bajo minimo |
| GET | /inventory/predictions | Predicciones de demanda |
| GET | /inventory/reorder-suggestions | Sugerencias de pedido |
| GET | /inventory/slow-moving | Productos sin movimiento |
| GET | /inventory/days-on-hand | Dias de inventario |
| GET | /inventory/analytics | Dashboard completo |
## Modelo de Datos
### Tablas Adicionales
**inventory_predictions** (cache)
- id, product_id, period_start, period_end
- predicted_demand, confidence
- calculated_at
**reorder_suggestions**
- id, tenant_id, product_id
- current_stock, suggested_quantity
- priority, status, created_at
## Flujos de Usuario
### Alerta de Stock Bajo
```
1. Sistema detecta stock < min_stock
2. Genera notificacion push
3. Muestra en dashboard
4. Dueno revisa y decide
```
### Ver Sugerencias de Pedido
```
1. Dueno abre "Sugerencias de compra"
2. Ve lista ordenada por prioridad
3. Cada item muestra:
- Producto
- Stock actual
- Cantidad sugerida
- Proveedor (si conocido)
4. Puede marcar como "Pedido"
```
### Reporte Semanal
```
1. Lunes a las 8am
2. Sistema genera reporte:
- Top 10 productos por venta
- Productos a reordenar
- Productos sin movimiento
3. Envia via WhatsApp al dueno
```
## UI Components
### InventoryDashboard
- Grafica de stock vs demanda
- Lista de alertas
- Indicadores clave
### ReorderList
- Tabla de sugerencias
- Filtros por categoria
- Accion: marcar como pedido
## Entregables
| Entregable | Estado | Archivo |
|------------|--------|---------|
| predictions.service | Pendiente | `services/predictions.service.ts` |
| inventory.analytics | Pendiente | `modules/inventory/analytics/` |
| Dashboard FE | Pendiente | `components/inventory/` |
| Cron jobs | Pendiente | `jobs/inventory.jobs.ts` |
## Dependencias
### Depende de
- MCH-003 (Productos)
- MCH-004 (POS) - historial de ventas
- MCH-007 (Inventory module base)
### Bloquea a
- MCH-012 (Chat LLM puede consultar predicciones)
## Criterios de Aceptacion
- [x] Alertas de stock bajo funcionan
- [x] Predicciones tienen precision >70%
- [x] Sugerencias de reorden son utiles
- [x] Productos sin movimiento se detectan
- [x] Dashboard muestra info clara
## Configuracion por Tenant
```typescript
{
predictions: {
enabled: true,
low_stock_threshold: 5,
lead_time_days: 3,
safety_stock_days: 2,
slow_moving_days: 30,
weekly_report_enabled: true
}
}
```
---
## Historias de Usuario
### MCH-US-080: Alertas de Stock Bajo
**Como** dueno de changarrito
**Quiero** recibir alertas cuando un producto esta por agotarse
**Para** poder reabastecer a tiempo y no perder ventas
- **Story Points:** 3
- **Prioridad:** P1
#### Criterios de Aceptacion
| ID | Criterio |
|----|----------|
| CA-080-1 | Sistema detecta cuando stock actual < min_stock configurado |
| CA-080-2 | Se genera notificacion push al dispositivo del dueno |
| CA-080-3 | Alerta visible en dashboard con indicador visual claro |
| CA-080-4 | Lista de productos en alerta ordenada por urgencia |
#### Tareas
| ID | Tarea | Estimacion |
|----|-------|------------|
| MCH-TT-080-01 | Implementar detector de stock bajo en backend | 2h |
| MCH-TT-080-02 | Crear endpoint GET /inventory/low-stock | 1h |
| MCH-TT-080-03 | Configurar notificaciones push | 2h |
| MCH-TT-080-04 | Componente AlertList en dashboard | 2h |
---
### MCH-US-081: Prediccion de Demanda
**Como** dueno de changarrito
**Quiero** ver predicciones de venta para los proximos dias
**Para** planificar mis compras con anticipacion
- **Story Points:** 3
- **Prioridad:** P1
#### Criterios de Aceptacion
| ID | Criterio |
|----|----------|
| CA-081-1 | Prediccion usa promedio movil ponderado de 4 semanas |
| CA-081-2 | Precision de prediccion >70% en productos con historial |
| CA-081-3 | Muestra demanda estimada por producto para proxima semana |
| CA-081-4 | Calcula dias de inventario restantes por producto |
#### Tareas
| ID | Tarea | Estimacion |
|----|-------|------------|
| MCH-TT-081-01 | Implementar algoritmo promedio movil ponderado | 3h |
| MCH-TT-081-02 | Crear predictions.service.ts | 2h |
| MCH-TT-081-03 | Endpoint GET /inventory/predictions | 1h |
| MCH-TT-081-04 | Cache de predicciones en tabla inventory_predictions | 2h |
---
### MCH-US-082: Sugerencias de Reorden
**Como** dueno de changarrito
**Quiero** recibir sugerencias de que productos reabastecer y en que cantidad
**Para** optimizar mis compras y no quedarme sin stock
- **Story Points:** 3
- **Prioridad:** P1
#### Criterios de Aceptacion
| ID | Criterio |
|----|----------|
| CA-082-1 | Calcula punto de reorden basado en lead time y stock de seguridad |
| CA-082-2 | Sugiere cantidad optima a pedir por producto |
| CA-082-3 | Lista ordenada por prioridad (mas urgente primero) |
| CA-082-4 | Permite marcar sugerencia como "Pedido realizado" |
#### Tareas
| ID | Tarea | Estimacion |
|----|-------|------------|
| MCH-TT-082-01 | Implementar calculo de punto de reorden | 2h |
| MCH-TT-082-02 | Crear tabla reorder_suggestions | 1h |
| MCH-TT-082-03 | Endpoint GET /inventory/reorder-suggestions | 1h |
| MCH-TT-082-04 | Componente ReorderList con acciones | 2h |
---
### MCH-US-083: Productos Sin Movimiento
**Como** dueno de changarrito
**Quiero** identificar productos que no se han vendido en mucho tiempo
**Para** tomar decisiones sobre promociones o descontinuarlos
- **Story Points:** 2
- **Prioridad:** P2
#### Criterios de Aceptacion
| ID | Criterio |
|----|----------|
| CA-083-1 | Detecta productos sin ventas en X dias (configurable, default 30) |
| CA-083-2 | Muestra ultima fecha de venta por producto |
| CA-083-3 | Calcula valor de inventario estancado |
| CA-083-4 | Sugiere acciones (promocion, liquidacion) |
#### Tareas
| ID | Tarea | Estimacion |
|----|-------|------------|
| MCH-TT-083-01 | Query para detectar productos sin movimiento | 1h |
| MCH-TT-083-02 | Endpoint GET /inventory/slow-moving | 1h |
| MCH-TT-083-03 | Vista de productos estancados en UI | 2h |
---
### MCH-US-084: Reporte Semanal Automatico
**Como** dueno de changarrito
**Quiero** recibir un resumen semanal de inventario via WhatsApp
**Para** mantenerme informado sin entrar a la app constantemente
- **Story Points:** 2
- **Prioridad:** P2
#### Criterios de Aceptacion
| ID | Criterio |
|----|----------|
| CA-084-1 | Reporte se envia automaticamente los lunes a las 8am |
| CA-084-2 | Incluye top 10 productos mas vendidos de la semana |
| CA-084-3 | Lista productos que necesitan reorden urgente |
| CA-084-4 | Muestra productos sin movimiento |
| CA-084-5 | Formato legible y conciso para WhatsApp |
#### Tareas
| ID | Tarea | Estimacion |
|----|-------|------------|
| MCH-TT-084-01 | Crear cron job semanal | 1h |
| MCH-TT-084-02 | Generar reporte consolidado | 2h |
| MCH-TT-084-03 | Integrar envio via WhatsApp API | 2h |
| MCH-TT-084-04 | Template de mensaje formateado | 1h |
---
## Resumen de Story Points
| Historia | Descripcion | SP |
|----------|-------------|---:|
| MCH-US-080 | Alertas de Stock Bajo | 3 |
| MCH-US-081 | Prediccion de Demanda | 3 |
| MCH-US-082 | Sugerencias de Reorden | 3 |
| MCH-US-083 | Productos Sin Movimiento | 2 |
| MCH-US-084 | Reporte Semanal Automatico | 2 |
| | **TOTAL EPIC MCH-009** | **13** |
---
**Ultima actualizacion:** 2026-01-17