erp-construccion/docs/02-definicion-modulos/MAI-007-rrhh-asistencias/requerimientos/RF-RRHH-001-catalogo-personal-cuadrillas.md

67 KiB
Raw Blame History

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
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)
Datos salariales
Datos médicos
Residente de Obra Datos básicos de personal asignado a su obra
Datos salariales
Datos de otras obras
Auditor Externo Solo datos necesarios para auditoría (certificaciones, asistencias)
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)

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)

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)

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)

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)

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)

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)

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:

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)

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)

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)

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