Bỏ qua để đến nội dung

Practice Flow - Attempt Flow

DomainsDOL EnglishUX908 words5 min read
activebyDOL Product Design
  • Attempt là deep execution flow bên trong destination Luyện tập, không phải destination độc lập.
  • Mọi entry từ Home, Khóa học, search, notification, hoặc recommendation phải resolve qua PRA_Entry_Routing_Contracts trước khi vào attempt.
  • Vấn đề: Attempt là bước dùng nhiều nhất trong sản phẩm, nếu thiếu baseline rõ ràng sẽ gây mất dữ liệu và submit lỗi.
  • Đối tượng chính: Team UX/Product/Engineering triển khai màn làm bài cho mọi entry context.
  • Tín hiệu thành công: User làm bài mượt, không mất đáp án, submit ổn định, và chuyển sang Result đúng 1 lần.
  • Attempt chỉ nằm giữa Entry RoutingResult.
  • Input contract bắt buộc:
    • source_context,
    • program,
    • exercise_id,
    • returnTo.
  • Attempt modes:
    • untimed (default cho luyện tập thường),
    • timed (simulation/full-test).
  • Core states:
    • loading,
    • active,
    • saving,
    • submit_review,
    • submitting,
    • submit_retry_needed,
    • timeout_submit (timed only),
    • submitted.
  • Attempt start guard:
    • chỉ khởi tạo khi metadata entry hợp lệ,
    • metadata lỗi -> fallback theo PRA_Entry_Routing_Contracts.
  • Draft safety:
    • hệ thống lưu tiến độ liên tục trong lúc làm bài,
    • khi mạng yếu/mất mạng, giữ draft cục bộ và sync lại khi có mạng,
    • user quay lại attempt chưa nộp sẽ resume từ draft mới nhất hợp lệ.
    • draft untimed giữ tối đa 7 ngày kể từ hoạt động gần nhất.
    • draft timed chỉ hợp lệ trong cửa sổ countdown còn hiệu lực.
  • Submit review:
    • trước nộp hiển thị summary tổng số câu đã làm/chưa làm,
    • nếu bài có nhiều section thì có thể mở breakdown theo section,
    • không chặn cứng nếu còn câu chưa trả lời.
  • Submit integrity:
    • submit phải idempotent để chặn double-submit do click lặp hoặc retry race,
    • submission thành công chỉ tạo 1 finalized attempt.
  • Timed behavior:
    • timed mode dùng countdown authoritative,
    • hết giờ chuyển sang timeout_submit và tiếp tục pipeline sang Result.
  • Failure resilience:
    • submit lỗi tạm thời giữ nguyên state câu trả lời,
    • hệ thống auto-retry tối đa 3 lần cho lỗi transient,
    • sau ngưỡng auto-retry vẫn cho manual retry và hiển thị support CTA,
    • user retry được ngay không mất tiến độ.
  • Pipeline boundary:
    • chỉ submission thành công mới tạo attempt_id finalized và chuyển Result,
    • submitted_at là mốc nguồn cho streak/progress metrics.
  • AI Tutor coaching integrity (active attempt):
    • khi active_attempt = true và learner mở AI Tutor từ attempt context:
      • runtime bắt buộc bật exercise_coaching mode,
      • response dùng safety_mode = exercise_coaching_integrity.
    • nếu Practice Attempt có AI inline hint/suggest ngay trong màn làm bài, surface đó phải theo archetype coaching_rail:
      • chỉ hiển thị micro hint, scaffolded step, hoặc self-check,
      • không render plan, report, hay summary card kiểu dashboard,
      • không cạnh tranh với vùng làm bài chính.
    • output bị giới hạn theo hint ladder:
      • orientation_hint -> concept_hint -> scaffolded_steps -> self_check.
    • trong active attempt, AI Tutor không được:
      • đưa đáp án cuối,
      • đưa option đúng trực tiếp,
      • viết full bài nộp thay learner.
    • nếu learner lặp yêu cầu “cho đáp án luôn”:
      • AI nhắc ngắn policy integrity,
      • tiếp tục ở hint level hợp lệ kế tiếp, không hạ guardrail.
    • sandbox exception (non-graded only):
      • chỉ khi non_graded_sandbox=trueno_score_or_streak_impact=true,
      • AI có thể đưa sample/reference answer có label rõ.
      • exception không áp dụng cho attempt chấm điểm hoặc submission impact flows.
  • Ưu tiên tập trung làm bài, giảm nhiễu.
  • Luôn có tín hiệu trạng thái rõ: Đang lưu, Đang nộp, Nộp thất bại - thử lại.
  • Với timed mode:
    • hiển thị countdown rõ ràng,
    • gần hết giờ có cảnh báo nhẹ.
    • không có nút manual pause.
    • khi user rời tab/background, timer vẫn tiếp tục chạy.
  • Exit attempt:
    • user được rời màn bất kỳ lúc nào,
    • quay lại thì resume (nếu chưa nộp).
  • Submit thành công:
    • điều hướng thẳng Attempt -> Result.
  • 2026-03-16: Chốt Practice Attempt inline AI theo archetype coaching_rail; active attempt chỉ cho micro-hint/scaffold/self-check, không dùng summary/report card.
  • 2026-03-01: Bổ sung sandbox exception boundary theo DEC-0092 (chỉ non-graded/no-impact, không leak sang graded attempts).
  • 2026-03-01: Bổ sung AI Tutor guided-mode contract trong active attempt: bắt buộc exercise_coaching, hint ladder 4 tầng, và hard-block final answer/answer key/full rewrite.
  • 2026-02-21: Deepening policy: timed no-pause + background countdown continuity, draft TTL (untimed=7 ngày), submit review tổng + section breakdown, và auto-retry 3 lần + support CTA.
  • 2026-02-21: Thay placeholder bằng baseline active: timed/untimed, draft safety, submit review non-blocking, idempotent submit, timeout-submit path, và retry resilience.
  • 2026-02-07: Tạo placeholder draft ban đầu.