Learneris · Release Notes

Bảng tin, và bài học lên trước · The noticeboard, and the lesson up front

7 Tháng 8, 2026🌐 PublicClassroomLMS

Bảng tin cho trường và cho từng lớp — thông báo tới hộp thư và email của đúng người, không còn đi nhầm lớp. Kèm menu bốn loại thông báo, trong đó nghỉ học và học bù còn dời luôn bài của các buổi sau. Cùng lúc, tên bài đang dạy lên trước trong màn hình buổi học, học liệu hiện ngay khi bấm Bắt đầu, và lịch của học sinh ghi tên bài thay vì tên lớp. · A school- and class-scoped noticeboard, delivered to the right people's inbox and email. Plus a four-option action menu, where cancelling a class or adding a make-up also shifts the lessons on every later session. Alongside it, the lesson leads on the session screen, its materials appear on Start, and a student's calendar names the unit instead of the class.


Có gì mới

Bảng tin của trường và của lớp

Thông báo giờ có chỗ riêng: gửi cho toàn trường hoặc cho một lớp. Ai thuộc nhóm nhận thì thấy trong hộp thư trong ứng dụng và nhận email — đi qua đúng hàng đợi thông báo mà hệ thống vẫn dùng, nên có nhật ký gửi như mọi thư khác.

Giáo viên đăng thông báo — chọn người nhận, viết tiêu đề và nội dung. Trang Bảng tin của giáo viên — ô

Học sinh mở Bảng tin — mỗi thông báo ghi rõ là của lớp hay của toàn trường. Bảng tin của học sinh — hai thông báo với nhãn

Phạm vi được tính bằng khóa ngoại, không phải bằng tên. Bản trên mobile lưu tên trường và tên lớp dưới dạng chữ, và đó chính là chỗ đã hỏng: một thông báo "gửi cho trường" đối chiếu tên trường với cột chứa mã tổ chức, nên không tới được ai — trong khi thông báo không ghi tên trường lại tới mọi thiết bị trên toàn hệ thống. Ở đây chuyện đó không thể xảy ra.

Giáo viên đăng được cho lớp mình dạy. Thông báo toàn trường thì chỉ quản trị viên đăng.

Menu bốn loại thông báo

Bốn việc một trường hay thông báo, và ba trong số đó vốn đã có sẵn dữ liệu trong hệ thống.

Menu "Action option" — bốn lựa chọn. Menu đang mở với bốn mục: Homework notice, Class cancelled, Make-up class, Other.

Nghỉ học và học bù dời luôn lịch bài

Đây là phần đáng chú ý nhất. Huỷ buổi thứ Sáu không chỉ là đánh dấu buổi đó, mà cả chuỗi bài phía sau dời theo: bài của buổi bị huỷ chuyển sang buổi kế tiếp, và cứ thế. Lớp không bỏ bài, lớp hoãn bài.

Huỷ buổi 5/9 — bài dời xuống một nấc, và bài cuối không còn chỗ. Sơ đồ: hai cột TRƯỚC và SAU cho sáu buổi học. Hai buổi đã dạy giữ nguyên. Buổi 5/9 chuyển sang huỷ. Ba mũi tên xanh cho thấy Bài 3, 4, 5 lần lượt dời xuống buổi kế tiếp, và một mũi tên đứt màu cam cho thấy Bài 6 rơi ra thành

Buổi đã dạy thì không bao giờ bị dời, và bài đã dạy cũng không bị đem ra dạy lại. Một bài dạy hôm thứ Hai không thể quay lại vào thứ Sáu.

Bài cuối cùng rơi ra khỏi lịch thì hệ thống nói rõ là chưa xếp được, chứ không quay vòng về bài 1 — đúng như bộ xếp lịch vẫn làm. Muốn lấy lại bài đó thì dùng chính mục Học bù — và nó lấy về đúng bài vừa thiếu:

Thêm buổi bù 9/9 — buổi mới chèn theo ngày, phần còn lại lùi theo, bài thiếu được xếp lại. Sơ đồ tiếp nối: buổi bù thứ Ba 9/9 chèn vào giữa và nhận Bài 4; hai mũi tên xanh cho thấy Bài 5 và Bài 6 lùi sang các buổi sau; một mũi tên xanh lá đưa

Việc đổi lịch và việc đăng thông báo nằm trong cùng một giao dịch: không có trạng thái nào mà buổi đã huỷ nhưng không ai được báo, hay có thông báo mà buổi vẫn còn nguyên.

Bài học lên trước trong màn hình buổi học

Trước đây mở một buổi học thì thứ đập vào mắt là tên lớp; đang dạy bài nào thì nằm cuối một dòng chữ xám nhỏ.

Trước — tên bài nép cuối dòng ngày tháng. Màn hình buổi học Lớp 4A1 — dòng xám nhỏ ghi

Sau — tên bài đứng riêng một khối, khóa học nằm dưới. Cùng màn hình đó — khối có viền trái màu xanh, ghi

Bấm Bắt đầu, học liệu hiện ra tại chỗ

Không phải sang trang Khóa học tìm nữa. Bấm Bắt đầu buổi học là học liệu của bài hiện ngay dưới đồng hồ, cùng màn hình với điểm danh.

Buổi học đang diễn ra — 12/12 có mặt, học liệu nằm ngay dưới. Màn hình buổi học đang diễn ra — đồng hồ chạy, 12/12 có mặt, mục

Học liệu ở đây chỉ đọc và hiện đủ nội dung. Không có nút Sửa — giữa giờ dạy mà bấm nhầm vào trình soạn thảo là phiền, không phải tiện. Buổi chưa bắt đầu thì mục này không hiện.

Lịch của học sinh ghi tên bài

Trước — mỗi buổi chỉ ghi tên lớp. Lịch tháng 8 của học sinh — các ô ngày chỉ ghi

Sau — mỗi buổi ghi tên bài. Cùng lịch đó — các ô ngày ghi

Buổi chưa xếp bài thì vẫn ghi tên lớp. Đây là trạng thái bình thường, không phải lỗi.

Bật/tắt cho từng môi trường

Bảng tin và việc đổi lịch nằm sau hai công tắc riêng, đều mặc định tắt. Đăng một dòng chữ và viết lại lịch bài của cả lớp là hai mức rủi ro khác nhau, nên không dùng chung một công tắc.

Muốn thông báo thật sự gửi đi thì cần thêm hàng đợi và Redis. Nếu chỉ bật bảng tin mà chưa bật hàng đợi, thông báo vẫn lên bảng nhưng không ai nhận email — và màn hình nói thẳng điều đó, không im lặng.

Ba thay đổi về màn hình buổi học và lịch thì không có công tắc: chúng có hiệu lực ngay.

Tắt công tắc đổi lịch thì hệ thống ngừng đổi tiếp, nhưng những gì đã đổi vẫn giữ nguyên — buổi đã huỷ vẫn huỷ, bài đã dời vẫn ở chỗ mới.

Vì sao hữu ích

Bản trên mobile đã có bảng tin, và trong suốt thời gian chạy thật nó chưa từng được dùng một lần nào — không có lấy một thông báo nào được đăng. Không phải vì trường không cần thông báo, mà vì thông báo ở đó không tới được ai một cách đáng tin.

Phần còn lại trả lời cùng một câu hỏi: hôm nay học bài gì? Với giáo viên, câu trả lời từng nằm ở cuối một dòng chữ xám, còn nội dung bài ở trang khác. Với học sinh, câu trả lời bị thay bằng tên lớp — thứ các em đã biết.

Và khi lịch thay đổi, việc báo cho lớp với việc sửa lịch giờ là một việc, không phải hai việc mà người ta có thể làm một rồi quên cái kia.


What's new

A noticeboard for the school and for each class

Notices now have a home: send to the whole school or to one class. Everyone in the audience gets it in their in-app inbox and by email, through the same notification queue everything else uses — so it carries a send log like any other mail.

A teacher posts a notice — choose the audience, write a title and a body.

A student opens the noticeboard — each notice says whether it's for their class or the whole school.

Scope is resolved by foreign key, never by name. The mobile version stored school and class as free text, and that is exactly where it broke: a "whole school" notice matched a school name against a column holding org ids, so it reached nobody — while a notice with no school name fell through to every device on the platform. That's not expressible here.

Teachers post to classes they teach. School-wide is administrators only.

A four-option action menu

Four things a school actually announces — and three of them are about something the system already knows.

The Action option menu, open.

Cancelling and make-ups move the syllabus

This is the part worth reading twice. Cancelling Friday doesn't just flag that session — the whole run of lessons behind it moves. Friday's lesson becomes Monday's, and so on down. The class hasn't skipped a lesson; it postponed one.

Cancelling 5 Sep — each lesson slides down one session, and the last one runs out of calendar.

A session that has already been taught never moves, and a lesson already taught is never served again. A lesson taught on Monday can't reappear on Friday.

When the last lesson falls off the end of the calendar, the system says so rather than wrapping back to lesson 1 — matching what the schedule generator already does. Recovering it is what the make-up option is for, and it picks up exactly the lesson the cancellation orphaned:

Adding a make-up on 9 Sep — it slots in by date, the rest shift back, and the orphaned lesson is scheduled again.

The schedule change and the notice commit in one transaction: there's no state where a session is cancelled and nobody was told, or a notice went out and the session still stands.

The lesson comes first on the session screen

Before — the lesson trailing the date line.

After — the lesson on its own, course underneath.

Tap Start, and the materials are right there

No trip to Courses. Tapping Start session brings the lesson's materials in under the clock, on the same screen as the register.

Mid-lesson — 12/12 present, materials directly below.

They're read-only and shown in full. No Edit affordance — a mis-click into the editor mid-class is a hazard, not a convenience. Nothing shows before the session starts.

A student's calendar names the unit

Before — every session reads "Lớp 4A1", "Lớp 5B1".

After — each session names the unit.

A session with no lesson assigned still shows the class name. Ordinary state, not a fault.

Switched on per environment

The noticeboard and the schedule changes sit behind two separate switches, both off by default. Posting text and rewriting a class's syllabus are different blast radii and shouldn't share one.

Delivery additionally needs the queue and Redis. With the noticeboard on but the queue off, notices are written and readable but nobody is emailed — and the screen says so rather than staying quiet about it.

The three session and calendar changes are not flagged; they take effect immediately.

Switching the schedule flag off stops further changes, but what already moved stays moved — cancelled sessions stay cancelled, shifted lessons stay shifted.

Why it matters

Mobile already had a noticeboard, and across its entire time in production it was never once used — not a single notice posted. Not because schools have nothing to announce, but because a notice there couldn't reliably reach anyone.

The rest answers one question: what are we doing today? For a teacher, the answer used to sit at the end of a grey line with the content on another page. For a student, it was replaced by the class name — something they already knew.

And when the schedule changes, telling the class and fixing the timetable are now one action rather than two, one of which someone forgets.