Plataforma técnica · Orchestrator
Servicios de Administración
Orchestrator Administración Servicios
Los servicios de administración gobiernan los datos del tenant que rara vez cambian pero condicionan toda la operación: el plan de cuentas, la razón social, el capital social, quién firma, qué cuenta contable se usa por defecto, qué feature flags están activos.
Todos son consumidos por el panel de administración en Sevastopol (islands/administracion/) y por otros servicios de dominio que necesitan resolver “¿qué cuentas existen en el plan?”, “¿cuál es la cuenta de ventas?” o “¿qué representante firma?”.
Mapa de Dependencias
Section titled “Mapa de Dependencias”flowchart TB
PC[("administracion.plan_contable")]
subgraph WRITE["CRUD directo del plan"]
COA["ChartOfAccountsService"]
end
subgraph DEPS["Servicios que dependen del plan"]
CAPS["CapitalService<br/>(valida cuenta y contrapartida)"]
CCS["ConfigContableService<br/>(valida cuenta para wiring)"]
LRS["LegalRepService<br/>(crea sub-cuentas bajo 2204000)"]
end
subgraph INDEP["Servicios independientes del plan"]
COMP["CompanyService<br/>→ configuracion_empresa"]
SCS["SystemConfigService<br/>→ configuracion_sistema"]
end
subgraph EXT["Otras dependencias"]
CO[("operaciones_sii.conceptos_operaciones")]
BAN[("financieros.bancos + movimientos")]
end
COA -- CRUD --> PC
CAPS -. valida .-> PC
CCS -. valida .-> PC
CCS -. valida .-> CO
LRS -. INSERT sub-cuenta .-> PC
LRS -. saldo socio (read) .-> BAN Hooks emitidos
Section titled “Hooks emitidos”Solo CapitalService emite eventos al DomainEventBus en este dominio:
| Evento | Trigger | Payload |
|---|---|---|
capital:movimiento | CapitalService.create post-COMMIT | { capitalId, tipoMovimiento: APORTE|RETIRO|AJUSTE, monto } |
El mapeo tipo_capital → tipoMovimiento está documentado en CapitalService › Mapeo de hook.
Los demás servicios no emiten eventos — sus mutaciones son configuración estable que no dispara cadenas reactivas. Si en el futuro SystemConfigService.updateByKey necesita avisar (e.g. para invalidar cache cross-instancia), se agrega un evento config:updated en DomainEventMap.
Patrones compartidos
Section titled “Patrones compartidos”| Patrón | Quién lo aplica |
|---|---|
BaseService.withTransaction(ctx, cb) | CapitalService (create/update/delete/approve), ChartOfAccountsService.create, LegalRepService.activarCuentaSocio, LegalRepRepository.setAsActive. |
BaseService.validateRequired | Capital (create), ChartOfAccounts (create), ConfigContable (create cuenta/concepto). |
BaseService.assertExists | ConfigContable (getCuenta, getConcepto). |
Validación de RUT (^\d{7,8}-[\dkK]$) | Company (update), LegalRep (create/update). |
| Validación de email | Company (update). |
Validación FK contra plan_contable | Capital, ConfigContable. |
| Bloqueo de delete por dependencias | ChartOfAccounts (cuentas con hijos), Capital (asientos aprobados). |
| Cache en memoria por tenant | SystemConfig (TTL 5 min). |
Schemas SQL involucrados
Section titled “Schemas SQL involucrados”| Schema | Tablas que tocan estos servicios |
|---|---|
administracion | configuracion_empresa, capital, representantes_legales, configuracion_sistema, plan_contable. |
operaciones_sii | config_cuentas_contables, config_conceptos_contables, conceptos_operaciones (read-only validation). |
financieros | bancos, movimientos_bancarios (read-only para saldo socio). |