---
url: >-
  https://docs.nemo12.com/architecture/sdd-043-ai-teen-program/units-and-exercises.md
description: >-
  AI Teen (SDD-043): unit và lesson hai kiểu hiển thị, nội dung học thật và bài
  tập, cách lưu kết quả bài tập (SRC-1113, 1117, 1118).
---

# SDD-043 · Unit, lesson, nội dung học thật và lưu kết quả bài tập

Một phần của [SDD-043](./index.md). unit và lesson hai kiểu hiển thị, nội dung học thật và bài tập, cách lưu kết quả bài tập (SRC-1113, 1117, 1118).

## 6. Unit, lesson và hai kiểu hiển thị (SRC-1113)

> Phần hiển thị của mục này đã được thay bởi §9 (SRC-1251). Luật nội dung (Guiding Question,
> key concept, rubric 5 mức) vẫn giữ nguyên. Từ SRC-1250, tiêu đề unit là **Compelling Question**,
> Essential Question hiện ngay dưới.

Chỉ đạo chủ dự án 28.09.2026:

* **Tên unit là một Essential Question, tên lesson là một Guiding Question** (theo chuẩn
  `course-design`). Test khuôn kiểm cả hai đều kết thúc bằng dấu hỏi.
* **Key concept viết tên tiếng Anh**; bấm vào thì popover giải thích bằng tiếng Việt, kèm đúng 3 ví
  dụ và 3 ví dụ dễ gây hiểu lầm. Mỗi key concept phải được ít nhất một lesson dạy (máy kiểm).
* **Lesson có trang riêng** `/ai-teen/{course}/units/{n}/lessons/{m}`: Guiding Question, tóm tắt,
  các bước làm, thứ mang về góp vào Performance Task.
* **Performance Task gói trong MỘT card**: đề bài, bảng skill/level, rubric. Rubric: mỗi tiêu chí
  một hàng 5 card, mỗi card một mức; điện thoại cuộn ngang thay vì xếp chồng, vì đọc năm mức cạnh
  nhau mới thấy bậc thang.
* **Hiển thị theo Learner Journey.** Đứng NGOÀI (program, course, unit): toàn cảnh, để quan sát và
  quyết định; unit có nút "Vào unit" khi đã ghi danh. Đã VÀO (lesson): chế độ tập trung, không
  thanh menu, không breadcrumb, một lesson một lúc, chỉ còn thanh tiến độ các lesson, nút
  trước/sau và nút thoát về trang unit.

Nội dung (Essential Question, key concept, lesson) cho 18 unit là bản nháp do Claude soạn, chờ chủ
dự án duyệt; nằm ở `apps/learn/src/aiTeen/courses/`.

## 7. Nội dung học thật và bài tập (SRC-1117)

Chỉ đạo chủ dự án 28.09.2026: "đưa lesson thành nội dung học thật, có bài tập".

* Mỗi lesson có một `LessonBody` ở `apps/learn/src/aiTeen/lessons/<course>-u<n>.ts` (một file một
  unit, mảng xếp đúng thứ tự lesson). Tách khỏi file course vì nội dung thật dài gấp chục lần khung.
* **Phần đọc** gồm bốn loại khối: giải thích (`text`), ví dụ làm mẫu (`example`), prompt mẫu có nút
  chép (`prompt`), lời dặn (`tip`). Viết cho learner tự đọc một mình, không cần thầy cô bên cạnh.
* **Bài tập** 3-5 câu mỗi lesson, hai loại: trắc nghiệm theo tình huống (đúng một đáp án, mọi phương
  án đều có phản hồi, sai thì chọn lại được) và thực hành trên máy thật kèm checklist tự kiểm.
* Kết quả bài tập được lưu từ SRC-1118, xem §8.
* Máy kiểm (`program.test.ts`): lesson nào cũng có nội dung, có ví dụ, có cả hai loại bài tập,
  trắc nghiệm đúng một đáp án và đủ phản hồi, số lesson trong file khớp unit.
* Nội dung do Claude soạn, chờ chủ dự án duyệt.

## 8. Lưu kết quả bài tập (SRC-1118)

Chỉ đạo chủ dự án 28.09.2026: "làm tiếp phần lưu kết quả bài tập".

* Bảng `ai_teen_exercise_results` (migration 0309): một dòng là trạng thái MỚI NHẤT của một bài tập,
  gọi bằng vị trí (course, unit, lesson, exercise). Trắc nghiệm giữ phương án đã chọn và đúng/sai,
  thực hành giữ mảng tick của checklist. Không giữ lịch sử từng lần thử.
* API: `GET` và `PUT /v1/ai-teen/courses/{id}/results`, kiểm `canAccessLearner`. **Chỉ lưu khi learner
  đã ghi danh course** (409 nếu chưa); trang lesson nói rõ "Ghi danh course để lưu kết quả bài tập".
* Lưu ngay mỗi lần bấm **Kiểm tra** hoặc tick một mục; mở lại lesson thì câu trả lời, phản hồi và dấu
  tick hiện lại như cũ.
* **Lesson xong** khi mọi trắc nghiệm đã trả lời ĐÚNG và mọi checklist thực hành đã tick hết (đến
  SRC-1251; nay chặng LEARN chỉ tính trắc nghiệm, chặng PRACTICE tính checklist, xem §9). Trang
  unit gắn nhãn "Xong" cho lesson ấy; trang course hiện "x/y lesson xong" cho từng unit.
* ✍️ **Đúng/sai do client tính.** Nội dung bài tập nằm ở phía learn (§2), nên server tin cờ `correct`
  client gửi lên. Đây là bài tập để học chứ không phải bài chấm điểm, nên chưa đáng dựng bản đáp án
  thứ hai ở server; khi nội dung vào D1 thì server tự chấm.
* Nối Evidence Registry và Learner Model: xem §11 (SRC-1257).
