Evolución de las tarifas: Centralización y reestructuración en Reimpact/platform
En Reimpact/platform, hemos realizado cambios estructurales significativos en la gestión de tarifas para mejorar la integridad de los datos y simplificar el modelo de negocio. La actualización se centra en la transición hacia una arquitectura de tarifas globales, redefiniendo cómo se almacenan y acceden los registros en el sistema.
Desafío: Desvinculación de empresa y prioridad
Originalmente, el modelo de tarifas estaba fuertemente acoplado a un identificador de empresa. Para permitir una gestión de tarifas más flexible y global, hemos introducido las siguientes modificaciones técnicas:
- Cambios en el esquema: Se ha modificado el campo
company_idpara permitir valores nulos, y se ha introducido un nuevo identificadorpriority_product_idque actúa como eje central para la clasificación de las tarifas. - Atomicidad y Migraciones: Se implementó una lógica de respaldo de datos (backfill) para asegurar que las tarifas existentes se alineen correctamente con los nuevos requisitos sin perder consistencia, utilizando transacciones de base de datos para garantizar la integridad de las operaciones.
- Validación proactiva: Se introdujeron restricciones a nivel de importación para asegurar que el
priority_product_idesté siempre presente, lanzando excepciones claras en caso de configuraciones incorrectas en el entorno.
Mejora en la integridad de datos
El equipo ha trabajado en la actualización de los índices únicos, eliminando el antiguo índice natural y reemplazándolo por uno compuesto que incluye el priority_product_id. Esto asegura que las reglas de negocio sean respetadas a nivel de base de datos, evitando duplicados en la importación masiva de datos desde hojas de cálculo.
Impacto en la capa de persistencia y tests
La capa de infraestructura y pruebas también ha sido optimizada:
- Factories: Se eliminó la creación dinámica de registros en las pruebas para evitar condiciones de carrera, optando por una recuperación explícita del ID de producto de prioridad.
- Helpers: Se extrajo la lógica de resolución de IDs a un método privado en las pruebas, promoviendo el principio DRY (Don't Repeat Yourself) y facilitando el mantenimiento.
- Nova Resources: Se ajustó la consulta principal (
indexQuery) para filtrar las tarifas según el contexto de la prioridad, asegurando que los usuarios visualicen únicamente los datos pertinentes.
Estas mejoras no solo optimizan el rendimiento de las operaciones masivas, sino que establecen una base más sólida y escalable para futuras funcionalidades relacionadas con la gestión de productos y servicios en Reimpact/platform.