Giao diện
Hướng dẫn viết nội dung
TL;DR — Lessons live in shared/curriculum/lessons/*. Write each lesson with the lesson() builder; the loader validates the design. Strings are always [vi, en].
1. Thêm hoặc sửa một buổi
- Mở
shared/curriculum/lessons/<khóa>/lNN.js. - Sửa
title,gq,lo,plan,materials,steps. - Chạy
npm run check. Lỗi sẽ báo bằng tiếng Việt (ví dụ "LO C1.4 chưa có bước đánh giá"). - Mở
npm run dev:appđể xem,npm run dev:docsđể xem trang tài liệu cập nhật.
2. Các hàm dựng bước
js
import { lesson, info, choice, text, link, scale } from '../../dsl.js';
info('wonder', [vi, en], { icon: '🧭' }) // một ý
choice('explore', [qVi, qEn], [[aVi, aEn], …], answerIndex, [whyVi, whyEn], { assess: true, lo: 'C1.1' })
text('abstract', [qVi, qEn], { hint, rubric: [[vi, en], …], assess: true, lo })
link('redesign', [qVi, qEn], { rubric, assess: true, lo }) // URL hoặc mô tả sản phẩm
scale([qVi, qEn]) // mức tự tin 1–5- Tham số đầu là chặng:
wonder,explore,represent,abstract,redesign,reflect. Phải xuất hiện đúng thứ tự và đủ cả 6. answerIndex = nullnghĩa là câu hỏi quan điểm: chỉ ghi nhận, không chấm.- Bước đánh giá tổng kết cần cả
assess: truevàlo.
3. Nguyên tắc viết
| Nguyên tắc | Ví dụ |
|---|---|
| Một màn, một ý | Tách câu dài thành hai màn |
| Câu hỏi trước, định nghĩa sau | Cho học viên thử và viết trước khi hiện "Nói gọn: …" |
| Đáp án sai phải hợp lý | Tránh lựa chọn đùa gây lộ đáp án |
| Phản hồi giải thích vì sao, không chỉ đúng/sai | why luôn trả lời "vì sao" |
| Rubric là hành vi quan sát được | "Nêu 2 màu cụ thể" thay vì "Viết tốt" |
| Tên công cụ và thông báo giới hạn dùng ví dụ minh họa | Không trích nguyên văn khi chưa kiểm chứng |
4. Thay đổi cấu trúc
| Muốn đổi | Sửa tại |
|---|---|
| 10 LO của khóa | shared/curriculum/courses.js |
| Câu chữ framework | shared/curriculum/framework.js |
| 6 chặng, phút, CRA, IB | shared/curriculum/pedagogy.js |
| Màu, font | shared/curriculum/brand.js và learning-experience/src/styles.css |