Bỏ qua, đến nội dung

@digiforce-nc/plugin-notification-manager ​

Plugin quản lý thông báo trung tâm — đăng ký kênh thông báo (email, in-app, SMS...), gửi thông báo qua nhiều kênh, theo dõi trạng thái gửi.

Plugin này làm gì? ​

Đây là hub trung tâm cho mọi loại thông báo. Thay vì mỗi plugin tự viết logic gửi riêng, tất cả đăng ký channel type vào NotificationManager. Khi cần gửi thông báo, chỉ cần gọi send() — manager tự dispatch đến kênh phù hợp.

Ba nhiệm vụ chính ​

#Nhiệm vụChi tiết
1Registry kênhregisterChannelType() cho plugin khác đăng ký kênh (email, in-app, SMS...)
2Dispatch thông báosend() / sendToUsers() — chọn kênh, gửi nội dung, ghi log
3Quản lý & giám sátSettings UI quản lý channels, xem send logs với trạng thái

Kiến trúc ​

Luồng gửi thông báo ​

Channel Type Registry ​

Channel TypePlugin cung cấpPhương thức gửi
emailplugin-notification-emailSMTP qua nodemailer
in-app-messageplugin-notification-in-app-messageSSE real-time
smsPlugin bên thứ baSMS gateway API

Database - 2 bảng chính ​

BảngChứa gì
notificationChannelsCấu hình kênh: tên, loại, options (SMTP host...), bật/tắt
notificationSendLogsLịch sử gửi: kênh, người nhận, trạng thái, lỗi

Vòng đời plugin ​

ACL - Phân quyền ​

ACL snippetQuyềnMô tả
pm.notification.channelsAdminQuản lý notification channels
pm.notification.logsAdminXem notification send logs

Ví dụ sử dụng API ​

Gửi thông báo qua API ​

typescript
await agent.resource('messages').send({
  values: {
    channelName: 'default-email',
    to: ['user@example.com'],
    subject: 'Thong bao',
    content: 'Noi dung...',
  },
});

Đăng ký channel type (dành cho plugin developer) ​

typescript
class MyPlugin extends Plugin {
  async load() {
    const nm = this.app.pm.get('notification-manager');
    nm.registerChannelType('sms', {
      Channel: MySMSChannel,
      ConfigForm: SMSConfigForm,
    });
  }
}

Xem send logs ​

typescript
const response = await agent.resource('notificationSendLogs').list({
  filter: { status: 'failed' },
  sort: ['-createdAt'],
});

Thành phần client ​

Thành phầnMô tả
ChannelManagerTrang quản lý kênh thông báo (tạo, sửa, bật/tắt)
LogManagerTrang xem lịch sử gửi (filter theo channel, status)
NotificationManagerProviderContext provider cho channel type registry phía client
ChannelConfigFormForm cấu hình kênh (dynamic theo channel type)

Dependencies ​

PackageVai trò
@digiforce-nc/serverServer framework — resource, action
@digiforce-nc/databaseDatabase ORM — collections
@digiforce-nc/clientClient framework — Settings UI

Mục lục chi tiết ​