PRDsExercise AILinear Tool — Technical Proposal
DraftDT-4662Exercise AIFigma design ↗SpeakingAISTTTechnicalProposalEngineering

📌 Đâ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

  1. Check mic (pre-test): kiểm tra mic chạy trước khi vào bài.
  2. 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.
  3. 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.
  4. 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ạiCAUSE (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 chamất luôn toàn bộ nhánh con bên dưới nó.
  • Xoá card conchỉ 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