Skip to content

Plataforma técnica · Sevastopol

Command en Sevastopol

Islands Command Super Admin

Command es el bounded context que opera la plataforma SaaS desde Sevastopol. Las islands del dominio están restringidas a SUPER_ADMIN y consumen los servicios documentados en /dev/orchestrator/command/.

El frontend agrupa las islands en dos subdominios coherentes con el corte del backend:

  • Plataforma SaaS — provisión de tenants, sesiones activas, dashboard ejecutivo.
  • Plan de cuentas — gestión del template contable maestro, sincronización contra tenants y mantenimiento del manual contable.
SubdominioIslandsResponsabilidad
PlataformaTenants, Sessions, MonitoringOperación SaaS multi-tenant — alta/baja de empresas, kill switch de sesiones, salud del host.
Plan de cuentasPlan de Cuentas (unificado), Manual Panel, Búsqueda ManualTemplate contable maestro + sync contra tenants + manual editor + búsqueda.
DecisiónMotivo
Bounded context separado de administración del tenantcommand opera la plataforma; administracion opera el tenant. Mismas habilidades técnicas, distintos niveles de impacto (afectar un tenant vs. afectar todos).
SUPER_ADMIN exigido por todas las islandsEl frontend valida el rol con POST /api/auth/validate antes de mostrar acciones destructivas; el backend revalida.
Plan de cuentas unificado en una sola island grandePlanCuentasCommandIsland agrupa 4 tabs (overview, detail, template, manual). Separar en islands obligaría a cargar el template tres veces.
Banner cross-island desde ChartOfAccountsViewIslandLa vista read-only del tenant tiene un banner ámbar que redirige a la island de edición. Visible solo para SUPER_ADMIN; el resto solo ve dónde se gestiona.
Handoff de manual via sessionStorage + eventosManualSearchIsland setea manual-cuentas:open-editor en sessionStorage y dispara el evento — PlanCuentasCommandIsland lo consume al montarse o vía listener. Evita acoplamiento directo.
AdminWorkspace como lenguaje compartidoLas islands de command usan los mismos tokens de WorkspaceTheme que las de administración del tenant; el AdminWorkspace.tsx solo re-exporta.

Las islands de Command usan tokens de AdminWorkspace (alias de WorkspaceTheme):

ComponenteUso
AdminWorkspaceHeaderHeader con controls y pills.
WorkspaceSectionCardSección con eyebrow, title, description, pills.
WorkspaceTabBarTabs en PlanCuentasCommandIsland (overview/detail/template/manual).
InlineMetricPillMétricas inline (tenants, KPIs de divergencia, estados).

Ninguna island de Command consume useActiveTenant ni useActivePeriod — operan sobre el universo de la plataforma, no sobre un tenant ni un periodo. La selección de tenant cuando aplica (ej. apertura de diff) se hace dentro de la propia island.

ServiceFrontend
TenantServicetenants (UI)
SessionServicesessions (UI)
MonitoringServicemonitoring (UI)
PlanCuentasSyncService + ChartOfAccountsServiceplan-de-cuentas (UI)
Manual de cuentas (Mongo)manual-panel, manual-search (UI)
ProxyCubre
/api/tenant + /api/tenant-db/createCRUD de tenants + provisión de la base por tenant.
/api/sessionsSesiones activas + kill switch.
/api/monitoringDashboard ejecutivo de la plataforma.
/api/admin/chart-of-accountsPlan de cuentas (read-only desde el tenant).
/api/command/plan-cuentas/*Template del plan + diff + sync por tenant.
/api/command/manual-cuentas/*Manual editor (admin).
/api/manual-cuentas/*Manual read (tenant).
/api/auth/validateValidación de rol previa a acciones destructivas.
  • Administración del tenant consume el plan de cuentas via /api/admin/chart-of-accounts (read). La edición vive aquí.
  • Manual de cuentas lo consumen islands de cualquier dominio que necesiten contexto contable de una cuenta — emiten plan-cuentas:select para abrir el panel.
  • Auth es transversal — el rol SUPER_ADMIN se valida en cada montaje.

Estas relaciones se documentan en cada destino, no aquí.