workspace-v1/projects/erp-retail/docs/08-epicas/EPIC-RT-004-compras.md
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

229 lines
7.9 KiB
Markdown

# EPICA: EPIC-RT-004 - Compras y Reabastecimiento
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | EPIC-RT-004 |
| **Nombre** | Compras y Reabastecimiento |
| **Modulo** | compras |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 38 |
| **Sprint(s)** | Sprint 5-6 |
---
## Descripcion
Gestión de compras a proveedores para reabastecimiento de tiendas. Incluye sugerencias automáticas de compra basadas en stock mínimo, gestión de órdenes de compra, recepción de mercancía y evaluación de proveedores.
---
## Objetivo de Negocio
- Evitar quiebres de stock
- Optimizar niveles de inventario
- Negociar mejores condiciones con proveedores
- Automatizar proceso de reabastecimiento
- Control de costos de compra
---
## Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-RT004-001 | Como comprador, quiero ver sugerencias de compra basadas en stock mínimo | P0 | 5 | Backlog |
| US-RT004-002 | Como comprador, quiero crear orden de compra desde sugerencias | P0 | 5 | Backlog |
| US-RT004-003 | Como comprador, quiero agregar productos manualmente a orden de compra | P0 | 3 | Backlog |
| US-RT004-004 | Como comprador, quiero enviar orden de compra al proveedor por email | P0 | 3 | Backlog |
| US-RT004-005 | Como almacenista, quiero recibir mercancía validando contra orden de compra | P0 | 5 | Backlog |
| US-RT004-006 | Como almacenista, quiero registrar diferencias en recepción (faltantes/sobrantes) | P0 | 3 | Backlog |
| US-RT004-007 | Como comprador, quiero gestionar catálogo de proveedores con datos de contacto | P0 | 3 | Backlog |
| US-RT004-008 | Como comprador, quiero ver historial de compras por proveedor | P1 | 3 | Backlog |
| US-RT004-009 | Como gerente, quiero ver métricas de cumplimiento de proveedores | P1 | 5 | Backlog |
| US-RT004-010 | Como admin, quiero configurar lead times por proveedor para sugerencias | P2 | 3 | Backlog |
**Total Story Points:** 38 SP
---
## Flujo de Orden de Compra
```
┌─────────────┐
│ BORRADOR │ ← OC siendo creada
└──────┬──────┘
┌─────────────┐
│ CONFIRMADA │ ← Aprobada internamente
└──────┬──────┘
┌─────────────┐
│ ENVIADA │ ← Enviada al proveedor
└──────┬──────┘
├──────────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ RECIB_PARC │ │ RECIBIDA │
│ (parcial) │ │ (completa) │
└──────┬──────┘ └──────┬──────┘
│ │
▼ ▼
┌─────────────────────────┐
│ CERRADA │
└─────────────────────────┘
```
---
## Algoritmo de Sugerencias
```
┌─────────────────────────────────────────────────────────┐
│ CÁLCULO DE SUGERENCIA DE COMPRA │
├─────────────────────────────────────────────────────────┤
│ │
│ PARA CADA PRODUCTO: │
│ │
│ stock_actual = consultar_stock(producto, sucursal) │
│ stock_minimo = producto.stock_minimo │
│ stock_maximo = producto.stock_maximo │
│ ventas_diarias = promedio_ventas(producto, 30_dias) │
│ lead_time = proveedor.lead_time_dias │
│ │
│ punto_reorden = stock_minimo + (ventas_diarias * lead_time)
│ │
│ SI stock_actual <= punto_reorden: │
│ cantidad_sugerida = stock_maximo - stock_actual │
│ CREAR_SUGERENCIA(producto, cantidad_sugerida) │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Criterios de Aceptacion de la Epica
**Funcionales:**
- [ ] Sugerencias automáticas de compra
- [ ] Crear OC desde sugerencias
- [ ] Agregar productos manualmente
- [ ] Enviar OC por email
- [ ] Recibir mercancía con validación
- [ ] Registrar diferencias
- [ ] Catálogo de proveedores
- [ ] Métricas de cumplimiento
**No Funcionales:**
- [ ] Cálculo de sugerencias < 30 segundos (todos los productos)
- [ ] Historial de 2 años de OC
- [ ] Soporte para 50+ proveedores
**Tecnicos:**
- [ ] Integración con módulo Inventario
- [ ] Envío de emails con PDF adjunto
- [ ] Job programado para sugerencias
---
## Dependencias
**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-RT-001 Fundamentos | Backlog | Si |
| EPIC-RT-003 Inventario | Backlog | Si |
**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-RT-003 Inventario | Recepciones actualizan stock |
---
## Desglose Tecnico
**Database:**
- [ ] Schema: `purchases`
- [ ] Tablas: 7 (purchase_orders, po_items, suppliers, supplier_products, receipts, receipt_items, suggestions)
- [ ] Funciones: 3 (calculate_suggestions, validate_receipt, evaluate_supplier)
- [ ] Indices: Por proveedor, fecha, estado
**Backend:**
- [ ] Modulo: `purchases`
- [ ] Entities: 6 (PurchaseOrder, POItem, Supplier, SupplierProduct, Receipt, Suggestion)
- [ ] Endpoints: 15
- [ ] Tests: 30
**Frontend:**
- [ ] Paginas: 5 (Suggestions, PurchaseOrders, PODetail, Suppliers, Receipts)
- [ ] Componentes: 12 (SuggestionCard, POForm, SupplierSelector, ReceiptValidator, etc.)
- [ ] Stores: 1 (purchasesStore)
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/purchases/suggestions | Ver sugerencias de compra |
| POST | /api/purchases/orders | Crear orden de compra |
| GET | /api/purchases/orders/:id | Detalle de OC |
| PATCH | /api/purchases/orders/:id | Actualizar OC |
| POST | /api/purchases/orders/:id/send | Enviar a proveedor |
| POST | /api/purchases/receipts | Registrar recepción |
| GET | /api/purchases/suppliers | Listar proveedores |
| POST | /api/purchases/suppliers | Crear proveedor |
| GET | /api/purchases/suppliers/:id/metrics | Métricas de proveedor |
| POST | /api/purchases/calculate-suggestions | Recalcular sugerencias |
---
## Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Sugerencias incorrectas | Media | Alto | Validación manual antes de OC |
| Proveedor no cumple | Media | Alto | Proveedores alternativos |
| Recepciones incompletas | Media | Medio | Flujo de diferencias |
---
## Definition of Ready (DoR)
- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Catálogo inicial de proveedores
- [ ] Lead times definidos
## Definition of Done (DoD)
- [ ] Sugerencias de compra funcionando
- [ ] Flujo completo de OC operativo
- [ ] Recepción con validación
- [ ] Métricas de proveedores
- [ ] 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