Yêu cầu Phần mềm

Module Thông báo Email
EMAIL
Phiên bản1.0
Hệ thốngHệ thống Xác thực
ModuleEMAIL - Thông báo Email
Cơ sở dữ liệuemail_db
Ngày tạo2026-08-05
Tác giảNam Nguyen
Trạng tháiNháp

Mục lục

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

ModuleLoại Phụ thuộcMô tả
AUTHBất đồng bộ (RabbitMQ)Nhận yêu cầu email xác minh từ module AUTH
RECRBất đồng bộ (RabbitMQ)Nhận yêu cầu email hồ sơ, phỏng vấn và đề nghị từ module RECR
LOGBấ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
SRSYêu cầu Phần mềm
FRYêu cầu Chức năng
NFRYêu cầu Phi chức năng
UCTrường hợp Sử dụng
DRYêu cầu Dữ liệu
IRYêu cầu Tích hợp

2. Tổng quan Module

2.1 Mô tả Module

Khía cạnhGiá trị
Mã ModuleEMAIL
Tên ModuleThô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ệuemail_db
Bảngemail_logs
Công nghệNestJS, Drizzle ORM, PostgreSQL, RabbitMQ, SendGrid/SMTP

2.2 Sơ đồ Use Case

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ể

Sơ đồ ERD
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

Sơ đồ Sequence
Hình 3: Luồng Tích hợp Thông báo Email

6.2 Sự kiện Webhook

Sự kiệnHướngGiao thứcMô 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)