45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
"""Ofsted renewed-framework (Nov 2025) report-card code translation.
|
|||
|
|
|
||
|
|
Scale labels are the live-sampled vocabulary from the Ofsted MI file
|
||
|
|
(see pipeline/scripts/diagnose_compare_gaps.py, TASK 7 VALUE SAMPLE) —
|
||
|
|
verified against real data, not the consultation draft.
|
||
|
|
"""
|
||
|
|
|
||
|
|
REPORT_CARD_GRADE_NAMES = {
|
||
|
|
1: "Exceptional",
|
||
|
|
2: "Strong standard",
|
||
|
|
3: "Expected standard",
|
||
|
|
4: "Needs attention",
|
||
|
|
5: "Urgent improvement",
|
||
|
|
}
|
||
|
|
|
||
|
|
# Graded evaluation areas only — safeguarding is a separate boolean
|
||
|
|
# judgement and must never appear in grade counts or label maps.
|
||
|
|
_RC_AREA_KEYS = (
|
||
|
|
"rc_inclusion",
|
||
|
|
"rc_curriculum_teaching",
|
||
|
|
"rc_achievement",
|
||
|
|
"rc_attendance_behaviour",
|
||
|
|
"rc_personal_development",
|
||
|
|
"rc_leadership_governance",
|
||
|
|
"rc_early_years",
|
||
|
|
"rc_sixth_form",
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def report_card_labels(ofsted: dict) -> dict:
|
||
|
|
"""{area_key: {code, label}} for populated, known-valued rc_* areas."""
|
||
|
|
out = {}
|
||
|
|
for key in _RC_AREA_KEYS:
|
||
|
|
code = ofsted.get(key)
|
||
|
|
label = REPORT_CARD_GRADE_NAMES.get(code)
|
||
|
|
if code is not None and label is not None:
|
||
|
|
out[key] = {"code": code, "label": label}
|
||
|
|
return out
|
||
|
|
|
||
|
|
|
||
|
|
def ofsted_page_url(urn: int) -> str:
|
||
|
|
"""The school's page on ofsted.gov.uk (all its reports live there —
|
||
|
|
we never deep-link an individual report)."""
|
||
|
|
return f"https://reports.ofsted.gov.uk/provider/21/{urn}"
|