Sistema de Gestión de Recursos Humanos Empresarial de Código Abierto con Arquitectura Separada Spring Boot y Vue

Arquitectura Técnica

Este sistema HRMS implementa una arquitectura moderna separada entre el cliente y el servidor, utilizando tecnologías probadas en producción.

Componentes del Servidor

  • Framework principal basado en Spring Boot 2.5.x
  • Autenticación y autorización mediante Spring Security con tokens JWT
  • Capa de acceso a datos con MyBatis-Plus 3.5.x
  • Almacenamiento en caché con Redis para optimizar el rendimiento
  • Pool de conexiones a base de datos con monitorización Druid
  • Documentación interactiva de la API con Knife4j
  • Comunicación en tiempo real mediante WebSockets
  • Biblioteca de utilidades general Hutool
  • Reconocimiento óptico de caracteres con RapidOCR
  • Procesamiento de hojas de cálculo con EasyExcel

Componentes del Cliente

  • Framework frontend Vue 2.6 con gestión de estado Vuex
  • Navegación y rutas manejadas por Vue Router
  • Interfaz de usuario construida con Ant Design Vue 1.7.x
  • Comunicación HTTP a través de Axios
  • Visualización de datos interactiva con ECharts 5.x
  • Componente de tabla avanzado VXE Table
  • Edición colaborativa en línea con Univer
  • Simulación de datos en desarrollo con Mock.js

Modelo de Control de Acceso

El sistema emplea un modelo RBAC (Control de Acceso Basado en Roles) robusto que permite una gestión granular de permisos.

  • Permisos funcionales: Control a nivel de menú y botón de interfaz
  • Permisos de datos: Configuración flexible de alcance de datos (todos, personalizado, jerárquico, personal)
  • Gestión de roles: Asignación y configuración dinámica de múltiples roles por usuario
  • Seguridad reforzada: Autenticación con JWT, captchas gráficos y hashing seguro de contraseñas

Módulos Funcionales Principales

1. Administración del Sistema

  • Gestión completa del ciclo de vida de usuarios
  • Configuración detallada de roles y permisos
  • Administración dinámica de menús y rutas
  • Modelado de la estructura organizativa jerárquica
  • Mantenimiento de catálogos de puestos de trabajo

2. Gestión del Ciclo de Vida del Empleado

  • Archivo maestro de empleados con gestión de incorporaciones y confirmaciones
  • Administración completa de contratos laborales
  • Registro de credenciales, formación y capacitación
  • Procesamiento de movilidades internas, promociones y salidas
  • Consolidación y análisis de registros de asistencia

3. Sistema Inteligente de Control Horario

  • Registro y consulta de fichajes con gestión de correcciones
  • Flujo completo de solicitudes, aprobaciones y estadísticas de permisos
  • Sistema de gestión de horas extraordinarias
  • Registro y seguimiento de desplazamientos por trabajo
  • Configuración de turnos y planificación de calendarios
  • Administración de días festivos y periodos vacacionales
  • Generación de reportes diarios y mensuales de asistencia

4. Administración Salarial

  • Diseño parametrizable de estructuras salariales
  • Cálculo automatizado de nóminas
  • Generación y distribución de recibos de pago
  • Cálculo de retenciones de impuestos sobre la renta
  • Gestión de cotizacionees a seguridad social y fondos de vivienda

5. Estructura Organizativa

  • Gestión jerárquica de unidades organizativas y departamentos
  • Control de plantilla y dotación por área
  • Administración de niveles y escalas de puestos

6. Monitorización Operativa

  • Supervisión en tiempo real de recursos del sistema (CPU, memoria, disco)
  • Herramientas para despliegue y control del estado del servicio
  • Consulta de logs del sistema y de actividad de usuarios
  • Análisis de rendimiento de consultas SQL

Estructura del Proyecto

hrms-platform/
├── hrms-server/                  # Aplicación del servidor
│   ├── core/                     # Módulo base común
│   │   └── src/main/java/com/hrplatform/
│   │       ├── annotations/      # Anotaciones personalizadas
│   │       ├── aspects/          # Aspectos AOP
│   │       ├── entities/         # Clases base
│   │       ├── configurations/   # Configuraciones
│   │       ├── exceptions/       # Manejo de errores
│   │       └── utilities/        # Utilidades generales
│   ├── audit/                    # Módulo de auditoría
│   │   └── src/main/java/com/hrplatform/
│   │       ├── models/           # Modelos de datos
│   │       ├── repositories/     # Capa de persistencia
│   │       ├── services/         # Lógica de negocio
│   │       └── controllers/      # Controladores REST
│   ├── business/                 # Módulos de negocio
│   │   └── src/main/java/com/hrplatform/
│   │       ├── modules/
│   │       │   ├── admin/        # Administración del sistema
│   │       │   ├── auth/         # Servicios de autenticación
│   │       │   ├── operations/   # Gestión operativa
│   │       │   └── attendance/   # Control de asistencia
│   │       └── Application.java  # Clase principal
│   └── pom.xml                   # Configuración Maven
└── hrms-client/                  # Aplicación del cliente
    ├── src/
    │   ├── services/             # Servicios API
    │   ├── shared/               # Componentes compartidos
    │   ├── settings/             # Configuración
    │   ├── framework/            # Funcionalidades core
    │   ├── layouts/              # Diseños de página
    │   ├── stores/               # Estado Vuex
    │   ├── helpers/              # Funciones de ayuda
    │   └── modules/              # Vistas de la aplicación
    ├── package.json              # Dependencias npm
    └── config.js                 # Configuración cliente

Guía de Instalación

Requisitos Previos

  • Java Development Kit 8
  • Servidor MySQL versión 5.7 o superior
  • Entorno Node.js 14+ y gestor de paquetes npm
  • Herramienta de construcción Maven 3.5+
  • Instancia de Redis disponible

Configuración del Backend

Clonar el repositorio y navegar al directorio del servidor:

git clone https://repositorio.ejemplo.com/hrms-platform.git
cd hrms-platform/hrms-server

Modificar el archivo application-prod.yml con los parámetros de conexión:

datasource:
  primary:
    url: jdbc:mysql://servidor:3306/hrms_db?useUnicode=true&characterEncoding=UTF-8
    username: admin_user
    password: contrasegura
  redis:
    host: cache-server
    port: 6380
    password: redis_password

Ejecutar el script de inicialización schema.sql y luego compilar el proyecto con Maven:

mvn clean package -DskipTests

Arrancar la aplicación:

java -jar target/hrms-server.jar --spring.profiles.active=prod

Configuración del Frontend

Acceder al directorio del cliente e instalar dependencias:

cd ../hrms-client
npm install

Configurar el archivo .env.production con la URL del API backend y ejecutar la compilación:

VUE_APP_API_BASE_URL=https://api.hrms.example.com
npm run build

Los archivos estáticos generados en dist/ deben ser desplegados en un servidor web como Nginx o Apache.

Credenciales Iniciales

Usuario administrador predeterminado: sysadmin
Contraseña temporal: TempPass123!

Es obligatorio cambiar la contraseña tras el primer acceso.

Extensiones y Personalizaciones

Para incorporar nuevos módulos de negocio:

  1. Crear la estructura de tablas correspondiente en la base de datos
  2. Agregar un nuevo paquete dentro del directorio business/modules
  3. Implementar la capa de entidad, repositorio, servicio y controlador REST
  4. Registrar los menús y permisos asociados en el sistema de administración

En el cliente, se debe:

  1. Crear componentes Vue en modules/nuevo-modulo
  2. Definir las peticiones API correspondientes en services
  3. Configurar las rutas de acceso en la tabla de menús del backend

Solución de Problemas Comunes

Error de conexión a base de datos: Verificar que el servicio MySQL está activo y que las credenciales en la configuración son correctas.

Problemas de CORS en desarrollo: Asegurar que el proxy está configurado correctamente en el servidor de desarrollo del frontend.

Fallo en conexión Redis: Comprobar que el servicio Redis está ejecutándose y accesible desde el servidor de aplicaciones.

Etiquetas: Spring Boot vue.js rbac MyBatis-Plus Gestión de RRHH

Publicado el 6-23 16:52