170 lines
6.4 KiB
Markdown
170 lines
6.4 KiB
Markdown
# Sprint 1 - Resumen de Implementación
|
|
|
|
## Fecha: 2025-12-18
|
|
## Estado: ✅ COMPLETADO
|
|
|
|
---
|
|
|
|
## Objetivo del Sprint
|
|
Crear la estructura base del backend retail con todas las entidades TypeORM necesarias para los 10 módulos del sistema.
|
|
|
|
---
|
|
|
|
## Entregables Completados
|
|
|
|
### 1. Configuración Base
|
|
- ✅ `package.json` - Dependencias del proyecto
|
|
- ✅ `tsconfig.json` - Configuración TypeScript con decoradores
|
|
- ✅ `src/config/database.ts` - Pool PostgreSQL con soporte tenant
|
|
- ✅ `src/config/typeorm.ts` - DataSource TypeORM con todas las entidades
|
|
- ✅ `src/app.ts` - Aplicación Express con middlewares
|
|
- ✅ `src/index.ts` - Entry point con graceful shutdown
|
|
|
|
### 2. Entidades TypeORM por Módulo
|
|
|
|
#### RT-001: Fundamentos (3 entidades)
|
|
| Entidad | Archivo | Descripción |
|
|
|---------|---------|-------------|
|
|
| Branch | `branches/entities/branch.entity.ts` | Sucursales con configuración POS |
|
|
| CashRegister | `branches/entities/cash-register.entity.ts` | Cajas registradoras |
|
|
| BranchUser | `branches/entities/branch-user.entity.ts` | Usuarios por sucursal |
|
|
|
|
#### RT-002: Punto de Venta (4 entidades)
|
|
| Entidad | Archivo | Descripción |
|
|
|---------|---------|-------------|
|
|
| POSSession | `pos/entities/pos-session.entity.ts` | Sesiones de caja |
|
|
| POSOrder | `pos/entities/pos-order.entity.ts` | Órdenes de venta |
|
|
| POSOrderLine | `pos/entities/pos-order-line.entity.ts` | Líneas de orden |
|
|
| POSPayment | `pos/entities/pos-payment.entity.ts` | Pagos |
|
|
|
|
#### RT-003: Inventario Retail (4 entidades)
|
|
| Entidad | Archivo | Descripción |
|
|
|---------|---------|-------------|
|
|
| StockTransfer | `inventory/entities/stock-transfer.entity.ts` | Traspasos entre almacenes |
|
|
| StockTransferLine | `inventory/entities/stock-transfer-line.entity.ts` | Líneas de traspaso |
|
|
| StockAdjustment | `inventory/entities/stock-adjustment.entity.ts` | Ajustes de inventario |
|
|
| StockAdjustmentLine | `inventory/entities/stock-adjustment-line.entity.ts` | Líneas de ajuste |
|
|
|
|
#### RT-004: Compras Retail (5 entidades)
|
|
| Entidad | Archivo | Descripción |
|
|
|---------|---------|-------------|
|
|
| PurchaseSuggestion | `purchases/entities/purchase-suggestion.entity.ts` | Sugerencias automáticas |
|
|
| SupplierOrder | `purchases/entities/supplier-order.entity.ts` | Órdenes a proveedor |
|
|
| SupplierOrderLine | `purchases/entities/supplier-order-line.entity.ts` | Líneas de orden |
|
|
| GoodsReceipt | `purchases/entities/goods-receipt.entity.ts` | Recepción de mercancía |
|
|
| GoodsReceiptLine | `purchases/entities/goods-receipt-line.entity.ts` | Líneas de recepción |
|
|
|
|
#### RT-005: Clientes y Lealtad (4 entidades)
|
|
| Entidad | Archivo | Descripción |
|
|
|---------|---------|-------------|
|
|
| LoyaltyProgram | `customers/entities/loyalty-program.entity.ts` | Programa de lealtad |
|
|
| MembershipLevel | `customers/entities/membership-level.entity.ts` | Niveles de membresía |
|
|
| LoyaltyTransaction | `customers/entities/loyalty-transaction.entity.ts` | Transacciones de puntos |
|
|
| CustomerMembership | `customers/entities/customer-membership.entity.ts` | Membresías de cliente |
|
|
|
|
#### RT-006: Precios y Promociones (4 entidades)
|
|
| Entidad | Archivo | Descripción |
|
|
|---------|---------|-------------|
|
|
| Promotion | `pricing/entities/promotion.entity.ts` | Promociones |
|
|
| PromotionProduct | `pricing/entities/promotion-product.entity.ts` | Productos en promoción |
|
|
| Coupon | `pricing/entities/coupon.entity.ts` | Cupones |
|
|
| CouponRedemption | `pricing/entities/coupon-redemption.entity.ts` | Canjes de cupón |
|
|
|
|
#### RT-007: Caja y Arqueo (3 entidades)
|
|
| Entidad | Archivo | Descripción |
|
|
|---------|---------|-------------|
|
|
| CashMovement | `cash/entities/cash-movement.entity.ts` | Movimientos de efectivo |
|
|
| CashClosing | `cash/entities/cash-closing.entity.ts` | Cierres de caja |
|
|
| CashCount | `cash/entities/cash-count.entity.ts` | Conteo de denominaciones |
|
|
|
|
#### RT-009: E-commerce (5 entidades)
|
|
| Entidad | Archivo | Descripción |
|
|
|---------|---------|-------------|
|
|
| Cart | `ecommerce/entities/cart.entity.ts` | Carritos de compra |
|
|
| CartItem | `ecommerce/entities/cart-item.entity.ts` | Ítems del carrito |
|
|
| EcommerceOrder | `ecommerce/entities/ecommerce-order.entity.ts` | Órdenes e-commerce |
|
|
| EcommerceOrderLine | `ecommerce/entities/ecommerce-order-line.entity.ts` | Líneas de orden |
|
|
| ShippingRate | `ecommerce/entities/shipping-rate.entity.ts` | Tarifas de envío |
|
|
|
|
#### RT-010: Facturación CFDI (2 entidades)
|
|
| Entidad | Archivo | Descripción |
|
|
|---------|---------|-------------|
|
|
| CFDIConfig | `invoicing/entities/cfdi-config.entity.ts` | Configuración PAC/CSD |
|
|
| CFDI | `invoicing/entities/cfdi.entity.ts` | Comprobantes fiscales |
|
|
|
|
---
|
|
|
|
## Estadísticas del Sprint
|
|
|
|
| Métrica | Valor |
|
|
|---------|-------|
|
|
| Total de entidades | 35 |
|
|
| Archivos creados | 42 |
|
|
| Módulos cubiertos | 9/10 |
|
|
| Líneas de código aprox. | ~4,500 |
|
|
|
|
---
|
|
|
|
## Características Implementadas en Entidades
|
|
|
|
### Multi-tenant
|
|
- ✅ Columna `tenant_id` en todas las entidades
|
|
- ✅ Índices compuestos con tenant_id
|
|
- ✅ Configuración de contexto de tenant en database.ts
|
|
|
|
### Auditoría
|
|
- ✅ `created_at`, `updated_at` timestamps
|
|
- ✅ `created_by`, `updated_by` UUIDs donde aplica
|
|
- ✅ Tracking de aprobaciones y rechazos
|
|
|
|
### Retail Específico
|
|
- ✅ Soporte offline con `is_offline_order`, `synced_at`
|
|
- ✅ Configuración de impresoras ESC/POS
|
|
- ✅ Integración CFDI 4.0 completa
|
|
- ✅ Programas de lealtad con múltiples niveles
|
|
- ✅ Promociones tipo Buy X Get Y, bundles, flash sales
|
|
|
|
---
|
|
|
|
## Próximos Pasos (Sprint 2)
|
|
|
|
1. **Servicios Base**
|
|
- Crear servicios CRUD para cada módulo
|
|
- Implementar BaseService con operaciones comunes
|
|
|
|
2. **Controladores y Rutas**
|
|
- Definir endpoints REST
|
|
- Implementar validación con Zod
|
|
|
|
3. **Middleware**
|
|
- Tenant context middleware
|
|
- Auth middleware (integración con erp-core)
|
|
- Branch context middleware
|
|
|
|
4. **Migraciones**
|
|
- Generar migraciones TypeORM
|
|
- Scripts de seed para datos iniciales
|
|
|
|
---
|
|
|
|
## Dependencias de erp-core
|
|
|
|
Las entidades hacen referencia a tablas de erp-core mediante UUIDs:
|
|
|
|
| Módulo Retail | Referencia erp-core |
|
|
|---------------|---------------------|
|
|
| Branch | `warehouse_id` → inventory.warehouses |
|
|
| POSOrder | `customer_id` → partners.partners |
|
|
| Products | `product_id` → inventory.products |
|
|
| Taxes | `tax_id` → financial.taxes |
|
|
| Users | `user_id` → auth.users |
|
|
|
|
---
|
|
|
|
## Notas Técnicas
|
|
|
|
- Schema PostgreSQL: `retail`
|
|
- TypeORM synchronize: `false` (producción)
|
|
- Pool connections: máx 10 (TypeORM), máx 20 (pg)
|
|
- Timestamps: UTC con `timestamp with time zone`
|