Files
hr_soul23/docs/API_CONTRACTS.md
google-labs-jules[bot] 7db61d9af9 feat: Set up database and data models
This commit establishes the database foundation for the HR Platform.

Key changes include:
- Defined the complete data schema in `docs/API_CONTRACTS.md` to serve as a single source of truth.
- Integrated `knex.js` with `sqlite3` to manage the database connection and schema.
- Implemented a version-controlled migration system and created initial migrations for all required tables.
- Created seed files to populate the database with sample data for development.
- Addressed security feedback by using `bcrypt` to hash user passwords in the seed data and adding the SQLite database file to `.gitignore`.
2025-12-13 22:08:28 +00:00

4.3 KiB

API & Data Contracts

Este documento es la única fuente de verdad para los modelos de datos y las APIs del sistema. Todos los agentes (backend, frontend, testing) deben adherirse a estos contratos.


Modelos de Datos (Tablas)

socias

Almacena la información de las empleadas.

Columna Tipo Descripción
id INTEGER PK, Auto-increment
nombre VARCHAR(255) Nombre de la socia
apellido VARCHAR(255) Apellido de la socia
fecha_ingreso DATE Fecha de ingreso a la empresa
id_sucursal INTEGER FK a sucursales.id
activo BOOLEAN true si está activa, false si no
created_at TIMESTAMP Fecha de creación del registro
updated_at TIMESTAMP Fecha de última modificación

sucursales

Almacena las diferentes sucursales o centros de trabajo.

Columna Tipo Descripción
id INTEGER PK, Auto-increment
nombre VARCHAR(255) Nombre de la sucursal
direccion TEXT Dirección física de la sucursal
created_at TIMESTAMP Fecha de creación del registro
updated_at TIMESTAMP Fecha de última modificación

vacaciones

Registra las solicitudes y periodos de vacaciones.

Columna Tipo Descripción
id INTEGER PK, Auto-increment
id_socia INTEGER FK a socias.id
fecha_inicio DATE Inicio del periodo vacacional
fecha_fin DATE Fin del periodo vacacional
dias_tomados INTEGER Cantidad de días hábiles
estado VARCHAR(50) solicitada, aprobada, rechazada
ciclo_anual VARCHAR(10) Ciclo al que corresponden, ej: "2023-2024"
created_at TIMESTAMP Fecha de creación del registro
updated_at TIMESTAMP Fecha de última modificación

permisos

Registra ausencias justificadas que no son vacaciones.

Columna Tipo Descripción
id INTEGER PK, Auto-increment
id_socia INTEGER FK a socias.id
fecha DATE Fecha del permiso
horas INTEGER NULL si es por día completo
dias INTEGER NULL si es por horas
motivo TEXT Razón del permiso
estado VARCHAR(50) solicitado, aprobado, rechazado
created_at TIMESTAMP Fecha de creación del registro
updated_at TIMESTAMP Fecha de última modificación

eventos

Log de eventos para webhooks.

Columna Tipo Descripción
id INTEGER PK, Auto-increment
tipo_evento VARCHAR(100) Ej: vacaciones.solicitada
payload JSON Datos del evento
endpoint_url VARCHAR(255) URL a la que se envió el webhook
estado_entrega VARCHAR(50) pendiente, enviado, fallido
created_at TIMESTAMP Fecha de creación del registro

configuraciones

Almacena configuraciones clave-valor para el sistema.

Columna Tipo Descripción
id INTEGER PK, Auto-increment
clave VARCHAR(100) Clave única de configuración
valor TEXT Valor de la configuración
descripcion TEXT Para qué sirve la configuración
created_at TIMESTAMP Fecha de creación del registro
updated_at TIMESTAMP Fecha de última modificación

usuarios

Usuarios que pueden acceder al sistema.

Columna Tipo Descripción
id INTEGER PK, Auto-increment
nombre VARCHAR(255) Nombre del usuario
email VARCHAR(255) Email único para login
password_hash VARCHAR(255) Hash de la contraseña
rol VARCHAR(50) root, admin, user
created_at TIMESTAMP Fecha de creación del registro
updated_at TIMESTAMP Fecha de última modificación

permisos_granulares

Define permisos específicos por usuario y recurso.

Columna Tipo Descripción
id INTEGER PK, Auto-increment
id_usuario INTEGER FK a usuarios.id
recurso VARCHAR(100) Ej: socias, vacaciones
accion VARCHAR(50) crear, leer, actualizar, eliminar
permitido BOOLEAN true si tiene el permiso
created_at TIMESTAMP Fecha de creación del registro
updated_at TIMESTAMP Fecha de última modificación