Data Dictionary · Tri thức & Learner Model
⚙️ Trang này sinh tự động từ source code bằng
scripts/gen-reference.mjs— đừng sửa tay, sửa code rồi chạynpm run gen:reference.
Thuộc Data Dictionary. 11 bảng, assessment_responses tới subjects.
assessment_responses
migration: 0002_knowledge_learner.sql
| Cột | Kiểu | Ràng buộc / ghi chú |
|---|---|---|
id | TEXT | PRIMARY KEY |
session_id | TEXT | NOT NULL REFERENCES assessment_sessions(id) |
learner_id | TEXT | NOT NULL |
item_id | TEXT | NOT NULL |
subject_id | TEXT | NOT NULL |
node_id | TEXT | NOT NULL |
selected_index | INTEGER | NOT NULL |
correct | INTEGER | NOT NULL |
response_ms | INTEGER | — |
created_at | TEXT | NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')) |
Khóa ngoại: session_id → assessment_sessions
Index: idx_responses_session(session_id) · idx_responses_learner_time(learner_id, created_at DESC, item_id) · idx_responses_learner_subject(learner_id, subject_id, created_at DESC)
assessment_sessions
Assessment sessions + responses.
migration: 0002_knowledge_learner.sql
| Cột | Kiểu | Ràng buộc / ghi chú |
|---|---|---|
id | TEXT | PRIMARY KEY |
learner_id | TEXT | NOT NULL REFERENCES learners(id) |
subject_id | TEXT | NOT NULL |
kind | TEXT | NOT NULL DEFAULT 'diagnostic' CHECK (kind IN ('diagnostic','placement','practice','mastery_check')) |
status | TEXT | NOT NULL DEFAULT 'in_progress' CHECK (status IN ('in_progress','completed','abandoned')) |
item_ids_json | TEXT | NOT NULL |
created_at | TEXT | NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')) |
completed_at | TEXT | — |
adaptive_json | TEXT | — thêm ở 0069_diagnostic_adaptive.sql |
Khóa ngoại: learner_id → learners
Index: idx_sessions_learner(learner_id, subject_id)
blueprints
migration: 0002_knowledge_learner.sql
| Cột | Kiểu | Ràng buộc / ghi chú |
|---|---|---|
id | TEXT | PRIMARY KEY |
subject_id | TEXT | NOT NULL REFERENCES subjects(id) |
title_vi | TEXT | NOT NULL |
kind | TEXT | NOT NULL CHECK (kind IN ('conditional','specialized')) |
cut_score | REAL | — |
max_score | REAL | — |
description | TEXT | — |
Khóa ngoại: subject_id → subjects
items
Item Bank (SDD-004 §9) — question tái sử dụng cho diagnostic/practice/assessment.
migration: 0002_knowledge_learner.sql
| Cột | Kiểu | Ràng buộc / ghi chú |
|---|---|---|
id | TEXT | PRIMARY KEY |
subject_id | TEXT | NOT NULL |
node_id | TEXT | NOT NULL |
role | TEXT | NOT NULL CHECK (role IN ('canonical','variant','boundary','discriminator')) |
difficulty | REAL | NOT NULL |
prompt | TEXT | NOT NULL |
options_json | TEXT | NOT NULL |
correct_index | INTEGER | NOT NULL |
misconception | TEXT | — |
source | TEXT | NOT NULL DEFAULT 'chuyenchon' |
status | TEXT | NOT NULL DEFAULT 'published' |
| CHECK (status IN ('candidate','published','retired')) — thêm ở 0032_content_lifecycle.sql | ||
quality_json | TEXT | — thêm ở 0032_content_lifecycle.sql |
quality_score | REAL | — thêm ở 0032_content_lifecycle.sql |
evaluator_count | INTEGER | NOT NULL DEFAULT 0 — thêm ở 0032_content_lifecycle.sql |
created_at | TEXT | — thêm ở 0032_content_lifecycle.sql |
updated_at | TEXT | — thêm ở 0032_content_lifecycle.sql |
published_at | TEXT | — thêm ở 0032_content_lifecycle.sql |
published_by | TEXT | — thêm ở 0032_content_lifecycle.sql |
screen_flags_json | TEXT | — thêm ở 0032_content_lifecycle.sql |
review_status | TEXT | NOT NULL DEFAULT 'unreviewed' — thêm ở 0049_experience_review.sql |
last_reviewed_at | TEXT | — thêm ở 0049_experience_review.sql |
answer_kind | TEXT | NOT NULL DEFAULT 'mcq' — thêm ở 0073_item_answer_kinds.sql |
answer_spec_json | TEXT | — thêm ở 0073_item_answer_kinds.sql |
purpose_vi | TEXT | — thêm ở 0178_item_purpose.sql |
Index: idx_items_node(subject_id, node_id) · idx_items_status(status, subject_id, node_id) · idx_items_quality(status, quality_score) · idx_items_node_status(node_id, status) · idx_items_prompt_norm(LOWER(TRIM(prompt)
learner_evidence
Evidence Registry (SDD-002 §5) — immutable, idempotency key.
migration: 0002_knowledge_learner.sql
| Cột | Kiểu | Ràng buộc / ghi chú |
|---|---|---|
id | TEXT | PRIMARY KEY |
event_id | TEXT | NOT NULL UNIQUE |
learner_id | TEXT | NOT NULL REFERENCES learners(id) |
subject_id | TEXT | NOT NULL |
node_id | TEXT | NOT NULL |
source | TEXT | NOT NULL |
type | TEXT | NOT NULL |
observed_performance | REAL | NOT NULL |
reliability | REAL | NOT NULL |
difficulty | REAL | — |
payload_json | TEXT | — |
occurred_at | TEXT | NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')) |
mastery_before | REAL | — thêm ở 0044_evidence_mastery_delta.sql |
mastery_after | REAL | — thêm ở 0044_evidence_mastery_delta.sql |
Khóa ngoại: learner_id → learners
Index: idx_evidence_learner_node(learner_id, subject_id, node_id) · idx_evidence_learner_time(learner_id, occurred_at)
learner_goals
Learner goal (chọn blueprint mục tiêu) — SDD-002 §3, SDD-008 §5.
migration: 0002_knowledge_learner.sql
| Cột | Kiểu | Ràng buộc / ghi chú |
|---|---|---|
learner_id | TEXT | NOT NULL REFERENCES learners(id) |
blueprint_id | TEXT | NOT NULL REFERENCES blueprints(id) |
status | TEXT | NOT NULL DEFAULT 'active' CHECK (status IN ('active','achieved','dropped')) |
created_at | TEXT | NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')) |
| — | table constraint | PRIMARY KEY (learner_id, blueprint_id) |
Khóa ngoại: learner_id → learners · blueprint_id → blueprints
learner_skill_state
Learner mastery state (SDD-002 §2, SDD-007 §14) — computed state, mastery/confidence 0..1.
migration: 0002_knowledge_learner.sql
| Cột | Kiểu | Ràng buộc / ghi chú |
|---|---|---|
learner_id | TEXT | NOT NULL REFERENCES learners(id) |
subject_id | TEXT | NOT NULL |
node_id | TEXT | NOT NULL |
mastery | REAL | NOT NULL DEFAULT 0 |
confidence | REAL | NOT NULL DEFAULT 0 |
trajectory | TEXT | NOT NULL DEFAULT 'unknown' CHECK (trajectory IN ('improving','stable','declining','unknown')) |
evidence_count | INTEGER | NOT NULL DEFAULT 0 |
last_evidence_at | TEXT | — |
updated_at | TEXT | NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')) |
| — | table constraint | PRIMARY KEY (learner_id, subject_id, node_id) |
Khóa ngoại: learner_id → learners
skill_edges
migration: 0002_knowledge_learner.sql
| Cột | Kiểu | Ràng buộc / ghi chú |
|---|---|---|
subject_id | TEXT | NOT NULL |
from_node | TEXT | NOT NULL |
to_node | TEXT | NOT NULL |
type | TEXT | NOT NULL CHECK (type IN ('prereq','related')) |
| — | table constraint | PRIMARY KEY (subject_id, from_node, to_node, type) |
Index: idx_skill_edges_to(subject_id, to_node)
skill_nodes
migration: 0002_knowledge_learner.sql
| Cột | Kiểu | Ràng buộc / ghi chú |
|---|---|---|
subject_id | TEXT | NOT NULL REFERENCES subjects(id) |
id | TEXT | NOT NULL |
strand | TEXT | NOT NULL |
grade | INTEGER | — |
level | INTEGER | — |
title_vi | TEXT | NOT NULL |
title_en | TEXT | — |
description | TEXT | — |
effort_minutes | INTEGER | — |
lab_slug | TEXT | — |
source | TEXT | NOT NULL DEFAULT 'chuyenchon' |
| — | table constraint | PRIMARY KEY (subject_id, id) |
title_en | TEXT | — thêm ở 0012_bilingual_taxonomy.sql |
unit | TEXT | — thêm ở 0020_node_units.sql |
unit_order | INTEGER | — thêm ở 0020_node_units.sql |
module | TEXT | — thêm ở 0023_node_modules.sql |
module_order | INTEGER | — thêm ở 0023_node_modules.sql |
module_en | TEXT | — thêm ở 0025_module_unit_en.sql |
unit_en | TEXT | — thêm ở 0025_module_unit_en.sql |
module_short | TEXT | — thêm ở 0042_short_names.sql |
module_short_en | TEXT | — thêm ở 0042_short_names.sql |
unit_short | TEXT | — thêm ở 0042_short_names.sql |
unit_short_en | TEXT | — thêm ở 0042_short_names.sql |
review_status | TEXT | NOT NULL DEFAULT 'unreviewed' — thêm ở 0049_experience_review.sql |
hidden_at | TEXT | — thêm ở 0049_experience_review.sql |
hidden_reason | TEXT | — thêm ở 0049_experience_review.sql |
last_reviewed_at | TEXT | — thêm ở 0049_experience_review.sql |
reviewed_by | TEXT | — thêm ở 0049_experience_review.sql |
objective_vi | TEXT | — thêm ở 0049_experience_review.sql |
depth_level | TEXT | — thêm ở 0049_experience_review.sql |
bloom | TEXT | — thêm ở 0049_experience_review.sql |
pedagogy | TEXT | — thêm ở 0049_experience_review.sql |
prerequisites_note | TEXT | — thêm ở 0049_experience_review.sql |
common_misconception | TEXT | — thêm ở 0049_experience_review.sql |
why_pain | TEXT | — thêm ở 0053_unit_why.sql |
why_gain | TEXT | — thêm ở 0053_unit_why.sql |
why_example | TEXT | — thêm ở 0053_unit_why.sql |
can_do | TEXT | — thêm ở 0054_unit_can_do.sql |
i_will | TEXT | — thêm ở 0057_i_will.sql |
module_i_will | TEXT | — thêm ở 0057_i_will.sql |
unit_evidence | TEXT | — thêm ở 0065_unit_pearl_notes.sql |
unit_misconception | TEXT | — thêm ở 0065_unit_pearl_notes.sql |
Khóa ngoại: subject_id → subjects
Index: idx_skill_nodes_subject_grade(subject_id, grade) · idx_skill_nodes_unit(subject_id, strand, grade, unit_order) · idx_skill_nodes_module(subject_id, strand, module_order, unit_order) · idx_skill_nodes_course_source(source, subject_id)
strands
migration: 0002_knowledge_learner.sql
| Cột | Kiểu | Ràng buộc / ghi chú |
|---|---|---|
subject_id | TEXT | NOT NULL REFERENCES subjects(id) |
code | TEXT | NOT NULL |
name_vi | TEXT | NOT NULL |
short | TEXT | — |
accent | TEXT | — |
icon | TEXT | — |
| — | table constraint | PRIMARY KEY (subject_id, code) |
name_en | TEXT | — thêm ở 0012_bilingual_taxonomy.sql |
short_en | TEXT | — thêm ở 0042_short_names.sql |
ord | INTEGER | — thêm ở 0043_strand_order.sql |
i_will | TEXT | — thêm ở 0057_i_will.sql |
big_idea | TEXT | — thêm ở 0066_strand_big_idea.sql |
Khóa ngoại: subject_id → subjects
Index: idx_strands_ord(subject_id, ord)
subjects
Migration 0002 — Knowledge Registry + Skill Graph + Item Bank + Learner Mastery. SDD-003 §2-3 (registry, graph), SDD-004 §9 (item bank), SDD-002 §2/§5 (learner state, evidence). Canonical skill (SDD-007 §5): PK (subject_id, id); school chỉ thêm context, không nhân bản.
migration: 0002_knowledge_learner.sql
| Cột | Kiểu | Ràng buộc / ghi chú |
|---|---|---|
id | TEXT | PRIMARY KEY |
name_vi | TEXT | NOT NULL |
source | TEXT | NOT NULL DEFAULT 'chuyenchon' |
name_en | TEXT | — thêm ở 0012_bilingual_taxonomy.sql |