É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>
356 lines
8.9 KiB
Markdown
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
|