Trải nghiệm học theo tinh thần IB
Trang này đã bị thay thế
Mô hình 5 chặng (engage → explore → explain → elaborate → evaluate) mô tả ở đây đã bị gỡ khỏi hệ thống ngày 28.08.2026, cùng route /concepts/:id và các component LessonJourney, InquiryStep.
Chuẩn đang chạy: Trải nghiệm học của một bài.
Giữ trang này làm hồ sơ vì phần tinh thần của nó không sai, người học tự xây dựng hiểu biết trước khi khái niệm được gọi tên, và mô hình mới kế thừa đúng tinh thần đó. Cái bị bỏ là cách hiện thực: nội dung 5E ghép tại chỗ bằng mã từ context_json nên không ai sửa nổi một câu.
Chuẩn thiết kế bài học trên Tokyo.
Mạch trải nghiệm
Trước đây bài học đi theo Định nghĩa → Ví dụ → Trắc nghiệm → Nhớ. Nay đổi thành:
Vấn đề → Dự đoán → Khám phá → Quy luật → Khái niệm → Bằng chứng → Lập luận → Chuyển giao → Phản tưNgười học tự xây dựng và bảo vệ hiểu biết, thay vì học thuộc đáp án.
Ngữ pháp màn hình
Bài học là chuỗi màn thuộc tám loại. Thứ tự chính là phần sư phạm: người học phải cam kết một phán đoán và giải thích lý do trước khi khái niệm được gọi tên.
| Loại màn | Người học làm gì | Ràng buộc |
|---|---|---|
predict | Chọn 1–2 nhân vật trong tình huống nhiều nhân vật | Không có đáp án đúng; phản hồi chỉ đào sâu lý do |
reason | Viết vì sao mình chọn như vậy | Bắt buộc đi ngay sau predict |
rank | Tự xếp 6–8 trường hợp thành continuum | Không cho sẵn nhóm |
reveal | Đối chiếu với một cách nhìn khả dĩ | Chỉ mở sau khi đã trả lời |
concept | Lần đầu thấy tên khái niệm + khung tiến triển | Tên khái niệm không được xuất hiện trước màn này |
match | Ghép bằng chứng vào đúng nhóm | Kèm câu hỏi bao hàm ("mọi X đều là Y?") |
judge | Phán một case mới và nêu bằng chứng | Luôn có phương án "Chưa đủ bằng chứng" |
reflect | So sánh hiểu biết trước và sau | Bắt buộc có câu "ban đầu bạn nghĩ… là gì" |
Cấu trúc bắt buộc theo phase
| Phase | Màn | Số lượng |
|---|---|---|
| Khơi mở | predict | 1 |
| Tự khám phá | reason → rank | 2 |
| Hiểu rõ | concept → match | 2 |
| Vận dụng | judge × 3–4 | 3–4 |
| Tự kiểm | judge → reflect | 2 |
Tổng khoảng 10–11 màn mỗi concept.
Bốn bất biến: kiểm bằng code
Không dựa vào prompt
Kinh nghiệm nhiều vòng: dặn dò trong prompt không giữ được. Mô hình vi phạm lặp lại. Mọi ràng buộc dưới đây đều được kiểm hoặc tự chèn tại thời điểm ghi vào database.
- Không lộ tên khái niệm trước màn
concept, kiểm bằng cách quétname_encủa cả ba khái niệm trong unit qua mọi màn thuộcengagevàexplore. Vi phạm thì sinh lại (tối đa 3 lần). - Vận dụng phải có ít nhất 3 màn
judge, ép bằng schema, dùng literal type cho từng phase thay vì enum để mô hình không chọn được đường dễ. - Mọi màn
judgecó phương án "Chưa đủ bằng chứng", tự chèn bằng code nếu mô hình quên, không sinh lại. - Phản tư có câu so sánh trước/sau, tự chèn bằng code nếu không có câu nào hỏi điều đó.
Chỉ chặn tên tiếng Anh (Lead / Prospect / Customer). Tên tiếng Việt như "khách hàng tiềm năng" là cụm nói thường ngày, chặn cả nó sẽ làm hỏng kịch bản mà không được gì về mặt sư phạm.
Quy tắc nội dung
- Độ dài
bodytối đa 90 từ mỗi màn, ngắt 2 đoạn. - Câu hỏi mở luôn hỏi lập luận và bằng chứng, không hỏi định nghĩa.
- Không lặp lại nội dung của
revealtrongbody, có hàmstripDuplicatesxoá câu trùng khi ghi. - Không để chữ của đáp án đúng xuất hiện trong câu hỏi (
leaksAnswerloại bỏ item vi phạm).
Chuyển động
Dùng thư viện motion (motion/react). Nguyên tắc:
- Chuyển màn: mờ dần + trượt ngang 16px, thời lượng 280ms, easing
[0.16, 1, 0.3, 1]. - Thanh tiến độ:
scaleXvớioriginX: 0, cùng transition. - Panel đối chiếu: mờ dần + trượt lên 8px.
- Luôn tôn trọng
useReducedMotion(), người dùng bật giảm chuyển động thìduration: 0.
Chuyển động ở đây để giữ mạch "đang đi qua một chuỗi". Không dùng hiệu ứng trang trí.
Nơi cài đặt
| Thành phần | Tệp |
|---|---|
| Engine soạn nội dung | api.conan.school/src/domains/course-intelligence/authoring.ts |
| Kiểm bất biến | cùng tệp, hàm assertJourneyInvariants |
| Giao diện bài học | com.conan.school/app/components/course/LessonJourney.tsx |
| Trang concept | com.conan.school/app/routes/concepts.$id.tsxlearn.lesson.$lessonId.tsx |