📌 Đây là tài liệu đề xuất kỹ thuật (technical proposal) cho Linear Tool, bổ trợ cho PRD sản phẩm: Exercise AI — Type 2: Linear Tool. Phần yêu cầu sản phẩm nằm ở PRD đó.
Bối cảnh & lý do
Linear Tool là một dạng bài Speaking nâng cao trong nhóm Exercise AI. Khác với “Speak a Sentence” (nói từng câu rời), ở đây học viên tự dựng một sơ đồ ý tưởng phân nhánh cho một chủ đề; AI biến từng ý thành câu tiếng Anh hoàn chỉnh; rồi học viên luyện nói cả đoạn và được chấm phát âm ngay trên câu.
Tinh thần của bài: dạy học viên cách triển khai ý (nguyên nhân → hệ quả → mô tả) và nói thành một bài mạch lạc — không chỉ phát âm đúng một câu lẻ.
Ai dùng & khi nào
- Người dùng chính: học viên trong một khóa học trên LMS, mở bài Exercise AI dạng Linear Tool từ My Classes.
- Bối cảnh: học viên tự luyện theo nhịp của mình — brainstorm ý rồi nói cả bài trong một lần ngồi.
Hai giai đoạn (botnav)
Bài có 2 chế độ chuyển qua lại ở thanh dưới đáy:
- Lên ý tưởng — dựng sơ đồ nhánh và để AI sinh câu.
- Luyện nói cả bài — nói từng câu / cả đoạn và được chấm.
Flow làm bài của học viên
- Check mic (pre-test): kiểm tra mic chạy trước khi vào bài.
- Vào bài & Onboarding: màn hình khởi đầu; onboarding bật lên hướng dẫn dùng công cụ sau khi học viên điền input và ngừng gõ ~4 giây.
- Giai đoạn 1 — Lên ý tưởng:
- Học viên tạo các card ý trên sơ đồ. Mỗi card gồm: chip loại ý (có dropdown đổi loại), số thứ tự, ô nhập ý ngắn (tiếng Việt), và nút ✓ “Nhấn hoàn thành” để chốt card.
- Thêm/nối ý bằng nút + trên card (phải = nhánh ngang, dưới = nhánh dọc).
- Khi chốt ý, AI sinh câu tiếng Anh hoàn chỉnh cho card đó.
- Hỗ trợ: Thêm tool / Đổi tool, điều khiển canvas Thu nhỏ / Xem đầy đủ / Toàn màn hình; trạng thái Empty / Filled tất cả / Lỗi.
- Giai đoạn 2 — Luyện nói cả bài:
- Mỗi câu có nút micro; học viên nói → ghi âm (waveform + nút dừng) → “Loading chấm” → AI chấm và highlight các từ ngay trên câu → “Chấm điểm xong”.
- Nhánh phụ: Nghe mẫu, Nói tiếp câu khác, Hover annotate để highlight.
- Luyện nói cả bài: nói liền mạch toàn đoạn thay vì từng câu.
- Trạng thái đặc biệt: needs_retry (cần nói lại), stale (kết quả cũ/hết hạn).
Cơ chế sơ đồ nhánh
Hai loại liên kết — quyết định cách đánh số:
- Nhánh ngang (trục ý chính): các ý lớn nối nhau theo chiều ngang, đánh số nguyên #1 → #2 → #3 → #4. Thêm bằng nút + bên phải. Đây là mạch lập luận chính.
- Nhánh dọc (đào sâu một ý): từ một ý chính mở rộng xuống thành ý con, đánh số theo cha + chữ cái (vd #2 → #2.A → #2.B, #3 → #3.A → #3.B). Thêm bằng nút + bên dưới.
Loại ý (chip màu, đổi qua dropdown ▼): gồm 3 loại — CAUSE (vàng), EFFECT (xanh lá), DESCRIPTION (xanh dương). Cột đầu bắt đầu bằng card câu hỏi gốc (question card) rồi mới toả nhánh.
Đổi loại chip → AI sinh lại câu: khi học viên đổi loại ý của một card, AI tạo lại câu tiếng Anh cho card đó theo vai trò mới.
Xoá card:
- Xoá card cha → mất luôn toàn bộ nhánh con bên dưới nó.
- Xoá card con → chỉ mất đúng card con đó, các card khác giữ nguyên.
Giới hạn: trục ý chính (ngang) tối đa 4 ý (#1–#4). Khi đạt giới hạn, nút + bị khoá (icon ⊘) kèm tooltip “Đã đạt giới hạn nha, 4 nhánh là nhiều rồi.” → các frame “Chặn tạo thêm”.
Trạng thái card: card đang thao tác có viền xanh = active; có trạng thái lỗi riêng “Active card lỗi”.
Ràng buộc — Không được làm / Ngoài phạm vi
Không được:
- Để lỗi kỹ thuật (mic, nhận dạng giọng nói, AI lỗi, loa tắt tiếng) làm học viên mất lượt.
- Cho thêm ý chính khi đã đạt giới hạn 4 ở trục ngang.
Ngoài phạm vi (việc khác lo):
- Màn soạn nội dung / data-entry (câu hỏi gốc, gợi ý) — có PRD riêng.
- Chọn mô hình AI, dịch vụ nhận dạng giọng nói, cách viết prompt, ngưỡng độ trễ, hợp đồng backend — để khi triển khai tính.
- Các dạng bài Speaking khác trong Exercise AI.
Cơ chế chấm & phản hồi
- Học viên nói từng câu → AI chấm và highlight từ trực tiếp trên câu (phản hồi phát âm/ngữ pháp).
- Trạng thái needs_retry: câu chưa đạt, mời nói lại.
- Trạng thái stale: kết quả chấm đã cũ/không còn hiệu lực (vd ý/câu đã đổi sau khi chấm).
- Nghe mẫu: cho học viên nghe câu chuẩn để đối chiếu.
Tiêu chí nghiệm thu
- Pre-test mic xác nhận mic chạy trước khi vào bài.
- Onboarding bật sau khi điền input và ngừng gõ ~4 giây.
- Thêm ý chính (ngang) và ý con (dọc) đúng quy tắc đánh số (#n và #n.A/#n.B).
- Card có 3 loại chip CAUSE / EFFECT / DESCRIPTION, đổi loại được qua dropdown.
- Đổi loại chip thì AI sinh lại câu tiếng Anh cho card đó.
- Xoá card cha mất cả nhánh con; xoá card con chỉ mất con đó.
- Trục ý chính chặn ở 4 ý, hiện tooltip “Đã đạt giới hạn nha, 4 nhánh là nhiều rồi.”
- Mỗi câu nói được ghi âm, chấm, và highlight từ trên câu; có trạng thái loading khi chấm.
- Có Nghe mẫu, Nói tiếp câu khác, và Luyện nói cả bài (nói liền mạch).
- Trạng thái needs_retry và stale hiển thị đúng.
- Lỗi kỹ thuật không làm học viên mất lượt.
Dữ liệu & đầu vào
Mỗi node trên sơ đồ = { loại (CAUSE/EFFECT/DESCRIPTION), số thứ tự, nội dung ý (học viên gõ), liên kết tới cha }. Cạnh có hai kiểu: ngang (kế tiếp cùng cấp) và dọc (con của node).
Lấy lúc chạy: câu nói chuyển thành chữ; AI sinh câu tiếng Anh từ ý + loại; AI chấm và highlight. Mô hình AI, dịch vụ nhận dạng giọng nói, prompt, hợp đồng backend là chuyện lúc triển khai (ngoài phạm vi).
Câu hỏi còn mở
- Có giới hạn độ sâu nhánh dọc (#n.A, #n.B, …) không, hay chỉ giới hạn 4 ở trục ngang?
- Khi đổi loại chip và AI sinh lại câu, kết quả chấm cũ của câu đó xử lý thế nào (chuyển sang stale?).
- Điều kiện chuyển từ “Lên ý tưởng” sang “Luyện nói cả bài” (phải chốt hết card chưa?). (→ PM)
- needs_retry cho bao nhiêu lượt nói lại trước khi qua câu. (→ Eng)
- Đường dẫn / vị trí cuối cùng trong My Classes. (→ Eng)
Thiết kế tham chiếu
Figma trực tiếp — nguồn chuẩn: Mở section “Linear tool” trên Figma