erp-retail/orchestration/planes/fase-4-validacion/IMPACTO-CAMBIOS.md

18 KiB

ANALISIS DE IMPACTO DE CAMBIOS

Fecha: 2025-12-18 Fase: 4 - Validacion Objetivo: Identificar todos los objetos impactados por los cambios planificados


1. RESUMEN DE IMPACTOS

1.1 Metricas Generales

Categoria Cantidad
Tablas nuevas 26
Vistas/Views 1
Vistas materializadas 3
Entidades TypeORM 26
Servicios nuevos 28
Servicios extendidos 8
Controllers 15
Paginas frontend ~65
Componentes UI ~80
Integraciones externas 7

1.2 Impacto por Capa

┌─────────────────────────────────────────────────────────────┐
│                    MATRIZ DE IMPACTO                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  DATABASE        [████████████████████████████] 100%        │
│  26 tablas, 3 mat views, 1 view                            │
│                                                             │
│  BACKEND         [████████████████████████████] 100%        │
│  36 services, 15 controllers, 5 middlewares                │
│                                                             │
│  FRONTEND        [████████████████████████████] 100%        │
│  3 apps, ~65 pages, ~80 components                         │
│                                                             │
│  INTEGRACIONES   [████████████░░░░░░░░░░░░░░░░] 35%         │
│  PAC, Pagos, Envios (parcialmente nuevos)                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. IMPACTO EN BASE DE DATOS

2.1 Schemas Afectados

Schema Accion Objetos
auth MODIFICAR Agregar permissions, user_roles
core MODIFICAR Agregar countries, currencies, uom, sequences
financial MODIFICAR Agregar tax_groups, payment_methods
inventory VERIFICAR Ya existe, solo verificar stock_quants
sales MODIFICAR Agregar pricelists, pricelist_items
retail CREAR 26 tablas nuevas

2.2 Tablas por Schema

Schema: retail (NUEVO)

Tabla Modulo FK Entrantes FK Salientes
branches RT-001 cash_registers, branch_users, pos_sessions, stock_transfers(x2), stock_adjustments, supplier_orders, goods_receipts, ecommerce_orders auth.tenants, inventory.warehouses
cash_registers RT-001 pos_sessions auth.tenants, retail.branches
branch_users RT-001 - auth.tenants, retail.branches, auth.users
pos_sessions RT-002 pos_orders, cash_movements, cash_closings, cash_counts auth.tenants, retail.branches, retail.cash_registers, auth.users
pos_orders RT-002 pos_order_lines, pos_payments, loyalty_transactions, coupon_redemptions, cfdis auth.tenants, retail.pos_sessions, core.partners
pos_order_lines RT-002 - auth.tenants, retail.pos_orders, inventory.products
pos_payments RT-002 - auth.tenants, retail.pos_orders
cash_movements RT-007 - auth.tenants, retail.pos_sessions, auth.users
cash_closings RT-007 - auth.tenants, retail.pos_sessions, auth.users
cash_counts RT-007 - auth.tenants, retail.pos_sessions, auth.users
stock_transfers RT-003 stock_transfer_lines auth.tenants, retail.branches(x2), auth.users(x3)
stock_transfer_lines RT-003 - auth.tenants, retail.stock_transfers, inventory.products
stock_adjustments RT-003 stock_adjustment_lines auth.tenants, retail.branches, auth.users(x2)
stock_adjustment_lines RT-003 - auth.tenants, retail.stock_adjustments, inventory.products
loyalty_programs RT-005 membership_levels, loyalty_transactions, customer_memberships auth.tenants
membership_levels RT-005 customer_memberships auth.tenants, retail.loyalty_programs
loyalty_transactions RT-005 - auth.tenants, core.partners, retail.loyalty_programs, retail.pos_orders
customer_memberships RT-005 - auth.tenants, core.partners, retail.loyalty_programs, retail.membership_levels
promotions RT-006 promotion_products auth.tenants
promotion_products RT-006 - auth.tenants, retail.promotions, inventory.products, inventory.product_categories
coupons RT-006 coupon_redemptions auth.tenants, core.partners
coupon_redemptions RT-006 - auth.tenants, retail.coupons, retail.pos_orders
purchase_suggestions RT-004 - auth.tenants, retail.branches, inventory.products, core.partners
supplier_orders RT-004 supplier_order_lines, goods_receipts auth.tenants, core.partners, retail.branches, auth.users(x2)
supplier_order_lines RT-004 - auth.tenants, retail.supplier_orders, inventory.products
goods_receipts RT-004 goods_receipt_lines auth.tenants, retail.supplier_orders, retail.branches, core.partners, auth.users
goods_receipt_lines RT-004 - auth.tenants, retail.goods_receipts, inventory.products
cfdi_config RT-010 - auth.tenants
cfdis RT-010 - auth.tenants
carts RT-009 cart_items auth.tenants, core.partners
cart_items RT-009 - auth.tenants, retail.carts, inventory.products
ecommerce_orders RT-009 ecommerce_order_lines, cfdis auth.tenants, core.partners, retail.branches
ecommerce_order_lines RT-009 - auth.tenants, retail.ecommerce_orders, inventory.products
shipping_rates RT-009 - auth.tenants

2.3 Impacto en Tablas Existentes

Tabla Existente Impacto Descripcion
auth.tenants Referenciada FK desde todas las tablas retail
auth.users Referenciada FK desde pos_sessions, cash_*, branch_users, etc.
core.partners Referenciada FK desde pos_orders, customers, suppliers
inventory.products Referenciada FK desde pos_order_lines, cart_items, promotion_products
inventory.warehouses Referenciada FK desde branches
inventory.stock_quants Lectura/Escritura Para stock por sucursal
inventory.product_categories Referenciada FK desde promotion_products

2.4 Vistas y Vistas Materializadas

Objeto Tipo Tablas Fuente Refresh
retail.branch_stock VIEW inventory.stock_quants, retail.branches, inventory.products Real-time
retail.mv_daily_sales MATERIALIZED VIEW retail.pos_orders, retail.pos_sessions Cada hora
retail.mv_product_sales MATERIALIZED VIEW retail.pos_order_lines, retail.pos_orders, retail.pos_sessions Cada hora
retail.mv_branch_stock_summary MATERIALIZED VIEW retail.branches, inventory.stock_quants, inventory.products Cada hora

3. IMPACTO EN BACKEND

3.1 Modulos Afectados

Modulo Tipo Servicios Controllers
auth MODIFICAR AuthService (actualizar) -
branches NUEVO BranchesService, CashRegistersService, BranchUsersService BranchesController
pos NUEVO POSSessionService, POSOrderService, POSPaymentService, POSSyncService POSController
cash NUEVO CashSessionService, CashMovementService, CashClosingService CashController
inventory EXTENDER RetailStockService, TransfersService, AdjustmentsService InventoryController
customers EXTENDER RetailCustomersService, LoyaltyService CustomersController
pricing NUEVO PriceEngineService, PromotionsService, CouponsService PricingController
purchases EXTENDER RetailPurchaseService, PurchaseSuggestionsService, GoodsReceiptService PurchaseController
invoicing NUEVO CFDIService, CFDIBuilderService, PACService, XMLService, PDFService, AutofacturaService CFDIController, AutofacturaController
ecommerce NUEVO CatalogService, CartService, CheckoutService, PaymentGatewayService, ShippingService, EcommerceOrderService StorefrontController, EcommerceAdminController
reports EXTENDER DashboardService, SalesReportService, ProductReportService, CashReportService, ExportService ReportsController

3.2 Middleware Nuevo

Middleware Proposito Ruta
TenantMiddleware Establecer tenant_id en sesion Global
BranchMiddleware Establecer branch_id en header /pos/, /inventory/
AuthMiddleware Validar JWT Rutas protegidas
PermissionsMiddleware Validar permisos Rutas admin
OfflineAuthMiddleware Auth para sync offline /pos/sync

3.3 Gateways (WebSocket)

Gateway Namespace Eventos
POSGateway /pos sync:orders, order:created, session:updated

3.4 Integraciones Externas

Integracion Provider Servicios Afectados
Finkok PAC PACService FinkokPAC.timbrar(), FinkokPAC.cancelar()
Facturama PAC PACService FacturamaPAC.timbrar(), FacturamaPAC.cancelar()
Stripe PaymentGatewayService StripeGateway.createPayment(), StripeGateway.capture()
Conekta PaymentGatewayService ConektaGateway.createPayment()
MercadoPago PaymentGatewayService MercadoPagoGateway.createPayment()
Fedex ShippingService FedexProvider.calculateRate(), FedexProvider.createShipment()
DHL ShippingService DHLProvider.calculateRate()

4. IMPACTO EN FRONTEND

4.1 Aplicaciones

App Tipo Paginas Componentes
Backoffice React SPA ~35 ~50
POS React PWA ~15 ~20
Storefront React SPA ~15 ~30

4.2 Packages Compartidos

Package Tipo Contenido
@retail/ui-components Library Button, Input, Table, Modal, etc.
@retail/api-client Library Cliente API tipado
@retail/hooks Library useAuth, useTenant, useBranch, etc.

4.3 Paginas por App

Backoffice

Pagina Ruta Modulo
Dashboard / RT-008
Stock por Sucursal /inventory RT-003
Transferencias /inventory/transfers RT-003
Ajustes /inventory/adjustments RT-003
Productos /products Core
Categorias /products/categories Core
Clientes /customers RT-005
Programa Lealtad /customers/loyalty RT-005
Listas de Precios /pricing/pricelists RT-006
Promociones /pricing/promotions RT-006
Cupones /pricing/coupons RT-006
Sugerencias Compra /purchases/suggestions RT-004
Ordenes Proveedor /purchases/orders RT-004
Recepciones /purchases/receipts RT-004
Pedidos Online /ecommerce/orders RT-009
Tarifas Envio /ecommerce/shipping RT-009
Facturas /invoicing RT-010
Config CFDI /invoicing/config RT-010
Reporte Ventas /reports/sales RT-008
Reporte Productos /reports/products RT-008
Reporte Inventario /reports/inventory RT-008
Reporte Clientes /reports/customers RT-008
Reporte Caja /reports/cash RT-008
Sucursales /settings/branches RT-001
Cajas /settings/registers RT-001
Usuarios /settings/users Core

POS

Pagina Ruta Modulo
Login /login Core
Seleccion Caja /select-register RT-001
Apertura /open-session RT-007
Ventas /sales RT-002
Cobro /sales/checkout RT-002
Movimientos Caja /cash/movements RT-007
Arqueo /cash/count RT-007
Cierre /cash/close RT-007
Historial /history RT-002
Facturar /invoice/:orderId RT-010
Cola Offline /offline RT-002

Storefront

Pagina Ruta Modulo
Home / RT-009
Catalogo /products RT-009
Producto /products/:id RT-009
Categoria /category/:slug RT-009
Busqueda /search RT-009
Carrito /cart RT-009
Checkout /checkout RT-009
Login /login Core
Registro /register Core
Mi Cuenta /account RT-009
Mis Pedidos /account/orders RT-009
Mis Puntos /account/loyalty RT-005

4.4 PWA Features (POS)

Feature Componente
Service Worker sw.ts
IndexedDB offline/db.ts (Dexie)
Sync Queue offline/queue.ts
Background Sync offline/sync.ts
Push Notifications Opcional

4.5 Hardware Integration (POS)

Hardware Archivo API
Impresora ESC/POS hardware/printer.ts Web USB, Web Bluetooth, Network
Lector Codigo Barras hardware/scanner.ts Keyboard Events
Cajon Dinero hardware/drawer.ts Via Impresora ESC/POS

5. ANALISIS DE RIESGOS POR IMPACTO

5.1 Riesgos de Base de Datos

Riesgo Probabilidad Impacto Mitigacion
Migraciones fallidas Media Alto Backups antes de cada migracion
RLS mal configurado Baja Critico Tests exhaustivos de aislamiento
Performance en joins Media Medio Indices optimizados, vistas materializadas
Datos inconsistentes offline Media Alto Validacion robusta en sync

5.2 Riesgos de Backend

Riesgo Probabilidad Impacto Mitigacion
Integracion PAC falla Media Alto PAC backup, reintentos
Motor precios lento Baja Medio Cache de promociones
Sync conflictos Media Medio Estrategia last-write-wins
Pasarelas pago Media Alto SDK oficiales, logs detallados

5.3 Riesgos de Frontend

Riesgo Probabilidad Impacto Mitigacion
PWA no funciona offline Media Alto Tests de offline exhaustivos
Hardware no compatible Media Medio Fallbacks, documentacion clara
Performance en catalogos Baja Medio Paginacion, lazy loading
UX confusa en POS Baja Medio Tests de usabilidad

6. MATRIZ DE TRAZABILIDAD

6.1 Requisitos -> Componentes

Requisito Entidad Servicio Controller UI
Venta en POS pos_orders, pos_order_lines POSOrderService POSController Sales.tsx
Cobro mixto pos_payments POSPaymentService POSController Checkout.tsx
Puntos lealtad loyalty_transactions LoyaltyService CustomersController PointsRedemption.tsx
Promociones promotions PromotionsService, PriceEngineService PricingController -
Cupones coupons CouponsService PricingController CouponInput.tsx
Transferencias stock_transfers TransfersService InventoryController TransferForm.tsx
Corte caja cash_closings CashClosingService CashController CashClosing.tsx
Facturacion cfdis CFDIService CFDIController InvoiceModal.tsx
Autofactura cfdis AutofacturaService AutofacturaController AutofacturaPortal.tsx
E-commerce ecommerce_orders CheckoutService StorefrontController Checkout.tsx

6.2 Entidades -> Servicios

Entidad Servicios que la usan
branches BranchesService, POSSessionService, TransfersService, RetailStockService
pos_orders POSOrderService, LoyaltyService, CFDIService, CashClosingService
products POSOrderService, CatalogService, CartService, RetailStockService
partners RetailCustomersService, LoyaltyService, CFDIService
promotions PromotionsService, PriceEngineService
coupons CouponsService, PriceEngineService
cfdis CFDIService, AutofacturaService

7. CHECKLIST DE VALIDACION DE IMPACTO

Database

  • Todas las tablas tienen tenant_id
  • Todas las tablas tienen RLS policy
  • FKs correctamente definidas
  • Indices necesarios identificados
  • Migraciones en orden correcto
  • Columnas generadas (STORED) definidas
  • Vistas materializadas planificadas

Backend

  • Servicios identificados para cada entidad
  • Herencias de core mapeadas
  • Integraciones externas documentadas
  • Middleware necesario identificado
  • WebSocket gateway planificado
  • DTOs definidos implicitamente

Frontend

  • Paginas por app identificadas
  • Componentes compartidos definidos
  • PWA features planificadas
  • Hardware integration documentada
  • Store management (Zustand) planificado

Seguridad

  • RLS en todas las tablas
  • JWT authentication
  • Middleware de tenant
  • Middleware de branch
  • RBAC pendiente (depende core)

8. CONCLUSION

8.1 Resumen de Impacto

El proyecto Retail impacta:

  • 100% de la capa de datos con schema nuevo
  • 100% del backend con servicios nuevos/extendidos
  • 100% del frontend con 3 aplicaciones nuevas
  • 35% de integraciones (PAC, pagos, envios)

8.2 Dependencias Criticas

  1. MGN-005 Catalogs - Bloqueante para todo retail
  2. MGN-001 Auth - Bloqueante para autenticacion
  3. MGN-013 Sales - Bloqueante para precios
  4. MGN-010 Financial - Bloqueante para POS y facturacion

8.3 Recomendaciones

  1. Priorizar core - No iniciar retail hasta completar prerrequisitos
  2. Tests RLS - Validar aislamiento de datos antes de produccion
  3. Ambiente sandbox PAC - Probar facturacion temprano
  4. Hardware testing - Validar impresoras/scanners en hardware real
  5. PWA testing - Probar offline en condiciones reales

Estado: ANALISIS COMPLETO Impacto Total: Alto Riesgo Global: Medio (con mitigaciones)