Platform / IntegrationTrung tâm thông báo
Notification Endpoint
Registry endpoint thiết bị/người nhận đã đăng ký với hệ thống. Read-only và delete; KHÔNG có form thêm/sửa.
/notificationendpoint là registry: hiển thị các endpoint đã đăng ký từ ứng dụng client (mobile, browser, ZNS OA, ...). Bản chất là dữ liệu do client tự push lên backend, admin chỉ xem và xoá.
Vị trí menu admin
Route-only /notificationendpoint. Không có item sidebar.
Component: features/notificationendpoint/list/NotificationEndpointList.tsx.
Giao diện tổng thể
<PageDataTable> chỉ có list, KHÔNG có form add/edit. Cột:
| Cột | Key | Width | Ghi chú |
|---|---|---|---|
| ID | id | 70 | center, toggletype: ignore. |
| App code | app_code | 100 | <Tag> mã ứng dụng đăng ký endpoint (ví dụ pos, web, mobile). |
| Platform | platform | 100 | iOS / Android / Web / OA (theo client gửi). |
| Provider | provider | 100 | FCM / APNS / Zalo / ETelecom / ESms. |
| Endpoint value | endpoint_value | flex | Token/URL/OA ID, font-mono, truncate giữa nếu > 40 ký tự (kèm tooltip full). |
| Owner type | owner_type | 120 | Tag màu - loại chủ sở hữu (employee, customer, anonymous...). |
| Owner ID | owner_id | 90 | center, >0 mới hiển thị. |
| Channel type | channel_type | 120 | Tag màu - kênh gắn (Email/ZNS/Telegram/App Push). |
| Trạng thái | status | 120 | Tag từ getStatus(status). |
| Device ID | device_id | 160 | font-mono, truncate 20 ký tự + tooltip. |
| Ngày tạo | date_created | 120 | <TextDateTime>. |
| Lần dùng cuối | date_last_used | 130 | <TextDateTime> - cập nhật mỗi khi backend gửi thông báo qua endpoint này. |
| Thao tác | trigger | 60 | Chỉ Xoá; chỉ người có quyền Cài đặt bán hàng mới thấy biểu tượng xoá. |
Filter: NotificationEndpointListFilter - keyword + filter theo platform/provider/owner_type/channel_type/status.
Thao tác chính
- Tra endpoint của 1 user: lọc owner_type + owner_id để xem user đó đã đăng ký endpoint nào (FCM token, ZNS OA...).
- Debug khi notification không tới: kiểm tra
date_last_used- nếu rất cũ → token có thể đã hết hạn (mobile cài lại app). Trạng thái Disable cũng làm endpoint bị skip. - Xoá endpoint dead: nhấn icon delete - endpoint sẽ bị remove khỏi DB; lần app khởi động sau, client tự đăng ký endpoint mới.
Các lối đi từ trang
- Endpoint này được Notification Task chọn qua recipient group, channel type khớp.
- Khi thêm Recipient Group: chọn user/customer → backend tự lookup endpoint phù hợp dựa trên owner_type + owner_id + channel_type.
Lưu ý - Lỗi thường gặp
- Không có form thêm endpoint: cố ý - endpoint do client app tự đăng ký qua API. Admin không tạo thủ công.
- Endpoint trùng: backend dedupe theo
device_id+provider. Nếu thấy trùng thật, là do client gửi nhiều device id khác nhau. - Endpoint inactive sau update mobile: bình thường - mobile cài lại sinh device id mới. Cron cleanup endpoint stale có thể có ở backend nhưng không expose UI.
- Xoá rồi vẫn nhận: client app sẽ re-register lần khởi động sau, đó là endpoint khác.
Ai được xem và chỉnh?
- Xem danh sách: mọi tài khoản đã đăng nhập.
- Xoá endpoint: người có quyền Cài đặt bán hàng; thiếu quyền thì hàng có thể không có nút xoá.
- Không có thêm hay sửa trên admin: endpoint do ứng dụng khách tự đăng ký với máy chủ.