Chuyển tính năng giao bài từ một trình thuật sĩ ba bước thành một vòng khép kín: giao, theo dõi, nhắc, xong. Lý do rất cụ thể: giáo viên đã giao 20.351 bài trong 30 ngày, nhưng một nửa số bài đó không ai nộp.
Bản đề xuất — cần Design review và chốt phạm viTài liệu được viết để trả lời yêu cầu đặt ra ngày 19/09/2026, nguyên văn:
anh muốn nâng cấp tính năng giao bài tập https://teacher.flyer.us/vi/assigned-tests -> Build cho anh prd cho tính năng này version 2.0 vào roadmap.flyer.vn/assignment-v2 nhé -> Làm càng chi tiết càng tốt. Cover 100% đủ các cases, anh cần UI/UX với apple standard
Nội dung do trợ lý AI soạn trong một phiên làm việc. Phần hiện trạng lấy từ đọc trực tiếp mã nguồn partner-web và truy vấn read-replica ngày 19/09/2026. Phần thiết kế là đề xuất, chưa qua kiểm chứng với người dùng thật; mục 15 ghi rõ những giả định cần kiểm trước khi xây.
Vấn đề của tính năng giao bài không nằm ở việc tạo bài. Giáo viên tạo hơn hai mươi nghìn bài mỗi tháng, tức là khâu tạo đang chạy tốt. Vấn đề là một nửa số bài giao ra không bao giờ được làm, và sản phẩm hiện tại không giúp giáo viên biết điều đó, cũng không giúp họ làm gì với điều đó.
Bản 2.0 vì vậy không phải là một bản vẽ lại giao diện. Nó dịch chuyển trọng tâm của tính năng:
| Khía cạnh | Bản 1.0 hiện tại | Bản 2.0 đề xuất |
|---|---|---|
| Câu hỏi trung tâm | Làm sao tạo một bài giao? | Làm sao để bài đã giao được làm xong? |
| Màn quan trọng nhất | Ngăn kéo tạo bài ba bước | Màn theo dõi, nơi hiện bài nào đang chết |
| Luồng tạo | Ba bước bắt buộc, kể cả khi chỉ muốn giao một đề cho một lớp | Một màn, mặc định đúng cho 97% trường hợp, tuỳ chọn nằm sau một nút mở rộng |
| Sau khi giao | Không có gì. Giáo viên phải tự nhớ quay lại kiểm tra | Sản phẩm chủ động báo khi một bài sắp chết, kèm đúng một hành động để cứu |
| Thước đo thành công | Số bài giao được tạo | Tỉ lệ bài giao được nộp, mục tiêu từ 49,9% lên 65% |
Toàn bộ số dưới đây truy vấn trực tiếp trên bản sao cơ sở dữ liệu ngày 19/09/2026. Cột thời gian ghi rõ cửa sổ, vì các chỉ số về tỉ lệ nộp phải tính trên bài đã đủ thời gian.
| Chỉ số | Giá trị | Ý nghĩa với thiết kế |
|---|---|---|
| Bài giao tạo trong 30 ngày | 20.351 | Khâu tạo không phải nút thắt. Đừng tối ưu tiếp phần này. |
| Giáo viên có giao bài, 30 ngày | 641 | Nhóm người dùng thật của tính năng. |
| Số bài mỗi giáo viên mỗi tháng | Trung vị 12 Nhóm 10% cao nhất 83 Cao nhất 517 | Chênh 43 lần giữa trung vị và đỉnh. Phải phục vụ được cả người giao mỗi tuần vài bài lẫn người giao hàng trăm bài. |
| Phần bài giao đến từ 10% giáo viên tích cực nhất | 54,2% | Thao tác hàng loạt và phím tắt không phải tính năng phụ, mà phục vụ nhóm tạo ra hơn nửa khối lượng. |
| Tỉ lệ nộp (bài tạo cách đây 30–60 ngày) | 49,9% 126.798 / 254.222 lượt | Con số trung tâm của cả tài liệu này. |
| Bài giao không một học sinh nào nộp | 16,8% 3.448 / 20.525 bài | Cứ sáu bài giao thì một bài hoàn toàn vô ích. |
| Bài ở trạng thái chưa ai bắt đầu | 25,5% 5.196 / 20.351 | Một phần tư khối lượng nằm im. |
| Bài giao cho không ai | 177 bài | Lỗi thật đang xảy ra: tạo được bài mà danh sách người nhận rỗng. |
| Giao cho cả lớp / cho từng học sinh | 97,1% / 2,9% | Luồng chọn từng học sinh chiếm một nửa độ phức tạp bước 2 nhưng phục vụ chưa tới 3% lượt dùng. |
| Có đặt hạn nộp | 40,6% | Đa số bài không có hạn. |
| Bài nộp sau hạn | 14 / 49.288 | Hạn nộp hiện nay gần như không có tác dụng thực tế: học sinh không nộp muộn, họ chỉ đơn giản là không nộp. |
| Cho phép nộp muộn | 62,4% | Bật nhiều nhưng gần như không ai dùng tới, theo dòng trên. |
| Ẩn đáp án | 7,9% | Tuỳ chọn ngách. |
| Chế độ thi | 4,8% | Tuỳ chọn ngách. |
| Giao bằng liên kết ngoài | 0,14% 28 lần / 30 ngày | Gần như không ai dùng, nhưng đang chiếm trọn một nhánh riêng trong luồng tạo. |
| Loại nội dung được giao | Đề trong kho 99,4% Bingo Study 0,6% | Bước chọn loại nội dung ở đầu luồng đang hỏi một câu mà 99,4% trường hợp chỉ có một đáp án. |
Sản phẩm kết thúc trách nhiệm tại thời điểm bài được tạo. Không có gì nhắc giáo viên rằng ba ngày sau, bài đó vẫn chưa ai mở. Không có gì đưa bài sắp hết hạn lên trước mắt họ. Kết quả là 16,8% số bài giao không một ai nộp và không ai biết điều đó cho tới khi xem điểm cuối kỳ.
Luồng hiện tại bắt mọi người đi qua: chọn loại nội dung và đề, chọn người nhận, đặt tuỳ chọn. Nhưng số liệu cho thấy trường hợp áp đảo là một đề trong kho, giao cho một lớp, không đổi tuỳ chọn gì. Ba bước đang phục vụ các ngoại lệ chiếm dưới 5%.
Chỉ 40,6% bài có hạn. Trong số bài có hạn, đúng 14 lượt nộp muộn trên 49.288 lượt. Điều này nói lên hai việc: hạn nộp không tạo áp lực, và tuỳ chọn cho phép nộp muộn đang giải quyết một vấn đề không tồn tại. Cái thiếu không phải là hạn chặt hơn, mà là lời nhắc trước khi hết hạn.
Liên kết ngoài được dùng 28 lần trong 30 ngày, tức khoảng một lần mỗi ngày trên toàn hệ thống, nhưng đang là một trong hai lựa chọn ở đầu luồng tạo. Chế độ thi 4,8% và ẩn đáp án 7,9% cũng nằm ngang hàng với những thứ ai cũng cần.
177 bài trong cửa sổ 30 ngày có danh sách người nhận rỗng. Đây là lỗi kiểm tra đầu vào, và nó im lặng: giáo viên nhận thông báo tạo thành công.
Người giao 517 bài một tháng đang lặp lại cùng một chuỗi thao tác hàng trăm lần. Không có giao cho nhiều lớp cùng lúc theo cách nhanh, không có nhân bản bài giao, không có mẫu lưu sẵn, không có phím tắt.
Điểm UI/UX của ứng dụng trên điện thoại là 4,5 trên 10, với 90% nút nhỏ hơn 44 điểm ảnh. Ngăn kéo ba bước với bảng chọn học sinh gần như không thao tác được trên màn hình nhỏ, trong khi giao bài là việc giáo viên hay làm ngay sau buổi dạy.
Báo cáo chỉ ra học sinh yếu ở một kỹ năng, nhưng từ đó tới việc giao đúng bài cho đúng học sinh là bốn năm bước rời rạc. Bingo AI Co-Teacher sinh ra để nối hai đầu này nhưng chưa nối vào màn giao bài.
Toàn ứng dụng chỉ phát một sự kiện là lượt xem trang. Không ai biết bao nhiêu người mở ngăn kéo rồi bỏ, bỏ ở bước nào, mất bao lâu cho một lần giao. Xem bộ sự kiện đề xuất tại Bộ sự kiện đo lường hiệu quả của tính năng cho sản phẩm; bản 2.0 phải phát hành kèm nhóm sự kiện C trong tài liệu đó.
Yêu cầu đặt ra là chuẩn Apple. Phần dưới không trích khẩu hiệu mà nêu đúng những nguyên tắc trong Human Interface Guidelines có ảnh hưởng tới quyết định cụ thể trong tài liệu này, mỗi nguyên tắc kèm chỗ nó được áp dụng.
| Nguyên tắc | Áp dụng ở đâu trong bản 2.0 |
|---|---|
| Mặc định phải đúng Người dùng không nên phải cấu hình thứ họ luôn muốn | Mở màn soạn bài là đã chọn sẵn: lớp đang xem, không hạn nộp, hiện đáp án, không chế độ thi. Số liệu nói đây là lựa chọn của hơn 90% trường hợp. Giáo viên chỉ chọn đề rồi nhấn Giao. |
| Hé lộ dần Chiều sâu có sẵn nhưng không chắn đường | Hạn nộp, chế độ thi, ẩn đáp án, cho nộp muộn, liên kết ngoài gom vào một mục Tuỳ chọn thu gọn. Mở ra thì nhớ trạng thái cho lần sau của chính người đó. |
| Một hành động chính trên mỗi màn | Màn soạn bài có đúng một nút đậm là Giao bài. Mọi thứ khác là nút chữ hoặc nút viền. |
| Thao tác trực tiếp | Đổi hạn nộp ngay trên thẻ bài giao trong danh sách, không phải mở ngăn kéo sửa. Kéo một đề từ kho thả vào lớp. |
| Tha thứ thay vì hỏi lại Hoàn tác tốt hơn hộp thoại xác nhận | Xoá bài giao không hỏi xác nhận; hiện dải hoàn tác trong 8 giây. Chỉ giữ hộp thoại cho hành động không thể hoàn tác và có ảnh hưởng ra ngoài, cụ thể là gửi nhắc hàng loạt. |
| Phản hồi tức thì | Mọi thay đổi trạng thái hiện ngay trên giao diện trước khi máy chủ trả lời, và tự lùi lại kèm giải thích nếu thất bại. |
| Giữ nguyên ngữ cảnh | Giao bài từ trong lớp thì không rời khỏi lớp. Chấm xong một bài thì không văng về danh sách. |
| Tôn trọng công sức đã bỏ ra | Đóng nhầm màn soạn bài thì giữ lại bản nháp, mở lại đúng chỗ đang dở. Hiện nay đóng là mất trắng. |
| Chữ là giao diện | Không có nhãn kiểu "Trạng thái: 2". Viết "12 trên 18 học sinh đã nộp" và "còn 2 ngày". |
| Vùng chạm đủ lớn | Tối thiểu 44 điểm ảnh mỗi chiều cho mọi phần tử chạm được, bao gồm cả trên bản máy tính. |
| Chuyển động có nghĩa | Chuyển cảnh chỉ dùng để giải thích thứ gì đi đâu. Tôn trọng thiết lập giảm chuyển động của hệ điều hành. |
Năm màn, không hơn. Trục chính là màn Theo dõi, không phải màn tạo.
| # | Màn | Đường dẫn | Phục vụ việc gì |
|---|---|---|---|
| 1 | Theo dõi bài giao | /assigned-tests | Mở ra là thấy ngay bài nào đang chết, bài nào sắp hết hạn, bài nào xong rồi. Đây là màn mặc định. |
| 2 | Soạn bài | Lớp phủ trên màn đang đứng | Một màn duy nhất để chọn đề, chọn người nhận, giao. Tuỳ chọn thu gọn. |
| 3 | Chi tiết bài giao | /assigned-tests/[id] | Ai nộp, ai chưa, điểm bao nhiêu, câu nào cả lớp sai. Nhắc từ đây. |
| 4 | Chấm liên tục | /assigned-tests/[id]/grade | Chấm nhiều bài viết và nói mà không rời màn. Kế thừa thiết kế đã bàn cho chế độ lớp nhỏ. |
| 5 | Mẫu giao bài | /assigned-tests/templates | Lưu một tổ hợp đề, người nhận, tuỳ chọn để dùng lại. Phục vụ nhóm giao nhiều. |
Màn hiện tại là một bảng phẳng liệt kê theo thời gian tạo. Bản 2.0 chia thành ba khối theo mức cấp bách, vì câu hỏi buổi sáng của giáo viên không phải "tôi đã giao gì" mà "bài nào đang có vấn đề".
| Thành phần | Đặc tả |
|---|---|
| Ba khối | Cần chú ý: chưa ai nộp sau 48 giờ, hoặc còn dưới 24 giờ mà dưới một nửa lớp đã nộp, hoặc đã quá hạn mà còn người chưa nộp. Đang chạy: mọi bài còn lại chưa tới hạn. Đã xong: cả lớp đã nộp, hoặc đã quá hạn trên 7 ngày. Khối thứ ba thu gọn mặc định. |
| Thứ tự trong khối | Cần chú ý xếp theo mức nguy cấp giảm dần: quá hạn còn người chưa nộp, rồi sắp hết hạn, rồi chưa ai mở. Đang chạy xếp theo hạn gần nhất trước; bài không hạn xếp cuối theo ngày giao mới nhất. |
| Một dòng bài giao | Chấm màu trạng thái, tên bài, tên lớp, tỉ lệ nộp dạng chữ kèm thanh tiến độ, dòng phụ ghi thời gian bằng ngôn ngữ người, và tối đa hai nút hành động. Cả dòng là vùng chạm mở chi tiết. |
| Nút hành động theo ngữ cảnh | Nút thứ nhất luôn là hành động cứu bài: Nhắc cả lớp khi chưa ai nộp, Nhắc n học sinh khi còn thiếu, Chấm n bài khi có bài chờ chấm, Gia hạn khi vừa quá hạn. Không hiện nút không làm gì được. |
| Bộ lọc | Ba bộ lọc trên một hàng, không xuống dòng: lớp, khoảng thời gian, trạng thái. Trạng thái lọc theo đúng ba khối. Trạng thái bộ lọc lưu theo người dùng và khôi phục khi quay lại. |
| Chọn nhiều | Giữ Shift chọn dải, hoặc hiện ô chọn khi rê chuột vào dòng. Chọn từ hai bài trở lên thì hiện thanh thao tác nổi ở đáy: Nhắc, Gia hạn, Xoá. Đây là phần phục vụ nhóm 10% tạo ra 54,2% khối lượng. |
| Trạng thái rỗng | Ba trạng thái rỗng khác nhau, không dùng chung: chưa giao bài nào bao giờ (kèm nút giao bài đầu tiên và gợi ý ba đề theo trình độ lớp), bộ lọc không ra kết quả (kèm nút xoá lọc), và khối Cần chú ý rỗng (một dòng chữ tích cực, không phải khung trống). |
Không thu nhỏ bảng. Mỗi bài giao là một thẻ xếp dọc, ba khối giữ nguyên. Nút hành động chính hiện thành nút tràn ngang trong thẻ. Bộ lọc gom vào một nút mở tấm trượt từ đáy. Nút Giao bài tập là nút nổi góc dưới bên phải, cách mép 16 điểm ảnh, kích thước 56 điểm ảnh.
Thay ba bước bằng một màn. Nguyên tắc: người dùng thấy toàn bộ các quyết định cùng lúc, và có thể giao ngay sau khi chọn đề.
| Thành phần | Đặc tả |
|---|---|
| Thứ tự ngược lại | Người nhận đặt trên đề, không phải dưới. Lý do: trong 97,1% trường hợp người nhận đã biết trước từ ngữ cảnh mở màn, nên nó là thông tin xác nhận chứ không phải câu hỏi. Đặt trên cũng để phần gợi ý đề bên dưới lọc theo đúng trình độ của lớp đó. |
| Điền sẵn người nhận | Mở từ trong lớp thì điền sẵn lớp đó. Mở từ hồ sơ học sinh thì điền sẵn học sinh đó. Mở từ màn Theo dõi thì điền sẵn lớp đang lọc, hoặc để trống nếu đang xem tất cả. |
| Một ô cho cả lớp và học sinh | Bỏ nút chuyển đổi giữa hai chế độ. Một ô nhập, gõ vào thì gợi ý cả lớp lẫn học sinh, phân nhóm bằng tiêu đề. Chọn cái nào cũng thành một thẻ trong ô. Trộn lớp và học sinh lẻ trong cùng một bài giao là hợp lệ. |
| Gợi ý đề | Ba tới sáu đề gợi ý dựa trên trình độ lớp và đề gần đây đã giao cho lớp đó, kèm nhãn nếu lớp đã từng làm đề này. Đây là đường tắt cho trường hợp phổ biến, không thay thế ô tìm. |
| Chọn nhiều đề | Chọn được tối đa 10 đề trong một lần. Mỗi đề thành một bài giao riêng, dùng chung người nhận và tuỳ chọn. Đây là thao tác hàng loạt quan trọng nhất cho nhóm giao nhiều. |
| Dòng tóm tắt tuỳ chọn | Mục Tuỳ chọn khi thu gọn vẫn hiện một dòng chữ tóm tắt trạng thái hiện tại. Người dùng không phải mở ra mới biết bài đang được giao với thiết lập gì. |
| Bên trong Tuỳ chọn | Hạn nộp (chọn nhanh: không hạn, 3 ngày, 7 ngày, hoặc chọn ngày), ngày bắt đầu, hiện hay ẩn đáp án, chế độ thi, cho nộp muộn. Mỗi tuỳ chọn có một dòng giải thích hậu quả bằng chữ, ví dụ "Chế độ thi: học sinh không quay lại sửa được sau khi nộp". |
| Liên kết ngoài | Không còn là một nhánh ngang hàng ở đầu luồng. Chuyển thành một dòng trong ô tìm đề: dán một địa chỉ vào ô tìm thì hệ thống nhận ra và đề nghị giao dưới dạng liên kết. Phục vụ đúng 0,14% mà không chắn đường 99,86% còn lại. |
| Nút Giao bài | Mờ cho tới khi có ít nhất một người nhận và một đề. Khi mờ, rê chuột vào hiện lý do còn thiếu gì. Sau khi nhấn, nút chuyển sang trạng thái đang xử lý và không cho nhấn lại. |
| Sau khi giao | Màn đóng lại, một dải thông báo hiện ở đáy: "Đã giao Unit 6 cho Movers B, 15 học sinh" kèm hai nút chữ là Xem và Hoàn tác. Hoàn tác giữ trong 8 giây và thực sự xoá bài giao. |
| Bản nháp | Đóng màn khi đã chọn dở thì lưu nháp cục bộ theo người dùng. Lần mở sau hiện dải "Tiếp tục bài đang soạn cho Movers B?" với hai nút Tiếp tục và Bỏ. |
| Phím tắt | A mở màn soạn bài từ bất kỳ đâu. ⌘Enter giao bài. Esc đóng, có nháp thì giữ. Mũi tên di chuyển trong danh sách gợi ý, Space chọn. |
Tấm trượt toàn màn, không phải ngăn kéo bên. Thứ tự dọc giữ nguyên. Nút Giao bài neo ở đáy, luôn nhìn thấy, cao 50 điểm ảnh, cách mép an toàn của thiết bị. Ô tìm đề khi được chạm sẽ mở thành một lớp riêng chiếm toàn màn để bàn phím không che mất kết quả.
Đây là phần bản 1.0 không có. Mục tiêu duy nhất: rút ngắn khoảng cách giữa "một bài giao đang chết" và "giáo viên làm gì đó" xuống còn một cú nhấn.
| Khối | Đặc tả |
|---|---|
| Đầu trang | Tên bài, lớp, thời gian còn lại bằng chữ, và một dòng số: "12 trên 18 đã nộp · 4 chờ chấm · 2 chưa mở". Ba con số này là ba lối vào ba hành động khác nhau, nên đều nhấn được. |
| Ba nhóm học sinh | Thay một bảng phẳng bằng ba nhóm: Chờ chấm (có nút Chấm ngay), Chưa nộp (có nút Nhắc), Đã xong (thu gọn). Thứ tự này theo việc giáo viên cần làm, không theo bảng chữ cái. |
| Nhắc | Nhắc từng học sinh hoặc nhắc cả nhóm chưa nộp. Chọn kênh: thông báo trong ứng dụng, và Zalo cho phụ huynh nếu trường đã bật. Xem trước nội dung tin trước khi gửi. Chặn gửi lại cùng một học sinh trong 24 giờ, hiện rõ thời điểm nhắc gần nhất. |
| Phân tích câu hỏi | Giữ nguyên tính năng hiện có nhưng đưa lên: nếu có câu nào quá 60% lớp làm sai thì hiện một dải ngay đầu trang, kèm nút giao thêm bài luyện đúng điểm yếu đó. |
| Gia hạn | Một nút, ba lựa chọn nhanh: thêm 1 ngày, thêm 3 ngày, chọn ngày. Gia hạn tự gửi thông báo cho nhóm chưa nộp. |
Đây là thay đổi có tác động lớn nhất tới con số 49,9%, và cũng là thứ cần thận trọng nhất vì nó gửi tin ra ngoài.
| Quy tắc | Nội dung |
|---|---|
| Mặc định tắt | Bật theo từng lớp, trong phần cài đặt lớp. Không bật sẵn cho ai. Lý do: tin nhắn tự động gửi nhầm làm mất lòng tin của phụ huynh và không thu lại được. |
| Ba mốc | 24 giờ sau khi giao mà chưa mở; 24 giờ trước hạn mà chưa nộp; 24 giờ sau hạn mà chưa nộp. Không có mốc thứ tư. |
| Trần số lượng | Tối đa hai lời nhắc tự động cho mỗi học sinh mỗi bài, và tối đa ba lời nhắc mỗi học sinh mỗi ngày trên toàn bộ các bài. |
| Khung giờ | Chỉ gửi trong khoảng 7 giờ tới 21 giờ theo giờ địa phương. Rơi ngoài khung thì dồn tới đầu khung tiếp theo. |
| Giáo viên luôn thấy | Mọi lời nhắc tự động hiện trong nhật ký của bài giao, ghi rõ thời điểm và người nhận. Có nút tắt cho riêng bài đó. |
Lưu một tổ hợp gồm đề, người nhận và tuỳ chọn thành mẫu đặt tên. Dùng lại bằng hai cú nhấn. Đây là câu trả lời cho người giao 517 bài một tháng. Mẫu thuộc về giáo viên; chủ trường chia sẻ được mẫu cho cả trường.
Bảng dưới liệt kê 68 tình huống trong mười nhóm. Mỗi dòng là một hành vi cần được kiểm thử, và cùng nhau tạo thành bộ ca kiểm thử cho tính năng. Những dòng in đậm chữ đỏ là lỗi đang tồn tại trên bản thật.
| Tình huống | Hành vi chuẩn |
|---|---|
| Vừa tạo, chưa tới ngày bắt đầu | Trạng thái Đã lên lịch. Học sinh chưa thấy. Giáo viên sửa hoặc xoá tự do, không cảnh báo. |
| Đang chạy, chưa ai mở | Nằm ở khối Cần chú ý sau 48 giờ. Nút chính là Nhắc cả lớp. |
| Đang chạy, một phần đã nộp | Khối Đang chạy. Thanh tiến độ hiện tỉ lệ. Nút chính là Chấm nếu có bài chờ chấm. |
| Sắp hết hạn, dưới một nửa đã nộp | Chuyển lên khối Cần chú ý khi còn dưới 24 giờ. |
| Quá hạn, còn người chưa nộp | Khối Cần chú ý. Hai nút: Gia hạn và Nhắc. Sau 7 ngày tự chuyển xuống Đã xong và ghi nhận số chưa nộp. |
| Cả lớp đã nộp | Chuyển ngay sang Đã xong, kể cả khi chưa tới hạn. Nếu còn bài chờ chấm thì vẫn hiện nút Chấm. |
| Không có hạn nộp | Không bao giờ vào Cần chú ý vì lý do thời gian; chỉ vào khi 48 giờ chưa ai mở. Xếp cuối khối Đang chạy. |
| Tình huống | Hành vi chuẩn |
|---|---|
| Không chọn người nhận | Nút Giao bài mờ. Đây là lỗi đang tồn tại: 177 bài trong 30 ngày có danh sách người nhận rỗng. Phải chặn ở cả giao diện và máy chủ. |
| Không chọn đề | Nút Giao bài mờ, kèm chú thích khi rê chuột. |
| Lớp được chọn không có học sinh nào | Cho phép chọn nhưng hiện cảnh báo vàng ngay dưới ô người nhận: "Lớp này chưa có học sinh". Nút Giao bài mờ nếu tổng người nhận bằng 0. |
| Một học sinh nằm trong hai lớp cùng được chọn | Gộp thành một người nhận. Dòng số hiện số người thật, không phải tổng cộng dồn. |
| Chọn đề mà lớp vừa làm tuần trước | Hiện nhãn "Lớp đã làm ngày 12/09" trên thẻ đề. Không chặn; giáo viên có quyền giao lại. |
| Chọn 10 đề cùng lúc | Tạo 10 bài giao riêng. Dải thông báo ghi "Đã tạo 10 bài giao". Hoàn tác xoá cả 10. |
| Vượt quá 10 đề | Chặn ở đề thứ 11, hiện lý do. Giới hạn để tránh một thao tác tạo ra hàng trăm thông báo cho học sinh. |
| Ngày bắt đầu đặt trong quá khứ | Tự đặt về thời điểm hiện tại, hiện chú thích nhỏ. Không báo lỗi. |
| Hạn nộp trước ngày bắt đầu | Chặn, viền đỏ ô hạn nộp, giải thích một dòng. |
| Hạn nộp trong quá khứ | Chặn với lý do rõ ràng, gợi ý ba mốc hợp lệ gần nhất. |
| Dán liên kết ngoài không hợp lệ | Ô tìm không nhận diện thành liên kết, giữ nguyên dạng tìm kiếm văn bản. Không hiện lỗi đỏ. |
| Dán liên kết nội bộ FLYER | Nhận diện và chuyển thành đề tương ứng trong kho, không tạo bài giao dạng liên kết ngoài. |
| Mạng rớt giữa lúc nhấn Giao bài | Nút giữ trạng thái đang xử lý tối đa 15 giây, sau đó hiện lỗi kèm nút Thử lại. Toàn bộ lựa chọn giữ nguyên, không mất. |
| Máy chủ trả lỗi khi tạo | Giữ nguyên màn soạn bài, hiện lỗi ở đáy kèm mã lỗi, không đóng màn. Phát sự kiện assignment_create_failed. |
| Nhấn Giao bài hai lần nhanh | Lần thứ hai bị chặn ở tầng giao diện. Máy chủ thêm khoá theo mã yêu cầu để không tạo trùng. |
| Đóng màn khi đang chọn dở | Lưu nháp cục bộ, không hỏi xác nhận. Lần mở sau đề nghị tiếp tục. |
| Nháp cũ hơn 7 ngày | Tự xoá, không hỏi. |
| Tình huống | Hành vi chuẩn |
|---|---|
| Học sinh rời lớp sau khi bài đã giao | Giữ nguyên bản ghi của học sinh đó trong bài giao cũ, đánh dấu "Đã rời lớp". Không tính vào mẫu số tỉ lệ nộp. Không xoá dữ liệu đã nộp. |
| Học sinh vào lớp sau khi bài đã giao | Không tự nhận bài cũ. Hiện gợi ý trong chi tiết bài: "3 học sinh mới chưa được giao bài này" kèm nút Giao thêm. |
| Lớp bị xoá khi còn bài giao đang chạy | Bài giao chuyển sang trạng thái Lưu trữ, vẫn xem được kết quả, không nhận nộp mới, không hiện ở danh sách mặc định. |
| Học sinh bị xoá tài khoản | Ẩn khỏi danh sách, giữ số liệu tổng hợp đã tính. |
| Giao cho một học sinh đã có bài này chưa nộp | Cảnh báo "Học sinh này đang có bài chưa nộp cùng đề" và đề nghị Nhắc thay vì giao lại. |
| Trường có nhiều chi nhánh | Người nhận chỉ gợi ý trong chi nhánh đang chọn. Không bao giờ hiện lớp của chi nhánh khác. |
| Giáo viên không dạy lớp đó | Không hiện lớp trong ô gợi ý. Chủ trường và quản lý thấy toàn bộ lớp của chi nhánh. |
| Tình huống | Hành vi chuẩn |
|---|---|
| Sửa bài khi chưa ai nộp | Sửa tự do mọi trường, kể cả đề. |
| Sửa bài khi đã có người nộp | Khoá trường đề. Cho sửa hạn nộp, tuỳ chọn hiển thị đáp án và thêm người nhận. Giải thích một dòng vì sao đề bị khoá. |
| Thêm người nhận vào bài đang chạy | Cho phép. Người mới nhận thông báo, hạn nộp giữ nguyên như cả lớp. |
| Bớt người nhận đã nộp | Chặn. Chỉ bớt được người chưa nộp. |
| Xoá bài chưa ai nộp | Xoá ngay, hiện dải Hoàn tác 8 giây, không hộp thoại. |
| Xoá bài đã có người nộp | Hộp thoại xác nhận, nêu rõ số bài nộp sẽ mất. Nút xác nhận màu cảnh báo và không phải nút mặc định. |
| Hoàn tác sau khi đã tải lại trang | Không còn hoàn tác được. Dải hoàn tác chỉ sống trong phiên hiện tại; sau đó việc xoá là vĩnh viễn. |
| Gia hạn bài đã quá hạn | Cho phép. Tự gửi thông báo cho nhóm chưa nộp. Ghi vào nhật ký bài giao. |
| Tình huống | Hành vi chuẩn |
|---|---|
| Học sinh nộp sau hạn khi không cho nộp muộn | Chặn ở phía học sinh, hiện thời điểm hết hạn. Giáo viên vẫn gia hạn được để mở lại. |
| Học sinh nộp sau hạn khi có cho nộp muộn | Nhận bài, đánh dấu Nộp muộn kèm số giờ trễ. Lưu ý: hiện chỉ có 14 lượt nộp muộn trên 49.288, nên nhãn này rất hiếm gặp. |
| Học sinh làm lại bài | Giữ cả hai lần, hiện lần cao nhất kèm số lần làm. Giáo viên xem được từng lần. |
| Bài tự chấm được | Có điểm ngay, không vào nhóm Chờ chấm. |
| Bài viết và nói | Vào nhóm Chờ chấm. Nút Chấm ngay mở màn chấm liên tục, không mở từng bài. |
| Chấm xong bài cuối cùng trong hàng đợi | Không văng về danh sách. Hiện màn tổng kết ngắn kèm hai lối đi: về chi tiết bài, hoặc sang bài giao khác đang chờ chấm. |
| AI chấm lỗi hoặc hết lượt | Bài ở lại nhóm Chờ chấm, hiện lý do trên dòng đó, có nút chấm tay. |
| Hai giáo viên cùng chấm một bài | Người lưu sau nhận cảnh báo có thay đổi mới, kèm hai lựa chọn: xem bản của đồng nghiệp, hoặc ghi đè. Không ghi đè im lặng. |
| Tình huống | Hành vi chuẩn |
|---|---|
| Nhắc học sinh chưa liên kết phụ huynh | Chỉ gửi thông báo trong ứng dụng. Ghi rõ trong bản xem trước là không gửi được cho phụ huynh. |
| Nhắc lần hai trong 24 giờ | Nút mờ, chú thích thời điểm nhắc gần nhất và thời điểm nhắc lại được. |
| Nhắc hàng loạt trên 30 người | Hộp thoại xác nhận, nêu rõ số người nhận và kênh gửi. |
| Trường chưa bật Zalo | Không hiện lựa chọn kênh Zalo, không hiện rồi báo lỗi. |
| Gửi thất bại một phần | Báo rõ số gửi được và số thất bại, kèm nút thử lại chỉ cho phần thất bại. |
| Tình huống | Hành vi chuẩn |
|---|---|
| Giáo viên đứng lớp | Giao bài, sửa, xoá, nhắc trong phạm vi lớp được phân công. Không thấy bài của lớp khác. |
| Trợ giảng | Như giáo viên đứng lớp nếu được gán vào lớp. |
| Chủ trường và quản lý chi nhánh | Thấy toàn bộ bài giao của chi nhánh. Sửa và xoá được. Có thêm bộ lọc theo giáo viên. |
| Phụ huynh | Chỉ xem, không thao tác. Màn riêng đã có sẵn. |
| Tài khoản hết hạn gói | Xem được bài cũ, không tạo bài mới. Lời mời nâng cấp hiện tại chỗ nút Giao bài, không phải hộp thoại chắn màn. |
| Tình huống | Hành vi chuẩn |
|---|---|
| Lớp trên 200 học sinh | Danh sách trong chi tiết bài phân trang, mỗi trang 50. Tổng hợp số liệu tính ở máy chủ, không tính ở trình duyệt. |
| Giáo viên có trên 500 bài giao | Danh sách cuộn vô hạn theo từng khối. Khối Đã xong chỉ tải khi mở. |
| Bộ lọc không ra kết quả | Trạng thái rỗng riêng, khác hẳn trạng thái chưa có bài nào, kèm nút xoá lọc. |
| Tải chậm quá 3 giây | Hiện khung xương đúng bố cục thật, không phải vòng xoay giữa màn. Phát sự kiện slow_screen. |
| Tình huống | Hành vi chuẩn |
|---|---|
| Hai thiết bị mở cùng một bài giao | Màn chi tiết tự làm mới mỗi 60 giây khi tab đang hiển thị. Có thay đổi thì hiện dải "Có cập nhật mới" kèm nút tải lại, không tự nhảy số dưới tay người đang thao tác. |
| Mất mạng khi đang xem danh sách | Giữ dữ liệu đã tải, hiện dải ngoại tuyến ở đầu trang. Chặn mọi nút thay đổi dữ liệu. |
| Đổi chi nhánh ở tab khác | Tab hiện tại nhận biết và hiện dải yêu cầu tải lại, không hiển thị lẫn dữ liệu hai chi nhánh. |
| Tình huống | Hành vi chuẩn |
|---|---|
| Tên bài quá dài | Cắt bằng dấu ba chấm ở cuối, giữ nguyên tên đầy đủ trong chú thích khi rê chuột và trên màn chi tiết. |
| Tên lớp và tên học sinh có dấu tiếng Việt | Sắp xếp theo thứ tự bảng chữ cái tiếng Việt, không theo mã ký tự. |
| Giao diện tiếng Anh | Toàn bộ chuỗi có bản dịch. Định dạng ngày theo vùng. Số lượng dùng dạng số ít số nhiều đúng. |
| Múi giờ | Hạn nộp hiển thị theo giờ địa phương của người xem, lưu theo giờ chuẩn quốc tế. Ghi rõ múi giờ khi trường có nhiều chi nhánh khác múi giờ. |
| Quy tắc | Định nghĩa |
|---|---|
| Tỉ lệ nộp | Số lượt đã nộp chia tổng số lượt được giao, tính trên những học sinh còn trong lớp tại thời điểm tính. Học sinh đã rời lớp không nằm ở mẫu số. |
| Bài cần chú ý | Thoả một trong ba: quá 48 giờ kể từ khi bắt đầu mà chưa một ai mở; còn dưới 24 giờ tới hạn mà dưới 50% đã nộp; đã quá hạn mà còn người chưa nộp và chưa quá hạn 7 ngày. |
| Bài đã xong | Mọi học sinh còn trong lớp đã nộp, hoặc đã quá hạn trên 7 ngày. Bài không hạn không bao giờ tự vào nhóm này nếu chưa đủ người nộp. |
| Đã mở | Học sinh đã vào bài ít nhất một lần, dù chưa nộp. Phân biệt với chưa mở để chọn đúng lời nhắc. |
| Một bài giao một đề | Chọn nhiều đề tạo ra nhiều bài giao độc lập. Không có khái niệm bài giao chứa nhiều đề, để thống kê và chấm không bị nhập nhằng. |
| Người nhận là hợp nhất | Trộn lớp và học sinh lẻ trong một bài giao là hợp lệ. Danh sách người nhận cuối cùng là hợp của các tập, đã khử trùng lặp. |
| Hạn nộp lưu theo giờ chuẩn quốc tế | Hiển thị theo giờ địa phương người xem. Mốc mặc định khi chọn ngày là 23 giờ 59 phút cùng ngày. |
| Trần lời nhắc | Hai lời nhắc tự động mỗi học sinh mỗi bài; ba lời nhắc mỗi học sinh mỗi ngày trên toàn hệ thống; nhắc thủ công cách nhau tối thiểu 24 giờ cho cùng một cặp học sinh và bài. |
| Khung giờ gửi | Từ 7 giờ tới 21 giờ theo giờ địa phương của trường. Ngoài khung thì xếp hàng chờ. |
| Hoàn tác | Chỉ áp dụng trong phiên hiện tại, trong 8 giây, cho hành động tạo và xoá. Sau đó không khôi phục được. |
| Khoá sửa đề | Khi đã có ít nhất một lượt nộp. Lý do: đổi đề làm điểm đã chấm mất nghĩa. |
| Phạm vi nhìn thấy | Giáo viên thấy bài của lớp được phân công. Chủ trường và quản lý thấy toàn bộ chi nhánh đang chọn, không bao giờ thấy chi nhánh khác. |
Phần lớn nghiệp vụ đã có sẵn. Bản 2.0 chủ yếu sắp xếp lại giao diện quanh các lời gọi hiện hữu.
| Lời gọi hiện có | Dùng cho |
|---|---|
partnerAssignTestCreate | Tạo bài giao |
PartnerAssignTestUpdate | Sửa bài giao |
PartnerViewerAssignTestDelete | Xoá bài giao |
PartnerViewerAssignTestRemindStudentPartnerViewerAssignTestRemindParent | Nhắc học sinh và phụ huynh |
PartnerViewerAssignTestReAssign | Giao lại cho một học sinh |
PartnerAssignTestPartnerViewerRollupAssignTestProfiles | Chi tiết bài giao và danh sách nộp |
useTeacherViewerRollupAssignTests | Danh sách bài giao (REST) |
useTeacherAssignTestsByAssignTestIdAnalyticsQuestionAnalysis | Phân tích theo câu hỏi |
| Mức | Cần có | Lý do |
|---|---|---|
| Bắt buộc | Kiểm tra người nhận rỗng ở máy chủ | Sửa lỗi 177 bài giao cho không ai. Phải chặn ở máy chủ, không chỉ ở giao diện. |
| Bắt buộc | Trường opened_at trên bản ghi từng học sinh | Không có trường này thì không phân biệt được chưa mở với đã mở nhưng chưa nộp, mà đó là căn cứ chọn lời nhắc. |
| Bắt buộc | Bộ đếm tổng hợp trong danh sách: số đã nộp, số chờ chấm, số chưa mở | Danh sách hiện nay phải gọi thêm cho từng dòng. Với 500 bài giao thì không chịu nổi. |
| Nên có | Tham số sắp xếp và lọc theo nhóm trạng thái ở máy chủ | Ba khối phải phân loại ở máy chủ, không phải tải hết rồi lọc ở trình duyệt. |
| Nên có | Tạo nhiều bài giao trong một lời gọi | Chọn 10 đề hiện sẽ thành 10 lời gọi. Gộp lại để thao tác là một giao dịch, hoàn tác được trọn vẹn. |
| Nên có | Khoá chống trùng theo mã yêu cầu | Nhấn hai lần hoặc mạng chập chờn không được tạo hai bài. |
| Nên có | Nhật ký bài giao | Ghi mọi lần nhắc, gia hạn, thêm người nhận. Cần cho việc giải thích với phụ huynh và cho chính giáo viên. |
| Sau | Bảng mẫu giao bài | Lưu tổ hợp đề, người nhận, tuỳ chọn. |
| Sau | Tác vụ định giờ gửi nhắc tự động, kèm trần số lượng và khung giờ | Phần có tác động lớn nhất tới tỉ lệ nộp, nhưng cũng rủi ro nhất nên làm sau khi nhắc thủ công đã chứng minh hiệu quả. |
Phần này không phải mục bổ sung cuối tài liệu mà là điều kiện nghiệm thu. Bản điện thoại hiện đang 4,5 trên 10, phần lớn vì vùng chạm quá nhỏ.
| Yêu cầu | Mức chuẩn |
|---|---|
| Vùng chạm | Tối thiểu 44 nhân 44 điểm ảnh cho mọi phần tử chạm được, trên mọi kích thước màn. Khoảng cách giữa hai vùng chạm tối thiểu 8 điểm ảnh. |
| Tương phản | Chữ thường tối thiểu 4,5 trên 1. Chữ lớn và biểu tượng tối thiểu 3 trên 1. Kiểm cả ba chủ đề màu. |
| Không dùng riêng màu sắc | Trạng thái bài giao luôn có chữ kèm chấm màu. Người không phân biệt được màu vẫn đọc được. |
| Bàn phím | Đi hết mọi chức năng bằng bàn phím. Thứ tự tiêu điểm theo thứ tự đọc. Vòng tiêu điểm nhìn thấy rõ, không bị cắt. Màn soạn bài giữ tiêu điểm bên trong và trả về đúng nút đã mở khi đóng. |
| Trình đọc màn hình | Mỗi dòng bài giao đọc thành một câu đủ nghĩa: tên bài, lớp, tiến độ, thời gian còn lại. Thay đổi số liệu thông báo qua vùng sống động lịch sự, không cắt lời. |
| Cỡ chữ hệ thống | Bố cục không vỡ khi người dùng phóng chữ tới 200%. Không dùng chiều cao cố định cho phần tử chứa chữ. |
| Giảm chuyển động | Tôn trọng thiết lập hệ điều hành: bỏ chuyển cảnh trượt, giữ chuyển mờ dưới 100 mili giây. |
| Mục tiêu điện thoại | Giao xong một bài cho một lớp trong không quá 4 lần chạm, tính từ màn Theo dõi. |
| Chỉ số | Hôm nay | Mục tiêu | Đo bằng |
|---|---|---|---|
| Tỉ lệ bài giao được nộp | 49,9% | 65% sau 2 quý | Truy vấn cơ sở dữ liệu, tính hằng tuần |
| Bài giao không một ai nộp | 16,8% | Dưới 8% | Truy vấn cơ sở dữ liệu |
| Tỉ lệ hoàn thành luồng soạn bài | Chưa biết | 85% | assignment_create_started → assignment_created |
| Thời gian trung vị để giao một bài | Chưa biết | Dưới 40 giây | duration_ms trên assignment_created |
| Tỉ lệ bài giao có nhắc | Chưa biết | 40% | assignment_reminder_sent |
| Hiệu quả của nhắc | Chưa biết | Chênh trên 10 điểm phần trăm | So tỉ lệ nộp giữa bài có nhắc và không nhắc |
| Mức tập trung khối lượng | 54,2% từ 10% giáo viên | Dưới 45% | Truy vấn cơ sở dữ liệu |
| Tỉ lệ giao bài trên điện thoại | Chưa biết | Tăng gấp đôi | Thuộc tính device |
| Giai đoạn | Nội dung | Vì sao theo thứ tự này |
|---|---|---|
| Phần A Không cần dự án | Sửa lỗi người nhận rỗng ở máy chủ. Dựng truy vấn tỉ lệ nộp chạy hằng tuần trên data.flyer.vn. Gắn nhóm sự kiện C. | Ba việc nhỏ, làm được trong hai tuần, và cho ngay đường cơ sở để đo mọi thứ sau đó. Không có đường cơ sở thì không chứng minh được bản 2.0 có tác dụng. |
| Phần B1 Vòng khép kín | Màn Theo dõi ba khối. Nhắc thủ công. Gia hạn nhanh. Nhật ký bài giao. | Đây là phần tác động thẳng tới con số 49,9% và không đụng vào luồng tạo, nên rủi ro thấp. Làm trước để có kết quả sớm. |
| Phần B2 Màn soạn bài | Gộp ba bước thành một màn. Chọn nhiều đề. Bản nháp. Phím tắt. Bản điện thoại. | Thay đổi luồng quen thuộc của 641 người đang dùng hằng ngày, nên cần thời gian chạy song song hai bản và cờ bật tắt theo trường. |
| Phần B3 Tự động | Nhắc tự động ba mốc. Mẫu giao bài. Thao tác hàng loạt. | Chỉ làm sau khi nhắc thủ công đã chứng minh chênh lệch tỉ lệ nộp. Bật tự động khi chưa biết hiệu quả là rủi ro với phụ huynh. |
| Phần C Đề xuất sau | Nối Bingo AI Co-Teacher vào màn soạn bài. Giao bài theo lộ trình cá nhân hoá. | Cần nền dữ liệu năng lực theo kỹ năng, hiện chưa đủ. |
Tài liệu này dựa trên số liệu hệ thống, không dựa trên quan sát người dùng. Bốn giả định dưới đây nếu sai thì thiết kế phải đổi, và cả bốn đều kiểm được trong một tuần bằng cách ngồi cạnh xem sáu giáo viên làm việc.
| Giả định | Cách kiểm | Nếu sai thì sao |
|---|---|---|
| Giáo viên muốn biết bài nào đang chết, và sẽ hành động khi được báo | Hỏi 6 giáo viên đang có bài không ai nộp xem họ có biết không, và định làm gì | Nếu họ biết mà cố tình bỏ qua thì vấn đề không nằm ở giao diện mà ở động lực của học sinh. Cả mục 7 phải viết lại. |
| Nhắc nhở làm tăng tỉ lệ nộp | Thử nghiệm có đối chứng trên 200 bài giao trong 3 tuần, nhắc một nửa | Nếu chênh lệch dưới 5 điểm phần trăm thì bỏ toàn bộ Phần B3 và tìm nguyên nhân khác. |
| Ba bước là nguyên nhân gây bỏ dở | Gắn sự kiện trước, đo tỉ lệ bỏ theo bước trong 2 tuần | Nếu tỉ lệ hoàn thành đã trên 90% thì gộp màn không đáng ưu tiên; dồn sức cho Phần B1. |
| Nhóm giao nhiều cần thao tác hàng loạt | Phỏng vấn 3 giáo viên trong nhóm 10% cao nhất | Nếu họ đã có cách riêng và thấy ổn thì hạ Mẫu giao bài xuống sau cùng. |
Tài liệu do trợ lý AI soạn ngày 19/09/2026 theo yêu cầu ở khung đầu trang. Số liệu lấy từ read-replica cùng ngày; phần mô tả luồng hiện tại lấy từ mã nguồn partner-web. Phần thiết kế là đề xuất, cần Design review và kiểm chứng bốn giả định ở mục 15 trước khi đưa vào sprint.