ca5f6a962c
Build and Push Docker Images / Build Backend (FastAPI) (push) Successful in 12s
Build and Push Docker Images / Build Frontend (Next.js) (push) Successful in 45s
Build and Push Docker Images / Build Pipeline (Meltano + dbt + Airflow) (push) Successful in 1m10s
Build and Push Docker Images / Trigger Portainer Update (push) Successful in 1s
The case-insensitive "Not Applicable" fix caught schools where GIAS publishes statutory ages, but some independent schools leave those blank too — they fall through every branch and end up with null phase and no pill in the UI. Add a third tier that infers phase from the school name (Primary/Infant/Junior/Prep vs Secondary/High/Grammar/Senior/Upper) and also normalise "Not Applicable" handling with trim() + "unknown"/"" exclusion, so the final else branch can safely return null instead of the catch-all string. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>