---
url: https://docs.nemo12.com/reference/data-dictionary/onboarding-models.md
description: >-
  Từ điển dữ liệu D1, domain Onboarding & Models: 4 bảng, learner_context_models
  tới school_enrollments; cột, kiểu, khoá ngoại, index.
---

# Data Dictionary · Onboarding & Models

> ⚙️ **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ạy `npm run gen:reference`.

Thuộc [Data Dictionary](../data-dictionary.md). 4 bảng, `learner_context_models` tới `school_enrollments`.

## `learner_context_models`

Learner Context Model — SDD-002 §3, SDD-007 §6. Trạng thái ngắn hạn/hoàn cảnh.

migration: `0003_onboarding_models.sql`

| Cột | Kiểu | Ràng buộc / ghi chú |
| --- | --- | --- |
| `learner_id` | TEXT | PRIMARY KEY REFERENCES learners(id) |
| `active_school_code` | TEXT | — |
| `current_grade` | INTEGER | — |
| `current_school` | TEXT | — |
| `goal_blueprint_id` | TEXT | — |
| `deadline` | TEXT | — |
| `available_minutes_per_week` | INTEGER | — |
| `energy` | TEXT | — |
| `updated_at` | TEXT | NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')) |

**Khóa ngoại:** `learner_id` → `learners`

## `learner_exam_targets`

Shark exam targets — REQ-ONB-07, SDD-011 §2b. Nhiều trường / nhiều lịch thi.

migration: `0003_onboarding_models.sql`

| Cột | Kiểu | Ràng buộc / ghi chú |
| --- | --- | --- |
| `id` | TEXT | PRIMARY KEY |
| `learner_id` | TEXT | NOT NULL REFERENCES learners(id) |
| `target_school_id` | TEXT | — |
| `target_school_name` | TEXT | NOT NULL |
| `province` | TEXT | — |
| `specialist_subject` | TEXT | NOT NULL |
| `non_specialist_subjects_json` | TEXT | — |
| `exam_date_approx` | TEXT | — |
| `priority` | INTEGER | NOT NULL DEFAULT 1 |
| `status` | TEXT | NOT NULL DEFAULT 'active' CHECK (status IN ('active','dropped')) |
| `created_at` | TEXT | NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')) |
| `target_kind` | TEXT | NOT NULL DEFAULT 'school' — thêm ở 0010_target_kinds_whale_stories.sql |
| `target_score` | TEXT |  — thêm ở 0010_target_kinds_whale_stories.sql |
| `exam_subjects_json` | TEXT |  — thêm ở 0072_exam_target_subjects.sql |

**Khóa ngoại:** `learner_id` → `learners`

**Index:** `idx_exam_targets_learner`(learner_id)

## `learner_models`

Learner Model (versioned) — SDD-002 §2/§16. Trạng thái tính toán, khởi tạo trước diagnosis.

migration: `0003_onboarding_models.sql`

| Cột | Kiểu | Ràng buộc / ghi chú |
| --- | --- | --- |
| `learner_id` | TEXT | NOT NULL REFERENCES learners(id) |
| `version` | INTEGER | NOT NULL DEFAULT 1 |
| `algorithm_version` | TEXT | NOT NULL DEFAULT 'v1' |
| `generated_at` | TEXT | NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')) |
| `evidence_cutoff` | TEXT | — |
| `summary_json` | TEXT | — |
| — | *table constraint* | `PRIMARY KEY (learner_id, version)` |

**Khóa ngoại:** `learner_id` → `learners`

## `school_enrollments`

Learner enroll vào (nhiều) school — REQ-ONB-01. School là context, không phải DB riêng.

migration: `0003_onboarding_models.sql`

| Cột | Kiểu | Ràng buộc / ghi chú |
| --- | --- | --- |
| `learner_id` | TEXT | NOT NULL REFERENCES learners(id) |
| `school_code` | TEXT | NOT NULL CHECK (school_code IN ('turtle','shark','octopus','squid','ray','whale')) |
| `status` | TEXT | NOT NULL DEFAULT 'active' CHECK (status IN ('active','paused','left')) |
| `created_at` | TEXT | NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')) |
| — | *table constraint* | `PRIMARY KEY (learner_id, school_code)` |

**Khóa ngoại:** `learner_id` → `learners`
