Skip to content

Plataforma técnica · Sevastopol

Búsqueda Manual en Sevastopol

Islands Command Manual Cuentas

ManualSearchIsland es el buscador del manual contable. Una sola island con dos modos: el SUPER_ADMIN ve la lista completa con CTA “Editar” hacia PlanCuentasCommandIsland; el tenant ve solo lectura con ManualPanel lateral.

El handoff hacia la edición es indirecto: el buscador setea el código en sessionStorage, dispara un evento y navega — el editor lo consume al montarse. Esto evita que el buscador conozca cómo se monta el editor.

DecisiónMotivo
Modo detectado al mount via /api/auth/validateUna sola island, dos UIs. Detectar al inicio evita parpadeo cuando el rol carga después.
Admin trae todo el template + todos los manualesPermite ver “qué cuentas todavía no tienen manual” con el filtro solo skeletons. El backend pagina con ?limit=100&skip=N y la island itera hasta agotar.
Tenant busca por término sobre /api/manual-cuentasBúsqueda full-text del lado servidor con ?limit=20. El tenant no necesita el padrón completo.
Filtros: tipo (ACTIVO/PASIVO/…) + solo skeletonsTipo acota por familia contable; skeletons permite ataque de “completar lo que falta”.
Búsqueda combina código + nombre + debe + haber + tags + NICPermite encontrar cuenta aun cuando solo se recuerda parte del tratamiento (“depreciación”, “leasing”).
Handoff vía sessionStorage manual-cuentas:open-editorEl buscador setea el código; el editor lo consume al montarse con consumeManualHandoff(). Sobrevive a navegación de página completa.
Tres caminos de navegación al editor(1) Si ya está en /dashboard, click directo en el botón de sidebar [data-view="PlanCuentasCommand"]. (2) Si no encuentra el botón, dispara evento sidebar:navigate. (3) Si no está en dashboard, window.location.href = "/dashboard#PlanCuentasCommand". Cubre todos los layouts.
Evento manual-cuentas:open-editor adicionalDisparado simultáneo al handoff, para que el editor abra inmediatamente la cuenta sin esperar el render del sidebar.
ModoEndpoint principalEndpoint complementoUI
admin (SUPER_ADMIN)/api/command/manual-cuentas (paginado)/api/command/plan-cuentas/templateLista completa + filtros + botón “Editar” → handoff.
tenant (resto)/api/manual-cuentas?q=&limit=20(none)Buscador + detalle con ManualPanel lateral.
FiltroAplica enDefault
searchCódigo, nombre, debe, haber, tags, NIC (full-text local en admin; query server en tenant).""
tipoACTIVO / PASIVO / PATRIMONIO / INGRESO / GASTO.""
onlySkeletons (solo admin)Solo muestra cuentas sin manual o con manual sin contenido.false
Método + rutaModoUso
POST /api/auth/validateambosDetectar rol al mount.
GET /api/command/manual-cuentas?limit=&skip=adminPadrón de manuales (paginado).
GET /api/command/plan-cuentas/templateadminTemplate para construir las filas.
GET /api/manual-cuentas?q=&limit=20tenantBúsqueda con term.
GET /api/manual-cuentas/:codigotenantDetalle (usado por ManualPanel lateral).
EventoDirecciónPropósito
sidebar:navigate (detail PlanCuentasCommand)EmitePide al sidebar cambiar a la vista del editor.
manual-cuentas:open-editor (detail { codigo })EmitePide al editor abrir el manual de una cuenta.
KeyValorUso
manual-cuentas:open-editor (sessionStorage)Código de cuentaHandoff cuando el editor monta tras navegación; consumido por consumeManualHandoff().

El padrón vive en Mongo. Los dos endpoints (/api/command/manual-cuentas admin y /api/manual-cuentas tenant) refieren a la misma colección con autorización distinta.