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 psycopg2.extras
import typesense import typesense
from gias_codes import PHASE_OF_EDUCATION, RELIGIOUS_CHARACTER, SCHOOL_TYPE, translate
COLLECTION_SCHEMA = { COLLECTION_SCHEMA = {
"fields": [ "fields": [
{"name": "urn", "type": "int32"}, {"name": "urn", "type": "int32"},
@@ -44,10 +46,10 @@ QUERY_BASE = """
SELECT SELECT
s.urn, s.urn,
s.school_name, s.school_name,
s.phase, s.phase_code,
s.school_type, s.school_type_code,
l.local_authority_name as local_authority, l.local_authority_name as local_authority,
s.religious_character, s.religious_character_code,
s.ofsted_grade, s.ofsted_grade,
l.postcode, l.postcode,
s.headteacher_name, s.headteacher_name,
@@ -85,14 +87,15 @@ def build_document(row: dict) -> dict:
"id": str(row["urn"]), "id": str(row["urn"]),
"urn": row["urn"], "urn": row["urn"],
"school_name": row["school_name"] or "", "school_name": row["school_name"] or "",
"phase": row["phase"] or "", "phase": translate(row["phase_code"], PHASE_OF_EDUCATION) or "",
"school_type": row["school_type"] or "", "school_type": translate(row["school_type_code"], SCHOOL_TYPE) or "",
"local_authority": row["local_authority"] or "", "local_authority": row["local_authority"] or "",
"postcode": row["postcode"] or "", "postcode": row["postcode"] or "",
} }
if row.get("religious_character"): religious_character = translate(row.get("religious_character_code"), RELIGIOUS_CHARACTER)
doc["religious_character"] = row["religious_character"] if religious_character:
doc["religious_character"] = religious_character
if row.get("ofsted_grade"): if row.get("ofsted_grade"):
doc["ofsted_rating"] = OFSTED_LABELS.get(row["ofsted_grade"], "") doc["ofsted_rating"] = OFSTED_LABELS.get(row["ofsted_grade"], "")
if row.get("headteacher_name"): if row.get("headteacher_name"):