This website requires JavaScript.
c749d72a6a
feat(school-detail): editorial hero with signal chips, at-a-glance stats, summary
Tudor Sitaru and Claude Opus 4.6
2026-04-08 10:32:33 +01:00
f053b35c6f
test(dim_school): downgrade phase not_null to warn
Tudor Sitaru and Claude Opus 4.6
2026-04-07 22:12:57 +01:00
ca5f6a962c
fix(dim_school): expand phase inference with name-based fallback
Tudor Sitaru and Claude Opus 4.6
2026-04-07 21:15:54 +01:00
ed244ef743
fix(mobile): address iPhone layout issues across rankings, detail, compare
Tudor Sitaru and Claude Opus 4.6
2026-04-07 20:29:15 +01:00
ce46db7dbe
shortening placeholder text
Tudor Sitaru
2026-04-07 16:17:56 +01:00
a562f408d2
refactor: expand RWM to "Reading, Writing & Maths" in user-facing text
Tudor Sitaru and Claude Opus 4.6
2026-04-07 15:53:52 +01:00
5b025b98bd
fix(dim_school): use case-insensitive comparison for phase inference
Tudor Sitaru and Claude Opus 4.6
2026-04-02 15:33:04 +01:00
4c3c3c882d
fix(dim_school): infer phase from age range for independent schools
Tudor Sitaru and Claude Opus 4.6
2026-04-01 16:18:52 +01:00
d591d8e66b
fix(utils): handle null year in formatAcademicYear
Tudor Sitaru and Claude Opus 4.6
2026-04-01 16:07:28 +01:00
4db36b9099
feat(ui): add phase indicators to school list rows
Tudor Sitaru and Claude Opus 4.6
2026-04-01 15:47:51 +01:00
cacbeeb068
fixing backend image
Tudor Sitaru
2026-04-01 15:05:21 +01:00
d5f6366c28
fix(years): format academic years as 2016/17 across all views, remove legacy frontend and data
Tudor Sitaru and Claude Opus 4.6
2026-04-01 14:58:13 +01:00
2b757e556d
fix(legacy-ks2): strip % suffix from percentage values
Tudor Sitaru and Claude Opus 4.6
2026-04-01 13:07:51 +01:00
fbd1de9220
fix(dag): add stg_legacy_ks2 to annual EES dbt build selector
Tudor Sitaru and Claude Opus 4.6
2026-04-01 11:27:29 +01:00
fba8e74b72
refactor(legacy-ks2): use explicit year→URL mapping instead of base URL pattern
Tudor Sitaru and Claude Opus 4.6
2026-03-31 22:44:11 +01:00
6d4962639c
feat(legacy-ks2): add stream for pre-COVID KS2 data (2015-2019)
Tudor Sitaru and Claude Opus 4.6
2026-03-31 14:36:41 +01:00
fc011c6547
fix(tap-uk-ees): case-insensitive URN column matching for older census files
Tudor Sitaru and Claude Opus 4.6
2026-03-30 22:36:16 +01:00
752abd69a5
fix(tap-uk-ees): inject time_period from release slug when absent in CSV
Tudor Sitaru and Claude Sonnet 4.6
2026-03-30 21:59:24 +01:00
570c2b689e
fix(tap-uk-ees): handle plain list response from releases endpoint
Tudor Sitaru and Claude Sonnet 4.6
2026-03-30 21:47:14 +01:00
17617137ea
fix(data-info): drop NaN years before converting to int
Tudor Sitaru and Claude Sonnet 4.6
2026-03-30 21:41:11 +01:00
9a1572ea20
feat(tap-uk-ees): fetch all historical releases, not just latest
Tudor Sitaru and Claude Sonnet 4.6
2026-03-30 21:37:26 +01:00
f48faa1803
showing schools with no KS2 results
tudor
2026-03-30 18:14:43 +01:00
6e5249aa1e
refactor(phase): merge KS2+KS4 into fact_performance, fix all phase inconsistencies
tudor and Claude Sonnet 4.6
2026-03-30 14:07:30 +01:00
695a571c1f
fix(filters): forward gender, admissions_policy, has_sixth_form to API
tudor and Claude Sonnet 4.6
2026-03-30 10:45:09 +01:00
bd4e71dd30
feat(sort): persist sort order in URL as ?sort= param
tudor and Claude Sonnet 4.6
2026-03-30 10:10:28 +01:00
cd6a5d092c
feat(map): make desktop map view taller using viewport height
tudor and Claude Sonnet 4.6
2026-03-30 09:29:12 +01:00
5aed055331
feat(map): add fullscreen button using browser Fullscreen API
tudor and Claude Sonnet 4.6
2026-03-30 09:21:44 +01:00
d6a45b8e12
feat(map): fetch all schools for map view, add reference pin, cap radius at 5mi
tudor and Claude Sonnet 4.6
2026-03-30 09:13:14 +01:00
daf24e4739
fix(search): fix load-more silently failing due to missing page_size param
tudor and Claude Sonnet 4.6
2026-03-30 09:08:15 +01:00
0c5bef34cf
feat(ui): polish filter controls with pill styling and custom arrows
tudor and Claude Sonnet 4.6
2026-03-29 21:31:03 +01:00
5615458223
feat(ui): consolidate search/filter area into cleaner 2-row layout
tudor and Claude Sonnet 4.6
2026-03-29 20:46:38 +01:00
9c9528b51b
fix(FilterBar): close fragment opened around phase filter and advanced section
tudor and Claude Sonnet 4.6
2026-03-29 20:21:11 +01:00
1009d7c976
fix(chart): format year as 2022/23 instead of 202223 on performance chart
tudor and Claude Sonnet 4.6
2026-03-29 20:17:04 +01:00
790b12a7f3
changes to order of display and text
tudor
2026-03-29 20:14:42 +01:00
8f4c052294
feat(filters): move phase filter out of advanced section to always-visible position
tudor and Claude Sonnet 4.6
2026-03-29 18:33:45 +01:00
b7bff7bf6b
feat(seo): static sitemap generation job via Airflow
tudor and Claude Sonnet 4.6
2026-03-29 15:15:41 +01:00
748891ab31
fix(detail): restore admissions cut-off note on secondary school page
tudor and Claude Sonnet 4.6
2026-03-29 15:07:52 +01:00
17b8873f0f
fix(detail): add missing location map section to secondary school page
tudor and Claude Sonnet 4.6
2026-03-29 15:06:27 +01:00
15c0055687
refactor(detail): align secondary school page with primary — scroll-to-section nav
tudor and Claude Opus 4.6
2026-03-29 14:48:06 +01:00
6315f366c8
fix(build): single-brace JSX for schoolUrl, migrate images.domains to remotePatterns
tudor and Claude Opus 4.6
2026-03-29 14:15:06 +01:00
784febc162
feat(seo): add school name to URLs, fix sticky nav, collapse compare widget
tudor and Claude Opus 4.6
2026-03-29 12:41:28 +01:00
e2c700fcfc
fix(ui): round admission percentages, fix mobile overflow on detail pages
tudor and Claude Opus 4.6
2026-03-29 11:22:13 +01:00
77a0f5b674
fix(detail): enrich secondary overview tab — show Ofsted grades, admissions, SEN
tudor and Claude Opus 4.6
2026-03-29 10:59:30 +01:00
63dfa22255
fix(detail): detect secondary schools by attainment_8_score, not just phase field
tudor and Claude Opus 4.6
2026-03-29 10:12:07 +01:00
1d22877aec
feat(ux): 8 UX improvements — simpler home, advanced filters, phase tabs, 4-line rows
tudor and Claude Opus 4.6
2026-03-29 08:57:06 +01:00
e8175561d5
updates for secondary schools
tudor
2026-03-28 22:36:00 +00:00
f3a8ebdb4b
fix(dbt): deduplicate int_ks4_with_lineage predecessor rows
tudor and Claude Sonnet 4.6
2026-03-28 18:58:50 +00:00
f0c76a1724
fix(dbt): fix stg_ees_ks4 breakdown filter: 'Total' not 'All pupils'
tudor and Claude Sonnet 4.6
2026-03-28 18:35:00 +00:00
3e787b395f
chore(pipeline): add EES KS4 tap diagnostic script
tudor and Claude Sonnet 4.6
2026-03-28 18:26:15 +00:00
3d1c4c61c9
fix(types): add missing phases field to Filters fallback in rankings page
tudor and Claude Sonnet 4.6
2026-03-28 15:03:03 +00:00
250d1f7c77
fix(tap-uk-idaci): add openpyxl dependency for Excel file parsing
tudor and Claude Sonnet 4.6
2026-03-28 15:00:00 +00:00
5eff9af69c
feat: add secondary school support with KS4 data and metric tooltips
tudor and Claude Sonnet 4.6
2026-03-28 14:59:40 +00:00
b0990e30ee
fix(ui): retheme comparison toast to match site palette
tudor and Claude Sonnet 4.6
2026-03-27 22:09:59 +00:00
1629a8f994
feat(pipeline): add DAGs for Parent View and IDACI deprivation
tudor and Claude Sonnet 4.6
2026-03-27 22:08:12 +00:00
55749bdfaf
debug(backend): log safe_query exceptions and rollback on failure
tudor and Claude Sonnet 4.6
2026-03-27 22:00:27 +00:00
cd1c649d0f
fix(frontend): format 6-digit EES academic year codes correctly
tudor and Claude Sonnet 4.6
2026-03-27 18:30:37 +00:00
7724fe3503
fix(stg_ofsted_inspections): correctly filter NULL string inspection dates
tudor and Claude Sonnet 4.6
2026-03-27 18:21:30 +00:00
1d56eebe87
fix(stg_ofsted_inspections): filter out rows with no inspection date
tudor and Claude Sonnet 4.6
2026-03-27 17:55:11 +00:00
10720400fd
fix(stg_ofsted_inspections): parse DD/MM/YYYY date format from Ofsted CSV
tudor and Claude Sonnet 4.6
2026-03-27 17:34:34 +00:00
05cb22f1a5
fix(stg_ofsted_inspections): handle NULL strings from Ofsted CSV
tudor and Claude Sonnet 4.6
2026-03-27 17:23:46 +00:00
26aa3c2d70
fix(tap-uk-ofsted): fix header row detection matching 'urn' inside 'turn'
tudor and Claude Sonnet 4.6
2026-03-27 17:05:03 +00:00
e56a63c59c
debug(tap-uk-ofsted): log CSV column names to diagnose 0-record extraction
tudor and Claude Sonnet 4.6
2026-03-27 15:47:32 +00:00
221923857d
chore: remove integrator/kestra CI jobs, fix school website link protocol
tudor and Claude Sonnet 4.6
2026-03-27 15:30:08 +00:00
62284e7a94
chore: remove Kestra and integrator legacy services
tudor and Claude Sonnet 4.6
2026-03-27 15:03:34 +00:00
668e234eb2
feat(census): add demographic columns to EES census tap and staging models
tudor and Claude Sonnet 4.6
2026-03-27 14:07:48 +00:00
4b02ab3d8a
feat: wire Typesense search into backend, fix sync performance data bug
tudor and Claude Sonnet 4.6
2026-03-27 13:23:32 +00:00
5d8b319451
fix(dbt): stub rc_* columns as NULL in stg_ofsted_inspections
tudor and Claude Sonnet 4.6
2026-03-27 12:50:58 +00:00
77f75fb6e5
fix(dbt): deduplicate predecessor KS2 rows and downgrade orphan test to warn
tudor and Claude Sonnet 4.6
2026-03-27 12:16:36 +00:00
b41e6c250e
fix(dbt): filter non-numeric URNs and trim whitespace in EES staging models
tudor and Claude Sonnet 4.6
2026-03-27 12:00:30 +00:00
6e720feca4
perf(dbt): collapse stg_ees_ks2 to single-pass pivot
tudor and Claude Sonnet 4.6
2026-03-27 11:42:40 +00:00
ae9fd26eba
perf(dbt): materialize stg_ees_ks2 and stg_ees_ks4 as tables
tudor and Claude Sonnet 4.6
2026-03-27 11:20:20 +00:00
33b395d2bd
fix(dbt): apply safe_numeric macro to fix EES suppression code 'c' errors
tudor and Claude Sonnet 4.6
2026-03-27 10:41:27 +00:00
8e8d1bd8c5
fix(ees-tap): filter out rows with null URN before emitting
tudor and Claude Sonnet 4.6
2026-03-27 10:13:17 +00:00
c7357336e3
fix(ees-tap): fix BOM handling for admissions CSV
tudor and Claude Sonnet 4.6
2026-03-27 10:03:17 +00:00
b8ecc5c58b
fix(ees-tap): strip UTF-8 BOM from CSV column names
tudor and Claude Sonnet 4.6
2026-03-27 09:54:15 +00:00
f4f0257447
fix(ees-tap): add latin-1 encoding for census/admissions, default utf-8 for others
tudor and Claude Sonnet 4.6
2026-03-27 09:41:40 +00:00
ca351e9d73
feat: migrate backend to marts schema, update EES tap for verified datasets
tudor and Claude Sonnet 4.6
2026-03-27 09:29:27 +00:00
d82e36e7b2
feat(ees): rewrite EES tap and KS2 models for actual data structure
tudor and Claude Opus 4.6
2026-03-26 23:08:50 +00:00
719f06e480
fix(pipeline): make total_pupils non-optional for Typesense, add lat/lng to dim_location
tudor and Claude Opus 4.6
2026-03-26 22:45:02 +00:00
5e44d88d23
fix(sync): use numeric default_sorting_field, dynamic KS2/KS4 joins, populate geopoints
tudor and Claude Opus 4.6
2026-03-26 22:16:21 +00:00
cc481aa00c
fix(airflow): remove PostGIS init from airflow, rely on postgis image initdb
tudor and Claude Opus 4.6
2026-03-26 22:11:00 +00:00
613a030c95
fix(airflow): ensure PostGIS extension exists during init
tudor and Claude Opus 4.6
2026-03-26 22:08:12 +00:00
72cbbf7778
fix(dbt): simplify search_path to just public for PostGIS
tudor and Claude Opus 4.6
2026-03-26 21:47:01 +00:00
03256fed41
fix(dbt): add search_path to profile so PostGIS functions resolve in all schemas
tudor and Claude Opus 4.6
2026-03-26 21:45:53 +00:00
b7cc01f26f
fix(dbt): schema-qualify PostGIS functions in dim_location
tudor and Claude Opus 4.6
2026-03-26 21:45:03 +00:00
28ba2fd0a6
fix(dbt): cast easting/northing to double precision for ST_MakePoint
tudor and Claude Opus 4.6
2026-03-26 21:29:16 +00:00
03cd1de6af
fix(airflow): delete and reimport DAGs on init to clear stale task refs
tudor and Claude Opus 4.6
2026-03-26 21:28:03 +00:00
54df58746e
feat(pipeline): use GIAS easting/northing for all geocoding, drop postcode step
tudor and Claude Opus 4.6
2026-03-26 21:18:59 +00:00
d3e655abdb
fix(dbt): compute geom from easting/northing in dim_location
tudor and Claude Opus 4.6
2026-03-26 21:17:08 +00:00
45f3e4d9fc
fix(dbt): override generate_schema_name to use direct schema names
tudor and Claude Opus 4.6
2026-03-26 21:09:23 +00:00
d25e333826
fix(dbt): remove invalid relationship test on map_school_lineage
tudor and Claude Opus 4.6
2026-03-26 20:59:29 +00:00
7f82088d53
fix(pipeline): use to_date for DD-MM-YYYY GIAS dates, exclude EES models from daily DAG
tudor and Claude Opus 4.6
2026-03-26 20:51:40 +00:00
e7b1ab9f37
fix(pipeline): expand GIAS schema, handle empty strings, scope DAG selectors
tudor and Claude Opus 4.6
2026-03-26 20:43:24 +00:00
24cfb83144
fix(dbt): fix GIAS source column quoting and remove tests on unloaded sources
tudor and Claude Opus 4.6
2026-03-26 20:25:56 +00:00
72ef1b03b7
fix(airflow): use correct Airflow 3 env vars for multi-container JWT and Execution API
tudor and Claude Opus 4.6
2026-03-26 20:11:06 +00:00
ea160b53df
fix(airflow): point scheduler to api-server via INTERNAL_API_URL
tudor and Claude Opus 4.6
2026-03-26 17:09:17 +00:00
8a2503230f
fix(airflow): split back to separate scheduler and api-server containers
tudor and Claude Opus 4.6
2026-03-26 17:00:07 +00:00
677e80ad70
fix(airflow): generate config before starting processes, set fixed secret key
tudor and Claude Opus 4.6
2026-03-26 16:57:22 +00:00
1dbcc24434
fix(airflow): stop deleting airflow.cfg, let processes share config
tudor and Claude Opus 4.6
2026-03-26 16:49:18 +00:00
b3e4769d82
fix(airflow): set shared internal API secret key
tudor and Claude Opus 4.6
2026-03-26 16:42:02 +00:00