# RF-MAA017-004: Control de EPP

## Informacion General

| Atributo | Valor |
|----------|-------|
| **Codigo** | RF-MAA017-004 |
| **Nombre** | Control de EPP (Equipo de Proteccion Personal) |
| **Modulo** | MAA-017 Seguridad HSE |
| **Prioridad** | P1 - Alta |
| **Complejidad** | Media |

## Descripcion

El sistema debe permitir la gestion completa del Equipo de Proteccion Personal (EPP) requerido en obras de construccion. Incluye catalogo de EPP, asignacion a trabajadores, control de vida util, renovaciones, y cumplimiento de NOM-017-STPS-2008.

## Requisitos Funcionales

### RF-MAA017-004.1: Catalogo de EPP

- Registrar tipos de EPP con sus caracteristicas
- Categorias de EPP:
  - Proteccion de cabeza (cascos)
  - Proteccion de ojos y cara (lentes, caretas)
  - Proteccion auditiva (tapones, orejeras)
  - Proteccion respiratoria (mascarillas, respiradores)
  - Proteccion de manos (guantes)
  - Proteccion de pies (botas)
  - Proteccion contra caidas (arnes, lineas de vida)
  - Ropa de proteccion (chalecos, overoles)
- Definir vida util por tipo de EPP
- Registrar especificaciones tecnicas y certificaciones
- Vincular norma NOM-017-STPS aplicable
- Configurar alertas de renovacion (dias antes)

### RF-MAA017-004.2: Matriz de EPP por Puesto

- Definir EPP requerido por puesto de trabajo
- Configurar EPP obligatorio vs opcional
- Asociar EPP a actividades especificas (altura, soldadura, etc.)
- Generar lista de EPP necesario al asignar trabajador a obra
- Validar que trabajador tenga EPP completo antes de ingresar

### RF-MAA017-004.3: Asignacion de EPP

- Registrar entrega de EPP a trabajador
- Capturar firma digital de recepcion
- Registrar numero de serie/lote del EPP
- Adjuntar foto del EPP entregado
- Calcular fecha de vencimiento segun vida util
- Generar vale de entrega con detalle
- Notificar al trabajador sobre cuidado del equipo
- Registrar capacitacion de uso correcto

### RF-MAA017-004.4: Control de Vida Util

- Dashboard de EPP por vencer en proximos 30 dias
- Alertas automaticas a trabajador y supervisor
- Registro de inspecciones periodicas de EPP
- Marcar EPP como danado/perdido
- Proceso de renovacion de EPP vencido
- Baja de EPP por termino de vida util
- Historial de EPP por trabajador

### RF-MAA017-004.5: Inventario de EPP

- Stock de EPP disponible por almacen/obra
- Minimos y maximos de inventario
- Alertas de reabastecimiento
- Solicitudes de EPP por obra
- Transferencias entre almacenes
- Historial de movimientos

### RF-MAA017-004.6: Reportes EPP

- Reporte de cumplimiento EPP por obra
- Trabajadores con EPP vencido
- Costo de EPP por trabajador/obra
- Analisis de duracion real vs esperada
- Comparativo de proveedores por durabilidad
- Exportar datos para auditorias

## Reglas de Negocio

1. Todo trabajador debe tener EPP basico completo antes de ingresar a obra
2. EPP vencido debe reemplazarse inmediatamente
3. EPP danado debe reportarse en menos de 24 horas
4. La entrega de EPP requiere firma digital obligatoria
5. Trabajadores de altura requieren certificacion de arnes vigente
6. El costo de EPP danado por negligencia puede descontarse al trabajador
7. Inspecciones de EPP critico (arnes) deben ser mensuales
8. Proveedores de EPP deben tener certificaciones vigentes

## Criterios de Aceptacion

- [ ] Catalogo de EPP con al menos 20 tipos predefinidos
- [ ] Matriz de EPP asociada a puestos de trabajo
- [ ] Asignacion con firma digital funcional
- [ ] Alertas automaticas 15 dias antes de vencimiento
- [ ] Historial completo de EPP por trabajador
- [ ] Dashboard de EPP vencido/proximo a vencer
- [ ] Vale de entrega generado en PDF
- [ ] Integracion con inventario de almacen
- [ ] Reporte de cumplimiento NOM-017-STPS

## Modelo de Datos

### Tabla: hse.epp_catalogo
```
- id: UUID PK
- tenant_id: UUID FK (core.tenants)
- codigo: VARCHAR(20) UNIQUE
- nombre: VARCHAR(200)
- categoria: ENUM(cabeza, ojos, auditiva, respiratoria, manos, pies, caidas, ropa)
- descripcion: TEXT
- especificaciones: TEXT
- vida_util_dias: INTEGER
- norma_referencia: VARCHAR(50)
- requiere_certificacion: BOOLEAN DEFAULT false
- requiere_inspeccion_periodica: BOOLEAN DEFAULT false
- frecuencia_inspeccion_dias: INTEGER
- alerta_dias_antes: INTEGER DEFAULT 15
- imagen_url: VARCHAR(500)
- activo: BOOLEAN DEFAULT true
- created_at: TIMESTAMPTZ
- updated_at: TIMESTAMPTZ
```

### Tabla: hse.epp_matriz_puesto
```
- id: UUID PK
- tenant_id: UUID FK
- puesto_id: UUID FK (hr.puestos)
- epp_id: UUID FK (hse.epp_catalogo)
- es_obligatorio: BOOLEAN DEFAULT true
- actividad_especifica: VARCHAR(200)
- observaciones: TEXT
- created_at: TIMESTAMPTZ
```

### Tabla: hse.epp_asignaciones
```
- id: UUID PK
- tenant_id: UUID FK
- employee_id: UUID FK (hr.employees)
- epp_id: UUID FK (hse.epp_catalogo)
- fraccionamiento_id: UUID FK
- fecha_entrega: DATE
- fecha_vencimiento: DATE
- numero_serie: VARCHAR(100)
- numero_lote: VARCHAR(100)
- firma_trabajador: TEXT
- foto_entrega_url: VARCHAR(500)
- capacitacion_uso: BOOLEAN DEFAULT false
- estado: ENUM(activo, vencido, danado, perdido, devuelto)
- costo_unitario: DECIMAL(10,2)
- created_at: TIMESTAMPTZ
- updated_at: TIMESTAMPTZ
- created_by: UUID FK
```

### Tabla: hse.epp_inspecciones
```
- id: UUID PK
- asignacion_id: UUID FK (hse.epp_asignaciones)
- inspector_id: UUID FK
- fecha_inspeccion: DATE
- estado_epp: ENUM(bueno, regular, malo, danado)
- observaciones: TEXT
- requiere_reemplazo: BOOLEAN DEFAULT false
- foto_url: VARCHAR(500)
- created_at: TIMESTAMPTZ
```

### Tabla: hse.epp_bajas
```
- id: UUID PK
- asignacion_id: UUID FK
- fecha_baja: DATE
- motivo: ENUM(vencimiento, danado, perdido, terminacion_laboral)
- descripcion: TEXT
- descuento_aplicado: BOOLEAN DEFAULT false
- monto_descuento: DECIMAL(10,2)
- autorizado_por: UUID FK
- created_at: TIMESTAMPTZ
```

### Tabla: hse.epp_inventario
```
- id: UUID PK
- tenant_id: UUID FK
- epp_id: UUID FK
- almacen_id: UUID FK (inventory.almacenes)
- cantidad_disponible: INTEGER
- cantidad_minima: INTEGER
- cantidad_maxima: INTEGER
- costo_promedio: DECIMAL(10,2)
- ultima_entrada: DATE
- updated_at: TIMESTAMPTZ
```

### Tabla: hse.epp_movimientos
```
- id: UUID PK
- tenant_id: UUID FK
- epp_id: UUID FK
- almacen_origen_id: UUID FK
- almacen_destino_id: UUID FK
- tipo: ENUM(entrada, salida, transferencia, ajuste)
- cantidad: INTEGER
- referencia: VARCHAR(100)
- observaciones: TEXT
- created_at: TIMESTAMPTZ
- created_by: UUID FK
```

## Casos de Uso

### CU-MAA017-004.1: Entregar EPP a Trabajador Nuevo

**Actor**: Almacenista / Coordinador HSE
**Precondicion**: Trabajador dado de alta, puesto asignado

**Flujo Principal**:
1. Sistema consulta matriz de EPP del puesto asignado
2. Sistema muestra lista de EPP requerido
3. Almacenista verifica disponibilidad en inventario
4. Almacenista registra entrega de cada item
5. Sistema captura numero de serie/lote
6. Trabajador firma digitalmente en tablet
7. Sistema calcula fechas de vencimiento
8. Sistema genera vale de entrega PDF
9. Sistema actualiza inventario
10. Sistema programa alertas de vencimiento

**Flujo Alterno - EPP No Disponible**:
3a. Si algun EPP no esta en stock
3b. Sistema genera solicitud de compra
3c. Trabajador no puede ingresar hasta completar EPP

### CU-MAA017-004.2: Renovar EPP Vencido

**Actor**: Coordinador HSE
**Precondicion**: EPP proximo a vencer o vencido

**Flujo Principal**:
1. Sistema genera alerta de EPP por vencer
2. Coordinador consulta trabajadores afectados
3. Coordinador programa fecha de renovacion
4. Sistema notifica a trabajadores
5. En fecha, se realiza entrega de nuevo EPP
6. Sistema da de baja EPP anterior
7. Sistema actualiza registro con nuevo EPP

### CU-MAA017-004.3: Reportar EPP Danado

**Actor**: Trabajador / Supervisor
**Precondicion**: EPP presenta dano

**Flujo Principal**:
1. Trabajador/Supervisor reporta EPP danado
2. Sistema registra tipo de dano y evidencia
3. Supervisor evalua si fue por negligencia
4. Si fue negligencia, sistema calcula descuento
5. Sistema genera baja de EPP danado
6. Sistema genera solicitud de reemplazo
7. Trabajador no puede continuar sin EPP

## Mockups

### Pantalla: Catalogo de EPP
```
+--------------------------------------------------+
| CATALOGO DE EPP                    [+ Agregar]   |
+--------------------------------------------------+
| Buscar: [____________________] [Buscar]          |
| Categoria: [Todas v]                             |
+--------------------------------------------------+
| Codigo | Nombre           | Categoria | Vida Util|
+--------------------------------------------------+
| EPP-001| Casco 3M H-700   | Cabeza    | 730 dias |
| EPP-002| Lentes Uvex      | Ojos      | 180 dias |
| EPP-003| Guantes Carnaza  | Manos     | 90 dias  |
| EPP-004| Botas Ind. Dielectricas| Pies | 365 dias|
| EPP-005| Arnes DBI-Sala   | Caidas    | 1825 dias|
| EPP-006| Chaleco Reflect. | Ropa      | 180 dias |
+--------------------------------------------------+
```

### Pantalla: Asignacion de EPP
```
+--------------------------------------------------+
| ENTREGA DE EPP                                   |
+--------------------------------------------------+
| Trabajador: Juan Perez Martinez                  |
| Puesto: Albanil General                          |
| Obra: Residencial Norte                          |
+--------------------------------------------------+
| EPP REQUERIDO SEGUN PUESTO:                      |
+--------------------------------------------------+
| [✓] Casco 3M H-700         Serie: [__________]  |
| [✓] Lentes Uvex            Serie: [__________]  |
| [✓] Guantes Carnaza        Lote:  [__________]  |
| [✓] Botas Dielectricas     Serie: [__________]  |
| [✓] Chaleco Reflejante     Lote:  [__________]  |
+--------------------------------------------------+
| [📷 Foto Entrega]                                |
|                                                  |
| Firma Trabajador:                                |
| +------------------+                             |
| |                  |                             |
| |  [Firma aqui]    |                             |
| +------------------+                             |
|                                                  |
| [Cancelar]              [Confirmar Entrega]      |
+--------------------------------------------------+
```

### Pantalla: Dashboard EPP
```
+--------------------------------------------------+
| CONTROL DE EPP - Dashboard                       |
+--------------------------------------------------+
| Obra: [Todas v]            Periodo: [Enero 2025] |
+--------------------------------------------------+
| RESUMEN                                          |
| +----------+  +----------+  +----------+         |
| |    85    |  |    12    |  |    5     |        |
| |Trabajador|  |EPP por   |  |EPP       |        |
| |con EPP   |  |vencer    |  |vencido   |        |
| +----------+  +----------+  +----------+         |
+--------------------------------------------------+
| EPP POR VENCER (15 dias)                         |
+--------------------------------------------------+
| ! Juan Perez | Casco 3M | Vence: 15-Ene-2025    |
| ! Maria Garcia | Arnes | Vence: 18-Ene-2025     |
| ! Pedro Lopez | Lentes | Vence: 20-Ene-2025     |
+--------------------------------------------------+
| CUMPLIMIENTO POR CATEGORIA                       |
|                                                  |
| Cabeza    ████████████████████ 100%             |
| Ojos      ████████████████░░░░  85%             |
| Manos     ██████████████████░░  92%             |
| Pies      ████████████████████ 100%             |
| Caidas    ██████████████░░░░░░  78%             |
+--------------------------------------------------+
```

## Especificaciones Tecnicas Relacionadas

- ET-MAA017-DB-001: Schema HSE Database
- ET-MAA017-BE-005: EPP Management Service
- ET-MAA017-FE-007: EPP Catalog Admin
- ET-MAA017-FE-008: EPP Assignment Form
- ET-MAA017-FE-009: EPP Dashboard

## User Stories Relacionadas

- US-MAA017-006: Asignar EPP a trabajador
- US-MAA017-014: Consultar EPP por vencer
- US-MAA017-015: Renovar EPP vencido
- US-MAA017-016: Reportar EPP danado

## Integraciones

### Internas
- MAI-007: Obtener lista de trabajadores y puestos
- MAI-008: Vincular con inventario de almacen
- RF-MAA017-002: Registrar capacitacion de uso de EPP

### Externas
- Sistema de nomina: Aplicar descuentos por EPP danado

---

**Autor**: Requirements-Analyst
**Fecha**: 2025-12-06
**Version**: 1.0.0
