Files
pagasis/RESUMEN_FINAL.md
T
2025-10-21 22:08:48 -06:00

6.3 KiB

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:

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):

# 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):

✓ POST /api/auth/login/ con 32114471200 OK (Login exitoso)
✓ POST /api/auth/login/ con 32116578200 OK (Login exitoso)
✓ POST /api/auth/login/ con 99999999400 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