Arquitectura del Sistema
Visión General
Treinar Revalida es una aplicación web monolítica construida con Django, diseñada para ser robusta y escalable. Utiliza una arquitectura clásica MVT (Model-View-Template) potenciada por componentes modernos para el frontend y servicios externos para funcionalidades avanzadas.
Tecnologías Principales
- Backend: Python 3.11+, Django 5.0
- Base de Datos: PostgreSQL
- Frontend: Django Templates + Tailwind CSS (vía
django-tailwind) - Infraestructura: Docker & Docker Compose
- IA: OpenAI API (GPT-3.5/4)
Diagrama de Contenedores (C4)
El siguiente diagrama muestra los contenedores principales del sistema y sus interacciones.
C4Container
title Diagrama de Contenedores - Treinar Revalida
Person(student, "Estudiante", "Usuario que realiza exámenes y recibe feedback")
Person(admin, "Administrador", "Gestiona contenido, usuarios y créditos")
System_Boundary(c1, "Treinar Revalida") {
Container(web_app, "Aplicación Web", "Django", "Maneja lógica de negocio, vistas y autenticación")
ContainerDb(database, "Base de Datos", "PostgreSQL", "Almacena usuarios, preguntas, respuestas y transacciones")
Container(static, "Servidor Estático", "WhiteNoise/Nginx", "Sirve archivos CSS, JS e imágenes")
}
System_Ext(openai, "OpenAI API", "Servicio de IA para evaluación de respuestas")
System_Ext(email, "Servicio de Email", "SMTP", "Envío de notificaciones y recuperación de contraseñas")
Rel(student, web_app, "Usa", "HTTPS")
Rel(admin, web_app, "Administra", "HTTPS")
Rel(web_app, database, "Lee/Escribe", "SQL")
Rel(web_app, openai, "Envía respuestas para evaluación", "HTTPS/JSON")
Rel(web_app, email, "Envía correos", "SMTP")
Rel(web_app, static, "Sirve assets", "HTTP")
Módulos Principales
1. Usuarios (usuarios/)
Gestiona la autenticación, perfiles de usuario y roles. Extiende el modelo de usuario de Django y utiliza django-allauth para autenticación social y gestión de cuentas.
2. Preguntas (questions/ - Planeado)
Maneja el banco de preguntas, incluyendo tipos discursivos y de opción múltiple. Soporta importación desde JSON y categorización.
3. Evaluación IA (ai_evaluation/ - Planeado)
Servicio encargado de comunicarse con OpenAI. Construye prompts, maneja retries y procesa las respuestas de la IA para dar feedback estructurado.
4. Créditos (credits/ - Planeado)
Sistema transaccional para gestionar el consumo de recursos. Cada evaluación de IA consume créditos del balance del estudiante.