Học sinh
exam.flyer.us · ứng dụng FLYER
Nhận nhiều nhất
21 loại. Chân dung duy nhất nhận thông báo đẩy qua Firebase.
Kiểm kê mọi báo cáo và thông báo trên exam.flyer.us, teacher.flyer.us và ứng dụng FLYER, theo bốn kênh: trong ứng dụng, email AWS SES, đẩy Firebase, Zalo ZNS.
36 loại thông báo · 20 mẫu email · 4 báo cáo định kỳ · 8,21 triệu bản ghiTài liệu được viết để trả lời yêu cầu đặt ra ngày 23/09/2026, nguyên văn:
1. check cho anh trên hệ thống, xem đang có những loại report, báo cáo nào vd như cái này nhé. 2. build một trang prd cho anh listing tất cả những loại report đang có, notification đang bắn ở trên tất cả các hệ thống exam.flyer.us, teacher.flyer.us, FLYER App, và bắn bằng aws — check 3 lần trên database hoặc các event cho anh
Do trợ lý AI soạn. Danh mục lấy từ mã nguồn exam và flyer-rs; số liệu đếm trên read-replica 24/09/2026, ba lượt tra độc lập. Mục 11 chưa thống nhất với đội Kỹ thuật.
Bản ghi thông báo trong ứng dụng
Từ 2022 đến 24/09/2026
Loại thông báo đang tồn tại
33 khai báo, 3 nằm ngoài danh mục
Mẫu email qua AWS SES
10 dịch vụ Go, 5 dịch vụ Rust
Báo cáo chạy theo lịch
Tuần, tháng và hằng ngày
| Hạng mục | Số lượng | Ghi chú |
|---|---|---|
| Bản ghi thông báo trong ứng dụng | 8.209.154 | Bảng notifications, từ 2022 |
| Loại thông báo khai báo | 33 | exam/ent/schema/notification.go |
| Loại do dịch vụ khác ghi thêm | 3 | Nằm ngoài enum, xem mục 1 của tab Từng kênh |
| Loại còn bắn trong 30 ngày | 30 | Tính đến 24/09/2026 |
| Mẫu email | 20 | 15 ở dịch vụ Go, 5 ở dịch vụ Rust |
| Báo cáo chạy theo lịch | 4 | Bộ lập lịch flyer-rs |
| Cấu hình sự kiện vòng đời | 23 | Bảng notification_events |
| Mẫu Zalo ZNS | 4 | Phụ huynh, học phí, giáo viên, OTP |
email-smtp.ap-southeast-1.amazonaws.com cổng 587, tức AWS SES ở Singapore, bằng SMTP chứ không qua API của SES.Chọn mức gộp rồi chọn một kỳ: danh sách bên dưới là những loại thông báo thật sự có bản ghi trong kỳ đó, xếp theo tên. Gõ vào ô lọc để tìm nhanh, nhấn vào một tên để xem đúng nội dung người nhận nhìn thấy.
| Kênh | Do đâu gửi | Đích đến |
|---|---|---|
| Trong ứng dụng | Ghi vào bảng notifications | Chuông thông báo trên cả ba hệ thống |
Go exam qua Temporal; Rust flyer-rs | AWS SES SMTP, Singapore | |
| Đẩy trên điện thoại | send_learner_fcm.go, hàng chờ notification_schedules | Firebase Cloud Messaging |
| Zalo ZNS | send_learner_zalo.go và templates/zalo.rs | Zalo Notification Service |
Một bản ghi có thể ghi nhiều người nhận cùng lúc qua bốn cột profile_id, teacher_id, parent_id và school_id. Vì vậy tổng của bốn chân dung lớn hơn tổng số bản ghi. Số liệu 30 ngày tính đến 24/09/2026.
exam.flyer.us · ứng dụng FLYER
Nhận nhiều nhất
21 loại. Chân dung duy nhất nhận thông báo đẩy qua Firebase.
teacher.flyer.us
Nhận nhiều nhất
14 loại. Mỗi lượt nộp bài sinh một thông báo; lớp càng đông thì số thông báo càng lớn.
Zalo ZNS · email · ứng dụng
Nhận nhiều nhất
11 loại. 3.796 phụ huynh nhận trên 47.533 học sinh.
teacher.flyer.us · vai Admin và Owner
Nhận nhiều nhất
11 loại. Trung bình 25 thông báo mỗi ngày, gấp 100 lần mức của học sinh.
| Chân dung | Trong ứng dụng | Đẩy điện thoại | Zalo ZNS | |
|---|---|---|---|---|
| Học sinh | có | có | có | không |
| Giáo viên | có | có | không | có |
| Phụ huynh | có | có | không | có |
| Trường | có | có | không | không |
Chủ trường nhận nhiều thông báo nhất. 771 thông báo mỗi tháng, phần lớn là bản sao của thông báo đã gửi cho giáo viên và học sinh. Cần rà lại lý do school_id được ghi vào mọi bản ghi giao bài và nộp bài.
Phụ huynh gần như chưa được tiếp cận. 3.796 trên 47.533 học sinh, tương đương 8%. Số còn lại chưa có điểm chạm nào từ hệ thống.
Thông báo đẩy chỉ tới học sinh. Giáo viên chỉ nhận trên nền web, nên các việc cần xử lý sớm như phúc khảo phải chờ giáo viên truy cập trình duyệt.
type chứa payload dò lỗ hổng: lệnh ngủ Oracle và PostgreSQL, waitfor delay của SQL Server, thẻ <esi:include> trỏ tên miền lạ. Toàn bộ nguồn PARTNER, từ 21/09/2025 đến 13/03/2026. Một tham số từ bên ngoài đã được ghi thẳng vào cột type mà không qua kiểm tra. Cần chặn điểm ghi trước, xử lý dữ liệu sau.| Việc | Vì sao | Người quyết |
|---|---|---|
| Sửa lỗi không thay giá trị vào khuôn mẫu | SUBMIT_ATTEMPT hiển thị {learnerProfileId} cho 90% bản ghi; đây là loại nhiều thứ hai toàn hệ thống. LEAVE_CLASS và REFERRED_USER cùng lỗi. | Kỹ thuật |
Chặn đường ghi tự do vào cột type | 289 bản ghi bất thường đã được ghi vào; cùng đường dẫn đó có thể ghi nội dung khác. | Kỹ thuật |
Đưa ba loại của flyer-rs vào enum chung | PARENT_REPORT, EXAM_REMINDER, TUITION_REMINDER ngoài danh mục nên mọi xử lý theo loại đều bỏ sót. | Kỹ thuật |
| Quyết định hướng xử lý báo cáo Study | Đã hoàn thành nhưng chỉ ghi nhận hai tuỳ chọn và năm lượt gửi. | Sản phẩm |
| Loại bỏ bốn loại đã ngừng | LOOK_BACK, PARENT_WEEKLY_REPORT, CLASS_REMIND_LATE_LESSON, UPDATE_PHONE_NUMBER không còn bắn. | Kỹ thuật |
| Xem lại hàng chờ đẩy điện thoại | 2.843 bản ghi ở trạng thái chờ so với 715 bản ghi đã gửi. | Kỹ thuật |
Cột nguồn: PARTNER là phía giáo viên và trường, FLYER là phía học sinh. Bấm vào một dòng để xem tiêu đề và nội dung thật của thông báo đó.
Nguồn: bảng notifications, read-replica 24/09/2026.
Nguồn: bảng notifications, 30 ngày đến 24/09/2026. Đủ 36 loại ở bảng dưới.
| Mã | Khi nào bắn | Tổng | 30 ngày | Trạng thái |
|---|---|---|---|---|
| NEW_MISSION | Giao bài mới | 4.657.113 | 299.559 | còn chạy |
| SUBMIT_ATTEMPT | Học sinh nộp bài | 2.256.040 | 163.261 | còn chạy |
| WEEKLY_STUDY_TIME_REMAINING | Nhắc thời gian học, thứ Sáu | 591.610 | 47.125 | còn chạy |
| LOOK_BACK | Nhìn lại năm học | 279.620 | 0 | đã dừng 01/2023 |
| UPDATE_SCHOOL | Trường cập nhật thông tin | 154.858 | 5.957 | còn chạy |
| PARENT_REPORT | Báo cáo phụ huynh, ngày 1 | 91.118 | 35.816 | còn chạy |
| CLASS_REMIND_LESSON | Nhắc buổi học | 72.607 | 21.349 | còn chạy |
| PARENT_WEEKLY_REPORT | Báo cáo tuần phụ huynh | 21.346 | 0 | đã dừng 30/03/2026 |
| CHALLENGE_INVITE | Mời thách đấu | 16.394 | 702 | còn chạy |
| SCHOOL_INVITE | Mời vào trường | 11.740 | 1.831 | còn chạy |
| TEACHER_INVITE | Mời giáo viên | 11.311 | 628 | còn chạy |
| NEW_SCORE_SPEAKING | Có điểm Nói, AI chấm | 11.016 | 803 | còn chạy |
| EXAM_REMINDER | Nhắc kỳ thi | 10.781 | 1.982 | còn chạy |
| WISDOM_STONE_GRANTED | Được tặng đá tri thức | 6.871 | 5.149 | còn chạy |
| NEW_SCORE_WRITING | Có điểm Viết, AI chấm | 4.274 | 150 | còn chạy |
| LEAVE_CLASS | Học sinh rời lớp | 3.539 | 167 | còn chạy |
| CLASS_ONLINE_REMIND | Nhắc buổi học trực tuyến | 2.675 | 1.472 | còn chạy |
| NEW_SCORE_PRACTICE | Có điểm bài luyện tập | 1.791 | 9 | còn chạy |
| CHECK_POINT_REVIEW_REQUEST_ACCEPT | Duyệt thẩm định đề | 1.369 | 64 | còn chạy |
| CLASS_REMIND_LATE_LESSON | Nhắc buổi học trễ giờ | 829 | 0 | đã dừng 24/03/2026 |
| CHECK_POINT_REVIEW_REQUEST_REJECT | Từ chối thẩm định đề | 642 | 6 | còn chạy |
| ATTENDANCE_RECORDED | Ghi nhận điểm danh | 316 | 316 | còn chạy |
| REFERRED_USER | Có người được giới thiệu | 281 | 12 | còn chạy |
| JOIN_SCHOOL_REQUEST | Yêu cầu tham gia trường | 239 | 23 | còn chạy |
| NEW_FEATURE | Có tính năng mới | 93 | 5 | ít dùng |
| WISDOM_STONE_STORE_REQUESTED | Xin đổi quà bằng đá | 75 | 75 | còn chạy |
| WISDOM_STONE_STORE_APPROVED | Duyệt đổi quà | 69 | 69 | còn chạy |
| WISDOM_STONE_REVOKED | Thu hồi đá tri thức | 46 | 4 | ít dùng |
| ATTENDANCE_UPDATED | Sửa điểm danh | 19 | 19 | còn chạy |
| TUITION_REMINDER | Nhắc học phí | 9 | 1 | ít dùng |
| CUSTOM_DOMAIN_APPROVED | Duyệt tên miền riêng | 8 | 8 | ít dùng |
| PROGRAM_REVIEW_REQUEST_REJECT | Từ chối thẩm định chương trình | 4 | 0 | ít dùng |
| WISDOM_STONE_STORE_REJECTED | Từ chối đổi quà | 2 | 2 | ít dùng |
| CUSTOM_DOMAIN_REJECTED | Từ chối tên miền riêng | 1 | 1 | ít dùng |
| PROGRAM_REVIEW_REQUEST_ACCEPT | Duyệt thẩm định chương trình | 1 | 0 | ít dùng |
| UPDATE_PHONE_NUMBER | Đổi số điện thoại | 0 | 0 | khai báo, chưa dùng |
SUBMIT_ATTEMPT và LEAVE_CLASS
không thay giá trị vào khuôn mẫu: giáo viên đọc được đúng chữ {learnerProfileId} thay vì tên học sinh.
Trong ba ngày gần nhất, 11.898 trên 13.210 bản ghi SUBMIT_ATTEMPT mắc lỗi này, tương đương 90%,
và 11 trên 13 bản ghi LEAVE_CLASS. Đây là loại thông báo nhiều thứ hai toàn hệ thống với
2.256.040 bản ghi. Loại REFERRED_USER cũng mất tên người giới thiệu, nội dung bắt đầu bằng khoảng trắng.PARENT_REPORT, EXAM_REMINDER và TUITION_REMINDER đang chạy trên production nhưng không có trong enum của kho exam: chúng do dịch vụ flyer-rs ghi thẳng vào bảng. Ứng dụng đọc theo enum nên mọi xử lý riêng theo loại đều bỏ sót ba loại này.Hai dịch vụ cùng gửi qua một điểm ra là SES Singapore, tổng cộng 20 mẫu thư. Bấm vào một dòng để xem nội dung thư đó.
| Dịch vụ | Cách gửi | Số mẫu |
|---|---|---|
exam (Go) | Temporal, hàng đợi SENDER:SEND_MAIL, go-mail | 15 — 13 trong thư mục templates/, 2 nhúng thẳng vào mã |
flyer-rs (Rust) | Gửi trực tiếp bằng lettre | 5 trong api/src/templates/ |
| Tệp mẫu | Tiêu đề thư | Gửi khi nào | Người nhận |
|---|---|---|---|
| active_email.hbs | Thông tin mã kích hoạt FLYER | Thanh toán VNPay thành công | Học sinh |
| active_account.hbs | FLYER Activation Code Information | Thanh toán qua Polar | Học sinh |
| active_account_teacher.hbs | Thông tin nâng cấp gói giáo viên FLYER | Giáo viên nạp kim cương | Giáo viên |
| teacher_speaking_ai.hbs | Thông tin nâng cấp gói giáo viên FLYER | Giáo viên mua lượt chấm Nói | Giáo viên |
| active_teado_tool.hbs | Kích hoạt gói giáo viên Teado Tool thành công - FLYER | Kích hoạt gói Teado Tool | Giáo viên |
| invite_student.hbs | Teacher invites you to join the class! | Giáo viên mời vào lớp | Học sinh |
| invite_student_to_school.hbs | Teacher invites you to join the class! | Giáo viên mời vào trường | Học sinh |
| send_info_student.hbs | Your FLYER account is ready! | Trường tạo tài khoản hàng loạt | Học sinh |
| remind_parent_homework.hbs | Phụ huynh ơi, {tên} vẫn chưa làm bài tập {tên bài} đâu! | Giáo viên nhắc bài tập | Phụ huynh |
| send_result_challenge.hbs | Kết quả thách đấu của con là??? | Kết thúc phòng thách đấu | Phụ huynh |
| ai_score.html | Bạn có điểm bài {kỹ năng} mới! | You have a new {skill} score! | AI chấm xong bài Nói hoặc Viết | Học sinh |
| invite_flyer.html | Lời mời tham gia biệt đội FLYER! | Học sinh giới thiệu bạn bè | Người được giới thiệu |
| invite_teacher.html | Mời Tham Gia: Flyer Teacher – Giải Pháp Chấm Bài Speaking & Writing AI | Mời giáo viên dùng thử | Giáo viên |
| school_invite_teacher.html | {tên người mời} đã mời bạn tham gia vào {tên trường} | Trường mời giáo viên vào hệ thống | Giáo viên |
| email_verification.html | Xác thực tài khoản email trên FLYER | Người dùng đổi hoặc thêm email | Học sinh · giáo viên |
| teacher-report.html | [FLYER] Báo cáo học tập tuần {khoảng ngày} - {tên trường} | 20:00 thứ Hai và ngày 1 hằng tháng | Giáo viên · trung tâm |
| parent-report.html | [FLYER] Báo cáo học tập - {tên học sinh} - Tháng {khoảng ngày} | 00:00 ngày 1 hằng tháng | Phụ huynh |
| exam-reminder.html | Đặt trong mã gọi, không cố định trong mẫu | Trước kỳ thi tập trung | Học sinh |
| tuition-reminder.html | Đặt trong mã gọi, không cố định trong mẫu | Trường gửi phiếu thu học phí | Phụ huynh |
| placement-test.html | Đặt trong mã gọi, không cố định trong mẫu | Gửi bài kiểm tra đầu vào | Học sinh |
active_account_teacher.hbs và
teacher_speaking_ai.hbs cùng gửi với tiêu đề "Thông tin nâng cấp gói giáo viên FLYER", do hai
lời gọi đi qua cùng một hàm HandleSendMailTeacher. Giáo viên mua lượt chấm Nói nhận được thư
có tiêu đề nói về nâng cấp gói, trong khi nội dung bên trong lại là số lượt chấm đã cộng.Nguồn: kho exam (thư mục templates/, ent/mutation/,
module/auth/handler/) và kho flyer-rs (api/src/templates/). Tiêu đề đọc từ
các lời gọi trong mã Go và Rust.
Bộ lập lịch flyer-rs khai báo bốn việc, có thể đổi lịch qua trang quản trị.
| Việc | Lịch | Nghĩa là |
|---|---|---|
| TeacherWeeklyReport | 0 20 * * 1 | 20:00 thứ Hai hằng tuần |
| TeacherMonthlyReport | 0 20 1 * * | 20:00 ngày 1 hằng tháng |
| ParentReport | 0 0 1 * * | 00:00 ngày 1 hằng tháng |
| ClassScheduleRemind | 0 9 * * 1-5 | 09:00 các ngày trong tuần |
Nguồn: bảng notifications, loại WEEKLY_STUDY_TIME_REMAINING.
Ba bảng cho phép giáo viên tự đặt tần suất và giờ nhận: teacher_study_report_prefs, teacher_study_report_sends, teacher_study_report_nudges.
Bảng notification_events giữ 23 cấu hình, mỗi cấu hình một mốc tính từ sự kiện gốc, đơn vị ngày.
Nguồn: bảng notification_events. Ba cấu hình Zalo cùng ở ngày 0 nên trùng tại một chấm.
| Sự kiện gốc | Kênh | Số mốc | Mốc (ngày) | Điều kiện kèm theo |
|---|---|---|---|---|
| REGISTERED | Ứng dụng học sinh | 10 | 3, 4, 5, 6, 7, 9, 11, 13, 15, 17 | Chưa kích hoạt · Chưa làm bài · Đã làm đề Flyers · Đã làm đề Starters, Movers hoặc Flyers |
| NO_EXAMS_FOR_PERIOD | Ứng dụng học sinh | 4 | 6, 30, 45, 60 | Không |
| ACCOUNT_WARNING | Ứng dụng học sinh | 3 | 1, 7, 14 | Không |
| ACCOUNT_EXPIRED | Ứng dụng học sinh | 1 | 1 | Không |
| FIRST_ACTIVATION | Ứng dụng học sinh | 1 | 0 | Không |
| REGISTERED | Zalo | 1 | 0 | Không |
| FIRST_ACTIVATION | Zalo | 1 | 0 | Không |
| FIRST_EXAM | Zalo | 1 | 0 | Không |
| ACCOUNT_EXPIRED | Zalo | 1 | 7 | Không |
| Loại | Bảng | Bản ghi | Nội dung |
|---|---|---|---|
| Có gì mới theo phiên bản | version_notifications | 69 | EXAM_WEB 20 · STUDENT 19 · PARTNER_WEB 15 · TEACHER 13 · PARENT 2 |
| Hướng dẫn theo màn | menu_notifications | 29 | GUIDELINE và TUTORIAL, gắn theo đường dẫn màn |
| Hàng chờ đẩy điện thoại | notification_schedules | 3.558 | 2.843 đang chờ, 715 đã gửi |
| Email mời vào lớp | class_invitation_emails | 196 | Đếm lần mời theo địa chỉ |
| Thông báo cho đội sale | crm_notifications | 0 | Đã tạo, chưa có bản ghi |
Bốn mẫu trong flyer-rs/api/src/templates/zalo.rs, mỗi mẫu một mã template đã đăng ký với Zalo.
| Mẫu | Gửi cho ai |
|---|---|
| ParentReportZaloData | Phụ huynh · tiến độ |
| TeacherReportZaloData | Giáo viên · báo cáo lớp |
| TuitionZaloData | Phụ huynh · học phí |
| OtpZaloData | Mã xác thực |
Nguồn: read-replica 24/09/2026, ba lượt tra; mã nguồn exam (ent/schema/notification.go, sender/sender.go, deploy/lib/app.libsonnet) và flyer-rs (api/src/workers/jobs, api/src/templates, sdks/mail).