mirror of
https://github.com/tiennm99/thptqg.git
synced 2026-10-11 03:13:48 +00:00
cd4b07f9cb9401b7a6782953d36e6e59f3473f19
The 2016 and 2017 parsers were the same crate with divergent SQL. DDL, INSERT and the subject regex table lived in each dataset's TOML config, so four copies had to be kept in step by hand — which is how the two schemas drifted apart. Move all of it into src/schema.rs as a single 22-column definition: 6 identity columns (adding ten_cum_thi and gioi_tinh, previously 2016-only) and 16 subject columns (the union of both exam years). Columns a dataset carries no data for bind NULL, costing ~1 byte per row. This collapses writer.rs to one insert path: insert_row_2016, SCORE_FIELDS_2016, SCORE_FIELDS_2017 and the SCORE_FIELDS alias all go away. Configs shrink to the parse rules that genuinely vary per dataset — sheet mode, column indices, SBD validation, header tokens, blank-row stripping — and carry no SQL at all. Config parsing now denies unknown fields, so a leftover [schema] block fails loudly instead of looking effective while schema.rs drives the build. idx_ten_cum_thi is partial, so it holds zero entries on the three 2017 datasets where the column is always NULL. Adds db-stats.js and verify-parity.js to prove no data moved: row counts, per-column non-NULL counts and a deterministic student sample are compared against databases built from the previous code. Verified across all four datasets — row counts, every pre-existing column count, and all sampled students are identical. Database size grows 1.4-2.2%.
thptqg
Tra cứu điểm thi THPT Quốc gia — exam-score lookup for Vietnam's national high
school graduation exam. Client-side SQL (sql.js) over a SQLite database built
from the ministry's raw .xls score files by the Rust xlsxread CLI.
Served as one site at tiennm99.github.io/thptqg.
| Directory | Year | Size | Site |
|---|---|---|---|
2016/ |
THPT QG 2016 — 877,461 candidates | ~50 MB raw data | /2016/ |
2017/ |
THPT QG 2017 — ~861,000 candidates | ~117 MB raw data | /2017/ (+ old, old2 generations) |
Each year was a standalone repository (thptqg2016, thptqg2017), merged here
with full history. Each keeps its own tools/xlsxread copy because the raw
data formats differ per year.
The Deploy to GitHub Pages workflow builds both years' databases and site
bundles and publishes them behind a root index.
Description
Tra cứu điểm thi THPT Quốc gia 2016–2017 — 1,7 triệu thí sinh · Truy vấn SQL client-side với sql.js
Readme
Apache-2.0
165 MiB
0 Stars
1 Watchers
0 Forks
Languages
Go
67.1%
JavaScript
18.9%
Svelte
11.6%
CSS
2.2%
HTML
0.2%