Question banks & test assembly
Normalize Excel and MySQL sources into a shared model for single-choice, multiple-choice, and true/false questions.
LanExamSystem covers question banks, test assembly, targeted publishing, candidate timing, recovery, centralized submission, automatic grading, reports, and archival.

The main path is built on server time, immutable snapshots, stable question and option IDs, and persistent jobs.
Normalize Excel and MySQL sources into a shared model for single-choice, multiple-choice, and true/false questions.
Select candidates by discipline and class; use server time for login windows and individual duration.
Randomized heartbeats report IP, online state, timing state, progress, and last synchronization.
Each answer is written to local SQLite; server checkpoints support device replacement without overwriting newer local state.
Candidate DTOs and packages exclude correct answers and grading rules at the type level.
Persistent grading jobs produce teacher results, PDF/HTML reports, hashes, and audit evidence.
The client saves per-question answers locally. Checkpoints are also synchronized to the server; recovery compares state so an older remote snapshot cannot overwrite newer local work.

Question definitions become an immutable AttemptSnapshot, then map separately to the candidate view and server grading snapshot.
Compatibility comes from the current target frameworks and project documentation, not marketing assumptions.