diff --git a/backend/data_loader.py b/backend/data_loader.py index efc827e..6a8c341 100644 --- a/backend/data_loader.py +++ b/backend/data_loader.py @@ -419,7 +419,7 @@ def get_supplementary_data(db: Session, urn: int) -> dict: { "year": a.year, "school_phase": a.school_phase, - "published_admission_number": a.published_admission_number, + "places_offered": a.places_offered, "total_applications": a.total_applications, "first_preference_applications": a.first_preference_applications, "first_preference_offers": a.first_preference_offers, diff --git a/backend/models.py b/backend/models.py index 13748cb..eef03ae 100644 --- a/backend/models.py +++ b/backend/models.py @@ -179,7 +179,7 @@ class FactAdmissions(Base): urn = Column(Integer, primary_key=True) year = Column(Integer, primary_key=True) school_phase = Column(String(50)) - published_admission_number = Column(Integer) + places_offered = Column(Integer) total_applications = Column(Integer) first_preference_applications = Column(Integer) first_preference_offers = Column(Integer) diff --git a/nextjs-app/components/SchoolDetailView.tsx b/nextjs-app/components/SchoolDetailView.tsx index 83814e7..971158b 100644 --- a/nextjs-app/components/SchoolDetailView.tsx +++ b/nextjs-app/components/SchoolDetailView.tsx @@ -787,15 +787,15 @@ export function SchoolDetailView({ {admissions && (

How Hard to Get Into This School ({formatAcademicYear(admissions.year)})

- {admissions.first_preference_applications != null && admissions.published_admission_number != null && ( + {admissions.first_preference_applications != null && admissions.places_offered != null && (
- {admissions.published_admission_number} places for {admissions.first_preference_applications} first-choice applications + {admissions.places_offered} places offered for {admissions.first_preference_applications} first-choice applications
@@ -808,10 +808,10 @@ export function SchoolDetailView({
)}
- {admissions.published_admission_number != null && ( + {admissions.places_offered != null && (
-
{isSecondary ? 'Year 7' : 'Reception'} places per year
-
{admissions.published_admission_number}
+
{isSecondary ? 'Year 7' : 'Reception'} places offered
+
{admissions.places_offered}
)} {admissions.total_applications != null && ( diff --git a/nextjs-app/components/SecondarySchoolDetailView.tsx b/nextjs-app/components/SecondarySchoolDetailView.tsx index 624b128..003b895 100644 --- a/nextjs-app/components/SecondarySchoolDetailView.tsx +++ b/nextjs-app/components/SecondarySchoolDetailView.tsx @@ -641,10 +641,10 @@ export function SecondarySchoolDetailView({ )}
- {admissions.published_admission_number != null && ( + {admissions.places_offered != null && (
-
Year 7 places per year (PAN)
-
{admissions.published_admission_number}
+
Year 7 places offered
+
{admissions.places_offered}
)} {admissions.total_applications != null && ( diff --git a/nextjs-app/lib/types.ts b/nextjs-app/lib/types.ts index 1b7efa4..f15462a 100644 --- a/nextjs-app/lib/types.ts +++ b/nextjs-app/lib/types.ts @@ -131,7 +131,8 @@ export interface SchoolCensus { export interface SchoolAdmissions { year: number; school_phase?: string | null; - published_admission_number: number | null; + /** Number of places the school offered in this admissions round (not PAN — EES doesn't expose PAN). */ + places_offered: number | null; total_applications: number | null; first_preference_applications?: number | null; first_preference_offers?: number | null; diff --git a/pipeline/transform/models/marts/fact_admissions.sql b/pipeline/transform/models/marts/fact_admissions.sql index 36f18b2..fda217e 100644 --- a/pipeline/transform/models/marts/fact_admissions.sql +++ b/pipeline/transform/models/marts/fact_admissions.sql @@ -4,7 +4,7 @@ select urn, year, school_phase, - published_admission_number, + places_offered, total_applications, first_preference_applications, first_preference_offers, diff --git a/pipeline/transform/models/staging/stg_ees_admissions.sql b/pipeline/transform/models/staging/stg_ees_admissions.sql index 060604a..d1d98fc 100644 --- a/pipeline/transform/models/staging/stg_ees_admissions.sql +++ b/pipeline/transform/models/staging/stg_ees_admissions.sql @@ -18,7 +18,11 @@ renamed as ( entry_year, -- Places and offers - {{ safe_numeric('total_number_places_offered') }}::integer as published_admission_number, + -- places_offered: number of places the school actually offered in this + -- year's admissions round. NOT the Published Admission Number (PAN), + -- which is the school's published capacity — EES does not expose PAN + -- at school level, so we use the count of offers as the best proxy. + {{ safe_numeric('total_number_places_offered') }}::integer as places_offered, {{ safe_numeric('number_preferred_offers') }}::integer as total_offers, {{ safe_numeric('number_1st_preference_offers') }}::integer as first_preference_offers, {{ safe_numeric('number_2nd_preference_offers') }}::integer as second_preference_offers,