---
url: https://docs.nemo12.com/backlog.md
description: >-
  Hàng chờ việc đã nhận nhưng hoãn: kho câu hỏi 16 câu/bài, có nên lên 24-32
  câu, chỉnh bộ trường khai lúc vào và các việc khác.
---

# Việc đã nhận nhưng hoãn lại

Sổ ghi những việc **chủ dự án đã đồng ý làm nhưng chưa tới lượt**, để không rơi mất giữa các phiên.
Khác [intake](intake.md) (ghi việc đã làm xong) và khác [open-questions](open-questions/index.md) (ghi câu
hỏi chưa có câu trả lời): ở đây là việc **đã rõ phải làm gì, chỉ chưa làm**.

Xong việc nào thì **xoá khỏi đây** và ghi một dòng vào [intake](intake.md) — không để hai chỗ cùng
kể một chuyện.

## Kho câu hỏi — soạn cho đủ 16 câu/bài

Mốc 16 là điều kiện của [luật 10 câu](architecture/sdd-010-lab-platform/index.md) (16 − 6 câu để dành đo = 10 câu luyện).
Số liệu cập nhật tự động ở [item-coverage](quality/reports/item-coverage.md).

| Môn | Bài | Câu đang có | Cần soạn thêm | Trạng thái |
| --- | ---: | ---: | ---: | --- |
| `genai` | 18 | 288 | 0 | ✅ xong 2026-08-16 (SRC-155) |
| `math` — Số học + Đại số | 55 | 880 | 0 | ✅ xong 2026-08-16 (SRC-159) |
| `math` — Hình học | 28 | 280 | 168 | 🔄 **đang làm** — phần còn lại của Toán |
| `ap` | 19 | 72 | 232 | ⏸ chờ |
| `ielts` | 18 | 72 | 216 | ⏸ chờ |
| `sat` | 18 | 76 | 212 | ⏸ chờ |
| `english` | 36 | 360 | 216 | ⏸ chờ |
| `vietnamese` | 35 | 350 | 210 | ⏸ chờ |
| `physics` | 17 | 170 | 102 | ⏸ chờ |
| `biology` | 16 | 160 | 96 | ⏸ chờ |
| `chemistry` | 14 | 140 | 84 | ⏸ chờ |

**Cách soạn cho Toán**: bài tính toán dùng **bộ sinh có tham số** (`gen-items-math-*.mjs`) — đáp án và cả ba phương án nhiễu đều được TÍNH RA từ cùng bộ tham số, nên không có rủi ro sai đáp án do nhẩm tay. Hình học có phần chứng minh/quỹ tích không sinh được, phải soạn tay.

Thứ tự đề xuất sau Toán: **AP · IELTS · SAT** (ba môn kho mỏng nhất, 660 câu), rồi English ·
Vietnamese, cuối cùng ba môn khoa học.

Cách làm đã chốt: soạn ra `scripts/items-topup-<môn>.json`, kiểm và nạp bằng `seed-items-topup.mjs`
(script chặn nạp nếu không đủ 16 câu, trùng đề với kho cũ, hoặc thiếu câu phân loại cho phần để dành đo).

## Kho câu — có nên vượt mốc 16 lên 24–32?

Chủ dự án hỏi 2026-08-16: *"vì sao không soạn gấp đôi rồi randomize?"* Đã phân tích, **chưa chốt**:

* Với 16 câu mà mỗi phiên hiện 10, learner thấy **62% kho** — randomize gần như vô nghĩa. Ở 32 câu
  thì một phiên chỉ chạm 31%.
* Nhưng nhân đôi đồng loạt thì quá ~20 câu/bài người soạn bắt đầu viết **biến thể diễn đạt của cùng
  một câu hỏi**: nhìn thì đa dạng, đo vẫn đúng một thứ, và với bài đo còn làm độ tin cậy **cao giả tạo**.
* Đề xuất: **16 là sàn cho mọi bài**; **24–32 chỉ cho bài lưu lượng cao và bài thao tác** (tính toán,
  ngữ pháp — chỗ luyện lặp là bình thường); bài tính toán dùng **bộ sinh câu có tham số** thay vì soạn tay.
* Lưu ý không được bỏ: kho to đến mấy thì **vẫn phải tách phần để dành cho bài đo** (SDD-010 §12) —
  kho lớn làm việc tách rẻ hơn chứ không bỏ được.

## Khai báo lúc mới vào — chỉnh bộ trường tối thiểu

Chủ dự án hỏi 2026-08-16. Đã phân tích, **chưa làm**:

* **Bỏ năm sinh**: ở Việt Nam lớp và tuổi gắn chặt, năm sinh gần như không thêm thông tin cho việc
  dựng model, chỉ thêm một bước phải điền.
* **Thêm tháng thi**: không có mốc này thì Planning Engine không xếp được nhịp. Trường `exam_date_approx`
  đã có sẵn trong API, chỉ cần đưa lên bước khai báo đầu.
* **Thêm quỹ thời gian mỗi tuần**: `planning.ts` đang rơi về mặc định **45 phút/ngày** và tự ghi lý do
  *"chưa ai khai, tạm lấy 45 phút/ngày"* — mọi kế hoạch dựng trên con số đó là kế hoạch trên giấy.
* Bộ tối thiểu đề nghị: **lớp · tỉnh + trường/chuyên nhắm tới · tháng thi · số buổi (giờ) mỗi tuần**.
* Nguyên tắc giữ kèm: khai báo là **điểm khởi đầu, không phải kết luận** — Learner Model dựng từ khai
  báo mang trạng thái "chưa đo" để bằng chứng thật ghi đè lên nhanh.

## Việc nhỏ còn treo

* Bỏ dòng "Đáp án đúng: …" rồi nhưng **ô đáp án đúng vẫn được tô xanh**, nên đáp án vẫn lộ trước lần
  gặp lại. Muốn giấu hẳn thì phải bỏ luôn phần tô màu — chờ chủ dự án quyết.

* **Token Cloudflare thiếu quyền `r2:read`** nên bước `verify-bindings` của CI không liệt kê được
  bucket R2: mọi lượt chạy đều kèm cảnh báo *"R2 chỉ được kiểm ở lớp A+B"*. Nghĩa là **lớp C —
  đối chiếu binding khai trong `wrangler.jsonc` với bucket CÓ THẬT trên Cloudflare — đang không
  chạy cho R2**, nên một binding trỏ vào bucket không tồn tại sẽ lọt tới lúc chạy thật mới vỡ.
  Việc TAY, không sửa được bằng code: thêm quyền `Workers R2 Storage: Read` cho token đang đặt ở
  secret `CLOUDFLARE_API_TOKEN`, rồi chạy lại một lượt CI để xác nhận cảnh báo tắt.
  Ghi nhận trong [Audit #014](quality/audits/audit-2026-09-08.md) (SRC-688, 2026-09-08).
