feat(fs-mcp): autodescubrir columnas de Extension/Table de los plugins habilitados - #4
Open
Asermar wants to merge 1 commit into
Open
Conversation
…litados El generador de metadata solo leía Core/Table y (en modo plugin) pluginPath/Table, por lo que las columnas y FKs que los plugins añaden a tablas ajenas mediante Extension/Table/*.xml nunca llegaban a la metadata del MCP: describe_model, los enums/maxLength y las relaciones quedaban incompletos en instalaciones con plugins. Se añade el autodescubrimiento de esas extensiones usando la misma fuente de verdad que FacturaScripts: la lista de plugins habilitados en <fsPath>/MyFiles/plugins.json (aplicados por su order). Para cada plugin activo se fusionan las columnas/FKs de <fsPath>/Plugins/<plugin>/Extension/Table/*.xml sobre las tablas ya cargadas (solo añade lo que no exista; no crea tablas nuevas). Sin plugins.json (instalación limpia) es un no-op, así que no altera la generación del core vanilla. Aplica tanto en modo CORE como en modo PLUGIN. Probado contra una instalación real (39 plugins habilitados): +224 columnas de extensión fusionadas; p. ej. el modelo cliente pasa a incluir emailto/emailcc/ emailbcc, excluir347 y alias, que antes faltaban.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problema
El generador de metadata (
server/src/scripts/generate-metadata.ts) solo carga tablas deCore/Tabley, en modo plugin, depluginPath/Table. No miraExtension/Table/, así que las columnas y claves foráneas que los plugins añaden a tablas ajenas (el mecanismo estándar de extensión de FacturaScripts) nunca llegan a la metadata del MCP.Consecuencia: en cualquier instalación con plugins que extienden tablas,
describe_model, losenum/maxLengthy las relaciones que expone el MCP quedan incompletos respecto al esquema real de la base de datos.Solución
Autodescubrimiento de extensiones usando la misma fuente de verdad que el framework (
Core/Plugins.php):<fsPath>/MyFiles/plugins.json, ordenados por suorder.<fsPath>/Plugins/<plugin>/Extension/Table/*.xmlsobre las tablas ya cargadas.Características:
MyFiles/plugins.json, no hace nada → la generación del core vanilla no cambia.Verificación
Ejecutado en modo core contra una instalación real con 39 plugins habilitados: se fusionan +224 columnas de extensión. Ejemplo concreto: el modelo
cliente(tablaclientes, extendida porEnviarDocumentos,Notificaciones,Modelo347,Alias…) pasa a incluiremailto,emailcc,emailbcc,excluir347yalias, que antes faltaban. Sinplugins.jsonel comportamiento es idéntico al actual.