Reports › Institution Aggregated › Institution Detail
🎬 Simulate:

Vientiane Technical College

TVET Vientiane Learner Type: TVET + External Report Period: Jun 1, 2025 – Jun 3, 2026

Active Students

287

active in last 30 days

Inactive Students

55

inactive ≥ 30 days (no activity)

Active Courses

12

active courses

Enrollments

1,205

Completions

824

Completion Rate

68.4%

Certificates

824
Course List
Course Title Enrollments Completions Completion Rate
Welding & Metal Fabrication 312 234 75.0%
Electrical Installation 287 198 69.0%
Construction Technology 198 126 63.6%
ICT Fundamentals 164 108 65.9%
Automotive Mechanics 143 87 60.8%
Tourism & Hospitality 101 71 70.3%
Faculty/Major Breakdown TVET institution · scoped to carried-over date range
Faculty / Major Students Enrollments Completion Rate Certificates
▶ Engineering & Technology 142 534 71.2% 380
▶ Business & Commerce 89 312 65.1% 203
▶ Hospitality & Tourism 56 193 70.5% 136
Trend Charts

Enrollments

45
38
62
71
58
49
66
78
54
43
71
68
Jul
Aug
Sep
Oct
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun

Completions

28
31
42
54
47
38
51
63
41
34
57
52
Jul
Aug
Sep
Oct
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun

Certificates Issued

25
28
39
51
44
35
48
59
38
31
54
49
Jul
Aug
Sep
Oct
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun

Screen Flow (from flow.puml):

SCR-ANL.15 — this screen ← Back to Summary (SCR-ANL.14) → Adjust trend chart → reload (self-loop, steps 6–7)
📝 Spec notes — UC-ANL.06 / SCR-ANL.15 (fields, actions, requirements)
Identity
  • Screen: SCR-ANL.15 — Institution Detail
  • Use case: UC-ANL.06 — View Institution-level Aggregated Report
Brief description

Institution Detail page for Program Administrator or Super Administrator — opened by clicking an institution row (TVET section) or the External row on SCR-ANL.14. Both filters chosen on SCR-ANL.14 (learner type and date range) carry over automatically and are shown as read-only labels in the header. Operates in two modes: Normal mode (institution_id not null) shows institution name, type badge, and region alongside carry-over filter labels; External mode (institution_id = null) shows "External Learners" as a fixed placeholder — Institution Type badge and Region are hidden. Five sections: (1) Institution Header. (2) Key Figures — active/inactive students (learning-activity threshold, default 30 days, configurable by Super Administrator), active courses, enrollments, completions, completion rate, certificates. Active/Inactive Students and Active Courses are always calculated from today (not affected by date range); Enrollments, Completions, Completion Rate, and Certificates are scoped to the carried-over date range and use the same course-affiliation rule as Active Courses (an enrollment counts toward this institution whenever the course itself is affiliated with it, regardless of the enrolled learner's own institution). (3) Course List — enrollments, completions, completion rate per course; sortable by any column. (4) Faculty/Major Breakdown (Normal mode / TVET institutions only) — grouped table scoped by the learner's own Faculty/Major (a separate dimension from the course-affiliation rule above). (5) Trend Charts — 3 bar charts (Enrollments / Completions / Certificates per period bucket); period and time grouping selectors auto-apply (main flow steps 6–7; default 12mo monthly). When the institution has no enrolled students, all figures show as 0 and the course list shows "No course data available for this institution". An Export button opens the shared Export Dialog (SCR-ANL.17) for CSV/Excel/PDF download (AF-5C) — exported content mirrors exactly what is shown on screen at that moment.

Fields
  • institution_name "Institution Name" — text · Institution.name · param.institution_id · read-only
  • institution_type "Institution Type" — enum (TVET/job_centre/skills_dev) · Institution.type · param.institution_id · read-only
  • institution_region "Region" — text · Institution.region · param.institution_id · read-only
  • param_filter_learner_type "Learner Type" — enum multi-select · carried over from SCR-ANL.14 filter · shown as read-only badge in header · filters all figures on this page
  • param_filter_date_start "Report Start Date" — date · carried over from SCR-ANL.14 · shown as read-only badge in header alongside Learner Type · scopes Enrollments, Completions, Completion Rate, Certificates, and Course List figures (SS-ANL.09); does NOT affect Active/Inactive Students or Active Courses
  • param_filter_date_end "Report End Date" — date · upper boundary of carried-over date range · same scoping rules as param_filter_date_start
  • kpi_students_active "Active Students" — count learners from institution with learning activity (login, lesson view, quiz attempt, or assignment submission) within the inactivity threshold (default 30 days, configurable by Super Administrator — SS-ANL.09) · fallback 0 · read-only
  • kpi_students_inactive "Inactive Students" — count learners from institution with no learning activity within the inactivity threshold, or never (SS-ANL.09) · fallback 0 · read-only
  • kpi_course_count "Active Courses" — active courses affiliated with this institution = created by an instructor belonging to this institution (authoring institution — SS-ANL.09; OI-04) · fallback 0 · read-only
  • kpi_enrolled "Enrollments" — total enrollments in courses affiliated with this institution (same authoring-institution rule as Active Courses), matching selected learner type of the enrolled learner — regardless of which institution that learner belongs to (SS-ANL.09; OI-213) · fallback 0 · read-only
  • kpi_completed "Completions" — completed enrollments in courses affiliated with this institution, matching selected learner type (same scope rule as Enrollments — SS-ANL.09; OI-213) · fallback 0 · read-only
  • kpi_completion_rate "Completion Rate (%)" — completions ÷ enrollments × 100; 1 decimal; 0 when no enrollments · fallback 0 · read-only
  • kpi_certificates "Certificates" — certificates issued for completions of courses affiliated with this institution, matching selected learner type (same scope rule as Enrollments — SS-ANL.09; OI-213) · fallback 0 · read-only
  • Course list columns: course_title (Course.title), course_enrolled_count, course_completed_count (matching selected learner type, regardless of the enrolled learner's own institution — SS-ANL.09), course_completion_rate (completions ÷ enrollments × 100; 1 decimal; 0 if no enrollments) · all read-only
  • trend_period "Period" — enum (6mo/12mo/24mo) · default 12mo · required · auto-apply on dropdown change (main flow step 6) · refs: UC-ANL.06 AR#5 (SS-ANL.10 cancelled 2026-06-29, inlined here)
  • trend_granularity "Time Grouping" — enum (weekly/monthly/quarterly) · default monthly · required · auto-apply on dropdown change · refs: UC-ANL.06 AR#5
  • Faculty/Major Breakdown (visible in Normal mode only — institution_id != null): faculty_name (Faculty.name · sorted alpha · SS-ANL.11), faculty_students (unique learners with ≥1 enr in period · SS-ANL.11), faculty_enrollments, faculty_completion_rate (completions ÷ enrollments × 100; 1dp; 0 when 0 enr), faculty_certificates (within carried-over date range). Per-Major rows: major_name, major_students, major_enrollments, major_completion_rate, major_certificates (same 4 metrics scoped to Major-affiliated learners). Empty state: institution has no Faculty/Major structure → show "No Faculty/Major structure has been set up for this institution" in section. Faculty totals computed independently from all Faculty-affiliated learners (not sum of Major rows).
Actions
  • back_to_summary "← Back to Summary" — always enabled · triggers UC-ANL.06-M-1 → navigates to SCR-ANL.14 (no scenario propagation)
  • change_trend_period "(onChange dropdown)" — always enabled · triggers UC-ANL.06-M-6 · self-loop on SCR-ANL.15 with updated period
  • export "Export" — always enabled · triggers UC-ANL.06-A-5C-1 · opens the Export Dialog (SCR-ANL.17)
  • sort_course_list "(click column header)" — always enabled · client-side sort; click again reverses order · default course_title asc · no explicit UC step
  • toggle_faculty_row "(click Faculty row)" — enabled when institution_id != null · expands/collapses per-Major rows nested under Faculty · no explicit UC step (implicit UI behavior)
Additional requirements
  1. When the institution has no enrolled students, all KPI cards show 0 and the course list shows "No course data available for this institution" — not a blank page and not an error. [refs: —]
  2. A learner is inactive if they have had no learning activity (login, lesson view, quiz attempt, or assignment submission) for longer than the inactivity threshold (default 30 days), or never. The threshold is a platform-wide value configurable by the Super Administrator via system configuration (not per institution). [refs: SS-ANL.09]
  3. Trend charts: if selected period has no data → show empty chart (no error). If data lag exceeds freshness threshold → show "Data as of [date and time]" notice. [refs: SS-ANL.02]
  4. All Key Figures (Enrollments, Completions, Completion Rate, Certificates) and Course List row figures are scoped to the carried-over date range (param_filter_date_start – param_filter_date_end). Active Students, Inactive Students, and Active Courses are always calculated from today — not affected by the date range filter. Certificates always equal Completions (1:1 rule). Enrollments/Completions/Certificates use the same course-affiliation rule as Active Courses — an enrollment counts toward this institution whenever the course itself is affiliated with it, regardless of which institution the enrolled learner belongs to (confirmed via prototype UAT feedback PA-ANL-01). [refs: SS-ANL.09]
  5. Exported content (any of the 3 formats — CSV, Excel, PDF) mirrors exactly the fields visible on screen at the moment Export is invoked, scoped by the same active filters. Trend chart data is display-only and is not included in the export. [refs: SS-ANL.03]
  6. The three trend charts use their own Period and Time Grouping controls (trend_period, trend_granularity) — not the carried-over date range. Each bucket shows the count for that period only (not cumulative); empty buckets show as 0. [refs: UC-ANL.06 AR#5]
  7. In External mode (institution_id = null, entered via the External row on SCR-ANL.14): the Institution Header shows "External Learners" as a fixed label; Institution Type badge and Region label must not appear. All Key Figures, Course List, and Trend Charts behave identically to Normal mode — only the header differs. [refs: —]
  8. Faculty/Major Breakdown section (fields 22–31) is shown only in Normal mode (institution_id != null). When the institution has no Faculty/Major structure configured, the section shows "No Faculty/Major structure has been set up for this institution" rather than an empty table — the section remains visible. Faculty row totals are computed independently from all Faculty-affiliated learners (not the sum of Major rows). Faculty rows sorted alphabetically; Major rows alphabetically within Faculty. Full formulas: SS-ANL.11. [refs: —]
  9. Export supports 3 formats (CSV, Excel, PDF) via the shared Export Dialog, accessible from both the summary page (AF-3A) and the institution detail page (AF-5C). Execution path (sync vs. async) is determined by the estimated row count of the output. [refs: SS-ANL.03]
↳ Embedded dialog: SCR-ANL.17 — Export Dialog
Brief description: Shared modal dialog used by every report screen that supports export (Institution Aggregated Report, Institution Detail, Platform Summary Dashboard). Shows a scope summary, lets the user pick a format (CSV/Excel/PDF), and confirms to generate and download.
Fields:
  • scope_summary "What will be exported" — text · computed · read-only
  • format "Format" — enum (csv/excel/pdf) · required · default: csv
Actions:
  • generate "Generate & Download" — always enabled · triggers UC-ANL.06-A-5C-3 (also shared by UC-ANL.06-A-3A-3, UC-ANL.07-A-3B-3)
  • cancel "Cancel" — always enabled · no UC step (dismisses dialog)
Additional requirements:
  1. When the requested export is estimated to take longer than a few seconds, the dialog shows an in-progress indicator instead of an immediate download link. [refs: SS-ANL.03]