From 4f6b2b0edc8b77b1b0332ae7d6b0f28b351f4817 Mon Sep 17 00:00:00 2001 From: Tudor Date: Thu, 9 Jul 2026 10:51:40 +0100 Subject: [PATCH] feat(pipeline): typesense sync translates GIAS codes before indexing Co-Authored-By: Claude Fable 5 --- pipeline/scripts/sync_typesense.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pipeline/scripts/sync_typesense.py b/pipeline/scripts/sync_typesense.py index 3d5e6e6..ebe08a3 100644 --- a/pipeline/scripts/sync_typesense.py +++ b/pipeline/scripts/sync_typesense.py @@ -19,6 +19,8 @@ import psycopg2 import psycopg2.extras import typesense +from gias_codes import PHASE_OF_EDUCATION, RELIGIOUS_CHARACTER, SCHOOL_TYPE, translate + COLLECTION_SCHEMA = { "fields": [ {"name": "urn", "type": "int32"}, @@ -44,10 +46,10 @@ QUERY_BASE = """ SELECT s.urn, s.school_name, - s.phase, - s.school_type, + s.phase_code, + s.school_type_code, l.local_authority_name as local_authority, - s.religious_character, + s.religious_character_code, s.ofsted_grade, l.postcode, s.headteacher_name, @@ -85,14 +87,15 @@ def build_document(row: dict) -> dict: "id": str(row["urn"]), "urn": row["urn"], "school_name": row["school_name"] or "", - "phase": row["phase"] or "", - "school_type": row["school_type"] or "", + "phase": translate(row["phase_code"], PHASE_OF_EDUCATION) or "", + "school_type": translate(row["school_type_code"], SCHOOL_TYPE) or "", "local_authority": row["local_authority"] or "", "postcode": row["postcode"] or "", } - if row.get("religious_character"): - doc["religious_character"] = row["religious_character"] + religious_character = translate(row.get("religious_character_code"), RELIGIOUS_CHARACTER) + if religious_character: + doc["religious_character"] = religious_character if row.get("ofsted_grade"): doc["ofsted_rating"] = OFSTED_LABELS.get(row["ofsted_grade"], "") if row.get("headteacher_name"):