fix(ofsted): badge and compare read the grade still in force
Search badges date a grade by the inspection that awarded or confirmed it (ofsted_grade_date) and say 'Inspected · year' when the latest inspection gave no grade. ofstedDisplay's kinds become graded / confirmed / no_overall_grade, read from current_grade rather than a carried-forward overall_effectiveness. lib/ofstedStatus.ts holds the two sentences the school and compare pages share. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a9e3a6a700
commit
a42c586cc8
7 files changed
+179
-52
No files matched your search
+15
-13
@@ -837,15 +837,18 @@ export interface OfstedListBadge {
|
||||
* Checked FIRST so it wins over any carried-forward legacy grade — the
|
||||
* list has no full report_card object, and ofsted_framework is the raw
|
||||
* event grouping ("Schools - S5"), never "ReportCard".
|
||||
* - OEIF school (ofsted_grade set): grade word + year, colour-keyed
|
||||
* - Inspected without an overall grade (OEIF post-Sept-2024, where Ofsted no
|
||||
* longer issues an overall judgement): "Inspected · YYYY" — mirrors the
|
||||
* detail page's hero chip so a school never reads as both inspected and
|
||||
* - Current grade (ofsted_grade set): grade word + the year it was awarded
|
||||
* or confirmed (ofsted_grade_date), colour-keyed. Never the year of a later
|
||||
* visit: that paired old grades with new inspections (audit C1).
|
||||
* - Inspected with no grade in force (every inspection Sept 2024 – Nov 2025,
|
||||
* or an ungraded visit whose outcome names no grade): "Inspected · YYYY",
|
||||
* dated by the latest visit, so a school never reads as both inspected and
|
||||
* "Not yet inspected"
|
||||
* - No inspection on record: "Not yet inspected" in grey
|
||||
*/
|
||||
export function buildOfstedListBadge(school: {
|
||||
ofsted_grade?: 1 | 2 | 3 | 4 | null;
|
||||
ofsted_grade_date?: string | null;
|
||||
ofsted_date?: string | null;
|
||||
ofsted_framework?: string | null;
|
||||
ofsted_rc_date?: string | null;
|
||||
@@ -858,10 +861,7 @@ export function buildOfstedListBadge(school: {
|
||||
return { label: `Report Card · ${rcYear}`, cssClass: 'ofstedRc' };
|
||||
}
|
||||
|
||||
const year = school.ofsted_date
|
||||
? new Date(school.ofsted_date).getFullYear()
|
||||
: null;
|
||||
const yearStr = year ? ` · ${year}` : '';
|
||||
const yearOf = (iso?: string | null) => (iso ? new Date(iso).getFullYear() : null);
|
||||
|
||||
if (school.ofsted_grade) {
|
||||
const labels: Record<number, string> = {
|
||||
@@ -870,17 +870,19 @@ export function buildOfstedListBadge(school: {
|
||||
3: 'Req. Improvement',
|
||||
4: 'Inadequate',
|
||||
};
|
||||
const gradeYear = yearOf(school.ofsted_grade_date);
|
||||
return {
|
||||
label: `${labels[school.ofsted_grade]}${yearStr}`,
|
||||
label: `${labels[school.ofsted_grade]}${gradeYear ? ` · ${gradeYear}` : ''}`,
|
||||
cssClass: `ofsted${school.ofsted_grade}`,
|
||||
};
|
||||
}
|
||||
|
||||
// An inspection is on record (date or framework present) but carries no
|
||||
// overall grade — a post-Sept-2024 OEIF inspection. Distinct from a school
|
||||
// that has genuinely never been inspected.
|
||||
// An inspection is on record but no overall grade is in force: every
|
||||
// inspection from Sept 2024 to Nov 2025, or an ungraded visit whose outcome
|
||||
// names no grade. Dated by the latest visit.
|
||||
if (school.ofsted_date != null || school.ofsted_framework != null) {
|
||||
return { label: `Inspected${yearStr}`, cssClass: 'ofstedInspected' };
|
||||
const visitYear = yearOf(school.ofsted_date);
|
||||
return { label: `Inspected${visitYear ? ` · ${visitYear}` : ''}`, cssClass: 'ofstedInspected' };
|
||||
}
|
||||
|
||||
return { label: 'Not yet inspected', cssClass: 'ofstedPending' };
|
||||
|
||||
Reference in new issue
Block a user