docs: rewrite for the unified repo and record the parity gate

The docs still described two standalone projects with separate frontends,
separate parsers and three Vite variants. Rewritten around what the repo now
is, merging both projects' copies rather than keeping one and discarding the
other — deployment-guide.md and system-architecture.md existed in both and
documented different pipelines.

  project-overview.md    goal, scope, constraints, the four datasets, history
  system-architecture.md data flow, canonical schema, routing, how one
                         frontend serves both exam years without branching
  data-pipeline.md       per-dataset Excel formats, the three 2016 layouts,
                         overflow-sheet gotcha, expected row counts
  deployment-guide.md    the single-build workflow, adding a dataset,
                         why no uncompressed database can ship

Records the release gate in plans/reports/parser-parity-result.md: row counts,
all 18 pre-existing per-column non-NULL counts and the deterministic student
samples are identical across all four datasets, against databases decompressed
from the exact bytes the pipeline publishes. The 1,691 recovered
foreign-language scores are documented with the evidence they are real.

Also drops a machine-specific absolute path from a comment in
format_detect_2016.rs. The build-database.js citations there are kept: that
file no longer exists in this repo, but the references explain why several
parsing rules look arbitrary.
This commit is contained in:
tiennm99 committed 2026-08-13 13:25:46 +07:00
1 parent a5904a5d78
commit 3fcfe4862d
18 files changed
+591 -448

No files matched your search

+4 -1
View File
@@ -19,7 +19,10 @@
/// SBD(0) HO_TEN(1) NGAY_SINH(2) TEN_CUMTHI(3) GIOI_TINH(4) DIEM_THI(5)
/// → JS: build-database.js:149–151 DEFAULT_MAP + processMappedRow
///
/// JS citations are line numbers in /config/workspace/tiennm99/thptqg2016/scripts/build-database.js.
/// The `build-database.js` citations throughout this file refer to the Node
/// script this parser replaced, in the original standalone thptqg2016 repo.
/// That file no longer exists here; the references are kept because they
/// explain why several of the rules below look arbitrary.
use calamine::Data;
use crate::transform::{parse_scores, to_ascii, CompiledPatterns, ParsedRow};