v4.7.22 – Consolidate duplicate grade logic
Refactor
calculate_overall_grade()andcalculate_subject_grade()had identical threshold logic. Consolidated into one implementation — grade thresholds now only need to be changed in one place in the future.
No functional or behavioral change.
Full Changelog: v4.7.21...v4.7.22