fix(admissions): correct first_preference_offer_pct in dbt staging
Build and Push Docker Images / Build Backend (FastAPI) (push) Successful in 18s
Build and Push Docker Images / Build Frontend (Next.js) (push) Successful in 49s
Build and Push Docker Images / Build Pipeline (Meltano + dbt + Airflow) (push) Successful in 1m12s
Build and Push Docker Images / Trigger Portainer Update (push) Successful in 1s
Build and Push Docker Images / Build Backend (FastAPI) (push) Successful in 18s
Build and Push Docker Images / Build Frontend (Next.js) (push) Successful in 49s
Build and Push Docker Images / Build Pipeline (Meltano + dbt + Airflow) (push) Successful in 1m12s
Build and Push Docker Images / Trigger Portainer Update (push) Successful in 1s
The staging model was mapping EES column ``proportion_1stprefs_v_totaloffers`` straight onto ``first_preference_offer_pct``. That raw column is not a percentage — it is a ratio of first-preference applications to total offers (an oversubscription indicator, >1 means oversubscribed), so OLQH rendered as "1%" when the true first-choice success rate is 27/42 = 64%. The frontend display code is not at fault and is not patched here — data-quality issues must be fixed at the source. - stg_ees_admissions: compute ``first_preference_offer_pct`` as ``100 * number_1st_preference_offers / times_put_as_1st_preference`` — of families who listed this school first, the % that received an offer (0–100). Guard against divide-by-zero. - stg_ees_admissions: expose the legitimate EES ratio as the new column ``oversubscription_ratio`` (1st-preference applications per place) for future use, clearly named. - fact_admissions, FactAdmissions model, data_loader: propagate the new ``oversubscription_ratio`` column. - SchoolAdmissions type: document both columns inline. - buildSchoolSummary: reword the oversubscription clause so it reads sensibly across the whole 0–100 range (no more "just 64%"). - Hero chip subtitle: clearer phrasing "X% of first-choice applicants offered a place". Requires a dbt run of stg_ees_admissions and fact_admissions on deploy so the new column materialises. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -557,11 +557,12 @@ export function buildSchoolSummary(
|
||||
// Admissions clause
|
||||
if (admissions?.oversubscribed) {
|
||||
if (admissions.first_preference_offer_pct != null) {
|
||||
const pct = Math.round(admissions.first_preference_offer_pct);
|
||||
parts.push(
|
||||
`heavily oversubscribed — just ${Math.round(admissions.first_preference_offer_pct)}% of applicants get a first-choice offer`,
|
||||
`oversubscribed — ${pct}% of first-choice applicants are offered a place`,
|
||||
);
|
||||
} else {
|
||||
parts.push('heavily oversubscribed');
|
||||
parts.push('oversubscribed');
|
||||
}
|
||||
} else if (admissions?.first_preference_offer_pct != null && admissions.first_preference_offer_pct >= 90) {
|
||||
parts.push('most families get their first-choice offer');
|
||||
|
||||
Reference in New Issue
Block a user