Optimización del ciclo de vida de datos y configuración en Reimpact/platform
En el proyecto Reimpact/platform, hemos realizado avances significativos para mejorar la robustez y consistencia de nuestra infraestructura, enfocándonos en la gestión de procesos en segundo plano y la limpieza de datos relacionales.
Gestión de Colas y Configuración
Hemos implementado un nuevo enfoque para la orquestación de colas, moviéndonos de un enlace de alcance estático a un sistema de factoría. Esto permite seleccionar dinámicamente las colas (por ejemplo, para entornos de prueba) y validar su configuración antes de la ejecución. Además, hemos unificado el uso de los servicios del contenedor para mejorar la consistencia en el manejo de comandos de consola:
// Ejemplo: Uso consistente del contenedor de servicios
protected function configureCommands(): void
{
DB::prohibitDestructiveCommands(
$this->app->isProduction()
);
}
Integridad de Datos en Modelos Eloquent
Se ha introducido un mecanismo de limpieza automática al eliminar registros en el modelo MassiveUpload. Dado que varios modelos relacionados utilizan SoftDeletes, identificamos que una eliminación estándar no siempre era suficiente para evitar violaciones de restricciones de integridad referencial. Ahora utilizamos una transacción que asegura la eliminación o separación completa de los datos asociados (tales como recetas, productos y materiales) antes de procesar la baja del registro principal:
protected static function booted(): void
{
static::deleting(function ($model) {
DB::transaction(function () use ($model) {
$model->recipes()->forceDelete();
$model->errors()->delete();
// ... limpieza de relaciones restantes
});
});
}
Pruebas y Estabilidad
Además de estas mejoras, hemos actualizado nuestros utilitarios de prueba para incluir métodos de sondeo más configurables mediante constantes de clase, reduciendo la duplicación y mejorando el mantenimiento de nuestros tests automatizados.