Skip to content

Modelo de Dominio

Matias Peñaloza edited this page Dec 9, 2025 · 2 revisions

Contexto

Es importante tener en cuenta que esta app utilizara GradeSolver como motor para las predicciones. Esta herramienta tiene una entrada y salida bien definidas, por lo que en el modelo de dominio se verán campos/atributos que referencian a inputs/outputs de la herramienta.

Modelo

classDiagram
    Estudiante "1" --> "0..*" Semestre : cursa
    Semestre "1" --> "1..*" Ramo : contiene
    
    Ramo "1" --> "0..*" Horario : tiene bloques
    Ramo "1" --> "1..*" Evaluacion : se compone de
    Ramo "1" --> "1..*" Regla : se rige por
    
    Evaluacion "0..1" --> "0..1" Evento : se agenda en
    Ramo "1" --> "0..*" Evento : tiene hitos

    Ramo "1" ..> "0..1" Prediccion : genera

    Prediccion "1" --> "1..*" EstadoRegla : detalla cumplimiento
    Prediccion "1" --> "0..*" NotaSugerida : propone notas

    class Estudiante {
        +String nombre
        +String correo
    }

    class Semestre {
        +String nombre [ Ej: "2025-1" ]
        +Boolean esActual
    }

    class Ramo {
        +String nombre
        +String color [ Hex ]
        +String estrategiaSolver [ uniform | heaviest_focus ] 
    }

    class Horario {
        +Enum diaSemana [ Lunes..Sabado ]
        +Time horaInicio
        +Time horaFin
        +String ubicacion [ Ej: Aula 204 ]
        +String tipo [ Catedra/Lab/Ayudantia ]
    }

    class Evento {
        +DateTime fechaHora
        +String titulo
        +String ubicacion
        +String descripcion [ Ej: "Traer calculadora" ]
    }

    class Evaluacion {
        +String nombre
        +Float peso [ 0.0 - 1.0 ]
        +Float nota [ Nullable ]
        +List~String~ tags
    }

    class Regla {
        +Enum tipo [ global_avg | min_grade... ]
        +Float target [ Ej: 55.0 ]
        +String tagFilter [ Ej: "labs" ]
    }

    class Prediccion {
        +Enum estadoGlobal [ guaranteed | possible | impossible ]
        +String mensajeLimitante [ Ej: "Falla por Min Lab" ]
        +String estrategiaUsada
    }

    class EstadoRegla {
        +String descripcionRegla
        +Float puntajeActual
        +Float objetivo
        +Enum estado [ guaranteed | possible | impossible ]
    }

    class NotaSugerida {
        +String nombreEvaluacion
        +Float notaMinima
    }
Loading

Clone this wiki locally