Documentation Index Fetch the complete documentation index at: https://mintlify.com/Andr21Da16/UNITRU-ACADEMIC/llms.txt
Use this file to discover all available pages before exploring further.
When the dashboard_ready event fires, its data field contains a DashboardReport object — the single compound payload that bundles every piece of academic data the backend has successfully extracted from the SUV. This page documents every field of that root object and all of its nested types, cross-referencing the TypeScript interfaces (used by the frontend) and Python dataclasses (used by the backend serializer).
All numeric grade values in the payload are serialized as strings — for example "14", "13.50", "7". This is because the backend computes grades using Python’s Decimal type for precision, and Decimal is serialized as a string to avoid IEEE 754 rounding artefacts. Parse grade strings in the frontend with parseFloat() or a Decimal library (e.g. new Decimal(course.u1)) before doing arithmetic.
Listening for dashboard_ready
ws . onmessage = ( event ) => {
const { event : name , data } = JSON . parse ( event . data )
if ( name === "dashboard_ready" ) {
const report = data as DashboardReport
console . log ( report . grade_report . courses )
}
}
DashboardReport
The root object delivered in the dashboard_ready event’s data field.
Current-cycle grades for all enrolled courses, including per-unit scores, final grades, and grade predictions. Always present (though courses may be empty if extraction failed). Academic period identifier, e.g. "2024-I".
The student’s payment order code for the current period.
The enrollment modality for this period, e.g. regular or special enrollment.
Array of individual course grade records. See Course below.
Personal and academic profile information scraped from the student info page. null when profile extraction failed.
Full historical course record covering all academic periods the student has attended. null when record extraction failed.
Per-course attendance summary for the current period. Empty array when attendance extraction failed.
The student’s weekly schedule, derived from attendance session data and cross-referenced with the enrollment sheet. Empty array when attendance data is unavailable.
Current-period enrollment record listing all enrolled courses with credits and group assignments. null when enrollment extraction failed.
Top-5 optimized, conflict-free schedule combinations computed from the official course catalog for the next period. Empty array when optimisation failed or no catalog data is available.
Aggregated period-by-period academic statistics derived from the full course history. null when the academic record is unavailable.
Sub-types
Course
One row in grade_report.courses. Represents a single enrolled course with all published unit scores.
The official SUV course identifier code.
The full course name as displayed in the SUV.
How many times the student has enrolled in this course (1 = first attempt).
Unit 1 grade, serialized as a decimal string, or null if not yet published.
Unit 2 grade, or null if not yet published.
Unit 3 grade, or null if not yet published.
Unit 4 grade, or null if not yet published.
Unit 5 grade, or null if not yet published.
Unit 6 grade, or null if not yet published.
Sustentación (oral/practical assessment) grade, or null.
NP (No Presentado — did not attend exam) grade marker, or null.
APLA (aplazado — deferred) grade marker, or null.
Computed final grade for the course, or null if the period is still in progress.
true when the course is marked as inhabilitado (disqualified due to excessive absences).
Running average of the published units (partial average during the cycle). null when no units have been published yet.
Grade prediction object computed from published units. null when insufficient data is available to compute a meaningful prediction.
CoursePrediction
Attached to a Course when the backend can project what minimum scores are needed in pending units for the student to pass.
Show CoursePrediction fields
The course identifier this prediction belongs to.
Total number of graded units in this course.
A map of published unit keys to their grade strings, e.g. {"u1": "14", "u2": "12"}.
Array of unit keys that have not yet been published, e.g. ["u3", "u4"].
The total sum of grades required across all pending units for the student to pass the course (minimum passing grade of 11 at UNT).
The minimum grade required in each pending unit, assuming equal scores across all pending units.
true when it is still mathematically possible to pass the course given pending units.
true when the student already has enough points to pass regardless of remaining units.
An array of possible grade combinations for the pending units that would result in a passing final grade. Each combination is a map of unit key to required integer score.
StudentProfile
Personal and institutional information for the student.
Show StudentProfile fields
The student’s full name as it appears in the SUV.
The student’s given name(s).
The student’s family name(s).
The university registration/enrollment code (código de matrícula).
The faculty (facultad) the student belongs to.
The school or programme (escuela) within the faculty.
The campus where the student is enrolled.
The year the student was admitted to UNT, or null if not available.
The student’s @unitru.edu.pe institutional email, or null.
The student’s personal email registered in the SUV, or null.
Contact phone number, or null.
National ID document number (DNI), or null.
Date of birth as a string in the format returned by the SUV, or null.
Sex as recorded in the SUV, or null.
Marital status as recorded in the SUV, or null.
Home address registered in the SUV, or null.
The curricular plan (plan de estudios) the student is enrolled under, or null.
Academic condition (e.g. regular, irregular), or null.
The student’s photo encoded as a Base64 data URL (e.g. "data:image/jpeg;base64,/9j/4AAQ..."). Render it directly in an <img src={...} /> tag. null when no photo is available.
AcademicRecord
Complete historical course record across all academic periods.
Show AcademicRecord fields
The student’s full name as it appears in the academic record page.
The university registration code.
The student’s current academic condition (e.g. “Regular”).
Total credits accumulated across all passed courses.
Cumulative weighted grade average across all periods, serialized as a decimal string.
Payment status shown on the record page, or null.
Payment order code shown on the record page, or null.
Full list of historical course records. See CourseHistory below.
CourseHistory
A single course entry in the full academic history.
Show CourseHistory fields
The academic period in which this course was taken, e.g. "2023-II".
The official SUV course identifier code.
The attempt number for this course (1 = first time).
The curricular cycle (semester) this course belongs to.
Credit value of the course.
Type of course (e.g. obligatorio, electivo).
Final grade for this historical entry, or null.
true when this course row is marked as disabled/inactive in the record (e.g. annulled enrollment).
AttendanceSummary
Attendance summary for one course in the current period.
Show AttendanceSummary fields
The teacher’s name, or null if not available.
Total number of class sessions scheduled so far.
Number of sessions the student attended.
Number of sessions the student was absent.
Number of absences that were officially justified.
Attendance rate as a decimal string, e.g. "87.50". Represents the percentage of sessions attended.
true when the student’s attendance is below the minimum threshold (typically 70%) and they risk being marked inhabilitado.
ScheduleSlot
One time block in the student’s weekly timetable.
Day of the week, e.g. "Lunes", "Martes".
Session start time, e.g. "08:00".
Session end time, e.g. "10:00".
The course name for this slot.
Classroom or room identifier, or null.
Group code, populated by cross-referencing the enrollment sheet with the attendance data. null when no match is found.
Enrollment
The student’s current-period enrollment record.
The current academic period identifier, e.g. "2024-I".
Total number of credits enrolled in this period.
List of courses the student is enrolled in. See EnrolledCourse below.
EnrolledCourse
A single course in the current enrollment record.
Show EnrolledCourse fields
Curricular cycle this course belongs to, e.g. "III".
The official course identifier code.
Course type (e.g. obligatorio, electivo).
Credit value of the course.
The group/section the student is enrolled in.
Attempt number for this enrollment.
Teacher name, or null if not yet assigned.
OptimizedSchedule
One candidate schedule combination produced by the schedule optimisation engine.
Show OptimizedSchedule fields
Composite optimisation score. Lower is better. Computed as a weighted sum of days on campus, gap minutes between sessions, and early/late extreme sessions.
Number of distinct days on campus required by this schedule.
Total idle gap minutes between consecutive sessions across all days.
Number of sessions that fall in early-morning or late-evening time slots (penalised in scoring).
One selection entry per course showing which section and sub-group were chosen. See OptimizedSelection below.
The complete flat list of all scheduled session time blocks for this candidate. See OptimizedSession below.
OptimizedSelection
Which section/group was selected for a given course in an optimized schedule.
Show OptimizedSelection fields
The course name or identifier.
The curricular cycle, or null.
The chosen section, or null.
The chosen laboratory or practical sub-group, or null for courses without sub-groups.
OptimizedSession
A single time block within an optimized schedule candidate.
Show OptimizedSession fields
The course name or identifier.
Session type (e.g. "T" for teoría, "P" for práctica, "L" for laboratorio), or null.
Day of the week for this session, e.g. "Lunes".
Session start time, e.g. "08:00".
Session end time, e.g. "10:00".
Room or classroom identifier, or null.
Sub-group identifier for this session, or null.
Teacher name for this session, or null.
Section identifier for this session, or null.
AcademicAnalytics
Aggregated statistics derived from the full academic history.
Show AcademicAnalytics fields
Per-period breakdown of performance metrics. See PeriodStat below.
Total number of distinct course enrollments in the student’s history.
Total number of courses the student has passed.
Total number of courses the student has failed.
Overall pass rate as a decimal string, e.g. "85.00" (representing 85%).
Names of courses the student has had to retry (enrolled more than once).
The academic period with the highest weighted average, e.g. "2022-II", or null when history is empty.
The academic period with the lowest weighted average, or null when history is empty.
PeriodStat
Statistics for a single academic period, used to build historical performance charts.
Academic period identifier, e.g. "2023-I".
Number of courses enrolled in this period.
Number of courses passed in this period.
Number of courses failed in this period.
Pass rate for this period as a decimal string, e.g. "75.00".
Weighted grade average for this period as a decimal string, e.g. "13.50".
TypeScript Type Reference
DashboardReport
GradeReport & Course
StudentProfile
AcademicRecord
Enrollment
OptimizedSchedule
AcademicAnalytics
import type { GradeReport } from "@/features/grades/types/grade_types"
export interface DashboardReport {
grade_report : GradeReport
student_profile : StudentProfile | null
academic_record : AcademicRecord | null
attendance : AttendanceSummary []
schedule : ScheduleSlot []
enrollment : Enrollment | null
optimized_schedules : OptimizedSchedule []
analytics : AcademicAnalytics | null
}
Python Dataclass Reference
CourseDto & GradeReportDto (application layer)
StudentProfile (domain entity)
AcademicRecordDto (application layer)
DashboardReportDto (application layer)
from dataclasses import dataclass, field
from decimal import Decimal
from typing import List, Optional
@dataclass
class CourseDto :
course_id: str
course_name: str
attempt: int
u1: Optional[Decimal]
u2: Optional[Decimal]
u3: Optional[Decimal]
u4: Optional[Decimal]
u5: Optional[Decimal]
u6: Optional[Decimal]
sust: Optional[Decimal]
np: Optional[Decimal]
apla: Optional[Decimal]
final_grade: Optional[Decimal]
inh: bool
average: Optional[Decimal] = None
prediction: Optional[CoursePredictionDto] = None
@dataclass
class GradeReportDto :
period: Optional[ str ]
payment_order: Optional[ str ]
enrollment_type: Optional[ str ]
courses: List[CourseDto] = field( default_factory = list )