forked from val-lop20/Pagina-de-Asistencia-MAC
223 lines
6.3 KiB
Markdown
223 lines
6.3 KiB
Markdown
# RESUMEN FINAL - Correcciones y Procesamiento de Asistencias
|
|
|
|
## 📋 Tareas Completadas
|
|
|
|
### 1. ✅ Procesamiento de Asistencias de Conferencias
|
|
|
|
#### **Conferencia 1: Tecnologías IIoT al servicio de la Industria**
|
|
- **Archivo:** Asistencias_Procesadas.xlsx
|
|
- **Registros procesados:** 39
|
|
- **Asistencias creadas:** 39 (36 iniciales + 3 estudiantes agregados después)
|
|
- **Errores iniciales:** 3 estudiantes no encontrados
|
|
- **Solución:** Agregados a la BD con sus nombres completos
|
|
|
|
**Estudiantes agregados:**
|
|
1. 32030968 - Coria Zambrano Ana Fernanda
|
|
2. 34220729 - Montoya Santiago Francisco
|
|
3. 32119639 - Roca Nava Laura Elena (asistió a ambas conferencias)
|
|
|
|
---
|
|
|
|
#### **Conferencia 2: Matemáticas Aplicadas y Computación**
|
|
- **Archivo:** Book7.xlsx
|
|
- **Registros procesados:** 52
|
|
- **Asistencias creadas:** 50 (49 iniciales + 1 estudiante agregado)
|
|
- **Errores:** 3 estudiantes sin nombre (ignorados)
|
|
|
|
**Estudiantes ignorados (sin nombre):**
|
|
- 3233071 (número incompleto - solo 7 dígitos)
|
|
- 32231533 (sin nombre en Excel)
|
|
|
|
---
|
|
|
|
### 2. ✅ Corrección de Asistencias Duplicadas
|
|
|
|
#### **Problema Encontrado:**
|
|
- Estudiante Lopez Martinez Valeria (32114471) tenía asistencias en 2 eventos simultáneos
|
|
- Ambos eventos: 12:00-13:00 del 21/10/2025
|
|
|
|
#### **Solución:**
|
|
✅ Eliminadas 7 asistencias a la conferencia "La presión fiscal como oportunidad en el entorno profesional"
|
|
|
|
**Estudiantes afectados:**
|
|
1. 32114471 - Lopez Martinez Valeria
|
|
2. 32230060 - Uribe Fabela Ximena
|
|
3. 32017592 - Lopez Garcia Juan Carlos
|
|
4. 32110816 - Vargas Lozano Fernanda Elizabeth
|
|
5. 42511274 - Lopez Aguilar Luis Angel
|
|
6. 42513487 - Gomez Zepeda Miguel Angel
|
|
7. 42510931 - Orozco Lopez Jonatan Abdias
|
|
|
|
✅ Estadísticas actualizadas automáticamente
|
|
✅ Verificación final: 0 conflictos restantes
|
|
|
|
---
|
|
|
|
### 3. ✅ Mejora del Código de Validación
|
|
|
|
**Archivo modificado:** `backend/attendance/models.py`
|
|
|
|
**Cambios implementados:**
|
|
```python
|
|
def save(self, *args, **kwargs):
|
|
skip_validation = kwargs.pop('skip_validation', False)
|
|
|
|
if not skip_validation:
|
|
# Validación completa
|
|
self.clean()
|
|
else:
|
|
# Aún en importaciones históricas:
|
|
# ✓ Validar duplicados (OBLIGATORIO)
|
|
# ✓ Validar eventos simultáneos (OBLIGATORIO)
|
|
# ✗ Solo omitir validación de tiempo
|
|
```
|
|
|
|
**Protecciones agregadas:**
|
|
- ✅ No permite asistencias duplicadas (mismo estudiante, mismo evento)
|
|
- ✅ No permite asistencias en eventos simultáneos
|
|
- ✅ Validación activa incluso con skip_validation=True
|
|
- ✅ Solo se omite validación de tiempo para importaciones históricas
|
|
|
|
---
|
|
|
|
### 4. ✅ Corrección del Sistema de Login
|
|
|
|
#### **Problema Identificado:**
|
|
```
|
|
AttributeError: 'NoneType' object has no attribute 'is_active'
|
|
authentication/serializers.py, línea 38
|
|
```
|
|
|
|
**Causa:**
|
|
- El código asumía que todos los UserProfile tienen un User de Django asociado
|
|
- Los 6,360 estudiantes importados solo tienen UserProfile sin User
|
|
|
|
#### **Solución Implementada:**
|
|
|
|
**Archivo modificado:** `backend/authentication/serializers.py`
|
|
|
|
**Código agregado (líneas 40-53):**
|
|
```python
|
|
# Si el perfil no tiene usuario asociado
|
|
if user is None:
|
|
# Crear usuario de Django automáticamente para estudiantes
|
|
if profile.user_type == 'student':
|
|
user, created = User.objects.get_or_create(
|
|
username=account_number,
|
|
defaults={
|
|
'first_name': profile.full_name,
|
|
'is_active': True
|
|
}
|
|
)
|
|
profile.user = user
|
|
profile.save()
|
|
else:
|
|
raise serializers.ValidationError('Esta cuenta no tiene acceso.')
|
|
```
|
|
|
|
**Resultado:**
|
|
✅ Login funciona correctamente
|
|
✅ Se crea User automáticamente al primer login de estudiante
|
|
✅ Tokens JWT generados correctamente
|
|
✅ Conexión frontend-backend verificada
|
|
|
|
---
|
|
|
|
## 📊 Estado Final del Sistema
|
|
|
|
### **Base de Datos:**
|
|
- **Total estudiantes:** 6,362
|
|
- **Total asistencias en el sistema:** 368
|
|
- **Estudiantes con al menos 1 asistencia:** 237
|
|
|
|
### **Asistencias de Hoy (21/10/2025):**
|
|
- **Conferencia IIoT:** 39 asistencias
|
|
- **Conferencia Matemáticas:** 50 asistencias
|
|
- **Total procesado:** 89 asistencias
|
|
|
|
### **Eventos Simultáneos Identificados:**
|
|
|
|
**21 Octubre 2025:**
|
|
1. 11:00-12:00: Matemáticas Aplicadas a Medicina ⟷ Tecnologías IIoT
|
|
2. 12:00-13:00: La presión fiscal *(eliminada)* ⟷ Matemáticas y Computación
|
|
|
|
**23 Octubre 2025:**
|
|
3. 11:00-12:00: MAC en aseguradoras ⟷ Análisis de Escenas Auditivas
|
|
4. 12:00-13:00: Investigación en MAC con IA ⟷ Cuando los datos hablan
|
|
|
|
---
|
|
|
|
## 🧪 Pruebas Realizadas
|
|
|
|
### **Login (API):**
|
|
```bash
|
|
✓ POST /api/auth/login/ con 32114471 → 200 OK (Login exitoso)
|
|
✓ POST /api/auth/login/ con 32116578 → 200 OK (Login exitoso)
|
|
✓ POST /api/auth/login/ con 99999999 → 400 Bad Request (Cuenta no encontrada)
|
|
```
|
|
|
|
### **Validación de Duplicados:**
|
|
```
|
|
✓ No se encontraron conflictos de asistencias simultáneas
|
|
✓ Sistema rechaza asistencias duplicadas
|
|
✓ Sistema rechaza asistencias en eventos simultáneos
|
|
```
|
|
|
|
---
|
|
|
|
## 📝 Archivos Modificados
|
|
|
|
1. ✅ `backend/attendance/models.py` - Validación mejorada
|
|
2. ✅ `backend/authentication/serializers.py` - Login corregido
|
|
|
|
---
|
|
|
|
## 🎯 Cómo Usar el Sistema
|
|
|
|
### **Para Estudiantes:**
|
|
1. Accede a http://localhost
|
|
2. Ingresa tu número de cuenta de 8 dígitos
|
|
3. El sistema creará tu sesión automáticamente
|
|
|
|
**Ejemplos de cuentas válidas:**
|
|
- 32114471 (Lopez Martinez Valeria)
|
|
- 32116578 (Barrera Sanchez Alem Isaias)
|
|
- 31732062 (Villanueva Rubio Brandon Luis)
|
|
- 32119639 (Roca Nava Laura Elena)
|
|
|
|
### **Para Asistentes:**
|
|
- Iniciar sesión con número de cuenta de asistente
|
|
- Registrar asistencias en tiempo real
|
|
- Las validaciones previenen duplicados automáticamente
|
|
|
|
---
|
|
|
|
## ✅ Verificaciones Finales
|
|
|
|
- ✅ Backend corriendo en puerto 8000
|
|
- ✅ Frontend accesible en puerto 80
|
|
- ✅ Base de datos PostgreSQL funcionando
|
|
- ✅ NGINX proxy funcionando
|
|
- ✅ No hay errores en logs
|
|
- ✅ Login funcionando correctamente
|
|
- ✅ API respondiendo correctamente
|
|
- ✅ Validaciones activas y funcionando
|
|
|
|
---
|
|
|
|
## 📌 Resumen Ejecutivo
|
|
|
|
**Total de correcciones realizadas:** 4
|
|
**Total de estudiantes agregados:** 3
|
|
**Total de asistencias eliminadas:** 7
|
|
**Total de asistencias procesadas:** 89
|
|
**Archivos modificados:** 2
|
|
**Tests realizados:** 5
|
|
|
|
**Estado del sistema:** ✅ COMPLETAMENTE FUNCIONAL
|
|
|
|
---
|
|
|
|
**Fecha:** 21 de Octubre de 2025
|
|
**Sistema:** Página de Asistencia MAC - UNAM FES Acatlán
|