Tài liệu Hệ thống

Hệ thống Xác thực
Ngày tạo2026-09-07

Modules

AUTH Xác thực

Quản lý tài khoản người dùng đăng nhập vai trò phiên làm việc xác minh. Chạy nội bộ các worker hàng đợi email/SMS — tiêu thụ từ RabbitMQ và gọi các module EMAIL/SMS để gửi

Database: auth_db | Tech: NestJS,Better Auth,Drizzle ORM,PostgreSQL,RabbitMQ (amqplib)

SMS Dịch vụ SMS

Ghi nhật ký gửi SMS theo dõi và lưu trữ lịch sử kiểm toán

Database: sms_db | Tech: NestJS,Drizzle ORM,PostgreSQL,Twilio

EMAIL Thông báo Email

Gửi thông báo email quản lý mẫu và lưu trữ lịch sử kiểm toán. Cung cấp API gửi email (mẫu SendGrid/SMTP) — được worker hàng đợi email của AUTH sử dụng

Database: email_db | Tech: NestJS,Drizzle ORM,PostgreSQL,SendGrid/SMTP

RECR Tuyển dụng

Quản lý tuyển dụng toàn diện với 3 vai trò: Ứng viên HR Nhà tuyển dụng

Database: recr_db | Tech: NestJS,Drizzle ORM,PostgreSQL,Elasticsearch,RabbitMQ

WALLET Ví điện tử

Ví điện tử cho thanh toán nạp tiền rút tiền và các giao dịch tài chính trong nền tảng tuyển dụng

Database: wallet_db | Tech: NestJS,Drizzle ORM,PostgreSQL,RabbitMQ

LOG Ghi nhật ký

Ghi nhật ký tập trung sự kiện — nhận sự kiện nhật ký từ tất cả dịch vụ qua RabbitMQ lưu trữ trong OpenSearch để tìm kiếm toàn văn phân tích và bảng điều khiển

Database: opensearch | Tech: NestJS,RabbitMQ (amqplib),OpenSearch (@opensearch-project/opensearch)

FILE Quản lý tệp

Tải lên tải xuống liệt kê quản lý thư mục phân quyền và quản lý vòng đời tệp với local filesystem. Hỗ trợ thao tác hàng loạt sao chép/di chuyển tệp kiểm soát truy cập và hạn ngạch lưu trữ

Database: file_db | Tech: NestJS,Drizzle ORM,PostgreSQL,Multer (local upload),fs (local filesystem)

Kiến trúc Hệ thống

Kiến trúc Hệ thống
Hình 1: Kiến trúc Hệ thống — Tương tác giữa các module và luồng dữ liệu

Giao tiếp giữa các Module

TừĐếnSự kiệnGiao thứcMô tả
AUTHLOGauth.event.loggedRabbitMQAUTH đăng phát bất kỳ sự kiện xác thực nào (đăng nhập, đăng xuất, đăng ký, đổi mật khẩu) đến Logger
SMSLOGsms.event.loggedRabbitMQSMS đăng phát sự kiện gửi (đã gửi, đã nhận, thất bại) đến Logger
AUTHEMAILverification.email.requestedRabbitMQAUTH đăng phát khi người dùng yêu cầu xác minh email
AUTHEMAILverification.email.resentRabbitMQAUTH đăng phát khi người dùng gửi lại email xác minh (giới hạn tốc độ)
EMAILAUTHverification.email.deliveredWebhookEMAIL xác nhận trạng thái gửi lại cho AUTH
AUTHEMAILpassword.reset.email.requestedRabbitMQAUTH đăng phát khi người dùng yêu cầu đặt lại mật khẩu qua email
AUTHSMSpassword.reset.sms.requestedRabbitMQAUTH đăng phát khi người dùng yêu cầu đặt lại mật khẩu qua SMS
AUTHEMAILinvitation.email.requestedRabbitMQAUTH đăng phát khi quản trị viên mời thành viên vào tổ chức
AUTHEMAILinvitation.email.resentRabbitMQAUTH đăng phát khi quản trị viên gửi lại lời mời
EMAILLOGemail.event.loggedRabbitMQEMAIL đăng phát sự kiện gửi email (đã gửi, đã nhận, thất bại) đến Logger
RECREMAILapplication.submittedRabbitMQRECR đăng phát khi ứng viên nộp đơn ứng tuyển
RECREMAILinterview.scheduledRabbitMQRECR đăng phát khi phỏng vấn được lên lịch
RECREMAILoffer.sentRabbitMQRECR đăng phát khi thư lời mời được gửi
RECRLOGrecruitment.event.loggedRabbitMQRECR đăng phát sự kiện tuyển dụng (đơn ứng tuyển, phỏng vấn, lời mời) đến Logger
WALLETRECRwallet.payment.completedRabbitMQWALLET đăng phát khi thanh toán cho đăng tin tuyển dụng hoặc tin nổi bật hoàn tất
WALLETLOGwallet.event.loggedRabbitMQWALLET đăng phát sự kiện ví (nạp tiền, rút tiền, chuyển khoản, thanh toán) đến Logger
AUTHWALLETuser.registeredRabbitMQAUTH đăng phát khi người dùng mới đăng ký, WALLET tạo ví
FILELOGfile.event.loggedRabbitMQFILE đăng phát sự kiện truy cập tệp tin (xem, tải xuống, sửa, xóa) đến Logger để kiểm toán
FILEFILEfile.deletedRabbitMQFILE đăng phát khi tệp tin bị xóa mềm, FileWorker tiêu thụ để xóa vật lý trên S3
FILEFILEfile.temp_cleanupRabbitMQFILE đăng phát khi tệp tin tạm hết hạn bị dọn dẹp, FileWorker tiêu thụ để xóa vật lý trên S3