feat(pipeline): typesense sync translates GIAS codes before indexing

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Tudor
2026-07-09 10:51:40 +01:00
co-authored by Claude Fable 5
parent f1a013ec01
commit 4f6b2b0edc
+10 -7
View File
@@ -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"):