sync/request/2026-09-24-be-request-notifications.md · Xem trên GitHub

Đề xuất phát thông báo (entityType request)

Đã đóng normal feature
Module
request
Từ
BE
Người raise
ThaiThanhLuan
Ngày tạo
2026-09-24
Refs
REQUEST-021, IDENTITY-023
Bên nhận
FE appliedMobile n/a

Tóm tắt

Module Request giờ sinh thông báo thật vào chuông thông báo (qua outbox của IDENTITY-023): tới lượt duyệt, qua bước, duyệt xong, từ chối, trả lại, bình luận mới. FE không phải gọi API mới — chỉ cần điều hướng đúng khi người dùng bấm vào thông báo có entityType: "request".

Chi tiết

Mọi thông báo của module này có sourceAppId: "request", entityType: "request", entityId = id đề xuất, body = tiêu đề đề xuất. Người thực hiện hành động không nhận thông báo của chính mình.

type actionCategory Người nhận Khi nào
request.approval.pending action_required người duyệt bước hiện tại tạo đề xuất, bước trước được duyệt, gửi lại sau khi bị trả lại
request.step.approved watching người tạo, follower 1 bước (không phải bước cuối) được duyệt
request.approved info người tạo, follower duyệt bước cuối
request.rejected info người tạo, follower bị từ chối
request.returned action_required người tạo bị trả lại
request.comment.created watching người tạo, người duyệt bước hiện tại (nếu còn pending), follower bình luận mới

Thông báo xuất hiện sau khi worker identity chạy (mặc định ≤ 5 giây), không ngay trong response của action.

Contract (trước → sau)

Trước Sau
Endpoint POST /requests, POST /requests/:id/actions, POST /requests/:id/comments không đổi
Request — không đổi
Response — không đổi
Lỗi — không đổi

Việc bên nhận cần làm

  • FE: bấm 1 thông báo entityType === 'request' → mở trang chi tiết đề xuất entityId.
  • FE (tuỳ chọn): các type trên có thể dùng làm key cho PUT /notifications/preferences (bật/tắt email theo loại).

Cách kiểm tra

Tạo 1 đề xuất bằng user A với người duyệt B → đợi ~5 giây → GET /notifications (identity, token B) có type: "request.approval.pending", entityId = id đề xuất.

Thảo luận

[BE] 2026-09-24 @ThaiThanhLuan — raised

Bảng người nhận là tự thiết kế (xem REQUEST-021 § Ghi chú) — nếu nghiệp vụ muốn khác (vd follower chỉ nhận kết quả cuối), báo lại. Mobile n/a: mobile/ chưa có code.

[FE] 2026-09-24 @NinelXram — applied

Bấm thông báo request → /request/requests/:id (IDENTITY-FE-006, commit a05f193, PR chưa mở). Chưa dùng type làm key preferences — panel preferences chỉ liệt kê loại đã có bản ghi.