diff --git a/IMPORTACION_ASISTENCIAS.md b/IMPORTACION_ASISTENCIAS.md deleted file mode 100644 index a88368d..0000000 --- a/IMPORTACION_ASISTENCIAS.md +++ /dev/null @@ -1,174 +0,0 @@ -# 📥 Guía de Importación/Exportación de Asistencias - -## 📋 Descripción General - -El sistema permite importar y exportar asistencias y estadísticas desde el admin de Django usando archivos Excel (.xlsx) o CSV. - -## ✨ Características - -### 1. **Asistencias (Attendance)** - -#### Importar Asistencias -- ✅ Botón "Importar" disponible en `/admin/attendance/attendance/` -- ✅ Formatos soportados: Excel (.xlsx), CSV (.csv) -- ✅ **Permite importar asistencias pasadas** (fuera de ventana de tiempo) -- ✅ Valida duplicados y eventos simultáneos automáticamente -- ✅ Auto-crea permisos de Asistente si no existen - -#### Exportar Asistencias -- ✅ Botón "Exportar" disponible en la lista -- ✅ Formatos: Excel (.xlsx), CSV (.csv) - -### 2. **Estadísticas de Asistencia (AttendanceStats)** - -#### Importar Estadísticas -- ✅ Botón "Importar" disponible en `/admin/attendance/attendancestats/` -- ✅ Permite actualizar estadísticas masivamente - -#### Exportar Estadísticas -- ✅ Botón "Exportar" para todas las estadísticas -- ✅ Acción "📊 Exportar estadísticas seleccionadas" -- ✅ Acción "📊 Exportar estudiantes que cumplen requisito para constancia" -- ✅ Acción "🔄 Actualizar estadísticas seleccionadas" - ---- - -## 📊 Formato del Archivo Excel para Importar Asistencias - -### Columnas Requeridas: - -| Columna | Descripción | Ejemplo | Obligatorio | -|---------|-------------|---------|-------------| -| `account_number` | Número de cuenta del estudiante (8 dígitos) | 32114471 | ✅ Sí | -| `student_name` | Nombre completo del estudiante | Lopez Martinez Valeria | ❌ No (solo referencia) | -| `event_title` | Título exacto del evento | Matemáticas Aplicadas a Medicina... | ✅ Sí | -| `registered_by_account` | Cuenta del asistente que registra | 11111111 | ❌ No (default: 11111111) | -| `timestamp` | Fecha y hora del registro | 2025-10-21 11:30:00 | ❌ No (default: ahora) | -| `registration_method` | Método de registro | manual | ❌ No (default: manual) | -| `notes` | Notas adicionales | Importado desde Excel | ❌ No | -| `is_valid` | ¿Es válida la asistencia? | True | ❌ No (default: True) | - -### Ejemplo de Archivo Excel: - -``` -account_number | student_name | event_title | registered_by_account -32114471 | Lopez Martinez Valeria | Matemáticas Aplicadas a Medicina... | 11111111 -31904405 | Lopez Martinez Angel | La presión fiscal como oportunidad... | 11111111 -42510571 | Almaraz Ramirez Rafael | Tecnologías IIoT al servicio de la Industria | 11111111 -``` - ---- - -## ⚙️ Comportamiento del Sistema - -### 🔓 skip_validation=True - -Cuando se importan asistencias, el sistema usa `skip_validation=True` que: - -✅ **PERMITE:** -- Importar asistencias fuera de la ventana de tiempo del evento -- Importar asistencias de eventos pasados -- Procesar importaciones masivas históricas - -✅ **MANTIENE VALIDACIÓN DE:** -- ❌ **Duplicados**: No permite crear dos asistencias del mismo estudiante al mismo evento -- ❌ **Eventos simultáneos**: No permite asistencia a dos eventos que ocurren al mismo tiempo - -### 🔐 Permisos de Asistente - -El sistema **automáticamente**: -1. Busca el asistente por `registered_by_account` -2. Si no existe, usa el asistente por defecto (11111111) -3. Verifica si tiene permisos en la tabla `Asistente` -4. Si no tiene permisos, los crea automáticamente con `can_manage_events=True` - ---- - -## 🚀 Cómo Usar - -### Importar Asistencias desde Admin - -1. Ve a `/admin/attendance/attendance/` -2. Click en botón **"IMPORTAR"** (arriba a la derecha) -3. Selecciona tu archivo Excel o CSV -4. El sistema muestra una **vista previa** de los cambios -5. Revisa los errores si los hay -6. Click en **"Confirmar importación"** -7. ✅ Listo! Las asistencias se importaron - -### Exportar Asistencias - -1. Ve a `/admin/attendance/attendance/` -2. Click en botón **"EXPORTAR"** -3. Selecciona formato (Excel o CSV) -4. Se descarga el archivo automáticamente - -### Exportar Estudiantes con Constancia - -1. Ve a `/admin/attendance/attendancestats/` -2. Selecciona estudiantes (o déjalos todos) -3. En "Acción": selecciona **"📊 Exportar estudiantes que cumplen requisito para constancia"** -4. Click en **"Ir"** -5. Se descarga Excel con estudiantes que cumplen el % mínimo - ---- - -## ⚠️ Errores Comunes y Soluciones - -### Error: "Estudiante con cuenta XXXXX no encontrado" -**Causa:** El número de cuenta no existe en la base de datos -**Solución:** Verifica que el estudiante esté registrado en el sistema - -### Error: "Evento 'XXXXX' no encontrado" -**Causa:** El título del evento no coincide exactamente -**Solución:** Copia el título exacto desde `/admin/events/event/` - -### Error: "Este estudiante ya tiene asistencia registrada para este evento" -**Causa:** Ya existe una asistencia para ese estudiante en ese evento -**Solución:** Es un duplicado, omítelo o elimina el existente primero - -### Error: "El estudiante ya tiene asistencia registrada en un evento simultáneo" -**Causa:** El estudiante tiene asistencia en otro evento que ocurre al mismo tiempo -**Solución:** El estudiante no puede estar en dos lugares a la vez. Elige uno solo. - ---- - -## 🔄 Actualizar Estadísticas después de Importar - -Las estadísticas se actualizan **automáticamente** después de cada importación. - -Si necesitas actualizar manualmente: -1. Ve a `/admin/attendance/attendancestats/` -2. Selecciona los estudiantes -3. Acción: **"🔄 Actualizar estadísticas seleccionadas"** -4. Click en **"Ir"** - ---- - -## 📝 Notas Importantes - -1. **Solo superusuarios** pueden importar asistencias -2. El sistema **normaliza automáticamente** números de cuenta (elimina espacios, guiones) -3. Los **certificados SSL** pueden variar entre máquinas (regenerar con `./docker/generate_ssl_certs.sh`) -4. La **base de datos NO se sincroniza con Git**, solo el código -5. Para sincronizar datos entre máquinas, usa **backup/restore de PostgreSQL** - ---- - -## 🛠️ Desarrollo - -### Archivos Modificados: -- `backend/attendance/admin.py` - Admin con ImportExportMixin -- `backend/attendance/models.py` - Modelo con skip_validation - -### Dependencias: -- `django-import-export` - Manejo de importación/exportación -- `openpyxl` - Lectura de archivos Excel -- `pandas` - Procesamiento de datos (opcional) - ---- - -## 📚 Referencias - -- Django Import-Export: https://django-import-export.readthedocs.io/ -- Admin de Django: https://docs.djangoproject.com/en/5.0/ref/contrib/admin/