Panels — contribuir un módulo¶
Un plugin de negocio no crea un panel nuevo por defecto: contribuye un módulo a un namespace existente (operations, admin, control, …).
Cuándo aplica¶
- Tu dominio es un módulo de negocio (p. ej. el plugin
bookingo tu propiocortex-plugin-*). - La UI debe aparecer bajo
/operations/...,/admin/...u otro namespace ya convencionado. - Usas
register_resource(registry, panel_id, module_id, ...)oregistry.register_module(...).
Namespaces disponibles¶
panel_id | Ruta UI | Uso |
|---|---|---|
operations | /operations/ | Operación diaria — módulos de dominio |
admin | /admin/ | Parametrización, finanzas, back-office |
control | /control/ | Plataforma: plugins, eventos, ACL (framework) |
client | / | Portal cliente |
trainer | /trainer/ | Portal entrenador |
accounting | /accounting/ | Contabilidad (namespace dedicado) |
samples | /samples/ | Sandbox helloworld (cortex.panels) |
Los namespaces operations y admin son generativos: existen cuando plugins habilitados inyectan contenido con ese panel_id. El framework los materializa con ensure_panel() — no requieren activar un paquete host pip.
control es de plataforma: embebido en el framework, siempre activo.
Convención operations vs admin¶
| Namespace | Rol | Ejemplos (handbook) |
|---|---|---|
operations | Operación diaria | booking, clients, módulos de tu producto |
admin | Parametrización | segmentos configuration, widgets admin |
Convenciones concretas de un caso de uso ensamblado (p. ej. qué módulos van en operations vs admin) viven en casos de uso, no en el SPI de plataforma.
Un plugin puede registrar en ambos (módulos, widgets o settings). Ver ADR 019.
Montar un módulo¶
register_resource(registry, "operations", "clients", configure_clients)
# ^panel_id ^module_id en nav y rutas
El manifest emitido incluye:
panelId:operationsmoduleId:clientsmodulePath: segmento URL (clients→/operations/clients/...)screens[]: pantallas condashboardId,navGroup,navSort
Módulo sin ResourceBuilder (legacy)¶
def register_dashboards(registry: DashboardRegistrar) -> None:
registry.register_module(
"operations",
"clients",
manifest_dict,
dashboards_dict,
)
Deprecado para CRUD estándar
Prefiere register_resources cuando el flujo sea list/create/edit.
Namespace dedicado¶
Si necesitas ruta, marca y scopes propios (/accounting/), combina:
- Entry point opcional
cortex.panelsconconfigure_panel(PanelBuilder). register_resourcescon el mismopanel_id.
Ver Namespaces y paneles generativos.
Siguiente paso¶
- Recursos —
ResourceBuildercompleto. - Integración con el framework — flujo de materialización de paneles.