Yêu cầu Phần mềm
Module Thông báo Email
EMAIL
1. Giới thiệu
1.1 Mục đích
Tài liệu này định nghĩa các yêu cầu phần mềm cho module Thông báo Email của Hệ thống Xác thực.
1.2 Phạm vi
Gửi thông báo email, mẫu email và lưu vết kiểm toán
1.3 Phụ thuộc Module
| Module | Loại Phụ thuộc | Mô tả |
| AUTH | Bất đồng bộ (RabbitMQ) | Nhận yêu cầu email xác minh từ module AUTH |
| RECR | Bất đồng bộ (RabbitMQ) | Nhận yêu cầu email hồ sơ, phỏng vấn và đề nghị từ module RECR |
| LOG | Bất đồng bộ (RabbitMQ) | Gửi sự kiện giao email đến module Logger |
1.4 Định nghĩa
| Thuật ngữ | Định nghĩa |
| SRS | Yêu cầu Phần mềm |
| FR | Yêu cầu Chức năng |
| NFR | Yêu cầu Phi chức năng |
| UC | Trường hợp Sử dụng |
| DR | Yêu cầu Dữ liệu |
| IR | Yêu cầu Tích hợp |
2. Tổng quan Module
2.1 Mô tả Module
| Khía cạnh | Giá trị |
| Mã Module | EMAIL |
| Tên Module | Thông báo Email |
| Mô tả | Gửi thông báo email, mẫu email và lưu vết kiểm toán |
| Cơ sở dữ liệu | email_db |
| Bảng | email_logs |
| Công nghệ | NestJS, Drizzle ORM, PostgreSQL, RabbitMQ, SendGrid/SMTP |
2.2 Sơ đồ Use Case
Hình 1: Sơ đồ Use Case Thông báo Email
3. Yêu cầu Chức năng
| Mã YC |
Module |
Yêu cầu |
Use Case |
Ưu tiên |
Mô tả |
| FR-001 |
EMAIL |
Gửi Email Xác minh |
UC-01 |
Cao |
Hệ thống phải gửi email xác minh chứa mã OTP cho người dùng |
| FR-002 |
EMAIL |
Gửi lại Email Xác minh |
UC-01 |
Cao |
Hệ thống phải cho phép gửi lại email xác minh với giới hạn tốc độ |
| FR-003 |
EMAIL |
Theo dõi Giao Email |
UC-02 |
Trung bình |
Hệ thống phải theo dõi trạng thái giao email (đã gửi, đã giao, thất bại) |
| FR-004 |
EMAIL |
Ghi log Sự kiện Email |
UC-02 |
Trung bình |
Hệ thống phải ghi log tất cả sự kiện email để lưu vết kiểm toán |
| FR-005 |
EMAIL |
Thử lại Email Thất bại |
UC-03 |
Trung bình |
Hệ thống phải thử lại gửi email thất bại với exponential backoff |
| FR-006 |
EMAIL |
Gửi Xác nhận Hồ sơ |
UC-04 |
Cao |
Hệ thống phải gửi email xác nhận khi ứng viên gửi hồ sơ ứng tuyển |
| FR-007 |
EMAIL |
Gửi Lời mời Phỏng vấn |
UC-05 |
Cao |
Hệ thống phải gửi email lời mời phỏng vấn kèm chi tiết lịch |
| FR-008 |
EMAIL |
Gửi Thư Đề nghị |
UC-06 |
Cao |
Hệ thống phải gửi email thư đề nghị kèm chi tiết vị trí và lương |
4. Mô hình Dữ liệu
4.1 Sơ đồ Quan hệ Thực thể
Hình 2: ERD Thông báo Email
4.2 Yêu cầu Dữ liệu
| Mã YC |
Thực thể |
Mô tả |
FR liên quan |
| DR-001 |
email_logs |
Lưu log giao email bao gồm người nhận, chủ đề, trạng thái và chi tiết nhà cung cấp |
FR-001, FR-003, FR-004 |
5. Đặc tả API
5.1 Tổng quan Endpoint
| Phương thức |
Đường dẫn |
Mô tả |
Mã YC |
| POST |
/api/webhooks/email/delivered |
Nhận callback trạng thái giao email |
FR-003 |
6. Tích hợp
6.1 Sơ đồ Sequence
Hình 3: Luồng Tích hợp Thông báo Email
6.2 Sự kiện Webhook
| Sự kiện | Hướng | Giao thức | Mô tả |
| verification.email.requested |
AUTH worker → EMAIL |
HTTP API |
AUTH's email queue worker gọi EMAIL API để gửi email xác minh khi người dùng đăng ký |
| verification.email.resent |
AUTH worker → EMAIL |
HTTP API |
AUTH's email queue worker gọi EMAIL API để gửi lại email xác minh |
| verification.email.delivered |
EMAIL → AUTH |
Webhook |
EMAIL callback xác nhận trạng thái giao email về AUTH |
| email.event.logged |
EMAIL → LOG |
RabbitMQ |
EMAIL publish sự kiện giao email vào Logger |
Lưu ý Kiến trúc: Email queue worker chạy bên trong AUTH service (không phải service riêng). Worker consume từ RabbitMQ queue verification.email và gọi EMAIL module API để gửi email. EMAIL module chỉ cung cấp API gửi mail (templates, SendGrid/SMTP) — không có consumer riêng.
7. Yêu cầu Phi chức năng
| Mã YC |
Danh mục |
Yêu cầu |
Mục tiêu |
| NFR-001 |
Hiệu suất |
Độ trễ giao email |
< 3 giây ở percentil thứ 95 |
| NFR-002 |
Khả dụng |
Uptime dịch vụ email |
99.9% khả dụng |
| NFR-003 |
Khả năng mở rộng |
Throughput email |
1000+ email mỗi phút |
| NFR-004 |
Độ tin cậy |
Tỷ lệ giao email thành công |
99%+ tỷ lệ giao thành công |
8. Ma trận Truy suất Yêu cầu
| Mã YC |
Yêu cầu |
Phần TDS |
Bảng CSDL |
Endpoint API |
| FR-001 |
Gửi Email Xác minh |
3.1 Gửi Email |
email_logs |
RabbitMQ consumer |
| FR-002 |
Gửi lại Email Xác minh |
3.1 Gửi Email |
email_logs |
RabbitMQ consumer |
| FR-003 |
Theo dõi Giao Email |
3.2 Theo dõi Giao dịch |
email_logs |
POST /api/webhooks/email/delivered |
| FR-004 |
Ghi log Sự kiện Email |
3.3 Ghi log Sự kiện |
email_logs |
RabbitMQ producer |
| FR-005 |
Thử lại Email Thất bại |
3.4 Cơ chế Thử lại |
email_logs |
Lịch trình nội bộ |
| FR-006 |
Gửi Xác nhận Hồ sơ |
3.1 Gửi Email |
email_logs |
RabbitMQ consumer (recruitment.email) |
| FR-007 |
Gửi Lời mời Phỏng vấn |
3.1 Gửi Email |
email_logs |
RabbitMQ consumer (recruitment.email) |
| FR-008 |
Gửi Thư Đề nghị |
3.1 Gửi Email |
email_logs |
RabbitMQ consumer (recruitment.email) |