Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mejora - API - Refactorización de Update Model #260

Draft
wants to merge 23 commits into
base: reporting
Choose a base branch
from

Conversation

juanSTIC
Copy link
Collaborator

@juanSTIC juanSTIC commented Dec 10, 2024

🔄 Cambios principales

  • Refactorización completa del código para mejorar legibilidad y mantenibilidad
  • Mejora del sistema de sincronización de usuarios y grupos
  • Optimización del rendimiento en operaciones de escritura
  • Mejora del manejo de errores y logging

📝 Detalles técnicos

Sincronización de usuarios y grupos (usersAndGroupsToMongo.ts)

  • Implementación de sistema de caché para optimizar consultas a MongoDB
  • Mejora en el procesamiento por lotes para operaciones de escritura
  • Nuevo manejo de grupos especiales (EDA_ADMIN, EDA_RO, etc.)
  • Optimización de la sincronización bidireccional de relaciones usuario-grupo
  • Mejor gestión de grupos SCRM y sus permisos

Limpieza del modelo (cleanModel.ts)

  • Refactorización del sistema de deduplicación de roles
  • Mejora en la fusión de permisos de diferentes fuentes
  • Simplificación del proceso de consolidación de roles
  • Optimización del manejo de permisos SCRM
  • Nueva estructura para el manejo de roles dinámicos

Controlador de actualización (updateModel.controller.ts)

  • Mejora en la estructura del código y organización
  • Optimización de queries a MariaDB
  • Mejor manejo de transacciones y conexiones
  • Implementación de logging detallado del proceso
  • Mejora en el manejo de errores y excepciones
  • Optimización en el proceso de exportación a MongoDB

🛠 Mejoras de rendimiento

  • Reducción de consultas redundantes a MongoDB
  • Optimización en la escritura de datos por lotes
  • Mejor gestión de memoria en procesos grandes
  • Reducción de tiempo en sincronización
  • Tiempo medio de ejecución para un entorno local con 100 usuarios y 2400 grupos de seguridad:
    • Este PR: 10s
    • Rama reporting: 120s

Otros cambios aplicados

Se ha aprovechado el PR para aplicar otros cambios necesarios:

  • eda/eda_api/package.json: Actualización de la librería leatlef, que daba error por incompatibilidad con la versión actual de node (20.18)
  • eda/eda_api/lib/app.ts: Se añade una salida de console.log para indicar que carpeta de node_modules está usando eda_api. Necesario para el mantenimiento de servidores con muchas instancias que usan diferentes estrategias de ubicación de node_modules (como carpeta padre, symlink, etc).

Sobre el idioma:. Para facilitar la validación y potenciales cambios a realizar se han dejado los comentarios en español, con la idea de hacer un último cambio una vez validada la funcionalidad y el código para pasarlos a inglés.

Pruebas a realizar

Usuario y grupos

Verificar siempre tras ejecutar updateModel

Cambios en SinergiaCRM

  • Crear usuario nuevo en CRM con SDA habilitado. Verificar sincronización y disponibilidad en SDA
  • Añadir usuario a un grupo y comprobar sincronización con grupo SCRM_ en SDA
  • Añadir usuario a múltiples grupos y verificar
  • Eliminar usuario de grupo y confirmar eliminación en SDA
  • Asignar permisos de administrador y verificar pertenencia a EDA_ADMIN
  • Revocar permisos de administrador y validar tras sincronización

Cambios en SinergiaDA

  • Crear usuario en SinergiaDA y asignarlo a grupo nativo (no SCRM_). Verificar persistencia tras sincronización
  • Quitar usuario sinergiacrm de EDA_ADMIN. Comprobar recuperación de permisos post-sincronización
  • Añadir usuario SDA a grupo SCRM_. Verificar pérdida de pertenencia tras sincronizar
  • Asignar usuario SCRM a grupo SDA. Confirmar persistencia post-sincronización
  • Añadir usuario SCRM a EDA_RO (solo lectura). Verificar permanencia tras sincronizar
  • Remover usuario [email protected] de EDA_ADMIN. Validar persistencia del grupo

Permisos

Verificar siempre tras ejecutar rebuild + updateModel
Cambios en SinergiaCRM

  • Asignar usuario a múltiples grupos con rol restrictivo (visibilidad limitada a grupos de seguridad). Verificar reflejo en modelo de datos SDA
  • Eliminar usuario de grupo y validar actualización de permisos
  • Modificar rol para acceso global en módulo específico. Confirmar cambio de permisos

Cambios en SinergiaDA

  • Otorgar permisos sobre módulo a grupo nativo SDA. Verificar persistencia
  • Asignar permisos de módulo sin acceso a grupo SCRM. Confirmar pérdida de acceso post-sincronización

@juanSTIC juanSTIC self-assigned this Dec 10, 2024
@juanSTIC juanSTIC added documentation Improvements or additions to documentation enhancement New feature or request labels Dec 10, 2024
@juanSTIC juanSTIC changed the title New clean model3 Mejora - API - Refactorización de Update Model Dec 10, 2024
@juanSTIC juanSTIC marked this pull request as ready for review December 10, 2024 16:55
@juanSTIC juanSTIC marked this pull request as draft December 12, 2024 13:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request SinergiaDA
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Incidencia - APP+API - No se reconocen los usuarios administradores
1 participant