# Resumen de Cambios - Sesión de Desarrollo (Rama `dev`) **Fecha:** 2026-09-02 / 2026-09-03 / 2026-09-04 **Proyecto:** Admin Edu-Space (Flask + PostgreSQL) **Rama:** `dev` --- ## 1. Auditoría Git y Puesta en Producción * **Informe Técnico Completo (`DEPLOYMENT_AUDIT.md`):** * Análisis de ramas locales y remotas (`main`, `dev`, `origin/planning`, `origin/commissions`, `origin/spanish`). * Manual de despliegue en producción con arquitectura WSGI (Gunicorn), Nginx como proxy inverso, Systemd unit y contenedorización Docker / Docker Compose. * **Archivos Base:** * Creación de `.env.example` con todas las variables requeridas (PostgreSQL, Flask, Secret Key, Babel). * Creación y posterior actualización de `init_db.py` para bootstrap inicial seguro de base de datos, roles RBAC y usuario administrador por defecto (`admin@edu-space.com` / `admin123`). --- ## 2. Base de Datos y Modelos * **Preferencia de Idioma Persistente:** * Migración en PostgreSQL agregando la columna `preferred_language VARCHAR(10)` a la tabla `users`. * Actualización del modelo `User` en `app/models/user.py` con el campo `preferred_language`. * **Preferencia de Tema Visual Persistente:** * Migración agregando la columna `theme_preference VARCHAR(10) DEFAULT 'auto' NOT NULL` a la tabla `users`. * Soporte en el modelo `User` para valores `'auto'`, `'light'` y `'dark'`. * **Control de Acceso Basado en Roles (RBAC):** * Migración creando las tablas `roles` y `permissions`, y agregando la clave foránea `role_id` a la tabla `users`. * Modelos `Role` y `Permission` en `app/models/role.py`. * Métodos `has_permission(module, min_level)` y `can_manage()` en `User`. --- ## 3. Implementación de Vistas y Plantillas * **Perfil de Usuario (`app/templates/auth/profile.html`):** * Vista completa con datos del usuario, rol, estado, fecha de registro y reservas recientes. * Formulario integral para configurar **Idioma de la interfaz** (*Detectar automáticamente del navegador*, *Español*, *English*) y **Tema visual** (*Automático*, *Modo Claro*, *Modo Oscuro*). * **Cambio de Contraseña (`app/templates/auth/change_password.html`):** * Formulario seguro para actualización de credenciales. * **Manejo de Errores (`app/templates/auth/403.html`):** * Pantalla de error 403 Forbidden estilizada e integrada con el sistema de diseño. --- ## 4. Correcciones de UX, Linter y Bugs de Rutas * **Navbar Limpio (`app/templates/base.html`):** * Eliminación del bloque duplicado del menú de usuario `System Administrator`. * **Corrección de BuildError en Comisiones:** * En `app/routes/classrooms.py`, se agregó el alias de ruta `@classrooms_bp.route('/', endpoint='index')` para resolver enlaces a `classrooms.index`. * En `app/templates/schedule/commissions.html`, se reemplazó el filtro inválido de Django `truncatewords(20)` por el filtro estándar de Jinja2 `truncate(100)`. * **Corrección Visual en `/genetic-optimizer` (`app/templates/genetic_optimizer.html`):** * Se agregó el espaciado `pt-5 mt-4` evitando que la barra fija superior se monte sobre el contenido. * Rediseño de tarjeta hero con contraste óptimo y reemplazo de iconos faltantes por Bootstrap Icons (`bi bi-...`). * **Corrección de Errores del Linter en `schedule/add.html` y `schedule/view.html`:** * En `add.html`: Desacople de iteraciones Jinja a `