Sincronización BD - motor
Severidad: Crítica
Audiencia: operadores y desarrolladores. Si esta regla falla, los sinónimos aprendidos por la IA quedan registrados pero el buscador no los aplica.
El problema
El aprendizaje IA crea filas nuevas en la tabla de sinónimos con source='learned' y enabled=true. El operador entra al panel y ve los sinónimos correctos. Pero el buscador devuelve 0 resultados para esas palabras: el motor de búsqueda no los conoce.
Caso real: 6 sinónimos aprendidos en BD entre el 25 y 26 de mayo, todos huerfanos. Ejemplo: oanteni -> pantenol enabled en BD, pero el motor solo tenia 101 entries cuando BD tenia 113. El buscador no aplicaba ninguno de los 12 aprendizajes recientes.
La regla
TIP
Cada vez que el aplicador automático crea o modifica sinónimos en la BD, debe sincronizar con el motor en la misma transacción lógica. Una sola llamada de sincronización por run (no una por sinónimo), al final del bucle de aplicación, antes de marcar el run como completado.
Si la sincronización falla, el run termina con status='partial' y queda registrado el error. Nunca silenciar el fallo: la divergencia entre BD y motor genera fallos invisibles en producción.
Por qué
El motor de búsqueda mantiene su propia configuración de sinónimos, separada de la BD. La BD es la fuente de verdad operativa (donde se ven los source, los enabled, el historial), pero el motor solo aplica lo que tiene cargado en su config.
La sincronización ya existia para el flujo de "aprobación manual desde el panel": cuando un operador acepta una sugerencia, la ruta que la procesa llama a la sincronización al terminar. Pero el flujo paralelo del aprendizaje automático nocturno olvidaba esa llamada. Los sinónimos aprobados por humano se aplicaban; los aprendidos solos vivian en limbo.
Por que esperar a que termine la sincronización antes de continuar: si el siguiente run del cron arranca mientras la sincronización anterior aun no ha terminado, el segundo run lee un estado intermedio del motor. Race condition. Mejor esperar y registrar el resultado.
Para merchants
Cada noche el aprendizaje IA puede crear sinónimos nuevos segun las búsquedas del día. Mibizum garantiza que esos sinónimos quedan activos en el buscador inmediatamente después de crearse: nunca te pasara que veas un sinónimo en el panel Aprende del cliente y el buscador no lo aplique.
Si por alguna razón Mibizum no consiguio aplicar los sinónimos al buscador (mantenimiento, fallo de red), el run aparece marcado como "parcial" en el registro de actividad y puedes reintentar con un click.
Cómo detectar divergencia
Si sospechas que un sinónimo del panel no esta llegando al motor:
- En el panel, abre Sinónimos y filtra por
source=learned. Verifica que el sinónimo esteenabled=true. - Busca esa misma palabra en el buscador (overlay o pagina de resultados). Si devuelve 0 resultados, la divergencia es real.
- En Actividad Smart, abre el último run. Si su
statusespartialconerrorMsgmencionandosync_failed, esa es la causa. - Boton Re-sincronizar en el panel (Sinónimos > Acciones > Sincronizar al motor) fuerza la sincronización manualmente.
Anti-patrones
DANGER
No confies solo en el flujo de aprobación manual. Falla cuando el aprendizaje automático genera filas sin pasar por el operador.
DANGER
No sincronices dentro del bucle, una llamada por sinónimo. El motor tarda cientos de ms por reconfig. Con 20 sinónimos en un run, son segundos perdidos y carga innecesaria. Una sola llamada al final basta.
DANGER
No silencies el error si la sincronización falla. Genera divergencia BD-motor sin alarma. El run debe quedar partial para que el operador lo vea en Actividad Smart.