Plataforma técnica · Sevastopol
Administración en Sevastopol
Islands Administración
Propósito
Section titled “Propósito”El panel de administración del tenant agrupa seis islands que mantienen los datos que rara vez cambian pero condicionan toda la operación: la identidad legal de la empresa, el capital, quién firma, el wiring contable por documento/concepto, las configuraciones de sistema y el bootstrap de cierre del ejercicio.
Las seis consumen /api/admin/* y mapean uno-a-uno con los servicios documentados en Servicios de Administración.
Ubicación
Section titled “Ubicación”Directorysevastopol/src/components/islands/admin/
- AdminWorkspace.tsx — tokens visuales compartidos (Header, pills, cards, botones)
- BootstrapCierreIsland.tsx
- CapitalViewIsland.tsx
- CompanyViewIsland.tsx
- ConfigContableViewIsland.tsx
- LegalRepresentativesViewIsland.tsx
- SystemConfigViewIsland.tsx
Mapa de dependencias
Section titled “Mapa de dependencias”flowchart TB
subgraph UI["Sevastopol · islands/administracion"]
COMP["Empresa Island"]
CAP["Capital Island"]
LR["Legal Reps Island"]
CC["Config Contable Island"]
SC["System Config Island"]
BC["Bootstrap Cierre Island"]
end
subgraph SRV["Orchestrator · services/administracion"]
CMP["CompanyService"]
CPS["CapitalService"]
LRS["LegalRepService"]
CCS["ConfigContableService"]
SCS["SystemConfigService"]
end
subgraph REPS["Reportes"]
RPT["BootstrapCierre<br/>reportes/cierre-periodo"]
end
subgraph PG["nostromo (tenant)"]
PC["administracion.plan_contable"]
CE["administracion.configuracion_empresa"]
CAPT["administracion.capital"]
RL["administracion.representantes_legales"]
CS["administracion.configuracion_sistema"]
CO["operaciones_sii.config_cuentas_*"]
BAN["financieros.bancos"]
end
COMP --> CMP --> CE
CAP --> CPS --> CAPT
CAP -. valida cuenta .-> PC
CAP -. socio_id .-> LR
LR --> LRS --> RL
LR -. crea sub-cuenta .-> PC
LR -. saldo .-> BAN
CC --> CCS --> CO
CC -. valida cuenta .-> PC
SC --> SCS --> CS
BC -.-> RPT Lenguaje compartido
Section titled “Lenguaje compartido”Las 7 islands consumen el mismo AdminWorkspace:
| Componente | Uso |
|---|---|
AdminWorkspaceHeader | Header con pills, controls y note. |
InlineMetricPill | Métricas inline (total, activos, pendientes). |
WorkspaceSectionCard | Sección con eyebrow, title, description, pills. |
WORKSPACE_SCROLL_HEIGHT | Altura estándar para listas largas. |
| Botones | workspacePrimaryButtonClass, workspaceSecondaryButtonClass, workspaceDangerButtonClass. |
| Inputs | workspaceFieldClass, workspaceCompactFieldClass, workspaceFieldLabelClass. |
Hooks compartidos
Section titled “Hooks compartidos”useActiveTenant es el único hook común. Las 6 islands se re-pintan al cambiar tenant. Ninguna consume useActivePeriod — los datos de administración son atemporales (configuración del tenant); la excepción es Bootstrap, que pide explícitamente año+mes en sus propios <select> independientes del período activo.
APIs cruzadas
Section titled “APIs cruzadas”Aunque cada island tiene su propio endpoint, varias dependen entre sí en el frontend para resolver cuentas o representantes — el plan de cuentas es la dependencia transversal más común aunque su UI vive en Command:
| Island | Endpoint propio | Dependencias laterales |
|---|---|---|
| Empresa | /api/admin/company | /api/parameters/giros-comerciales (catálogo SII). |
| Capital | /api/admin/capital | /api/admin/representatives (socio), /api/admin/chart-of-accounts (cuentas). |
| Legal Reps | /api/admin/representatives | /api/admin/representatives/:id/activar-cuenta (cuenta socio bancaria). |
| Config Contable | /api/admin/config-contable/cuentas y /conceptos | /api/admin/chart-of-accounts (selector). |
| System Config | /api/admin/system-config | — |
| Bootstrap | /api/reportes/bootstrap-cierre | /api/auth/validate para verificar rol SUPER_ADMIN. |
| Acción | Rol mínimo |
|---|---|
| Lectura del panel | ADMIN |
| Edición de empresa / capital / reps / config | ADMIN |
| Bootstrap del ejercicio | SUPER_ADMIN (verificado en cliente vía /api/auth/validate). |
Backend de referencia
Section titled “Backend de referencia”| Service | Cubre |
|---|---|
| CompanyService | Datos legales del tenant. |
| CapitalService | Movimientos de capital con outbox. |
| LegalRepService | Personas + cuenta socio. |
| ConfigContableService | Wiring por documento/concepto. |
| SystemConfigService | Parámetros del sistema. |
Decisiones de UX compartidas
Section titled “Decisiones de UX compartidas”| Decisión | Aplica a | Motivo |
|---|---|---|
| Re-carga completa al cambiar tenant | Las 6 | Cero ambigüedad sobre qué tenant está visible. |
| Validación de rol antes de operación crítica | Bootstrap | SUPER_ADMIN se valida en cliente para evitar el viaje y dar feedback inmediato; el backend revalida igual. |
| Cargas en paralelo cuando hay laterales | Capital (3 fetches), Config Contable (3) | Cuentas, reps y plan son independientes; serializar es latencia visible. |
| Confirm en eliminación y desactivación | Capital, Legal Reps, Config Contable | Cada una afecta tablas con dependencias contables. |
Forms controlados con <input class={workspaceFieldClass}> | Las 6 | Lenguaje visual consistente; sin <Input> de atoms (mantiene neutralidad). |
Sin useActivePeriod | Las 6 (excepto Bootstrap con <select> propio) | La admin del tenant no se filtra por mes contable. |