Saltar a contenido

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 booking o tu propio cortex-plugin-*).
  • La UI debe aparecer bajo /operations/..., /admin/... u otro namespace ya convencionado.
  • Usas register_resource(registry, panel_id, module_id, ...) o registry.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: operations
  • moduleId: clients
  • modulePath: segmento URL (clients/operations/clients/...)
  • screens[]: pantallas con dashboardId, 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:

  1. Entry point opcional cortex.panels con configure_panel(PanelBuilder).
  2. register_resources con el mismo panel_id.

Ver Namespaces y paneles generativos.

Siguiente paso