Skip to content

Plataforma técnica · Sevastopol

Plan de cuentas en Sevastopol

Islands Command Plan Cuentas

El subdominio plan de cuentas del frontend cubre el catálogo contable maestro y su propagación a los tenants. Tres islands cooperan:

  • PlanCuentasCommandIsland — island grande con 4 tabs (overview, detail, template, manual). Es el motor de edición del template y sincronización contra tenants.
  • ManualPanel — componente lateral read-only que cualquier island puede pedir abrir para mostrar el manual de una cuenta.
  • ManualSearchIsland — buscador global del manual con modo dual (admin/tenant) y handoff hacia la island de edición.

El plan maestro vive en una DB template; los tenants tienen una copia. La sincronización resuelve diferencias en tres dimensiones: cuentas faltantes (missing), huérfanas (orphans) y divergentes (campos distintos).

DecisiónMotivo
Una island grande con 4 tabsOverview, detail, template y manual comparten el template completo y el padrón de manuales. Separar en islands forzaría 3x cargas y perdería el handoff entre tabs.
Sync con 3 modos: insert_missing, update_divergent, delete_orphansCada modo se activa por separado en el modal. Por default delete_orphans=false — borrar es destructivo y los huérfanos pueden ser cuentas locales legítimas.
Dry-run obligatorio antes del sync realPOST /sync/:db con dry_run: true devuelve plan (inserted, updated, deleted, skipped, errors) sin tocar el tenant. El operador revisa y aprueba.
Sync-all como acción agregadaPOST /sync-all propaga simultáneamente a todos los tenants. Útil tras editar el template — propaga el cambio a la flota.
Manual editor en tab internoEditar el manual de una cuenta abre Modal con 6 sub-tabs (NIC, Debe, Haber, Ejemplos, Asientos, Refs). Cada uno es Markdown o lista estructurada.
Handoff desde ManualSearchIsland via sessionStorageEl usuario tipea código en el buscador, click “Editar” → setea manual-cuentas:open-editor en sessionStorage + dispara evento. PlanCuentasCommandIsland lo consume al montarse. Evita acoplamiento directo entre islands.
Manual Panel con plan-cuentas:select para “ver también”El panel emite el evento cuando el usuario clickea una referencia cruzada — cualquier island que escuche puede saltar a esa cuenta.
Modo dual del ManualSearchIslandDetecta rol vía /api/auth/validate y elige endpoint: admin lee /api/command/manual-cuentas, tenant lee /api/manual-cuentas. Mismo UI, distinta fuente.
IslandEndpoint baseDocumentación
PlanCuentasCommandIsland (unifica con ChartOfAccountsViewIsland)/api/command/plan-cuentas/* + /api/admin/chart-of-accountsPlan de Cuentas
ManualPanel (componente lateral)/api/manual-cuentas/:codigoManual Panel
ManualSearchIsland/api/command/manual-cuentas (admin) · /api/manual-cuentas (tenant)Búsqueda Manual
EventoEmisorConsumidorPropósito
plan-cuentas:selectCualquier island con código de cuentaChartOfAccountsViewIsland (abre ManualPanel lateral)Mostrar el manual de una cuenta arbitraria.
manual-cuentas:open-editor (evento + sessionStorage key)ManualSearchIslandPlanCuentasCommandIslandAbrir el editor en una cuenta puntual desde el buscador.
sidebar:navigate con detail PlanCuentasCommandManualSearchIslandSidebar del dashboardNavegación cuando el operador no está ya en la vista.
ServiceEndpoint
PlanCuentasSyncService/api/command/plan-cuentas/* (overview, diff, sync, template).
ChartOfAccountsService/api/admin/chart-of-accounts (lectura del tenant).
Manual cuentas (Mongo)/api/command/manual-cuentas (admin) · /api/manual-cuentas (tenant).
  • Administración del tenant consume /api/admin/chart-of-accounts para lectura. La edición vive aquí, en Command.
  • Manual de cuentas lo consumen islands de cualquier dominio que necesiten contexto contable — emiten plan-cuentas:select.
  • Plataforma SaaS (otro subdominio de Command) provisiona los tenants sobre los que opera el sync.

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