Skip to content

Plataforma técnica · Sevastopol

Departamentos en Sevastopol

Islands Remuneraciones Departamentos

DepartmentsViewIsland mantiene la estructura departamental del tenant. Cada departamento se asocia a un código, un nombre y un resumen agregado con headcount. Los contratos vinculan empleado + departamento; las liquidaciones permiten reportes por centro de costo.

DecisiónMotivo
Resumen pre-agregado en endpoint dedicadoGET /api/departments/resumen trae headcount y métricas por departamento — la island lo indexa por código y lo cruza con el listado. Evita N queries en cliente.
Empleados precargadosAl cambiar tenant se cargan departments, resumen y employees en paralelo. La UI puede expandir un departamento para listar sus trabajadores sin segundo viaje.
Filtro local activo/inactivo + textoVolumen bajo; búsqueda en nombre + codigo + descripcion cubre el caso.
view:loaded dispatcherDespués de la carga inicial la island emite el evento view:loaded (patrón compartido con otras islands) para que el shell oculte el spinner global.
GrupoCampos esperados
IdentificaciónCódigo, nombre, descripción.
EstadoActivo / inactivo.
ResumenHeadcount (trabajadores asignados al departamento).
Método + rutaUso
GET /api/departments?tenant_id=Listado de departamentos.
GET /api/departments/resumen?tenant_id=Headcount agregado por departamento.
GET /api/employees?tenant_id=Listado lateral para expandir por departamento.
POST /api/departments?tenant_id=Alta.
PUT /api/departments/:id?tenant_id=Edición.
DELETE /api/departments/:id?tenant_id=Eliminación.

El CRUD de departamentos vive en el repositorio del Orchestrator dentro del dominio maestro laboral. El resumen agregado se calcula en el backend para evitar consolidaciones del lado cliente.