# 🕐 Módulo de Asistencia - Sistema AAT

## 📋 Descripción General

El Módulo de Asistencia de AAT es un sistema completo para el control y gestión de asistencia del personal, que incluye múltiples métodos de autenticación, dispositivos especializados y reportes detallados de asistencia.

## 🏗️ Arquitectura del Módulo

### Modelos Principales

- **`AttendanceDevice`**: Gestión de dispositivos de control de asistencia
- **`AttendanceRecord`**: Registro de entradas, salidas y eventos de asistencia  
- **`AttendanceSetting`**: Configuraciones del sistema de asistencia
- **`Employee`**: Empleados con códigos QR y datos biométricos

### Tipos de Dispositivos Soportados

1. **Dispositivos Biométricos** (`fingerprint`)
   - Lectores de huella digital
   - Alta seguridad y precisión
   - Verificación 1:1 y 1:N

2. **Escáneres QR** (`qr_scanner`)
   - Lectura de códigos QR personalizados
   - Entrada rápida y sin contacto
   - Ideal para visitantes

3. **Terminales Mixtos** (`mixed`)
   - Múltiples métodos de autenticación
   - Respaldo ante fallas de un método
   - Flexibilidad operativa

4. **Terminales Web** (`web_terminal`)
   - Acceso desde dispositivos móviles
   - Validación por geolocalización
   - Ideal para trabajo remoto

## 🚀 Seeder del Módulo de Asistencia

### Datos Generados

El `AttendanceModuleSeeder` crea:

#### 📱 Dispositivos de Asistencia (5 dispositivos)

1. **Terminal Biométrico Principal**
   - Ubicación: Entrada Principal - Planta de Producción
   - Tipo: Huella digital
   - Estado: Activo
   - Capacidad: 500 usuarios

2. **Scanner QR Administrativo**
   - Ubicación: Área Administrativa - Segundo Piso
   - Tipo: Código QR + entrada manual
   - Estado: Activo
   - Capacidad: 200 usuarios

3. **Terminal Mixto Mantenimiento**
   - Ubicación: Taller de Mantenimiento
   - Tipo: Múltiples métodos
   - Estado: Activo
   - Capacidad: 100 usuarios

4. **Terminal Web Remoto**
   - Ubicación: Trabajo Remoto / Campo
   - Tipo: Web con GPS
   - Estado: Activo
   - Capacidad: Ilimitada

5. **Terminal Portátil QR**
   - Ubicación: Área de Almacén
   - Tipo: QR portátil
   - Estado: En mantenimiento
   - Capacidad: 50 usuarios

#### 📊 Registros de Asistencia (Últimos 30 días)

- **~450 registros** para 15 empleados
- **85% asistencia normal** con horarios completos
- **15% registros especiales** (tardanzas, salidas temprano, incompletos)
- **Múltiples métodos de autenticación** distribuidos realísticamente
- **Registros de almuerzo** incluidos
- **Cálculo automático** de horas trabajadas, extras y descansos
- **Estados variados**: Presente, Tarde, Salida Temprana, Incompleto
- **Fines de semana y feriados** contemplados

### Patrones de Datos Realistas

#### ⏰ Horarios de Trabajo
- **Entrada**: 7:30 AM - 9:00 AM (mayoría 8:00 AM)
- **Almuerzo**: 11:45 AM - 1:15 PM (hora estándar 12:00-1:00 PM)
- **Salida**: 4:30 PM - 6:30 PM (mayoría 5:00 PM)

#### 🔐 Métodos de Autenticación
- **Huella Digital** (60%): Mayor seguridad
- **Código QR** (25%): Rapidez y conveniencia  
- **Cédula** (10%): Respaldo manual
- **Manual** (5%): Supervisores y casos especiales

#### 📈 Estados de Asistencia
- **Presente** (70%): Asistencia normal
- **Tarde** (15%): Llegadas después de 8:15 AM
- **Salida Temprana** (10%): Salidas antes de 5:00 PM
- **Incompleto** (5%): Registros sin marcado de salida

## 🛠️ Comandos de Instalación

### Ejecutar Seeder Individual
```bash
# Solo el seeder de asistencia
php artisan db:seed --class=AttendanceModuleSeeder
```

### Ejecutar Seeder Completo
```bash
# Todos los seeders incluyendo asistencia
php artisan db:seed
```

### Recrear Base de Datos Completa
```bash
# Limpiar y recrear todo
php artisan migrate:fresh --seed
```

## 📋 Configuraciones Automáticas

El módulo incluye configuraciones predeterminadas en `attendance_settings`:

### ⏱️ Horarios de Trabajo
- **Inicio**: 8:00 AM
- **Fin**: 5:00 PM  
- **Almuerzo inicio**: 12:00 PM
- **Almuerzo fin**: 1:00 PM
- **Tolerancia tardanza**: 15 minutos

### 🔧 Métodos Habilitados
- ✅ Huella digital
- ✅ Código QR
- ✅ Verificación por cédula
- ✅ Entrada manual

### 📧 Notificaciones
- ✅ Notificaciones por email
- 📧 Email admin: `admin@company.com`

## 🎯 Casos de Uso Demostrados

### 1. Control de Asistencia Normal
- Empleados puntuales con horarios completos
- Registros de entrada, almuerzo y salida
- Cálculo automático de horas trabajadas

### 2. Gestión de Tardanzas
- Empleados con llegadas tarde
- Sistema de aprobaciones
- Notas explicativas

### 3. Trabajo de Campo/Remoto
- Terminal web con validación GPS
- Verificación por ubicación
- Registro fotográfico

### 4. Mantenimiento de Dispositivos
- Estados de dispositivos (activo/mantenimiento)
- Sincronización y heartbeat
- Configuraciones específicas

### 5. Reportes y Análisis
- Registros históricos de 30 días
- Múltiples filtros y estados
- Métricas de productividad

## 📊 Reportes Disponibles

Con los datos generados puedes probar:

- **Dashboard de asistencia diaria**
- **Reportes por empleado**
- **Análisis de tardanzas**
- **Reportes por dispositivo**  
- **Estadísticas de métodos de autenticación**
- **Registros incompletos pendientes**
- **Horas extras y descansos**
- **Asistencia por departamentos**

## 🔍 Verificación Post-Instalación

Después de ejecutar el seeder, verifica:

1. **Dispositivos creados**: `SELECT * FROM attendance_devices;`
2. **Registros generados**: `SELECT COUNT(*) FROM attendance_records;`
3. **Empleados con QR**: `SELECT COUNT(*) FROM employees WHERE qr_code IS NOT NULL;`
4. **Configuraciones**: `SELECT * FROM attendance_settings;`

## 🎉 ¡Listo para Usar!

Una vez ejecutado el seeder, tendrás un módulo de asistencia completamente funcional con:

- ✅ **5 dispositivos** configurados y activos
- ✅ **~450 registros** realistas de los últimos 30 días  
- ✅ **15 empleados** con datos completos de asistencia
- ✅ **Configuraciones** optimizadas para producción
- ✅ **Casos de prueba** para todas las funcionalidades

¡El módulo está listo para demostrar su funcionamiento completo! 🚀

---

**Desarrollado para AAT - Sistema de Gestión Integral**  
*Versión: 1.0 | Fecha: Enero 2025*