Communication — Góc nhìn end-user
Đây là phần người dùng cảm nhận trực tiếp nhất của hệ thống: họ nhận email, push, tin trong app. Dưới đây là các trải nghiệm quen thuộc và điều gì đứng sau.
1. Nhận tin qua nhiều kênh
"Tôi nhận email xác nhận booking, đồng thời thấy một thông báo trong app."
Một sự việc có thể gửi qua nhiều kênh cùng lúc: email, push, SMS, in-app. Mỗi người nhận / mỗi kênh là một bản ghi OutgoingMessage riêng, nên hệ thống biết chính xác "email tới chưa", "push tới chưa" cho từng người.
2. Nội dung tự điền đúng thông tin
"Email gọi đúng tên tôi, đúng mã booking, đúng ngày."
Nội dung tin dựa trên template có chỗ trống (placeholder) như {{TÊN}}, {{MÃ_BOOKING}}. Lúc gửi, hệ thống điền dữ liệu thật vào template. Nhờ vậy mỗi người nhận một nội dung cá nhân hóa mà không phải soạn tay.
3. Không nhận tin trùng
"Hệ thống có vẻ xử lý lại đơn của tôi, nhưng tôi chỉ nhận đúng một email."
Trước khi gửi thật, hệ thống "claim" (giành quyền gửi) mỗi tin. Nếu một tin đã ở trạng thái "đang gửi/đã gửi", các lần xử lý lặp sẽ thoát ra mà không gọi nhà cung cấp lần nữa. Kết quả: người dùng không nhận email đôi.
4. Hộp thư trong ứng dụng (in-app)
"Tôi mở app và thấy danh sách thông báo của mình; phụ huynh thấy gộp tin của các con."
Tin in-app lưu dưới dạng UserMessage — mỗi người nhận một hàng. Phụ huynh có thể thấy một hộp thư gộp các thông báo liên quan tới con mình.
5. Chiến dịch & báo cáo định kỳ
"Trung tâm gửi thông báo nghỉ lễ tới tất cả phụ huynh." / "Mỗi tuần tôi nhận một báo cáo."
- Campaign: gửi hàng loạt tới nhiều người nhận cùng lúc.
- Report subscription: báo cáo tự động theo lịch.
Cả hai dùng MessagingJob + Blob để xử lý lượng dữ liệu lớn rồi đi qua cùng pipeline gửi.
Tóm lại với end-user
| Trải nghiệm | Nhờ phần nào |
|---|---|
| Nhận tin qua email/push/SMS/in-app | Nhiều OutgoingMessage / UserMessage theo kênh |
| Nội dung đúng tên, đúng dữ liệu | Template + render ở Generator |
| Không nhận trùng | Claim trước khi gửi (send claim) |
| Hộp thư in-app, gộp cho phụ huynh | UserMessage với partition theo người nhận |
| Nhận thông báo hàng loạt / báo cáo | Campaign / Report subscription |
Muốn hiểu cơ chế bên dưới? Đọc Khái niệm cốt lõi.