1383 lines
67 KiB
Markdown
1383 lines
67 KiB
Markdown
# RF-RRHH-001: Catálogo de Personal y Cuadrillas
|
||
|
||
**Módulo:** MAI-007 - RRHH y Asistencias
|
||
**Épica:** Gestión de Recursos Humanos de Obra
|
||
**Prioridad:** Alta
|
||
**Complejidad:** Media
|
||
**Autor:** Strategos AI
|
||
**Fecha:** 2025-11-17
|
||
**Versión:** 1.0
|
||
|
||
---
|
||
|
||
## 1. Descripción General
|
||
|
||
Este requerimiento establece la necesidad de un **sistema de gestión centralizado de personal** que permita administrar empleados directos, cuadrillas subcontratadas, oficios, certificaciones, y el historial laboral completo de todo el personal que participa en los proyectos de construcción.
|
||
|
||
El sistema debe soportar:
|
||
- **Empleados directos** de la constructora
|
||
- **Cuadrillas subcontratadas** con estructura jerárquica
|
||
- **Clasificación por oficios** especializados de construcción
|
||
- **Gestión de certificaciones** y capacitaciones obligatorias
|
||
- **Historial laboral** con asignaciones a proyectos
|
||
- **Datos legales** (IMSS, INFONAVIT, RFC, CURP)
|
||
- **Documentación digital** (identificaciones, contratos, certificados)
|
||
|
||
### Beneficios Clave
|
||
|
||
✅ **Trazabilidad completa** del personal en cada proyecto y frente de obra
|
||
✅ **Cumplimiento legal** con requisitos IMSS, INFONAVIT, STPS
|
||
✅ **Control de certificaciones** y capacitaciones obligatorias
|
||
✅ **Base para costeo** de mano de obra y productividad
|
||
✅ **Gestión ágil** de rotación y asignaciones multi-sitio
|
||
|
||
---
|
||
|
||
## 2. Actores Principales
|
||
|
||
| Actor | Rol | Responsabilidades |
|
||
|-------|-----|-------------------|
|
||
| **Director de RRHH** | Administrador | Gestión completa del catálogo de personal |
|
||
| **Coordinador de Obra** | Usuario avanzado | Asignar personal a obras y frentes |
|
||
| **Residente de Obra** | Usuario básico | Consultar personal asignado a su obra |
|
||
| **Auditor IMSS/STPS** | Externo | Verificar cumplimiento normativo |
|
||
| **Sistema de Nómina** | Sistema | Consumir datos para procesamiento de nómina |
|
||
|
||
---
|
||
|
||
## 3. Casos de Uso Principales
|
||
|
||
### CU-RRHH-001: Alta de Empleado Directo
|
||
|
||
**Descripción:** El Director de RRHH registra un nuevo empleado directo con todos sus datos personales, laborales y legales.
|
||
|
||
**Flujo Principal:**
|
||
|
||
1. Usuario accede a "Catálogo de Personal" → "Nuevo Empleado Directo"
|
||
2. Completa **Datos Personales**:
|
||
- Nombre completo
|
||
- Fecha de nacimiento
|
||
- RFC, CURP, NSS (Número de Seguridad Social)
|
||
- Dirección, teléfono, email
|
||
- Contacto de emergencia
|
||
3. Completa **Datos Laborales**:
|
||
- Fecha de ingreso
|
||
- Tipo de contrato: Planta / Eventual / Por Obra
|
||
- Oficio principal: [Selección de catálogo]
|
||
- Nivel de experiencia: Junior / Semi-senior / Senior / Maestro
|
||
- Salario base diario
|
||
- Jornada: Diurna / Nocturna / Mixta
|
||
4. Completa **Datos IMSS/INFONAVIT**:
|
||
- Número de Seguridad Social (NSS)
|
||
- UMF (Unidad Médica Familiar) asignada
|
||
- Crédito INFONAVIT: Sí/No
|
||
- Descuento INFONAVIT mensual (si aplica)
|
||
5. Adjunta **Documentos Digitales**:
|
||
- INE/IFE (frente y reverso)
|
||
- Comprobante de domicilio
|
||
- CURP
|
||
- RFC
|
||
- Alta IMSS (formato firmado)
|
||
- Contrato laboral
|
||
- Certificados de capacitación (opcionales)
|
||
6. Sistema **valida datos**:
|
||
- RFC válido (algoritmo)
|
||
- CURP válido (algoritmo)
|
||
- NSS válido (11 dígitos)
|
||
- Fecha de nacimiento vs edad mínima legal (18 años)
|
||
7. Sistema **genera código único**: EMP-2025-00001
|
||
8. Guarda registro con status: **Activo**
|
||
|
||
**Postcondiciones:**
|
||
- Empleado queda disponible para asignación a obras
|
||
- Se puede registrar su asistencia desde app móvil
|
||
- Aparece en reportes de RRHH
|
||
|
||
**Validaciones:**
|
||
- ❌ No permitir duplicados por NSS o RFC
|
||
- ❌ No permitir fecha de ingreso futura
|
||
- ❌ No permitir salario diario < salario mínimo vigente
|
||
- ✅ Permitir guardar como "borrador" si faltan documentos
|
||
|
||
---
|
||
|
||
### CU-RRHH-002: Registro de Cuadrilla Subcontratada
|
||
|
||
**Descripción:** El Coordinador de Obra registra una cuadrilla completa de un subcontratista, con estructura de jefe de cuadrilla + ayudantes.
|
||
|
||
**Flujo Principal:**
|
||
|
||
1. Usuario accede a "Catálogo de Personal" → "Nueva Cuadrilla Subcontratada"
|
||
2. Completa **Datos de la Cuadrilla**:
|
||
- Nombre: "Cuadrilla Herrería - Juan Pérez"
|
||
- Subcontratista: [Selección de catálogo de proveedores]
|
||
- Oficio especializado: Herrería
|
||
- Tipo de contrato: Por obra / Por precio alzado / Precio unitario
|
||
- Vigencia del contrato: Fecha inicio - Fecha fin
|
||
3. Registra **Jefe de Cuadrilla**:
|
||
- Nombre completo
|
||
- Teléfono de contacto
|
||
- NSS (opcional para subcontratados)
|
||
- Experiencia en años
|
||
4. Registra **Integrantes de la Cuadrilla** (uno por uno):
|
||
```
|
||
Integrante #1:
|
||
- Nombre: Pedro González
|
||
- Oficio: Oficial Herrero
|
||
- NSS: 12345678901 (opcional)
|
||
- Teléfono: 55-1234-5678
|
||
|
||
Integrante #2:
|
||
- Nombre: Luis Martínez
|
||
- Oficio: Ayudante de Herrería
|
||
- NSS: —
|
||
- Teléfono: 55-9876-5432
|
||
```
|
||
5. Define **Tarifa de la Cuadrilla**:
|
||
- Costo por día: $3,500 MXN (cuadrilla completa)
|
||
- Costo por m² de trabajo: $45 MXN (si es precio unitario)
|
||
6. Sistema genera código: **CUAD-2025-00001**
|
||
7. Guarda cuadrilla con status: **Activa**
|
||
|
||
**Postcondiciones:**
|
||
- Cuadrilla disponible para asignar a proyectos
|
||
- Cada integrante puede registrar asistencia individual
|
||
- Costeo se calcula por cuadrilla completa o por producción
|
||
|
||
**Reglas de Negocio:**
|
||
- Una cuadrilla debe tener mínimo 1 jefe + 1 integrante
|
||
- Máximo 15 integrantes por cuadrilla
|
||
- El jefe de cuadrilla puede pertenecer a solo 1 cuadrilla activa
|
||
|
||
---
|
||
|
||
### CU-RRHH-003: Gestión de Certificaciones y Capacitaciones
|
||
|
||
**Descripción:** El Director de RRHH registra y da seguimiento a certificaciones obligatorias y capacitaciones de seguridad del personal.
|
||
|
||
**Flujo Principal:**
|
||
|
||
1. Usuario accede a "Personal" → [Selecciona empleado] → "Certificaciones"
|
||
2. Ve listado de **Certificaciones Actuales**:
|
||
```
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ Certificación │ Vigencia │ Status │
|
||
├────────────────────────────┼───────────┼────────────┤
|
||
│ NOM-009-STPS-2011 │ 01/03/2026│ ✅ Vigente │
|
||
│ Trabajos en Altura │ 15/01/2025│ ⚠️ Por │
|
||
│ (Curso 40 hrs) │ │ vencer │
|
||
│ Manejo de Herramienta │ 10/12/2024│ ❌ Vencida │
|
||
│ Eléctrica │ │ │
|
||
└────────────────────────────┴───────────┴───────────┘
|
||
```
|
||
3. Hace clic en "Agregar Certificación"
|
||
4. Completa datos:
|
||
- Tipo de certificación: [Catálogo configurable]
|
||
- NOM-009-STPS-2011 (Trabajos en Altura)
|
||
- NOM-031-STPS-2011 (Construcción)
|
||
- Curso de Primeros Auxilios
|
||
- Operación de Maquinaria Pesada
|
||
- Soldadura certificada AWS
|
||
- Electricidad residencial
|
||
- Instalaciones hidrosanitarias
|
||
- Andamios tipo
|
||
- Institución emisora: "STPS" / "Instituto XYZ"
|
||
- Número de certificado: CERT-12345
|
||
- Fecha de emisión: 15/01/2024
|
||
- Vigencia: 1 año / 2 años / Permanente
|
||
- Fecha de vencimiento: 15/01/2025 (auto-calculada)
|
||
5. Adjunta **Documento PDF** del certificado
|
||
6. Sistema guarda y **programa recordatorio**:
|
||
- 30 días antes del vencimiento → Email + Notificación
|
||
- Al vencer → Marcar empleado como "Certificación vencida"
|
||
7. Si certificación vence:
|
||
- Sistema **alerta** al asignar a obra que requiere esa certificación
|
||
- Dashboard de RRHH muestra empleados con certificaciones vencidas
|
||
|
||
**Postcondiciones:**
|
||
- Certificación queda trazada en el historial del empleado
|
||
- Se pueden generar reportes de cumplimiento para auditorías
|
||
- Sistema previene asignaciones a obras si falta certificación obligatoria
|
||
|
||
**Validaciones:**
|
||
- ❌ No permitir fecha de emisión futura
|
||
- ❌ No permitir vencimiento anterior a fecha de emisión
|
||
- ✅ Alertar si se sube certificado duplicado para el mismo empleado
|
||
|
||
---
|
||
|
||
### CU-RRHH-004: Consultar Historial Laboral
|
||
|
||
**Descripción:** El Director de RRHH consulta el historial completo de asignaciones, proyectos y desempeño de un empleado.
|
||
|
||
**Flujo Principal:**
|
||
|
||
1. Usuario accede a "Personal" → [Selecciona empleado: Juan Pérez EMP-2025-00001]
|
||
2. Ve **Resumen del Empleado**:
|
||
```
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ Juan Pérez Gómez EMP-2025-00001 │
|
||
│ Oficial Albañil Senior NSS: 12345678901 │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ Antigüedad: 8 años 3 meses │
|
||
│ Proyectos completados: 12 │
|
||
│ Obras activas: 1 (Fracc. Los Pinos - Etapa 2) │
|
||
│ Asistencia promedio: 94% (últimos 12 meses) │
|
||
│ Incidencias: 2 retardos, 3 faltas injustificadas │
|
||
└─────────────────────────────────────────────────────┘
|
||
```
|
||
3. Ve pestaña **"Historial de Proyectos"**:
|
||
```
|
||
┌────────────────────────────────────────────────────────────┐
|
||
│ Proyecto │ Periodo │ Rol │ Eval. │
|
||
├───────────────────────┼───────────────┼─────────────┼───────┤
|
||
│ Fracc. Los Pinos E2 │ Ene-25 → Hoy │ Of. Albañil │ — │
|
||
│ Privada Las Flores │ Jul-24 → Dic24│ Of. Albañil │ ⭐⭐⭐⭐⭐│
|
||
│ Conjunto Haciendas │ Ene-24 → Jun24│ Ayudante │ ⭐⭐⭐⭐ │
|
||
│ Fracc. Valle Real │ Jun-23 → Dic23│ Ayudante │ ⭐⭐⭐ │
|
||
│ ...12 proyectos más │
|
||
└────────────────────────────────────────────────────────────┘
|
||
```
|
||
4. Ve pestaña **"Asistencias"**:
|
||
- Gráfico de asistencia mensual (últimos 12 meses)
|
||
- Desglose: Asistencias / Faltas / Retardos / Permisos
|
||
- Total de horas trabajadas por mes
|
||
5. Ve pestaña **"Capacitaciones"**:
|
||
- Lista cronológica de cursos y certificaciones
|
||
- Horas de capacitación acumuladas
|
||
6. Ve pestaña **"Incidencias Disciplinarias"** (si aplica):
|
||
```
|
||
Fecha │ Tipo │ Descripción │ Acción
|
||
───────────┼────────────────┼───────────────────────────┼─────────
|
||
10/Feb/25 │ Retardo │ Llegó 35 min tarde │ Llamada
|
||
│ │ │ atención
|
||
05/Ene/25 │ Falta injust. │ No presentó justificante │ Descuento
|
||
```
|
||
|
||
**Postcondiciones:**
|
||
- Director de RRHH tiene visibilidad completa del empleado
|
||
- Puede tomar decisiones informadas sobre ascensos, bonos, re-asignaciones
|
||
|
||
---
|
||
|
||
### CU-RRHH-005: Catálogo de Oficios
|
||
|
||
**Descripción:** El administrador del sistema configura el catálogo maestro de oficios de construcción con costos estándar.
|
||
|
||
**Flujo Principal:**
|
||
|
||
1. Usuario (Admin RRHH) accede a "Configuración" → "Catálogo de Oficios"
|
||
2. Ve listado actual:
|
||
```
|
||
┌──────────────────────────────────────────────────────────┐
|
||
│ Oficio │ Categoría │ Costo/día │
|
||
├───────────────────────────┼─────────────────┼────────────┤
|
||
│ Albañil │ Obra Civil │ $550 │
|
||
│ Fierrero (Armador) │ Obra Civil │ $600 │
|
||
│ Carpintero │ Acabados │ $580 │
|
||
│ Plomero │ Instalaciones │ $620 │
|
||
│ Electricista │ Instalaciones │ $650 │
|
||
│ Pintor │ Acabados │ $520 │
|
||
│ Yesero │ Acabados │ $530 │
|
||
│ Operador de Maquinaria │ Maquinaria │ $800 │
|
||
│ Maestro de Obra │ Supervisión │ $900 │
|
||
│ Ayudante General │ Apoyo │ $400 │
|
||
│ ...más oficios... │
|
||
└──────────────────────────────────────────────────────────┘
|
||
```
|
||
3. Hace clic en "Nuevo Oficio"
|
||
4. Completa:
|
||
- Nombre del oficio: "Instalador de Cancelería"
|
||
- Categoría: [Selección] → Acabados
|
||
- Costo estándar día: $560 MXN
|
||
- Requiere certificación: ☑ Sí
|
||
- Certificaciones requeridas: [Selección múltiple]
|
||
- ☑ Curso de Instalación de Aluminio y Vidrio
|
||
- ☑ NOM-031-STPS (Construcción)
|
||
- Descripción: "Instalación de puertas, ventanas y cancelería de aluminio"
|
||
5. Sistema valida y guarda
|
||
6. Oficio queda disponible para asignar a empleados
|
||
|
||
**Reglas de Negocio:**
|
||
- No se pueden eliminar oficios que tengan empleados asignados
|
||
- Cambiar costo estándar NO afecta contratos ya firmados
|
||
- Se puede marcar un oficio como "Obsoleto" para que no aparezca en nuevos registros
|
||
|
||
---
|
||
|
||
## 4. Wireframes / Mockups
|
||
|
||
### Pantalla: Catálogo de Personal
|
||
|
||
```
|
||
┌────────────────────────────────────────────────────────────────────────────┐
|
||
│ RRHH > Catálogo de Personal [+ Nuevo Empleado] │
|
||
├────────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ Filtros: [Todos ▼] [Activos ▼] [Oficio ▼] [Proyecto ▼] 🔍 Buscar... │
|
||
│ │
|
||
│ ┌─ Resumen ──────────────────────────────────────────────────────────┐ │
|
||
│ │ Total empleados: 245 | Directos: 78 | Subcontratados: 167 │ │
|
||
│ │ Cuadrillas activas: 12 | Certificaciones por vencer: 8 │ │
|
||
│ └───────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌──────────────────────────────────────────────────────────────────────┐ │
|
||
│ │ Código │ Nombre │ Oficio │ Proyecto │ Acción│
|
||
│ ├─────────────┼─────────────────────┼───────────────┼────────────┼──────┤
|
||
│ │ EMP-001 │ Juan Pérez Gómez │ Of. Albañil │ Los Pinos │[Ver] │
|
||
│ │ 📷 ✅ 94% │ NSS: 123***901 │ Senior │ Etapa 2 │[Edi] │
|
||
│ │ │ ⚠️ Cert. por vencer │ │ │ │
|
||
│ ├─────────────┼─────────────────────┼───────────────┼────────────┼──────┤
|
||
│ │ CUAD-005 │ Cuadrilla Herrería │ Fierreros │ Las Flores │[Ver] │
|
||
│ │ 👥 5 pers │ Jefe: Pedro López │ (5 integ.) │ │[Edi] │
|
||
│ │ ✅ 98% │ Subcon: ACEROS SA │ │ │ │
|
||
│ ├─────────────┼─────────────────────┼───────────────┼────────────┼──────┤
|
||
│ │ EMP-142 │ María González V. │ Arquitecto │ Oficina │[Ver] │
|
||
│ │ 📷 ✅ 100% │ NSS: 987***456 │ Residente │ Central │[Edi] │
|
||
│ │ │ │ │ │ │
|
||
│ ├─────────────┼─────────────────────┼───────────────┼────────────┼──────┤
|
||
│ │ EMP-078 │ Carlos Ramírez │ Electricista │ Sin │[Ver] │
|
||
│ │ ❌ Inactivo│ NSS: 456***789 │ Certificado │ asignar │[Edi] │
|
||
│ │ │ ❌ Baja: 10/Ene/25 │ │ │ │
|
||
│ └──────────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ [< Anterior] Página 1 de 5 [Siguiente >] │
|
||
└────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
Leyenda:
|
||
📷 = Tiene foto de perfil
|
||
✅ = Asistencia > 90% (últimos 30 días)
|
||
⚠️ = Alertas (certificación próxima a vencer, etc.)
|
||
❌ = Inactivo o dado de baja
|
||
👥 = Cuadrilla (múltiples personas)
|
||
```
|
||
|
||
---
|
||
|
||
### Pantalla: Detalle de Empleado
|
||
|
||
```
|
||
┌────────────────────────────────────────────────────────────────────────────┐
|
||
│ ◀ Volver RRHH > Personal > Juan Pérez Gómez (EMP-2025-00001) [Editar]│
|
||
├────────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
||
│ │ 📷 Juan Pérez Gómez │ │
|
||
│ │ [Foto] EMP-2025-00001 │ │
|
||
│ │ Oficial Albañil Senior │ │
|
||
│ │ ✅ Activo | Ingreso: 01/Mar/2017 │ │
|
||
│ │ │ │
|
||
│ │ Datos Personales │ │
|
||
│ │ ────────────────────────────────────────────────────────────────── │ │
|
||
│ │ RFC: PEJG850315HDF001 │ │
|
||
│ │ CURP: PEJG850315HDFRMN02 │ │
|
||
│ │ NSS: 12345678901 │ │
|
||
│ │ Fecha de nacimiento: 15/Mar/1985 (39 años) │ │
|
||
│ │ Teléfono: 55-1234-5678 │ │
|
||
│ │ Email: juan.perez@email.com │ │
|
||
│ │ Emergencia: María Pérez (Esposa) - 55-9876-5432 │ │
|
||
│ │ │ │
|
||
│ │ Datos Laborales │ │
|
||
│ │ ────────────────────────────────────────────────────────────────── │ │
|
||
│ │ Antigüedad: 8 años 3 meses │ │
|
||
│ │ Tipo de contrato: Planta │ │
|
||
│ │ Oficio: Oficial Albañil (Senior) │ │
|
||
│ │ Salario base: $550/día │ │
|
||
│ │ Jornada: Diurna (07:00 - 17:00) │ │
|
||
│ │ UMF: Clínica 47 IMSS │ │
|
||
│ │ Crédito INFONAVIT: Sí (Descuento: $450/mes) │ │
|
||
│ └───────────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ [Datos Personales] [Asignaciones] [Certificaciones] [Asistencia] │
|
||
│ [Historial] [Documentos] │
|
||
│ │
|
||
│ ┌─ Asignación Actual ─────────────────────────────────────────────────┐ │
|
||
│ │ Proyecto: Fraccionamiento Los Pinos - Etapa 2 │ │
|
||
│ │ Desde: 10/Ene/2025 │ │
|
||
│ │ Frente de trabajo: Albañilería - Manzana C │ │
|
||
│ │ Supervisor: Ing. Carlos Mendoza │ │
|
||
│ │ Asistencia (últ. 30 días): ████████████████░░ 94% (28/30 días) │ │
|
||
│ │ │ │
|
||
│ │ [Cambiar de Obra] [Dar de Baja] │ │
|
||
│ └───────────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─ Certificaciones ───────────────────────────────────────────────────┐ │
|
||
│ │ Certificación │ Vigencia │ Status │ Acciones │ │
|
||
│ │ ─────────────────────────────────────────────────────────────────── │ │
|
||
│ │ NOM-031-STPS-2011 │ 01/Mar/2026 │ ✅ Vigente │ [Ver PDF] │ │
|
||
│ │ Trabajos en Altura │ 15/Ene/2025 │ ⚠️ Por │ [Renovar] │ │
|
||
│ │ │ │ vencer │ │ │
|
||
│ │ Primeros Auxilios │ Permanente │ ✅ Vigente │ [Ver PDF] │ │
|
||
│ │ │ │
|
||
│ │ [+ Agregar Certificación] │ │
|
||
│ └───────────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─ Documentos Adjuntos ───────────────────────────────────────────────┐ │
|
||
│ │ 📄 INE - Frente y reverso.pdf (Subido: 01/Mar/2017) │ │
|
||
│ │ 📄 Comprobante domicilio.pdf (Subido: 01/Mar/2017) │ │
|
||
│ │ 📄 Alta IMSS.pdf (Subido: 01/Mar/2017) │ │
|
||
│ │ 📄 Contrato laboral firmado.pdf (Subido: 01/Mar/2017) │ │
|
||
│ │ │ │
|
||
│ │ [+ Subir Documento] │ │
|
||
│ └───────────────────────────────────────────────────────────────────────┘ │
|
||
└────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
### Pantalla: Registro de Cuadrilla
|
||
|
||
```
|
||
┌────────────────────────────────────────────────────────────────────────────┐
|
||
│ ◀ Volver RRHH > Nuevo > Cuadrilla Subcontratada │
|
||
├────────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ Paso 1 de 3: Datos de la Cuadrilla │
|
||
│ ════════════════════════════════════════════════════════════════════════ │
|
||
│ │
|
||
│ Nombre de la cuadrilla: * │
|
||
│ ┌───────────────────────────────────────────────────────────────────┐ │
|
||
│ │ Cuadrilla Herrería - Pedro López │ │
|
||
│ └───────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ Subcontratista: * │
|
||
│ ┌───────────────────────────────────────────────────────────────────┐ │
|
||
│ │ [Seleccionar proveedor ▼] → ACEROS Y ESTRUCTURAS SA │ │
|
||
│ └───────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ Oficio especializado: * │
|
||
│ ┌───────────────────────────────────────────────────────────────────┐ │
|
||
│ │ [Seleccionar oficio ▼] → Fierrero (Armador de Acero) │ │
|
||
│ └───────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ Tipo de contrato: │
|
||
│ ◉ Por obra determinada │
|
||
│ ○ Precio alzado │
|
||
│ ○ Precio unitario (m², m³, ton, etc.) │
|
||
│ │
|
||
│ Vigencia del contrato: │
|
||
│ Inicio: [15/Ene/2025] Fin: [30/Jun/2025] │
|
||
│ │
|
||
│ [Cancelar] [Siguiente >] │
|
||
└────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌────────────────────────────────────────────────────────────────────────────┐
|
||
│ ◀ Volver RRHH > Nuevo > Cuadrilla Subcontratada │
|
||
├────────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ Paso 2 de 3: Jefe e Integrantes de la Cuadrilla │
|
||
│ ════════════════════════════════════════════════════════════════════════ │
|
||
│ │
|
||
│ ┌─ Jefe de Cuadrilla ─────────────────────────────────────────────────┐ │
|
||
│ │ Nombre completo: * │ │
|
||
│ │ ┌────────────────────────────────────────────────────────────────┐ │ │
|
||
│ │ │ Pedro López Ramírez │ │ │
|
||
│ │ └────────────────────────────────────────────────────────────────┘ │ │
|
||
│ │ │ │
|
||
│ │ Teléfono: * NSS (opcional): Años experiencia: │ │
|
||
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
|
||
│ │ │ 55-1111-2222 │ │ 98765432109 │ │ 15 años │ │ │
|
||
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
|
||
│ └──────────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─ Integrantes de la Cuadrilla (0/15) ────────────────────────────────┐ │
|
||
│ │ │ │
|
||
│ │ [+ Agregar Integrante] │ │
|
||
│ │ │ │
|
||
│ │ (Vacío - agregue al menos 1 integrante) │ │
|
||
│ │ │ │
|
||
│ └───────────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ [Después de agregar integrantes:] │
|
||
│ │
|
||
│ ┌─ Integrantes de la Cuadrilla (4/15) ────────────────────────────────┐ │
|
||
│ │ # │ Nombre │ Oficio │ NSS │ Teléfono │ │
|
||
│ │ ───┼─────────────────────┼─────────────────┼─────────────┼─────────── │ │
|
||
│ │ 1 │ Juan Méndez García │ Oficial Fierro │ 11122233344 │ 55-222... │ │
|
||
│ │ 2 │ Luis Torres Sánchez │ Oficial Fierro │ 22233344455 │ 55-333... │ │
|
||
│ │ 3 │ Carlos Ruiz Pérez │ Ayudante │ — │ 55-444... │ │
|
||
│ │ 4 │ Miguel Ángel Díaz │ Ayudante │ — │ 55-555... │ │
|
||
│ │ │ │
|
||
│ │ [+ Agregar Integrante] │ │
|
||
│ └───────────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ [< Anterior] [Cancelar] [Siguiente>]│
|
||
└────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌────────────────────────────────────────────────────────────────────────────┐
|
||
│ ◀ Volver RRHH > Nuevo > Cuadrilla Subcontratada │
|
||
├────────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ Paso 3 de 3: Tarifas y Costos │
|
||
│ ════════════════════════════════════════════════════════════════════════ │
|
||
│ │
|
||
│ Esquema de pago: │
|
||
│ ◉ Costo por día (cuadrilla completa) │
|
||
│ ○ Costo por unidad de producción (m², ton, etc.) │
|
||
│ ○ Precio alzado por obra │
|
||
│ │
|
||
│ [SI SELECCIONA: Costo por día] │
|
||
│ │
|
||
│ Tarifa diaria de la cuadrilla completa: * │
|
||
│ ┌───────────────────────────────────────────────────────────────────┐ │
|
||
│ │ $ 4,500.00 MXN/día │ │
|
||
│ └───────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ Notas / Condiciones adicionales: │
|
||
│ ┌───────────────────────────────────────────────────────────────────┐ │
|
||
│ │ Incluye herramienta menor. No incluye equipo pesado. │ │
|
||
│ │ Jornada: 08:00 - 18:00 hrs, Lunes a Sábado. │ │
|
||
│ └───────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─ Resumen de la Cuadrilla ────────────────────────────────────────────┐ │
|
||
│ │ Nombre: Cuadrilla Herrería - Pedro López │ │
|
||
│ │ Subcontratista: ACEROS Y ESTRUCTURAS SA │ │
|
||
│ │ Jefe: Pedro López Ramírez (55-1111-2222) │ │
|
||
│ │ Integrantes: 4 personas │ │
|
||
│ │ Tarifa: $4,500/día │ │
|
||
│ │ Vigencia: 15/Ene/2025 - 30/Jun/2025 │ │
|
||
│ └──────────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ [< Anterior] [Cancelar] [Guardar] │
|
||
└────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 5. Reglas de Negocio
|
||
|
||
### RN-RRHH-001: Validación de Datos Legales
|
||
|
||
- **RFC**: Debe cumplir con el algoritmo de validación oficial (13 caracteres para personas físicas)
|
||
- **CURP**: Debe cumplir con el algoritmo de validación de RENAPO (18 caracteres)
|
||
- **NSS**: Debe ser de 11 dígitos numéricos
|
||
- **Edad mínima**: El empleado debe tener mínimo 18 años cumplidos al momento del alta
|
||
- **Salario mínimo**: El salario diario no puede ser menor al salario mínimo vigente en la zona geográfica
|
||
|
||
### RN-RRHH-002: Unicidad de Registros
|
||
|
||
- No se permite registrar 2 empleados con el mismo **NSS**
|
||
- No se permite registrar 2 empleados con el mismo **RFC**
|
||
- Se permite mismo nombre completo (personas homónimas)
|
||
- Si se detecta duplicado, el sistema debe mostrar alerta con datos del empleado existente
|
||
|
||
### RN-RRHH-003: Status de Empleados
|
||
|
||
Los empleados pueden tener los siguientes status:
|
||
|
||
| Status | Descripción | ¿Puede asistir? | ¿Aparece en reportes? |
|
||
|--------|-------------|-----------------|----------------------|
|
||
| **Activo** | Empleado activo y disponible | ✅ Sí | ✅ Sí |
|
||
| **Suspendido** | Suspensión temporal (15-30 días) | ❌ No | ⚠️ Reportes especiales |
|
||
| **Incapacitado** | Incapacidad médica temporal | ❌ No | ⚠️ Reportes de IMSS |
|
||
| **Baja** | Dado de baja (renuncia, despido) | ❌ No | ❌ Solo históricos |
|
||
| **Vacaciones** | En periodo vacacional | ❌ No | ⚠️ Sí (marcado) |
|
||
|
||
**Reglas:**
|
||
- Solo empleados **Activos** pueden registrar asistencia
|
||
- Solo empleados **Activos** pueden ser asignados a nuevas obras
|
||
- El cambio de status debe quedar registrado en bitácora con: usuario que lo cambió, fecha, motivo
|
||
|
||
### RN-RRHH-004: Certificaciones Obligatorias
|
||
|
||
Para ciertos oficios, es **obligatorio** tener certificaciones vigentes:
|
||
|
||
| Oficio | Certificación Obligatoria |
|
||
|--------|---------------------------|
|
||
| Operador de Maquinaria | Licencia de operador + Curso de seguridad |
|
||
| Electricista | Certificación de instalaciones eléctricas |
|
||
| Trabajos en Altura | NOM-009-STPS-2011 + Curso de 40 hrs |
|
||
| Soldador | Certificación AWS (American Welding Society) |
|
||
|
||
**Validación:**
|
||
- Al asignar un empleado a una obra, el sistema verifica si el frente de trabajo requiere certificación especial
|
||
- Si la certificación está vencida o falta, el sistema **alerta** pero **permite continuar** (con confirmación del Director de Obra)
|
||
- Se genera reporte semanal de empleados con certificaciones por vencer
|
||
|
||
### RN-RRHH-005: Límites de Cuadrillas
|
||
|
||
- Una cuadrilla debe tener **mínimo 1 jefe + 1 integrante** (total: 2 personas)
|
||
- Una cuadrilla puede tener **máximo 15 integrantes** (sin contar al jefe)
|
||
- Un jefe de cuadrilla puede estar en **solo 1 cuadrilla activa** al mismo tiempo
|
||
- Un integrante puede estar en **máximo 2 cuadrillas** (si trabaja turnos diferentes)
|
||
- Si se da de baja una cuadrilla, todos los integrantes quedan liberados para ser asignados a otras cuadrillas
|
||
|
||
### RN-RRHH-006: Historial Laboral
|
||
|
||
- El historial de proyectos se genera automáticamente cuando:
|
||
- Se asigna un empleado a un proyecto (registro de fecha de inicio)
|
||
- Se completa el proyecto o se re-asigna el empleado (registro de fecha fin)
|
||
- El historial es **inmutable**: No se puede editar ni eliminar
|
||
- Se puede agregar una **evaluación de desempeño** al finalizar el proyecto (escala 1-5 estrellas)
|
||
- La evaluación solo puede ser capturada por: Director de Obra, Residente, o Director de RRHH
|
||
|
||
### RN-RRHH-007: Documentos Digitales
|
||
|
||
Los siguientes documentos son **obligatorios** para empleados directos:
|
||
- INE o IFE (identificación oficial vigente)
|
||
- CURP
|
||
- RFC
|
||
- Alta IMSS (formato firmado por empleado y empresa)
|
||
- Contrato laboral firmado
|
||
|
||
Los siguientes documentos son **opcionales**:
|
||
- Comprobante de domicilio
|
||
- Acta de nacimiento
|
||
- Comprobante de estudios
|
||
- Cartas de recomendación
|
||
- Certificados médicos
|
||
|
||
**Validación:**
|
||
- Los documentos deben estar en formato **PDF o imagen** (JPG, PNG)
|
||
- Tamaño máximo por archivo: **5 MB**
|
||
- Se permite subir múltiples versiones del mismo documento (versionado automático)
|
||
- Los documentos vencen según tipo:
|
||
- INE: Vence según fecha impresa en credencial → Alerta 60 días antes
|
||
- Certificado médico: Vence a 1 año → Alerta 30 días antes
|
||
|
||
### RN-RRHH-008: Privacidad y Acceso a Datos
|
||
|
||
El acceso a datos personales está restringido por rol:
|
||
|
||
| Rol | Acceso |
|
||
|-----|--------|
|
||
| **Director de RRHH** | ✅ Acceso total a todos los datos (personales, legales, salariales) |
|
||
| **Coordinador de Obra** | ✅ Datos básicos (nombre, oficio, teléfono, asistencia) <br> ❌ Datos salariales <br> ❌ Datos médicos |
|
||
| **Residente de Obra** | ✅ Datos básicos de personal asignado a su obra <br> ❌ Datos salariales <br> ❌ Datos de otras obras |
|
||
| **Auditor Externo** | ✅ Solo datos necesarios para auditoría (certificaciones, asistencias) <br> ❌ Datos personales sensibles |
|
||
|
||
**Cumplimiento legal:**
|
||
- Cumplir con **Ley Federal de Protección de Datos Personales (LFPDPPP - México)**
|
||
- Obtener **Aviso de Privacidad** firmado por cada empleado
|
||
- Permitir a empleados ejercer derechos ARCO (Acceso, Rectificación, Cancelación, Oposición)
|
||
- Registrar en bitácora quién accedió a datos sensibles y cuándo
|
||
|
||
---
|
||
|
||
## 6. Modelo de Datos
|
||
|
||
### Tabla: `employees` (Empleados)
|
||
|
||
```sql
|
||
CREATE TABLE hr.employees (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
tenant_id UUID NOT NULL REFERENCES tenants(id),
|
||
|
||
-- Identificación
|
||
employee_code VARCHAR(50) UNIQUE NOT NULL, -- EMP-2025-00001
|
||
employee_type VARCHAR(20) NOT NULL, -- 'direct' | 'crew_member'
|
||
status VARCHAR(20) NOT NULL DEFAULT 'active', -- 'active' | 'suspended' | 'leave' | 'terminated'
|
||
|
||
-- Datos Personales
|
||
first_name VARCHAR(100) NOT NULL,
|
||
last_name VARCHAR(100) NOT NULL,
|
||
middle_name VARCHAR(100),
|
||
date_of_birth DATE NOT NULL,
|
||
gender VARCHAR(10), -- 'male' | 'female' | 'other'
|
||
|
||
-- Datos Legales México
|
||
rfc VARCHAR(13) UNIQUE NOT NULL,
|
||
curp VARCHAR(18) UNIQUE NOT NULL,
|
||
nss VARCHAR(11) UNIQUE, -- Número de Seguridad Social (IMSS)
|
||
|
||
-- Contacto
|
||
phone VARCHAR(20),
|
||
email VARCHAR(100),
|
||
address TEXT,
|
||
|
||
-- Emergencia
|
||
emergency_contact_name VARCHAR(100),
|
||
emergency_contact_phone VARCHAR(20),
|
||
emergency_contact_relationship VARCHAR(50),
|
||
|
||
-- Datos Laborales
|
||
hire_date DATE NOT NULL,
|
||
termination_date DATE,
|
||
contract_type VARCHAR(30), -- 'permanent' | 'temporary' | 'per_project'
|
||
primary_trade_id UUID REFERENCES hr.trades(id), -- Oficio principal
|
||
experience_level VARCHAR(20), -- 'junior' | 'semi_senior' | 'senior' | 'master'
|
||
daily_wage DECIMAL(10,2), -- Salario base diario
|
||
shift_type VARCHAR(20), -- 'day' | 'night' | 'mixed'
|
||
|
||
-- IMSS / INFONAVIT
|
||
imss_clinic VARCHAR(100), -- UMF asignada
|
||
has_infonavit_credit BOOLEAN DEFAULT FALSE,
|
||
infonavit_discount DECIMAL(10,2), -- Descuento mensual
|
||
|
||
-- Metadata
|
||
photo_url TEXT,
|
||
notes TEXT,
|
||
created_by UUID REFERENCES users(id),
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE INDEX idx_employees_tenant ON hr.employees(tenant_id);
|
||
CREATE INDEX idx_employees_code ON hr.employees(employee_code);
|
||
CREATE INDEX idx_employees_status ON hr.employees(status);
|
||
CREATE INDEX idx_employees_trade ON hr.employees(primary_trade_id);
|
||
```
|
||
|
||
### Tabla: `crews` (Cuadrillas Subcontratadas)
|
||
|
||
```sql
|
||
CREATE TABLE hr.crews (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
tenant_id UUID NOT NULL REFERENCES tenants(id),
|
||
|
||
-- Identificación
|
||
crew_code VARCHAR(50) UNIQUE NOT NULL, -- CUAD-2025-00001
|
||
crew_name VARCHAR(200) NOT NULL,
|
||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||
|
||
-- Subcontratista
|
||
subcontractor_id UUID REFERENCES suppliers(id),
|
||
trade_id UUID REFERENCES hr.trades(id),
|
||
|
||
-- Contrato
|
||
contract_type VARCHAR(30), -- 'per_project' | 'fixed_price' | 'unit_price'
|
||
contract_start_date DATE,
|
||
contract_end_date DATE,
|
||
|
||
-- Jefe de Cuadrilla
|
||
foreman_name VARCHAR(100) NOT NULL,
|
||
foreman_phone VARCHAR(20),
|
||
foreman_nss VARCHAR(11),
|
||
foreman_experience_years INTEGER,
|
||
|
||
-- Costos
|
||
daily_rate DECIMAL(10,2), -- Costo por día (cuadrilla completa)
|
||
unit_rate DECIMAL(10,2), -- Costo por m², ton, etc.
|
||
unit_type VARCHAR(20), -- 'm2' | 'm3' | 'ton' | 'pza'
|
||
|
||
-- Metadata
|
||
notes TEXT,
|
||
created_by UUID REFERENCES users(id),
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE INDEX idx_crews_tenant ON hr.crews(tenant_id);
|
||
CREATE INDEX idx_crews_code ON hr.crews(crew_code);
|
||
CREATE INDEX idx_crews_status ON hr.crews(status);
|
||
```
|
||
|
||
### Tabla: `crew_members` (Integrantes de Cuadrilla)
|
||
|
||
```sql
|
||
CREATE TABLE hr.crew_members (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
tenant_id UUID NOT NULL REFERENCES tenants(id),
|
||
crew_id UUID NOT NULL REFERENCES hr.crews(id),
|
||
|
||
-- Datos del Integrante
|
||
full_name VARCHAR(200) NOT NULL,
|
||
trade_id UUID REFERENCES hr.trades(id),
|
||
nss VARCHAR(11),
|
||
phone VARCHAR(20),
|
||
|
||
-- Status
|
||
status VARCHAR(20) DEFAULT 'active', -- 'active' | 'left'
|
||
joined_date DATE,
|
||
left_date DATE,
|
||
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE INDEX idx_crew_members_crew ON hr.crew_members(crew_id);
|
||
```
|
||
|
||
### Tabla: `trades` (Catálogo de Oficios)
|
||
|
||
```sql
|
||
CREATE TABLE hr.trades (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
tenant_id UUID NOT NULL REFERENCES tenants(id),
|
||
|
||
-- Identificación
|
||
trade_code VARCHAR(50) UNIQUE NOT NULL, -- OFICIO-001
|
||
trade_name VARCHAR(100) NOT NULL,
|
||
category VARCHAR(50), -- 'civil_work' | 'finishes' | 'installations' | 'machinery'
|
||
|
||
-- Costos
|
||
standard_daily_cost DECIMAL(10,2), -- Costo estándar día
|
||
|
||
-- Certificaciones
|
||
requires_certification BOOLEAN DEFAULT FALSE,
|
||
required_certifications JSONB, -- Array de IDs de certificaciones requeridas
|
||
|
||
-- Metadata
|
||
description TEXT,
|
||
is_obsolete BOOLEAN DEFAULT FALSE,
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE INDEX idx_trades_tenant ON hr.trades(tenant_id);
|
||
```
|
||
|
||
### Tabla: `certifications` (Certificaciones y Capacitaciones)
|
||
|
||
```sql
|
||
CREATE TABLE hr.certifications (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
tenant_id UUID NOT NULL REFERENCES tenants(id),
|
||
employee_id UUID NOT NULL REFERENCES hr.employees(id),
|
||
|
||
-- Tipo de Certificación
|
||
certification_type VARCHAR(100) NOT NULL, -- 'NOM-009-STPS', 'Trabajos en Altura', etc.
|
||
issuing_institution VARCHAR(200),
|
||
certificate_number VARCHAR(100),
|
||
|
||
-- Vigencia
|
||
issue_date DATE NOT NULL,
|
||
expiration_date DATE, -- NULL = permanente
|
||
is_permanent BOOLEAN DEFAULT FALSE,
|
||
status VARCHAR(20) DEFAULT 'valid', -- 'valid' | 'expiring_soon' | 'expired'
|
||
|
||
-- Documento
|
||
document_url TEXT, -- PDF del certificado
|
||
|
||
-- Metadata
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE INDEX idx_certifications_employee ON hr.certifications(employee_id);
|
||
CREATE INDEX idx_certifications_status ON hr.certifications(status);
|
||
CREATE INDEX idx_certifications_expiration ON hr.certifications(expiration_date);
|
||
```
|
||
|
||
### Tabla: `employee_project_assignments` (Asignaciones a Proyectos)
|
||
|
||
```sql
|
||
CREATE TABLE hr.employee_project_assignments (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
tenant_id UUID NOT NULL REFERENCES tenants(id),
|
||
employee_id UUID REFERENCES hr.employees(id),
|
||
crew_id UUID REFERENCES hr.crews(id),
|
||
project_id UUID NOT NULL REFERENCES projects(id),
|
||
|
||
-- Asignación
|
||
assigned_role VARCHAR(100), -- 'Official Mason', 'Foreman', etc.
|
||
work_front VARCHAR(100), -- Frente de trabajo
|
||
assigned_date DATE NOT NULL,
|
||
release_date DATE,
|
||
|
||
-- Evaluación (al finalizar)
|
||
performance_rating INTEGER CHECK (performance_rating >= 1 AND performance_rating <= 5),
|
||
evaluation_notes TEXT,
|
||
evaluated_by UUID REFERENCES users(id),
|
||
evaluation_date DATE,
|
||
|
||
-- Metadata
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
||
-- Constraint: o es employee_id o crew_id, no ambos
|
||
CHECK (
|
||
(employee_id IS NOT NULL AND crew_id IS NULL) OR
|
||
(employee_id IS NULL AND crew_id IS NOT NULL)
|
||
)
|
||
);
|
||
|
||
CREATE INDEX idx_assignments_employee ON hr.employee_project_assignments(employee_id);
|
||
CREATE INDEX idx_assignments_crew ON hr.employee_project_assignments(crew_id);
|
||
CREATE INDEX idx_assignments_project ON hr.employee_project_assignments(project_id);
|
||
```
|
||
|
||
### Tabla: `employee_documents` (Documentos Digitales)
|
||
|
||
```sql
|
||
CREATE TABLE hr.employee_documents (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
tenant_id UUID NOT NULL REFERENCES tenants(id),
|
||
employee_id UUID NOT NULL REFERENCES hr.employees(id),
|
||
|
||
-- Documento
|
||
document_type VARCHAR(50) NOT NULL, -- 'INE', 'CURP', 'RFC', 'contract', 'medical_cert'
|
||
document_name VARCHAR(200) NOT NULL,
|
||
document_url TEXT NOT NULL,
|
||
file_size INTEGER, -- En bytes
|
||
|
||
-- Versionado
|
||
version INTEGER DEFAULT 1,
|
||
is_latest BOOLEAN DEFAULT TRUE,
|
||
|
||
-- Vigencia (si aplica)
|
||
issue_date DATE,
|
||
expiration_date DATE,
|
||
|
||
-- Metadata
|
||
uploaded_by UUID REFERENCES users(id),
|
||
uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE INDEX idx_documents_employee ON hr.employee_documents(employee_id);
|
||
CREATE INDEX idx_documents_type ON hr.employee_documents(document_type);
|
||
```
|
||
|
||
---
|
||
|
||
## 7. Integraciones
|
||
|
||
### INT-RRHH-001: Integración con Módulo de Compras (Proveedores)
|
||
|
||
- Al crear una cuadrilla subcontratada, se selecciona el **Subcontratista** desde el catálogo de proveedores del módulo de compras
|
||
- Esto permite trazabilidad: Proveedores → Subcontratos → Cuadrillas → Personal
|
||
|
||
### INT-RRHH-002: Integración con Módulo de Proyectos
|
||
|
||
- Los empleados y cuadrillas se asignan a **Proyectos** específicos
|
||
- La tabla `employee_project_assignments` vincula personal con proyectos
|
||
- Al completar un proyecto, se puede registrar evaluación de desempeño
|
||
|
||
### INT-RRHH-003: Integración con Módulo de Asistencias (MAI-007 RF-002)
|
||
|
||
- El catálogo de personal es la base para el módulo de Time & Attendance
|
||
- Solo empleados con status **Activo** pueden registrar asistencia
|
||
- Las certificaciones vencidas generan alertas en el módulo de asistencias
|
||
|
||
### INT-RRHH-004: Integración con Módulo de Costos (MAI-007 RF-004)
|
||
|
||
- Los costos estándar por oficio se utilizan para presupuestos de mano de obra
|
||
- El salario real de cada empleado se usa para costeo de mano de obra real
|
||
- Las tarifas de cuadrillas se imputan a partidas de obra
|
||
|
||
### INT-RRHH-005: Exportación a Sistema de Nómina Externo
|
||
|
||
El sistema debe poder exportar datos en formato **CSV o Excel** para sistemas de nómina externos:
|
||
|
||
**Campos exportados:**
|
||
- Código de empleado
|
||
- Nombre completo
|
||
- RFC, CURP, NSS
|
||
- Salario base diario
|
||
- Días trabajados (del periodo)
|
||
- Horas extra (si aplica)
|
||
- Bonos por productividad
|
||
- Descuentos IMSS, INFONAVIT
|
||
- Incidencias (faltas, retardos, permisos)
|
||
|
||
**Formato ejemplo:**
|
||
```csv
|
||
employee_code,full_name,rfc,nss,daily_wage,days_worked,overtime_hours,bonus,imss_discount,infonavit_discount,absences,tardies
|
||
EMP-00001,Juan Pérez Gómez,PEJG850315HDF,12345678901,550.00,26,8,500.00,45.50,450.00,0,2
|
||
EMP-00002,María González,GOGM900520MDF,98765432109,620.00,30,0,0,52.30,0,0,0
|
||
```
|
||
|
||
---
|
||
|
||
## 8. Reportes y Consultas
|
||
|
||
### REP-RRHH-001: Listado Maestro de Personal
|
||
|
||
**Descripción:** Reporte consolidado de todo el personal (empleados directos + cuadrillas)
|
||
|
||
**Filtros:**
|
||
- Status: Activos / Suspendidos / Baja
|
||
- Tipo: Directos / Subcontratados
|
||
- Oficio
|
||
- Proyecto asignado
|
||
- Certificaciones vencidas: Sí/No
|
||
|
||
**Columnas:**
|
||
- Código
|
||
- Nombre completo
|
||
- Oficio
|
||
- Status
|
||
- Proyecto actual
|
||
- Asistencia (últimos 30 días)
|
||
- Certificaciones próximas a vencer
|
||
|
||
**Exportación:** Excel, PDF, CSV
|
||
|
||
---
|
||
|
||
### REP-RRHH-002: Certificaciones por Vencer
|
||
|
||
**Descripción:** Alerta de certificaciones que vencen en los próximos 30/60/90 días
|
||
|
||
**Filtros:**
|
||
- Días para vencimiento: 30 / 60 / 90
|
||
- Tipo de certificación
|
||
- Oficio
|
||
|
||
**Columnas:**
|
||
- Empleado
|
||
- Oficio
|
||
- Certificación
|
||
- Fecha de vencimiento
|
||
- Días restantes
|
||
- Status: 🟢 Vigente / 🟡 Por vencer / 🔴 Vencida
|
||
|
||
**Exportación:** Excel, PDF
|
||
|
||
---
|
||
|
||
### REP-RRHH-003: Historial Laboral por Empleado
|
||
|
||
**Descripción:** Historial completo de proyectos, evaluaciones y asistencia de un empleado
|
||
|
||
**Secciones:**
|
||
1. **Datos generales** (nombre, oficio, antigüedad)
|
||
2. **Proyectos**:
|
||
- Listado de proyectos donde ha trabajado
|
||
- Fechas de inicio y fin
|
||
- Rol desempeñado
|
||
- Evaluación de desempeño (1-5 estrellas)
|
||
3. **Asistencia**:
|
||
- Promedio de asistencia por año
|
||
- Total de faltas, retardos, permisos
|
||
4. **Capacitaciones**:
|
||
- Cursos tomados
|
||
- Certificaciones obtenidas
|
||
- Horas de capacitación
|
||
|
||
**Exportación:** PDF
|
||
|
||
---
|
||
|
||
### REP-RRHH-004: Análisis de Rotación de Personal
|
||
|
||
**Descripción:** Análisis de bajas, altas y rotación mensual
|
||
|
||
**Métricas:**
|
||
- Altas del mes
|
||
- Bajas del mes
|
||
- Tasa de rotación: (Bajas / Plantilla promedio) × 100
|
||
- Antigüedad promedio de empleados dados de baja
|
||
- Motivos de baja (renuncia voluntaria, despido, fin de contrato)
|
||
|
||
**Gráficos:**
|
||
- Línea de tiempo: Altas vs Bajas por mes
|
||
- Pie chart: Motivos de baja
|
||
|
||
**Exportación:** Excel, PDF
|
||
|
||
---
|
||
|
||
### REP-RRHH-005: Cumplimiento Normativo (Auditoría IMSS/STPS)
|
||
|
||
**Descripción:** Reporte para auditorías externas con datos de cumplimiento
|
||
|
||
**Datos incluidos:**
|
||
- Total de empleados registrados en IMSS
|
||
- Empleados con NSS válido: X / Total
|
||
- Empleados con certificaciones vigentes para trabajos de riesgo
|
||
- Empleados sin expediente completo (faltan documentos)
|
||
- Cuadrillas subcontratadas con contratos vigentes
|
||
|
||
**Cumplimiento:**
|
||
- 🟢 100% cumplimiento: Todos los datos completos
|
||
- 🟡 95-99% cumplimiento: Faltan documentos menores
|
||
- 🔴 <95% cumplimiento: Deficiencias importantes
|
||
|
||
**Exportación:** PDF (para auditor externo)
|
||
|
||
---
|
||
|
||
## 9. Requerimientos No Funcionales
|
||
|
||
### RNF-RRHH-001: Seguridad y Privacidad
|
||
|
||
- **Encriptación:** Los datos sensibles (NSS, RFC, CURP, salarios) deben estar encriptados en base de datos (AES-256)
|
||
- **Control de acceso:** Roles y permisos estrictos por tipo de usuario (ver RN-RRHH-008)
|
||
- **Bitácora de auditoría:** Registrar quién accedió a datos sensibles y cuándo
|
||
- **Cumplimiento LFPDPPP:** Aviso de privacidad firmado por cada empleado
|
||
|
||
### RNF-RRHH-002: Performance
|
||
|
||
- La búsqueda de empleados en catálogo debe responder en **< 500 ms** (hasta 10,000 registros)
|
||
- La carga de historial completo de empleado debe responder en **< 1 segundo**
|
||
- Los reportes de certificaciones deben generarse en **< 2 segundos**
|
||
|
||
### RNF-RRHH-003: Usabilidad
|
||
|
||
- La interfaz debe ser **responsive** (desktop, tablet, móvil)
|
||
- El formulario de alta de empleado debe tener **validación en tiempo real** (RFC, CURP, NSS)
|
||
- Los campos obligatorios deben estar **claramente marcados** con asterisco (*)
|
||
- Debe haber **ayudas contextuales** (tooltips) para campos complejos
|
||
|
||
### RNF-RRHH-004: Escalabilidad
|
||
|
||
- El sistema debe soportar **hasta 50,000 empleados** por tenant
|
||
- El sistema debe soportar **hasta 5,000 cuadrillas** por tenant
|
||
- El sistema debe soportar **hasta 1 millón de registros** en historial de asignaciones
|
||
|
||
### RNF-RRHH-005: Disponibilidad
|
||
|
||
- El catálogo de personal debe tener disponibilidad **99.5%** (downtime máximo: 3.65 horas/mes)
|
||
- En caso de falla, el sistema debe permitir **modo de solo lectura** para consultas críticas
|
||
|
||
---
|
||
|
||
## 10. Criterios de Aceptación
|
||
|
||
### CA-RRHH-001: Alta de Empleado Directo
|
||
|
||
- [ ] Puedo registrar un empleado directo con todos los datos personales, laborales y legales
|
||
- [ ] El sistema valida RFC, CURP y NSS con algoritmos correctos
|
||
- [ ] El sistema genera código único secuencial (EMP-2025-00001)
|
||
- [ ] Puedo adjuntar documentos PDF/imagen (máx 5MB cada uno)
|
||
- [ ] El sistema alerta si hay duplicado por NSS o RFC
|
||
- [ ] Puedo guardar como "borrador" si faltan datos opcionales
|
||
- [ ] El empleado queda disponible para asignar a proyectos
|
||
|
||
### CA-RRHH-002: Registro de Cuadrilla
|
||
|
||
- [ ] Puedo crear una cuadrilla con jefe + mínimo 1 integrante
|
||
- [ ] Puedo agregar hasta 15 integrantes por cuadrilla
|
||
- [ ] El sistema genera código único (CUAD-2025-00001)
|
||
- [ ] Puedo definir tarifa: por día, por m², o precio alzado
|
||
- [ ] El sistema vincula la cuadrilla con el proveedor subcontratista
|
||
- [ ] Puedo asignar la cuadrilla a un proyecto
|
||
- [ ] Cada integrante puede registrar asistencia individual
|
||
|
||
### CA-RRHH-003: Gestión de Certificaciones
|
||
|
||
- [ ] Puedo agregar certificaciones con vigencia (fecha inicio, fecha fin)
|
||
- [ ] Puedo subir PDF del certificado
|
||
- [ ] El sistema calcula automáticamente la fecha de vencimiento
|
||
- [ ] El sistema me envía recordatorio 30 días antes del vencimiento
|
||
- [ ] Puedo ver listado de certificaciones vencidas/por vencer
|
||
- [ ] El sistema alerta si asigno empleado a obra que requiere certificación vencida
|
||
|
||
### CA-RRHH-004: Historial Laboral
|
||
|
||
- [ ] Puedo ver historial completo de proyectos del empleado
|
||
- [ ] Puedo ver fechas de inicio y fin en cada proyecto
|
||
- [ ] Puedo registrar evaluación de desempeño (1-5 estrellas) al finalizar proyecto
|
||
- [ ] Puedo ver promedio de asistencia de los últimos 12 meses
|
||
- [ ] Puedo ver total de capacitaciones y certificaciones
|
||
|
||
### CA-RRHH-005: Catálogo de Oficios
|
||
|
||
- [ ] Puedo crear nuevos oficios con costo estándar
|
||
- [ ] Puedo marcar oficios que requieren certificación obligatoria
|
||
- [ ] Puedo asignar categoría al oficio (obra civil, instalaciones, acabados)
|
||
- [ ] Puedo marcar oficios como "obsoletos" sin eliminarlos
|
||
- [ ] El oficio queda disponible para asignar a empleados
|
||
|
||
### CA-RRHH-006: Reportes
|
||
|
||
- [ ] Puedo generar reporte de personal activo con filtros
|
||
- [ ] Puedo generar reporte de certificaciones por vencer
|
||
- [ ] Puedo exportar a Excel, PDF, CSV
|
||
- [ ] Los reportes se generan en menos de 3 segundos
|
||
|
||
---
|
||
|
||
## 11. Dependencias
|
||
|
||
### Dependencias de Otros Módulos
|
||
|
||
- **MAI-001 (Fundamentos):** Autenticación, roles y permisos, tenants
|
||
- **MAI-002 (Proyectos):** Catálogo de proyectos para asignar personal
|
||
- **MAI-004 (Compras):** Catálogo de proveedores para subcontratistas
|
||
|
||
### Módulos que Dependen de Este
|
||
|
||
- **MAI-007 RF-002 (Time & Attendance):** Requiere catálogo de personal completo
|
||
- **MAI-007 RF-003 (Nómina):** Requiere salarios, jornadas, incidencias
|
||
- **MAI-007 RF-004 (Costos):** Requiere tarifas de oficios y cuadrillas
|
||
- **MAI-003 (Presupuestos):** Requiere costos estándar de oficios
|
||
|
||
---
|
||
|
||
## 12. Riesgos y Mitigaciones
|
||
|
||
### Riesgo 1: Datos Personales Sensibles (Alto)
|
||
|
||
**Descripción:** Manejo de datos personales (RFC, NSS, salarios) expone a riesgos legales si hay fuga de información.
|
||
|
||
**Impacto:** Alto - Multas legales, pérdida de confianza, demandas
|
||
|
||
**Mitigación:**
|
||
- ✅ Encriptación AES-256 en base de datos
|
||
- ✅ Control de acceso estricto por roles
|
||
- ✅ Bitácora de auditoría de accesos
|
||
- ✅ Aviso de privacidad firmado por empleados
|
||
- ✅ Cumplimiento LFPDPPP (Ley de Protección de Datos - México)
|
||
|
||
---
|
||
|
||
### Riesgo 2: Duplicados de Empleados (Medio)
|
||
|
||
**Descripción:** Registrar 2 veces al mismo empleado con datos ligeramente diferentes.
|
||
|
||
**Impacto:** Medio - Inconsistencias en reportes, problemas con IMSS, nómina duplicada
|
||
|
||
**Mitigación:**
|
||
- ✅ Validación estricta de unicidad por NSS y RFC
|
||
- ✅ Búsqueda fuzzy al capturar nombre (detectar nombres similares)
|
||
- ✅ Alerta al usuario si existe registro similar
|
||
|
||
---
|
||
|
||
### Riesgo 3: Certificaciones Vencidas (Medio)
|
||
|
||
**Descripción:** Empleados trabajando en actividades de riesgo con certificaciones vencidas.
|
||
|
||
**Impacto:** Medio - Multas STPS, riesgo de accidentes, responsabilidad legal
|
||
|
||
**Mitigación:**
|
||
- ✅ Sistema de recordatorios automáticos 30 días antes
|
||
- ✅ Alertas al asignar a obra si falta certificación
|
||
- ✅ Reporte semanal a Director de RRHH con certificaciones vencidas
|
||
- ✅ Bloqueo opcional de asistencia si certificación vencida (configurable)
|
||
|
||
---
|
||
|
||
### Riesgo 4: Escalabilidad (Bajo)
|
||
|
||
**Descripción:** Con miles de empleados, el catálogo puede volverse lento.
|
||
|
||
**Impacto:** Bajo - Experiencia de usuario degradada
|
||
|
||
**Mitigación:**
|
||
- ✅ Índices en base de datos (tenant_id, employee_code, status)
|
||
- ✅ Paginación en listados (máx 50 registros por página)
|
||
- ✅ Búsqueda con debounce (esperar 300ms antes de buscar)
|
||
- ✅ Cache de datos frecuentes (catálogo de oficios)
|
||
|
||
---
|
||
|
||
## 13. Estimación de Esfuerzo
|
||
|
||
| Componente | Esfuerzo (días) | Complejidad |
|
||
|------------|-----------------|-------------|
|
||
| **Base de datos** (6 tablas + índices) | 2 | Media |
|
||
| **Backend API** (CRUD empleados, cuadrillas, certificaciones) | 4 | Media |
|
||
| **Frontend Web** (catálogo, formularios, detalle) | 5 | Alta |
|
||
| **Validaciones** (RFC, CURP, NSS, duplicados) | 2 | Media |
|
||
| **Gestión de documentos** (upload, versionado) | 2 | Media |
|
||
| **Historial laboral** (asignaciones, evaluaciones) | 2 | Baja |
|
||
| **Reportes** (5 reportes + exportación) | 3 | Media |
|
||
| **Integraciones** (proyectos, proveedores) | 1 | Baja |
|
||
| **Testing** (unitario + integración) | 2 | Media |
|
||
| **Documentación** (API, usuario final) | 1 | Baja |
|
||
| **TOTAL** | **24 días** | **~5 Story Points** |
|
||
|
||
**Equipo recomendado:**
|
||
- 1 Backend Developer
|
||
- 1 Frontend Developer
|
||
- 1 QA Tester
|
||
- 1 Product Owner (revisiones)
|
||
|
||
**Tiempo estimado:** ~5 semanas (1 sprint)
|
||
|
||
---
|
||
|
||
## 14. Anexos
|
||
|
||
### Anexo A: Algoritmos de Validación
|
||
|
||
#### Validación de RFC (México)
|
||
|
||
```typescript
|
||
function validateRFC(rfc: string): boolean {
|
||
// RFC Personas Físicas: 13 caracteres (PEJG850315HDF001)
|
||
const rfcPattern = /^[A-ZÑ&]{4}\d{6}[A-Z\d]{3}$/;
|
||
|
||
if (!rfcPattern.test(rfc)) {
|
||
return false;
|
||
}
|
||
|
||
// Validar checksum (homoclave)
|
||
const diccionario = "0123456789ABCDEFGHIJKLMN&OPQRSTUVWXYZ Ñ";
|
||
let suma = 0;
|
||
|
||
for (let i = 0; i < 12; i++) {
|
||
suma += diccionario.indexOf(rfc.charAt(i)) * (13 - i);
|
||
}
|
||
|
||
const digitoVerificador = 11 - (suma % 11);
|
||
const dvEsperado = digitoVerificador === 10 ? 'A' : digitoVerificador === 11 ? '0' : digitoVerificador.toString();
|
||
|
||
return rfc.charAt(12) === dvEsperado;
|
||
}
|
||
```
|
||
|
||
#### Validación de CURP (México)
|
||
|
||
```typescript
|
||
function validateCURP(curp: string): boolean {
|
||
// CURP: 18 caracteres (PEJG850315HDFRMN02)
|
||
const curpPattern = /^[A-Z]{4}\d{6}[HM][A-Z]{5}[A-Z\d]\d$/;
|
||
|
||
if (!curpPattern.test(curp)) {
|
||
return false;
|
||
}
|
||
|
||
// Validar checksum (dígito verificador)
|
||
const diccionario = "0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
|
||
let suma = 0;
|
||
|
||
for (let i = 0; i < 17; i++) {
|
||
suma += diccionario.indexOf(curp.charAt(i)) * (18 - i);
|
||
}
|
||
|
||
const digitoVerificador = (10 - (suma % 10)) % 10;
|
||
|
||
return parseInt(curp.charAt(17)) === digitoVerificador;
|
||
}
|
||
```
|
||
|
||
#### Validación de NSS (México)
|
||
|
||
```typescript
|
||
function validateNSS(nss: string): boolean {
|
||
// NSS: 11 dígitos numéricos
|
||
const nssPattern = /^\d{11}$/;
|
||
|
||
if (!nssPattern.test(nss)) {
|
||
return false;
|
||
}
|
||
|
||
// Validar checksum (algoritmo Luhn)
|
||
let suma = 0;
|
||
for (let i = 0; i < 10; i++) {
|
||
let digito = parseInt(nss.charAt(i));
|
||
if (i % 2 === 0) {
|
||
digito *= 2;
|
||
if (digito > 9) digito -= 9;
|
||
}
|
||
suma += digito;
|
||
}
|
||
|
||
const digitoVerificador = (10 - (suma % 10)) % 10;
|
||
|
||
return parseInt(nss.charAt(10)) === digitoVerificador;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### Anexo B: Catálogo de Oficios Estándar (México - Construcción)
|
||
|
||
| Código | Oficio | Categoría | Costo Estándar/Día | Cert. Requerida |
|
||
|--------|--------|-----------|-------------------|-----------------|
|
||
| OF-001 | Albañil | Obra Civil | $550 | NOM-031 |
|
||
| OF-002 | Fierrero (Armador) | Obra Civil | $600 | NOM-031 |
|
||
| OF-003 | Carpintero | Acabados | $580 | - |
|
||
| OF-004 | Plomero | Instalaciones | $620 | Certificación Plomería |
|
||
| OF-005 | Electricista | Instalaciones | $650 | Cert. Instalaciones Eléctricas |
|
||
| OF-006 | Pintor | Acabados | $520 | - |
|
||
| OF-007 | Yesero | Acabados | $530 | - |
|
||
| OF-008 | Operador Maquinaria | Maquinaria | $800 | Licencia + Curso Seguridad |
|
||
| OF-009 | Maestro de Obra | Supervisión | $900 | NOM-031 |
|
||
| OF-010 | Ayudante General | Apoyo | $400 | - |
|
||
| OF-011 | Soldador | Estructura Metálica | $700 | AWS Cert. |
|
||
| OF-012 | Instalador Cancelería | Acabados | $560 | Curso Aluminio/Vidrio |
|
||
| OF-013 | Impermeabilizador | Acabados | $600 | - |
|
||
| OF-014 | Instalador Drywall | Acabados | $550 | - |
|
||
| OF-015 | Colocador de Pisos | Acabados | $540 | - |
|
||
|
||
---
|
||
|
||
**Versión:** 1.0
|
||
**Fecha:** 2025-11-17
|
||
**Próxima revisión:** 2025-12-01
|
||
**Estado:** ✅ Aprobado para implementación
|