fix(search): no "Not yet inspected" without Ofsted's word; ISI badge (H4)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
69da9d84db
commit
ab25d83b9d
9 files changed
+92
-38
No files matched your search
@@ -17,8 +17,22 @@ const VISIT_KIND: Record<OfstedLatestVisit['kind'], string> = {
|
||||
report_card: 'Report card inspection',
|
||||
graded: 'Graded inspection',
|
||||
ungraded: 'Ungraded inspection',
|
||||
short: 'Short inspection',
|
||||
};
|
||||
|
||||
/** fact_ofsted_latest.framework for Ofsted's further education and skills records (audit H4). */
|
||||
export const FE_FRAMEWORK = 'Further education and skills';
|
||||
|
||||
/**
|
||||
* A report card is in force. Checked by its date as well as its area labels:
|
||||
* an FE report card carries a safeguarding result and no school areas.
|
||||
*/
|
||||
export function hasReportCard(
|
||||
ofsted: Pick<OfstedInspection, 'rc_inspection_date' | 'report_card'>,
|
||||
): boolean {
|
||||
return !!ofsted.rc_inspection_date || Object.keys(ofsted.report_card ?? {}).length > 0;
|
||||
}
|
||||
|
||||
/** "Graded inspection, 6 July 2016" or "Confirmed at an ungraded inspection, 14 March 2023". */
|
||||
export function gradeSourceLine(current: OfstedCurrentGrade): string {
|
||||
const when = formatOfstedDate(current.date);
|
||||
|
||||
@@ -86,6 +86,10 @@ export interface School {
|
||||
/** The school's latest inspection of any kind. */
|
||||
ofsted_date?: string | null;
|
||||
ofsted_framework?: string | null;
|
||||
/** The inspectorate GIAS names ("ISI", "Ofsted", "Not applicable"). Audit H4. */
|
||||
inspectorate?: string | null;
|
||||
/** Whether Ofsted's own data lists the school, inspected or not. Audit H4. */
|
||||
ofsted_listed?: boolean | null;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
@@ -143,7 +147,7 @@ export interface OfstedCurrentGrade {
|
||||
|
||||
export interface OfstedLatestVisit {
|
||||
date: string;
|
||||
kind: 'report_card' | 'graded' | 'ungraded';
|
||||
kind: 'report_card' | 'graded' | 'ungraded' | 'short';
|
||||
outcome: string | null;
|
||||
}
|
||||
|
||||
|
||||
@@ -678,7 +678,9 @@ export interface OfstedListBadge {
|
||||
* 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
|
||||
* - No inspection on record (audit H4): "Inspected by ISI" when GIAS names
|
||||
* ISI; "Not yet inspected" only when Ofsted's own data lists the school;
|
||||
* otherwise no badge, never a claim the data cannot support.
|
||||
*/
|
||||
export function buildOfstedListBadge(school: {
|
||||
ofsted_grade?: 1 | 2 | 3 | 4 | null;
|
||||
@@ -686,7 +688,9 @@ export function buildOfstedListBadge(school: {
|
||||
ofsted_date?: string | null;
|
||||
ofsted_framework?: string | null;
|
||||
ofsted_rc_date?: string | null;
|
||||
}): OfstedListBadge {
|
||||
inspectorate?: string | null;
|
||||
ofsted_listed?: boolean | null;
|
||||
}): OfstedListBadge | null {
|
||||
// A report card wins over any carried-forward legacy grade — signalled by
|
||||
// ofsted_rc_date. ofsted_framework is the raw event grouping ("Schools -
|
||||
// S5"), never "ReportCard", so it can't detect report cards.
|
||||
@@ -719,7 +723,9 @@ export function buildOfstedListBadge(school: {
|
||||
return { label: `Inspected${visitYear ? ` · ${visitYear}` : ''}`, cssClass: 'ofstedInspected' };
|
||||
}
|
||||
|
||||
return { label: 'Not yet inspected', cssClass: 'ofstedPending' };
|
||||
if (school.inspectorate === 'ISI') return { label: 'Inspected by ISI', cssClass: 'ofstedPending' };
|
||||
if (school.ofsted_listed) return { label: 'Not yet inspected', cssClass: 'ofstedPending' };
|
||||
return null;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
|
||||
Reference in new issue
Block a user