Integrity & Auto-Setup: módulos autorreparables
Creación automática de tablas, registro de hooks, reparación de configuración y verificación de integridad en cada carga del módulo.
Módulos que se reparan a sí mismos
Los módulos de PrestaShop pueden fallar de docenas de formas: las tablas de la base de datos se eliminan durante una actualización fallida, los hooks se desregistran, los valores de configuración desaparecen, las pestañas de administración desaparecen. La mayoría de los módulos se bloquean con una pantalla en blanco cuando esto ocurre.
Nuestros módulos se reparan solos. El sistema Integrity se ejecuta desde nuestros controladores de administración, comprueba que las piezas declaradas por el módulo están en su sitio y repone las que es seguro reponer. Una comprobación completa se guarda en caché durante una hora.
Qué comprueba y repara
- Tablas de base de datos: comprueba que cada tabla declarada existe con las columnas e índices esperados. Las tablas que faltan se crean, y las columnas e índices que faltan se añaden. Los tipos de columna cambiados y las claves foráneas se informan en lugar de alterarse, porque reescribir una columna en producción no es una reparación automática segura.
- Registro de hooks: confirma que cada hook declarado en
getHooks()está registrado enps_hook_module, y registra los que faltan. - Valores de configuración: audita las claves de configuración que el módulo declara, de modo que una clave ausente se vea en lugar de fallar en silencio.
- Pestañas de administración: comprueba que las entradas de menú declaradas en
getAdminControllers()existen enps_taby crea las que faltan. Corregir una pestaña existente queda del lado del módulo: renombrar o recolocar una fila que alguien pudo personalizar no es una reparación automática segura. - Roles de autorización: garantiza que todos los slugs de permiso CRUD (
ROLE_MOD_MODULE_*_CREATE,READ,UPDATE,DELETE) existan enps_authorization_role. Los slugs faltantes se registran para que los perfiles de empleados puedan acceder al módulo. - Tablas compartidas: las tablas entre módulos como
ps_mpr_configyps_mpr_admin_prefslas crea el módulo que carga primero y las verifican los demás.
Cómo funciona
Cada módulo declara sus requisitos en un formato estructurado. El método getIntegrityConfig() devuelve qué tablas son críticas y qué aspecto tiene el esquema esperado. El sistema lo compara con la base de datos real, calcula la diferencia y aplica las reparaciones que es seguro aplicar.
Una comprobación completa se cachea 3600 segundos, así que no se ejecuta en cada carga de página. Algunas rutas CLI y AJAX la omiten por completo.
Si falta una tabla marcada como crítica, el módulo lleva al administrador a su página Integrity en lugar de romperse. Esa página muestra qué falta y ofrece un botón de reparación; los arreglos aditivos no críticos se aplican sin interrumpir a nadie.
Por qué importa
- Menos incidencias por tablas ausentes: el módulo puede recrear una tabla declarada antes de que alguien tropiece con ella
- Las actualizaciones aditivas se llevan solas: cuando una versión nueva declara columnas, hooks o pestañas adicionales, se añaden en la siguiente carga del panel
- Sobrevive a una mudanza: tras un cambio de servidor, una restauración o un clonado de base de datos, el módulo puede reconstruir las estructuras declaradas que encuentre ausentes
- Coexistencia multimódulo: los módulos que comparten los mismos paquetes vendor se coordinan a través de las tablas compartidas en lugar de crear cada uno las suyas
- Menos SQL manual: los cambios aditivos declarados se aplican por usted. Los tipos cambiados, los objetos eliminados y las migraciones de datos siguen necesitando un paso explícito y deliberado
La experiencia del desarrollador
Para quien desarrolla módulos, declarar el esquema en un solo sitio cubre los casos aditivos. Una columna añadida en la v2.1 llega a las tiendas con la v2.0 en la siguiente carga del panel, tanto si actualizaron desde el back office como por FTP o subiendo el módulo. Las operaciones admitidas (CREATE, ALTER ADD y registros de acceso) están pensadas para repetirse, así que ejecutarlas dos veces no hace daño. Más allá de ese conjunto sigue siendo una migración que se escribe a propósito.