Saltar a contenido

Composición — caso de uso Reservas

Grafo canónico del caso de uso Reservas (implementación UnoSportClub). Fuente machine-readable: composition.py (REFERENCE_GRAPH).

Árbol por capas

Capa Plugins
Fundación clients, resources, payments, discounts
Catálogo pricing
Operaciones booking, sales
Extensión events, store, subscriptions
Finanzas accounting, billing
Plataforma ai-agents

Grafo de dominio

plugin_id requires (hard) optional_requires provides
clients clients
resources resources
pricing resources pricing
booking resources clients, pricing, payments, discounts booking
payments payments
sales clients, payments pricing, discounts sales
events booking, clients sales events
discounts discounts
accounting payments, sales accounting
store sales store
subscriptions clients payments subscriptions
billing clients payments, accounting billing
ai-agents booking, clients, payments ai-agents

Leyenda:

  • requires: boot falla en CORTEX_PLUGIN_DEPS=strict si el proveedor no está activo.
  • optional_requires: el plugin carga; UI y flujos consultan capabilities y degradan.
  • provides: capability indexada en GET /api/v1/control/capabilities.

Validación en CI

Capa Qué valida
products/unosportclub/tests Descriptores == REFERENCE_GRAPH; bundles cerrados; sin ciclos; sin imports cruzados entre plugins
Boot validate_plugin_dependencies requires hard según CORTEX_PLUGIN_DEPS (framework, agnóstico de producto)

Añadir un plugin al caso de uso

  1. Descriptor en el plugin (requires, optional_requires, provides).
  2. Nodo en REFERENCE_GRAPH del paquete cortex-product-unosportclub.
  3. Entrada en dependency-contracts.md y docs locales del plugin.
  4. Perfil pip si aplica (bundles.md).