Thông báo
DentIQ gửi thông báo theo thời gian thực để thông báo cho nhân sự về sự kiện quan trọng: thanh toán mới, cuộc hẹn sắp tới, công việc chăm sóc khách hàng cần theo dõi, v.v. Thông báo được hiển thị ở chuông báo (bell icon) trên thanh đầu và một trang đầy đủ tại /notifications.
Hai bề mặt: Chuông & Trang đầy đủ
Chuông báo (Bell icon) ở thanh điều hướng trên cùng hiển thị badge số đếm thông báo chưa đọc. Bấm vào chuông để xem popup danh sách gần đây hoặc nhấn "Xem tất cả" để đi tới trang /notifications.
Trang /notifications là trung tâm đầy đủ: danh sách toàn bộ thông báo (đã đọc + chưa đọc), lọc theo loại sự kiện, tìm kiếm, và đánh dấu là đã đọc.
Ai nhận được thông báo?
DentIQ lọc người nhận theo QUYỀN NGHIỆP VỤ (domain permission), không có mã quyền "notification.*" riêng. Ví dụ:
- Sự kiện thanh toán → người nhận phải có
payment.readđể thấy chi tiết tiền. - Sự kiện kho → người nhận phải có
inventory.manage. - Sự kiện chăm sóc khách → người nhận phải có
customer_care.read.
Mỗi dòng thông báo thuộc về một user cụ thể (userId). Chỉ người nhận đó mới thấy thông báo của họ — không chia sẻ giữa các user.
Ẩn số tiền khi thiếu quyền (CI-02)
Nếu người nhận thiếu payment.read hoặc quyền tài chính liên quan khác, các trường tiền trong thông báo sẽ hiển thị:
Dữ liệu bị ẩn do thiếu quyền
KHÔNG bao giờ hiển thị 0 ₫, dấu —, hay để trống. Điều này tránh nhầm lẫn về trạng thái tài chính.
Banner chuyển chi nhánh (CI-03)
Bấm vào một thông báo KHÔNG tự động đổi chi nhánh đang làm việc của bạn. Nếu bản ghi (cuộc hẹn, payment, v.v) thuộc chi nhánh khác với chi nhánh hiện tại, trang đích sẽ hiển thị một banner cảnh báo:
Bạn đang xem chi nhánh khác (Chi nhánh A)
Bạn có thể nhấn trong banner để chuyển chi nhánh làm việc, hoặc tiếp tục xem ở chi nhánh hiện tại.
Badge đếm & Khôi phục dữ liệu
Badge số đếm (con số trên chuông) là bộ đếm cache — một ước tính gần đúng để hiển thị nhanh. Hệ thống chạy một job nền định kỳ để đối chiếu và khôi phục nếu lệch:
- Nếu badge hiển thị số 5 nhưng bạn thấy 4 thông báo → job nền sẽ cập nhật lại số 4 sau vài giây.
- Không cần làm gì; khôi phục là tự động.
Tự hết hạn & Xóa cứng
Mỗi thông báo có thời điểm hết hạn (expiresAt) theo chính sách lưu trữ của phòng khám. Sau thời điểm hết hạn:
- Thông báo bị xóa cứng khỏi cơ sở dữ liệu (không lưu trữ, không archive).
- Không thể xem lại được.
Chính sách lưu trữ thường từ 7 đến 30 ngày tùy cấu hình phòng khám. Nếu cần lưu lại, hãy ghi chú thông báo quan trọng vào system hoặc một nơi khác trước khi hết hạn.
Thường gặp
| Câu hỏi | Trả lời |
|---|---|
| Tại sao tôi không thấy thông báo về thanh toán? | Kiểm tra xem bạn có quyền payment.read hay không. Nếu không, người gửi sẽ chọn loại thông báo khác hoặc admin cấp quyền cho bạn. |
| Badge chuông đếm sai — hiển thị 10 nhưng tôi mới đọc 3? | Badge là cache. Job nền sẽ khôi phục trong vài giây. Hoặc làm tươi (F5) trang để update ngay. |
| Thông báo cũ có lưu được không? | Không. Thông báo hết hạn sẽ bị xóa cứng. Nếu cần lưu, hãy ghi chép lại nội dung quan trọng. |
| Bấm vào thông báo nhưng nó chuyển sang chi nhánh khác — tại sao? | Bản ghi (cuộc hẹn, payment) thuộc chi nhánh khác. Banner sẽ báo "đang xem chi nhánh khác". Chi nhánh làm việc của bạn không thay đổi; bạn chỉ xem bản ghi ở chi nhánh nguồn. Nhấn banner nếu muốn chuyển. |
| Có thể tắt thông báo không? | Thông báo được gửi dựa trên sự kiện. Để tắt một loại thông báo, liên hệ admin để điều chỉnh cấu hình hoặc quyền. |
Không có mã quyền notification.*. Thay vào đó, hệ thống dùng quyền nghiệp vụ (payment.read, inventory.manage, v.v) để quyết định ai nhận. Nếu bạn không có quyền, bạn không nhận thông báo loại đó.
Nếu thiếu quyền tài chính, trường tiền hiển thị "Dữ liệu bị ẩn do thiếu quyền", không bao giờ là 0 ₫. Tránh nhầm lẫn về trạng thái chi trả.