Unitru Academic extracts the raw attendance records from the SUV for every course in the current cycle and computes clean per-course summaries automatically. Each summary shows total sessions, attended count, absent count, justified absences, and a percentage — all in one glanceable card — with a prominent EN RIESGO alert whenever your absence count approaches the SUV’s 30% inhabilitación limit.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.
AttendanceSummary Fields
TheAttendanceSummary dataclass (Python backend) and its TypeScript counterpart in dashboard_types.ts carry identical fields:
Field Descriptions
| Field | Description |
|---|---|
course_id | SUV tracker ID for the course |
course_name | Course title as it appears in the SUV |
teacher | Teacher name when available (cross-referenced from the enrollment record) |
total_sessions | Count of non-cancelled sessions in the student’s real turn |
attended | Sessions with status P, PRESENTE, or A |
absent | Sessions that are neither attended nor justified: total_sessions − attended − justified |
justified | Sessions with status J, JUSTIFICADO, or JU |
attendance_percentage | String representation of (attended + justified) / total_sessions × 100, rounded to 2 decimal places |
is_at_risk | true when the student is within 10% of the 30% absence limit (see below) |
Attendance Percentage Calculation
Justified absences count toward the attendance percentage alongside regular attendances. Cancelled sessions are excluded from the total entirely.EN RIESGO Alert
Theis_at_risk flag is raised when the number of unjustified absences is close enough to the inhabilitación threshold that only 10% of total sessions remain as buffer:
attendance_list.tsx), an EN RIESGO badge styled in red appears on the card and the card itself switches to a red-tinted background:
Turn Detection
The SUV often embeds sessions from multiple classroom groups inside the same attendance tracker. The builder automatically identifies your real turn — the(day, start_time, end_time) blocks where you have at least one non-absent status — and discards all other groups’ blocks from the summary. If no block shows any attendance yet (first week of the cycle), all blocks are kept to avoid hiding a course entirely.
Session Records
EachAttendanceSummary on the backend carries the full list of raw SessionRecord objects:
day_name is derived from date using Python’s datetime.date.weekday(), with support for both DD-MM-YYYY and YYYY-MM-DD formats to handle any SUV screen inconsistencies.
Attendance data is extracted live from the SUV at login time via the Playwright headless browser. The percentages and session counts you see reflect the exact state of the SUV at the moment of extraction — they are not cached between sessions.