ADR 020: Configuration manifest por plugin¶
Estado¶
Aceptado — 2026-06
Contexto¶
Los plugins registraban ajustes en Python (register_settings + SettingsBuilder) sin agrupación por género ni composición de widgets. La UI mostraba un sidebar plano de secciones. Se requiere configuración declarativa con jerarquía género → segmento → widgets embebidos (parameters | parameter_table).
Decisión¶
- Cada plugin declara
configuration/manifest.jsoncongroups,segmentsywidgets[]. - El loader de plugins auto-registra el manifest en
SettingsRegistry(aliasConfigurationRegistry). GET /api/v1/settings/panels/{panelId}devuelve{ groups, segments }.- Valores escalares:
GET/PUT /api/v1/settings/panels/{panelId}/{segmentId}(todos los camposparametersdel segmento). - Tablas de parametrización: CRUD vía API del plugin (
parameter_table); no usan el settings store. register_settingsen Python queda como shim deprecado si no existe manifest.
Consecuencias¶
- Migración de plugins admin (
booking,sales,billing,payments,pricing,panel) a manifest JSON. SettingsWidgetrenderiza acordeón de géneros, sub-nav de segmentos y compositor de widgets.- PoC
parameter_tableensales(aux-codes) para validar contrato API/UI. - Panel operativo: se retira dashboard legacy
panel-configuration; ajustes vía/panel/settings.
Alternativas consideradas¶
- Mantener solo
SettingsBuilderen Python — rechazado: no escala a géneros/widgets ni documentación declarativa. - Persistir tablas en settings store — rechazado: las filas son entidades del dominio del plugin.