Khi đáp án hoặc bộ chấm bị sai, giảng viên sửa bộ chấm rồi chấm lại các bài nộp đã có. Không cần học viên nộp lại, thời gian nộp giữ nguyên, bảng xếp hạng tự đúng lại.
SP-793 · 5 Oct 2026
Status as of 5 Oct 2026
Stage
Open PR. Chưa merge, chưa có trên beta, chưa có trong production tag.
PR
#536 backend (endpoint, migration thêm cột rejudged_at), giao diện trang Bài nộp, và hai bản sửa sau review: chấm lại cả bài bị kẹt, và ô chọn tự động làm mới không còn bị cắt chữ.
All screenshots and the video come from a local stack with mock data. The names and numbers are not real. Chưa có ai kiểm tra trên beta.
Vì sao cần tính năng này
Trước đây, điểm của một bài nộp được chấm một lần rồi giữ nguyên. Nếu giảng viên tải lên file đáp án sai, hoặc máy chấm gặp sự cố, thì điểm sai nằm lại trên bảng xếp hạng. Cách duy nhất là nhờ học viên nộp lại, hoặc sửa tay trong database. Với cuộc thi, bảng xếp hạng đã chốt cũng không tự tính lại. Tính năng này cho giảng viên chấm lại bằng bộ chấm hiện tại, ngay trên trang Bài nộp.
Thay đổi trong một hình
Bước 1
Phát hiện điểm sai
Bảng xếp hạng lạ, hoặc có bài báo lỗi bộ chấm.
→
Bước 2
Sửa bộ chấm
Tải lên file đáp án đúng hoặc sửa cấu hình chấm.
→
Bước 3
Chấm lại
Một dòng, các dòng đã chọn, hoặc tất cả.
→
Bước 4
Điểm và hạng đúng lại
Bảng xếp hạng luyện tập và cuộc thi tự cập nhật.
Video demo
Gần 3 phút, có giọng đọc tiếng Anh và phụ đề tiếng Việt. Chấm tròn xanh là con trỏ chuột.
Trong video
Trước khi sửa: trang Bài nộp có 13 bài, một bài báo "Lỗi bộ chấm". Bảng xếp hạng để Bao đứng đầu, Minh đứng cuối. Bảng xếp hạng cuộc thi để Lan đứng đầu với 100 điểm.
Giảng viên tải lên file đáp án đúng. Điểm cũ chưa đổi.
Chấm lại một dòng (Minh): hộp thoại, thông báo "Đã đưa 1 ..., bỏ qua 0", dòng chuyển sang chờ chấm, rồi có điểm 1.000000 và dòng "Chấm lại lúc ...".
Chọn 3 dòng và bấm "Chấm lại bài đã chọn": 3 bài vào hàng chờ.
"Chấm lại tất cả": bật thử ô "Chỉ bài nộp bị lỗi", rồi tắt và chấm lại tất cả. Thông báo "Đã đưa 10 ..., bỏ qua 3": 3 bài vừa chọn vẫn đang chờ nên bị bỏ qua.
Bảng xếp hạng cuộc thi hiện "Kết quả đang được tính", rồi chốt lại: Khanh 100, Mai 85, Nam 65, Lan 20.
Bảng xếp hạng luyện tập đúng lại: Minh đứng đầu, Bao đứng cuối. Thời gian nộp không đổi.
Sau hai lần chấm lại nhiều dòng, hộp thoại còn mở vài giây sau thông báo. Đây là lỗi chỉ xảy ra ở môi trường local (xem phần Giới hạn đã biết).
Cách dùng
Xem trang Bài nộp và Bảng xếp hạng
Mở bài tập, tab Bài nộp. Chọn "Tất cả bài nộp" để thấy cả bài nộp trong cuộc thi. Bài có chữ đỏ "Lỗi bộ chấm" là bài máy chấm không chấm được.
Trước khi sửa. Điểm của bài làm tốt rất thấp (Minh 0.200000), Bao 1.000000, Dung Vu báo Lỗi bộ chấm. Click to open full size.Bảng xếp hạng trước khi sửa: Bao 1.000000 đứng đầu, Minh 0.200000 đứng cuối. File đáp án bị lệch một dòng, bài của Bao cũng lệch đúng một dòng nên được điểm tối đa.
Sửa nguyên nhân trước
Tab Chi tiết, phần "Tệp đầu vào & đáp án": bấm Thay thế tệp ở dòng Tệp đáp án, hoặc sửa cách chấm. Chấm lại chỉ có ích khi bộ chấm đã đúng. Tải đáp án mới không tự đổi điểm cũ.
Đã tải lên file đáp án đúng. Cách chấm: So sánh CSV cơ bản.
Chấm lại một dòng
Trong cột Hành động, bấm biểu tượng mũi tên vòng của dòng đó, rồi bấm Chấm lại. Dòng chuyển sang "Đang chờ chấm", điểm cũ bị xóa. Khi chấm xong, dòng có điểm mới và ghi "Chấm lại lúc ...".
Hộp thoại giải thích: điểm cũ bị xóa đến khi có kết quả mới.Thông báo cho biết số bài vào hàng chờ và số bài bị bỏ qua.
Minh sau khi chấm lại: 1.000000. Thời gian nộp giữ nguyên, bên dưới có thêm “Chấm lại lúc ...”.
Chấm lại nhiều dòng
Tích chọn các dòng, rồi bấm Chấm lại bài đã chọn trên thanh thao tác.
3 dòng đã chọn vào hàng chờ.
Chấm lại tất cả
Bấm Chấm lại tất cả. Thao tác này gồm cả bài nộp trong cuộc thi và sandbox. Tích Chỉ bài nộp bị lỗi nếu chỉ muốn chấm lại các bài báo lỗi bộ chấm, ví dụ sau khi máy chấm bị sập.
Hộp thoại Chấm lại tất cả, ô “Chỉ bài nộp bị lỗi” đang tích.Chấm lại tất cả (không tích ô lỗi): 10 bài vào hàng chờ, 3 bài bỏ qua vì vừa được chọn chấm lại và còn đang chờ.
Đợi chấm xong và kiểm tra
Trang Bài nộp tự làm mới mỗi 30 giây sau khi chấm lại. Khi mọi dòng đã có điểm, mở tab Bảng xếp hạng.
Sau khi chấm lại: mọi dòng có điểm mới, Dung Vu có 0.700000 thay vì lỗi. Click to open full size.
Trước và sau
Bảng xếp hạng luyện tập
Trước: Bao 1.000000, Giang 0.350000, ... Minh 0.200000. 7 người được xếp hạng, Dung vắng vì lỗi bộ chấm.Sau: Minh 1.000000, Linh 0.950000, An 0.900000, Chi 0.800000, Dung 0.700000, Giang 0.600000, Hanh 0.500000, Bao 0.200000. 8 người. Thời gian nộp như cũ.
Bảng xếp hạng cuộc thi
Trước: Lan 100.00, Mai 30.00, Khanh 20.00, Nam 20.00.Sau: Khanh 100.00, Mai 85.00, Nam 65.00, Lan 20.00.
Trong lúc chấm: “Kết quả đang được tính”. Bài đang chờ không được tính, nên lúc này bảng trống.
Quy tắc khi chấm lại
Quy tắc
Ý nghĩa
Dùng bộ chấm hiện tại
Mỗi bài chấm lại lấy file đáp án, cách chấm và giới hạn thời gian hiện tại của bài tập, không dùng cấu hình lúc học viên nộp.
Giữ thời gian nộp
Thời gian nộp không đổi. Khi bằng điểm, bài nộp sớm hơn vẫn xếp trên. Dòng "Chấm lại lúc" ghi lần chấm lại gần nhất.
Không đụng giới hạn nộp bài
Chấm lại không tạo bài nộp mới, nên không tính vào giới hạn 30 giây giữa hai lần nộp của học viên.
Xóa điểm cũ khi đang chờ
Bài đang chờ có điểm public 0 và không có điểm private, nên không xếp hạng bằng điểm cũ.
Bài bị kẹt được chấm lại
Bài "Đang chờ chấm" hoặc "Đang chấm" quá 15 phút không có động tĩnh (máy chấm chết giữa chừng, tác vụ trong hàng đợi bị mất) được đưa lại vào hàng chờ.
Bài đang chấm thật thì bỏ qua
Bài đang được máy chấm giữ, hoặc vừa vào hàng chờ trong 15 phút, bị bỏ qua và được đếm trong số "bỏ qua".
Bài không còn file
Bài không còn file nộp bị bỏ qua.
Tối đa 500 bài mỗi lần
Mỗi lần bấm chấm lại tối đa 500 bài. Nếu còn, thông báo ghi số bài còn lại; bấm "Chấm lại tất cả" lần nữa để chấm tiếp. Bài chưa từng chấm lại được ưu tiên.
Quyền
Chủ bài tập hoặc tenant admin. Chỉ trong tenant hiện tại.
Bảng xếp hạng cuộc thi
Bản chốt cũ bị gỡ. Khi chấm lại một bài nộp trong cuộc thi, bảng xếp hạng đã chốt của cuộc thi đó bị gỡ khỏi trạng thái hiện hành.
Tạm thời trong lúc chấm. Trang bảng xếp hạng hiện "Kết quả đang được tính" và chỉ tính bài đã có điểm.
Chốt bản mới. Khi mọi bài đã chấm xong, hệ thống chốt một phiên bản mới (trong demo: phiên bản 2). Phiên bản cũ vẫn được lưu nhưng không còn hiện.
Vì sao tin được
Chấm thật, không sửa tay. Trong demo, điểm đến từ máy chấm thật (judge-runner chạy local) so sánh file trên R2. Không có điểm nào được ghi tay vào database.
Bài chấm cũ không ghi đè bài mới. Khi chấm lại, khóa của tác vụ cũ bị xóa. Một máy chấm chậm từ lần trước không thể ghi kết quả cũ lên bài đã chấm lại.
Hai người bấm cùng lúc không chấm trùng. Các dòng được khóa trong lúc đưa vào hàng chờ.
Kiểm tra bằng tay. File đáp án sai lệch một dòng. Bài của Minh đúng cả 20 dòng so với đáp án đúng, nhưng chỉ 4 dòng trùng với file lệch, nên trước khi sửa Minh có 4/20 = 0.20. Sau khi chấm lại Minh có 20/20 = 1.00. Bài của Bao lệch đúng một dòng như file sai, nên ngược lại: 1.00 trước, 0.20 sau.
Giới hạn đã biết
Không cứu được bài nộp chưa từng được lưu. Ví dụ các request bị rollback trước bản sửa ở PR #535. Chấm lại chỉ làm việc với bài nộp đã có trong hệ thống; những học viên đó cần nộp lại.
Chủ bài tập chấm lại được bài nộp trong cuộc thi của người khác. Quyền chấm lại theo bài tập, không theo cuộc thi. Nếu chủ bài tập khác chủ cuộc thi, chủ bài tập vẫn chấm lại được bài nộp của cuộc thi đó và làm bảng xếp hạng cuộc thi tính lại. Đây là lựa chọn có chủ đích, cần nhớ khi chia sẻ bài tập.
Phải sửa bộ chấm trước. Chấm lại với bộ chấm sai cho ra cùng điểm sai.
Bài vừa vào hàng chờ trong 15 phút bị bỏ qua. Nếu chắc một bài bị kẹt sớm hơn, chờ hết 15 phút rồi bấm lại.
Local: hộp thoại đóng chậm khi chấm lại nhiều dòng. Khi hàng đợi Cloud Tasks không được cấu hình (máy local), mỗi bài chấm lại tốn khoảng 1 giây tra cấu hình, làm backend đứng vài giây. Beta và production có cấu hình đầy đủ nên không bị. Đã có bản sửa nhưng chưa đưa vào PR vì chưa chạy được test database.