3. 📘 DESCRIPCIÓN GENERAL DEL CONTEXTO Y ALCANCE
3. Descripción General del Contexto y Alcance
El presente proyecto tiene como objetivo principal la automatización del procesamiento e ingesta de datos maestros y comerciales clave del Sistema de Gestión del Ciclo de Vida de Productos (SPPD) hacia el sistema de ventas (Power Street). Esto incluye la sincronización de información de productos, listas de precios, listas de descuentos (precios especiales) y promociones. Actualmente, SPPD gestiona estos datos y es crucial que Power Street refleje esta información de manera precisa y oportuna para asegurar la correcta ejecución de ventas, aplicación de políticas comerciales y evitar errores manuales.
La solución implementará un flujo de integración robusto y escalable basado en un patrón de arquitectura de publicación/suscripción. SPPD publicará eventos de cambio (altas, modificaciones, bajas) para cada tipo de entidad (productos, precios, descuentos, promociones). Power Street se suscribirá a estos eventos para actualizar su catálogo y motor comercial.
El sistema origen (SPPD) gestionará el ciclo de vida de cada transacción de sincronización, incluyendo la asignación de un ID único, el registro de metadatos (incluyendo el tipo de entidad y operación), la gestión de reintentos automáticos (hasta 3 intentos) y el procesamiento de respuestas del sistema destino. Se implementará una máquina de estados en SPPD para controlar el flujo de cada transacción. Adicionalmente, SPPD contará con un dashboard de operaciones que proporcionará visibilidad completa sobre el estado de las sincronizaciones, permitirá la visualización de detalles y la corrección manual de transacciones fallidas, reseteando su contador de reintentos.
3.1 Descripción General del Proyecto
El proyecto "Sincronización de Productos SPPD - Power Street" tiene como objetivo establecer un mecanismo robusto y resiliente 🛡️ para mantener la consistencia de la información de productos entre:
- 🏭 SPPD (Sistema de Gestión del Ciclo de Vida de Productos)
- 🛒 Power Street (Sistema de ventas)
Se implementará un patrón 🧩 publicación/suscripción, donde:
🔹 SPPD publica eventos: altas, modificaciones y bajas de productos.
🔹 Power Street se suscribe: y actualiza su catálogo de productos.
⚙️ Características clave del sistema origen (SPPD):
- 🔑 Asignación de ID único por transacción
- 📝 Registro de metadatos
- 🔄 Hasta 3 reintentos automáticos
- 🧠 Control por máquina de estados
- 📊 Dashboard de operaciones con:
- Visibilidad total 👁️
- Corrección manual 🛠️
- Reenvío controlado 🔁
📥 Power Street:
- Consume mensajes 📦
- Procesa productos en su BD 🗃️
- Emite respuestas detalladas 📤
🌱 El diseño permite que en el futuro otros sistemas también puedan integrarse como origen o destino usando este modelo.
3.2 Descripción de Escenarios y Seguimiento
📘 Escenario 1: Creación Exitosa de Lista de Precios
-
SPPD (Usuario - Ejecutivo Planeación Comercial):
Crea una nueva lista de precios en SPPD. -
SPPD (Sistema):
- Genera un mensaje de tipo
"Creación de Lista de Precios". - Asigna un ID de transacción.
- Define
eventType:PRICE_LIST_CREATE. - Incluye el
payloadde la lista,systemOrigin:"SPPD", eintento:1. - Publica el mensaje en el topic
events.v1. - La máquina de estados transita al estado
ENVIADO_A_BROKER.
- Genera un mensaje de tipo
-
Message Broker:
Entrega el mensaje al sistema Power Street. -
Power Street:
- Consume el mensaje.
- Procesa y almacena la nueva lista de precios.
- Genera una respuesta:
eventType:PRICE_LIST_CREATE_RESPONSE- Estado:
ÉXITO - Incluye ID de transacción, tiempo y fecha.
- Publica la respuesta en el topic
responses.v1.
-
SPPD (Sistema):
- Consume la respuesta.
- Actualiza el estado de la transacción a
COMPLETADO_EXITO.
-
SPPD (Dashboard):
Muestra la transacción como exitosa.
⚡ Escenario 2: Actualización de Precio Especial
-
SPPD (Usuario):
Modifica un precio especial para un cliente o segmento específico. -
SPPD (Sistema):
- Genera un mensaje con
eventType:SPECIAL_PRICE_UPDATE. - Publica el mensaje en el topic correspondiente.
- (El flujo de procesamiento es similar al de la creación de lista de precios).
- Genera un mensaje con
-
Power Street:
- Consume el mensaje.
- Procesa y actualiza el precio especial.
- La actualización es visible y aplicable en Power Street en menos de 15 minutos desde que se realizó el cambio en SPPD.
- El precio especial sustituye al precio de lista para las condiciones dadas.
-
SPPD (Dashboard):
- Registra la transacción como exitosa.
- Mide y muestra el tiempo total de sincronización.
🎯 Escenario 3: Sincronización de Promoción (% Descuento) y Aplicación en Power Street
-
SPPD (Usuario):
Configura una nueva promoción de "% de descuento" para un conjunto de productos. -
SPPD (Sistema):
- Genera un mensaje con
eventType:PROMOTION_CREATE. - El
payloadincluye los detalles de la promoción:- Porcentaje de descuento
- Productos aplicables
- Vigencia y condiciones
- Publica el mensaje en el topic correspondiente.
- Genera un mensaje con
-
Power Street:
- Consume el mensaje.
- Interpreta la estructura de la promoción.
- Configura automáticamente la promoción en su motor de promociones, sin intervención manual.
- Envía una respuesta de ÉXITO.
-
SPPD (Dashboard):
Muestra la transacción como exitosa.
🎯Escenario 4: Sincronización de Promoción (% Descuento) y Aplicación en PowerStreet
-
SPPD (Usuario):
Configura una nueva promoción de "% de descuento" para ciertos productos. -
SPPD (Sistema):
- Genera un mensaje de tipo "Creación de Promoción" con:
eventType:PROMOTION_CREATEpayload: detalles de la promoción (porcentaje, productos, vigencia, condiciones, etc.)
- Publica el mensaje en el topic correspondiente.
- Genera un mensaje de tipo "Creación de Promoción" con:
-
(Flujo similar al de sincronización de otros eventos...)
-
Power Street:
- Consume el mensaje.
- Interpreta la estructura de la promoción.
- Configura la promoción en su motor de promociones de forma automática, sin intervención manual.
- Envía una respuesta con estado ÉXITO.
-
SPPD (Dashboard):
Muestra la transacción como exitosa.
🔁 Escenario 5: Modificación con Fallo Temporal y Reintento Exitoso
- Usuario modifica producto
- SPPD (Sistema):
- 🔄 Genera mensaje (intento 1), publica, estado
ENVIADO_A_BROKER
- 🔄 Genera mensaje (intento 1), publica, estado
- 📬 Broker entrega mensaje
- Power Street:
- Error temporal (⏱️ timeout BD)
- Publica respuesta:
ERROR
- SPPD (Sistema):
- Estado:
FALLO_REINTENTABLE - Incrementa contador de intento
- Estado:
- Después de un tiempo...
- SPPD reenvía mensaje (intento 2), estado
ENVIADO_A_BROKER (REINTENTO) - Power Street procesa exitosamente, publica
ÉXITO - SPPD: Estado
COMPLETADO_EXITO - Dashboard: Éxito con historial de 2 intentos 🕒
🚨 Escenario 6: Baja con Fallo Persistente y Corrección Manual
- 👤 Usuario solicita baja de producto
- 🖥️ SPPD:
- Genera mensaje
- ❌ 3 intentos fallidos:
"Producto con ventas activas"
- ⚠️ Estado:
FALLO_PERMANENTE_REQUIERE_ACCION - 📊 Dashboard muestra como fallida permanentemente
- 🧑🔧 Operador:
- 🔎 Revisa y analiza error
- ✍️ Edita el mensaje o ajusta el producto
- 🔄 Marca como
Corregida por Operador
- 🛠️ SPPD:
- Resetea contador
- Reencola el mensaje
- Estado:
PENDIENTE_ENVIO_CORREGIDO
- 🛰️ Envía mensaje corregido
- ✅ Power Street procesa exitosamente
- 🔄 Estado:
COMPLETADO_EXITO_CORREGIDO - 🎉 Dashboard muestra como exitosa y corregida 🛡️