Saltar a contenido

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.