Appearance
Custodio
Aplicación de escritorio portable que usa la comisión de elaboración para validar, consolidar y cifrar los bancos de preguntas antes de entregarlos al sistema.
Flujo
- Cada área entrega un banco
.xlsxcon las hojasPreguntas,Respuestasy_metadata(generadas por el sistema). - Custodio valida que cada banco esté completo: todas las preguntas habilitadas con sus 4 incisos, respuesta correcta y justificación.
- Consolida los bancos válidos en
Preguntas.xlsxyRespuestas.xlsx(una hoja por área). - Cifra ambos archivos con la clave pública
key.pub. Solo el sistema, que tiene la clave privada, puede descifrarlos.
El ejecutable se ubica en la misma carpeta que key.pub y la carpeta de bancos. Las versiones distribuidas se registran en el portal administrativo del SPS (app custodio_integration).
Estructura
text
custodio/
├── custodio.py # Interfaz gráfica (Tkinter)
├── custodio_core.py # Lógica de negocio sin interfaz (validación, consolidación, cifrado)
├── generar_claves_sistema.py # Utilidad de referencia: genera un par de claves X25519 (lado sistema)
├── tests/ # Pruebas pytest de custodio_core
├── Custodio.spec # Configuración de PyInstaller
└── requirements.txtLa separación entre custodio.py y custodio_core.py permite probar la lógica en CI sin entorno gráfico.
Dependencias
| Paquete | Versión | Uso |
|---|---|---|
PyNaCl | 1.6.2 | Cifrado con clave pública (X25519) |
openpyxl | 3.1.5 | Lectura y escritura de los bancos Excel |
Pillow | 11.0.0 | Redimensionar las imágenes incluidas en las preguntas al consolidar |
pyinstaller | 6.22.0 | Empaquetado como ejecutable portable |
pytest | 9.1.1 | Pruebas |
Requiere Python 3.12 con Tkinter.
Ejecución y build
sh
pip install -r requirements.txt
# Ejecutar en desarrollo
python custodio.py
# Pruebas
python -m pytest tests/ -v
# Ejecutable (dist/Custodio o dist/Custodio.exe)
pyinstaller Custodio.spec --cleanPyInstaller no hace compilación cruzada: el ejecutable de Windows se genera en Windows. El pipeline de publicación se describe en Pipelines CI/CD.
