Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh công nghệ số phát triển nhanh chóng, việc quản trị công việc và sắp xếp lịch biểu của tổ chức thông qua các phần mềm chuyên dụng thay cho phương pháp thủ công đã trở thành nhu cầu thiết yếu. Đối với nhân sự trong các doanh nghiệp, việc nắm bắt thời gian biểu làm việc của cá nhân, tình trạng khả dụng của tài nguyên tổ chức (phòng họp, trang thiết bị, nhân sự) và tiến hành đặt lịch hội họp là một trong những ưu tiên hàng đầu. Tuy nhiên, các hình thức quản lý việc đặt trước tài nguyên hiện nay còn phân tán, đòi hỏi phải có một hệ thống trực tuyến hợp nhất có khả năng tích hợp quản lý lịch trình làm việc và tài nguyên dùng chung.
Xuất phát từ thực tiễn trên, đề tài khóa luận tốt nghiệp "Building The Resource Booking System For The Organization" (Xây dựng hệ thống đặt tài nguyên cho tổ chức) được nhóm sinh viên Nguyễn Phước Đăng (MSSV: 19110189) và Nguyễn Minh Đăng (MSSV: 19110188), ngành Công nghệ Thông tin, Khoa Đào tạo Chất lượng cao thuộc Trường Đại học Sư phạm Kỹ thuật TP.HCM thực hiện dưới sự hướng dẫn của ThS. Nguyễn Đức Khoan (bảo vệ tháng 05/2023).
Văn bản khóa luận xác định 3 bài toán trọng tâm cần giải quyết:
- Người dùng trong tổ chức cần có khả năng đặt trước bất kỳ tài nguyên nào của tổ chức để phục vụ cho các sự kiện cá nhân hoặc sự kiện nội bộ của nhóm (personal/team event).
- Người dùng cần có khả năng đặt tài nguyên để tổ chức các sự kiện quy mô toàn tổ chức (organization's event).
- Người dùng cần có giải pháp đặt tài nguyên để phục vụ cho việc tổ chức các buổi họp, phỏng vấn với các đối tác bên ngoài (public partners/users outside of the organization) mà không cần phải trao đổi, liên hệ thủ công qua lại nhiều lần.
Mục tiêu chính của đề tài là xây dựng một ứng dụng web kết nối người dùng nội bộ với đối tác bên ngoài nhằm thực hiện việc đặt lịch họp kèm theo tài nguyên tổ chức. Để đạt được mục đích này, tác giả đặt ra hai mục tiêu cụ thể:
- Cho phép người dùng đặt trước các tài nguyên của tổ chức để phục vụ các cuộc họp cá nhân, họp nhóm và sự kiện chung của tổ chức.
- Cho phép người dùng đặt tài nguyên và tạo các khung thời gian chia sẻ (sharing slots), gửi lời mời qua thư điện tử để các đối tác bên ngoài có thể tự chọn và xác nhận lịch hẹn trực tiếp trên hệ thống.
Đối tượng nghiên cứu của đồ án là quy trình đặt lịch biểu và quản lý tài nguyên dùng chung của tổ chức (bao gồm con người, phòng họp và thiết bị). Phạm vi nghiên cứu tập trung vào việc thiết kế và hiện thực hóa một hệ thống phần mềm dạng Single Page Application (SPA) kết hợp kiến trúc dịch vụ phía máy chủ, triển khai trên môi trường điện toán đám mây với cơ sở dữ liệu quan hệ, tích hợp các dịch vụ bên thứ ba (Google Calendar API, PayPal API).
Cơ sở lý thuyết và phương pháp
Khóa luận áp dụng phương pháp nghiên cứu kỹ thuật phần mềm thực nghiệm và phát triển hệ thống hoàn chỉnh từ đầu (built from scratch). Quy trình thực hiện bao gồm các giai đoạn: khảo sát và phân tích hiện trạng các giải pháp thương mại tương tự, thu thập yêu cầu người dùng, mô hình hóa chức năng và dữ liệu, thiết kế kiến trúc phân tầng, hiện thực hóa mã nguồn và kiểm thử chức năng trên môi trường thực tế.
Để xác lập cơ sở thực tiễn cho các tính năng của hệ thống, tác giả đã tiến hành khảo sát, phân tích ưu nhược điểm và rút ra bài học kinh nghiệm từ 4 nền tảng quản lý sự kiện và lịch biểu tiêu biểu:
| Tên hệ thống khảo sát |
Tiêu chí đánh giá chính |
Bài học kinh nghiệm áp dụng vào đề tài |
| Calendly |
Giao diện người dùng, dịch vụ, trải nghiệm, hỗ trợ đề tài |
Giao diện trực quan, khoa học; tích hợp nhiều nền tảng dịch vụ bên thứ ba; hỗ trợ đặt lịch hẹn giữa các người dùng; quản lý lịch thời gian rảnh hiệu quả. |
| Google Calendar |
Giao diện, dịch vụ, trải nghiệm, hỗ trợ đề tài |
Tạo sự kiện nhanh chóng; quản lý song song sự kiện và lịch làm việc cá nhân; đa dạng các chế độ hiển thị lịch làm việc; đồng bộ hóa với hệ thống thư điện tử. |
| Facebook Event Center |
Giao diện, lưu trữ sự kiện, trải nghiệm người dùng |
Cơ chế lưu trữ và quản lý danh sách sự kiện tốt; tạo sự kiện nhanh; quy trình gửi lời mời tham gia sự kiện tiện lợi. |
| SimplyBook |
Đặt chỗ trực tuyến, dịch vụ khách hàng, đặt lịch hẹn |
Mô hình trang đặt chỗ tùy chỉnh cho dịch vụ công/doanh nghiệp; tích hợp danh sách chờ (Waiting List); liên hệ và xác nhận qua thư điện tử. |
Kết luận từ đợt khảo sát, nhóm tác giả đề xuất giải pháp tích hợp các thế mạnh của những nền tảng trên: xây dựng một hệ thống tạo sự kiện và đặt tài nguyên nhanh chóng, ngăn ngừa xung đột thời gian (time conflict) giữa nhiều người dùng và nhiều tài nguyên trong cùng một khoảng thời gian, đồng thời hỗ trợ việc đặt lịch phỏng vấn/gặp gỡ với nhiều đối tác bên ngoài cùng lúc thông qua các khung giờ chia sẻ.
Thiết kế và triển khai
Hệ thống được thiết kế theo kiến trúc ứng dụng web phân tách rõ rệt giữa Front-end (Single Page Application) và Back-end (RESTful API), triển khai trên nền tảng đám mây Amazon Web Services (AWS) thông qua công nghệ đóng gói container Docker.
1. Kiến trúc công nghệ và phân tầng
- Phía giao diện (Front-end): Xây dựng bằng nền tảng mã nguồn mở Angular kết hợp ngôn ngữ TypeScript và HTML. Hệ thống tận dụng cơ chế định tuyến (Angular Router) kết hợp Authentication Guards nhằm kiểm soát quyền truy cập trang:
CanActivate: Xác định tuyến đường có thể được kích hoạt hay không dựa trên trạng thái đăng nhập.
CanActivateChild: Kiểm soát việc kích hoạt các tuyến đường con.
CanDeactivate: Kiểm tra điều kiện trước khi rời khỏi một tuyến đường.
CanLoad: Kiểm soát việc tải lười (lazy-loading) của các module.
Bên cạnh đó, HttpInterceptor được sử dụng để can thiệp vào các yêu cầu HTTP gửi lên máy chủ và các phản hồi trả về, tự động gắn mã thông báo xác thực (JWT token) vào tiêu đề (headers) của các yêu cầu cần định danh.
- Phía máy chủ (Back-end): Phát triển trên nền tảng Spring Boot (Java), cung cấp các điểm cuối RESTful API. Hệ thống bảo mật được đảm bảo bởi Spring Security, tùy biến các thành phần để xác thực và phân quyền tài nguyên. Tài liệu API được sinh tự động và chuẩn hóa qua công cụ Swagger 2.
- Cơ sở dữ liệu: Sử dụng hệ quản trị cơ sở dữ liệu quan hệ PostgreSQL, thiết kế theo mô hình thực thể mối quan hệ (ERD) với ký hiệu Crow's Foot.
2. Quản lý phiên và tích hợp dịch vụ bên thứ ba
- Cơ chế xác thực JWT và Refresh Token Rotation: Hệ thống sử dụng JSON Web Token (RFC 7519) có gắn kèm chuỗi UUID ngẫu nhiên để theo dõi phiên làm việc. Nhóm triển khai chức năng đăng xuất bằng cách làm hết hạn token hiện tại. Để giải quyết vấn đề phiên làm việc kéo dài mà không bắt người dùng đăng nhập lại, kỹ thuật Refresh Token Rotation được áp dụng nhằm ngăn chặn việc đánh cắp refresh token để chiếm đoạt quyền truy cập lâu dài.
- Quartz Scheduler: Thư viện lập lịch tác vụ được cấu hình bằng Biểu thức Cron (Cron Expression) nhằm tự động hóa quy trình gửi thư điện tử theo hàng đợi (email queue) với các khoảng thời gian giãn cách định trước, tránh việc tài khoản email bị các nhà cung cấp dịch vụ khóa do gửi số lượng thư quá lớn cùng lúc.
- Google Calendar API: Đồng bộ hóa lịch một chiều từ hệ thống sang Google Calendar của người dùng, giúp hiển thị thông báo nhắc nhở sự kiện và tự động khởi tạo liên kết cuộc họp trực tuyến.
- PayPal API: Tích hợp cổng thanh toán để xử lý các khoản phí thuê bao định kỳ hàng tháng cho các tài khoản tổ chức (Business Account).
3. Mô hình hóa Actor và Use Case
Hệ thống xác định 3 loại tài nguyên bao gồm: con người (people), phòng họp (room) và thiết bị (device). Tài nguyên có thể được đặt cho 3 hình thức sự kiện: sự kiện cá nhân/nhóm nhỏ, sự kiện toàn tổ chức, và sự kiện với đối tác bên ngoài. Hệ thống phân chia người dùng thành 8 vai trò (roles) chính với 35 Use Case (được mã hóa từ UC 1.1 đến UC 1.35):
| Nhóm vai trò (Actor) |
Trách nhiệm và quyền hạn chính |
Các Use Case tiêu biểu |
| Unauthorized user |
Người dùng chưa đăng nhập; đăng ký tài khoản dùng thử hoặc tài khoản doanh nghiệp qua PayPal. |
UC 1.1, UC 1.2 |
| Administrator (Admin) |
Quản trị viên hệ thống; kiểm duyệt, phê duyệt hoặc từ chối yêu cầu đăng ký tài khoản dùng thử của người dùng. |
UC 1.33, UC 1.34, UC 1.35 |
| Manager of Organization |
Quản lý tổ chức; nhập danh sách tài khoản bằng file mẫu Excel; khởi tạo và phân bổ lịch làm việc; tạo tài nguyên; phân quyền người dùng. |
UC 1.3, UC 1.4, UC 1.5, UC 1.6, UC 1.7 |
| Primary User |
Nhân sự thông thường; xem lịch cá nhân, xem chi tiết và tham gia sự kiện tổ chức; xem thông báo; đồng bộ lịch với Google Calendar. |
UC 1.8, UC 1.9, UC 1.10, UC 1.11, UC 1.12, UC 1.13, UC 1.14, UC 1.15, UC 1.16 |
| Event Hoster |
Người chủ trì sự kiện; xem các slot tài nguyên khả dụng (không bị trùng lịch); đặt tài nguyên; tạo sự kiện tổ chức; đổi lịch hoặc hủy sự kiện. |
UC 1.17, UC 1.18, UC 1.19, UC 1.20, UC 1.21, UC 1.22 |
| Public Event Hoster |
Người tổ chức sự kiện công cộng; tạo nhóm slot bên ngoài; chia sẻ nhóm slot hoặc sự kiện tổ chức qua email; đề xuất đổi lịch hẹn. |
UC 1.23, UC 1.24, UC 1.25, UC 1.26 |
| Resource Manager |
Người quản lý tài nguyên thiết bị; tiếp nhận, phê duyệt hoặc từ chối các yêu cầu mượn thiết bị phục vụ sự kiện. |
UC 1.27 |
| Public Partner |
Đối tác ngoài tổ chức; xem các slot được chia sẻ qua email; chọn và đăng ký tham gia slot/sự kiện; đề xuất thay đổi thời gian họp. |
UC 1.28, UC 1.29, UC 1.30, UC 1.31, UC 1.32 |
Trong số các use case, UC 1.17 (View available resources' slots) giữ vai trò cốt lõi: khi người dùng chọn một hoặc nhiều tài nguyên (phòng, thiết bị, nhân sự) trong bảng điều khiển đặt lịch, hệ thống hiển thị mặc định 7 ngày tiếp theo và tự động tính toán các khung giờ khả dụng dựa trên lịch làm việc của tất cả các tài nguyên và người chủ trì, đảm bảo hoàn toàn không xảy ra xung đột thời gian trước khi tiến hành tạo sự kiện.
4. Quy trình đóng gói và triển khai
Ứng dụng được triển khai thực tế trên hạ tầng đám mây AWS:
- Mã nguồn ứng dụng máy khách (Angular) được cấu hình URL gốc của API, đóng gói thành Docker image, đẩy lên kho chứa Docker Hub, sau đó kéo về máy chủ AWS và kích hoạt chạy qua cổng chỉ định.
- Ứng dụng máy chủ (Spring Boot) được cấu hình kết nối tới cơ sở dữ liệu PostgreSQL, đóng gói thành Docker image, triển khai trên AWS và mở cổng dịch vụ API.
- Tên miền chính thức của hệ thống được trỏ trực tiếp về địa chỉ IP công khai của máy chủ máy chủ AWS.
Nội dung chính theo từng chương
Chapter 1. The Urgency of the project
Chương 1 thiết lập tính cấp thiết của đề tài trong kỷ nguyên chuyển đổi số. Tác giả chỉ rõ hạn chế của các phương pháp thủ công trong việc quản lý lịch làm việc và sử dụng tài nguyên của nhân viên doanh nghiệp. Nội dung chương trình bày định nghĩa vấn đề (Problem Definition), đưa ra giải pháp đề xuất xây dựng hệ thống web trung gian kết nối đặt lịch không cần trao đổi trực tiếp, xác lập mục tiêu cốt lõi của đề tài và liệt kê các yêu cầu kỹ thuật nền tảng (Angular, Spring Boot, PostgreSQL, AWS).
Chapter 2. Application Review and Current Survey
Chương 2 tập trung vào việc nghiên cứu và khảo sát các ứng dụng thực tế trên thị trường, bao gồm Calendly, Google Calendar, Facebook Event Center và SimplyBook. Tác giả phân tích từng nền tảng theo 4 tiêu chí: giao diện (User Interface), dịch vụ (User Service), trải nghiệm người dùng (User Experience) và mức độ hỗ trợ đề tài (Support for the project's topic). Kết luận của chương chỉ ra rằng việc kết hợp các ưu điểm của những nền tảng này sẽ tạo ra một hệ thống đặt tài nguyên chuyên biệt, giải quyết triệt để vấn đề xung đột thời gian và phục vụ tốt cho việc phỏng vấn hoặc tiếp đón đối tác ngoài.
Chapter 3. System Design
Đây là chương có dung lượng lớn nhất, tập trung vào thiết kế chi tiết kỹ thuật của hệ thống:
- Trình bày tổng quan và lý do lựa chọn hai công nghệ cốt lõi: Angular (phía Front-end) và Spring Boot (phía Back-end).
- Phân tích chi tiết các kỹ thuật chuyên sâu: cấu trúc Component, Routing, Guard, Interceptor, Data Binding, Module trong Angular; cấu hình Spring Security, tài liệu hóa với Swagger 2, cơ chế xác thực JWT Token kèm Refresh Token Rotation, tác vụ nền Quartz Scheduler, tích hợp API của Google Calendar và PayPal.
- Đặc tả yêu cầu người dùng, phân loại tài nguyên và vai trò người dùng (8 nhóm actor).
- Thiết kế biểu đồ Use Case tổng thể và đặc tả chi tiết từng Use Case bằng bảng luồng sự kiện (Main Success Scenario, Preconditions, Postconditions).
- Xây dựng các biểu đồ hệ thống: sơ đồ kiến trúc tổng thể, biểu đồ thực thể quan hệ (ERD), biểu đồ lớp (Class Diagram), sơ đồ cơ sở dữ liệu và hệ thống biểu đồ tuần tự (Sequence Diagrams) cho các quy trình: tạo sự kiện loại 1 và 2 (thêm host, đối tác, tài nguyên, hàng đợi email, tạo liên kết Google Meet), tạo và chia sẻ slot ngoài (external slot), tham gia sự kiện công cộng (make event 3), và quy trình dời lịch (reschedule event).
- Thiết kế biểu đồ thành phần (Component Diagrams) và thiết kế chi tiết giao diện người dùng (User Interfaces Design) cho từng vai trò thông qua 33 màn hình giao diện.
Chapter 4. System Implementation and Testing
Chương 4 mô tả môi trường phát triển phần mềm, quản lý mã nguồn và quy trình triển khai ứng dụng trên máy chủ đám mây AWS bằng Docker cho cả Front-end và Back-end, cùng việc cấu hình kết nối cơ sở dữ liệu PostgreSQL và ánh xạ tên miền. Phần sau của chương tập trung vào kiểm thử phần mềm, xác định phạm vi kiểm thử (In test scope / Outside test scope) và thực thi 8 ca kiểm thử chức năng quan trọng (TC_01 đến TC_08). Cuối chương, tác giả nêu các định hướng phát triển tiếp theo của hệ thống.
Kết quả và đóng góp
Khóa luận đã hoàn thành việc xây dựng và triển khai thực tế một ứng dụng web hoàn chỉnh phục vụ cho nhu cầu quản lý lịch biểu và đặt tài nguyên trong tổ chức. Các kết quả kỹ thuật cụ thể bao gồm:
1. Kết quả kiểm thử chức năng
Tác giả đã tiến hành kiểm thử chức năng trên hệ thống với 8 kịch bản kiểm thử (Test Cases) trọng tâm:
| Mã kiểm thử (Test Case ID) |
Tên kịch bản kiểm thử |
Mục đích kiểm tra |
Kết quả ghi nhận |
| TC_01 |
Booking resource for personal event successfully |
Đặt tài nguyên cho sự kiện cá nhân trong trường hợp không có xung đột thời gian. |
Thành công |
| TC_02 |
Booking resource for personal event unsuccessfully |
Hệ thống từ chối khi đặt tài nguyên bị trùng lịch hoặc tài nguyên không khả dụng. |
Thành công |
| TC_03 |
Booking resource for an organization event successfully |
Đặt tài nguyên phục vụ sự kiện quy mô toàn tổ chức khi đáp ứng đủ điều kiện. |
Thành công |
| TC_04 |
Booking resource for an organization event unsuccessfully |
Xử lý lỗi khi sự kiện tổ chức bị trùng lặp lịch biểu của tài nguyên. |
Thành công |
| TC_05 |
Join in organization event successfully |
Người dùng nội bộ đăng ký tham gia thành công vào một sự kiện tổ chức đã công bố. |
Thành công |
| TC_06 |
Join in organization event unsuccessfully |
Xử lý lỗi khi đăng ký tham gia sự kiện không hợp lệ hoặc đã quá hạn. |
Thành công |
| TC_07 |
Create group of external slots successfully |
Tạo thành công nhóm các khung giờ trống bên ngoài dành cho việc đặt lịch công cộng. |
Thành công |
| TC_08 |
Share group of external slots successfully |
Gửi thành công liên kết nhóm khung giờ đã tạo tới địa chỉ email của đối tác công cộng. |
Thành công |
2. Đóng góp kỹ thuật của đồ án
- Hợp nhất quy trình đặt lịch nội bộ và đối ngoại: Đồ án không chỉ giải quyết việc quản lý phòng họp và thiết bị nội bộ như các hệ thống truyền thống, mà còn tích hợp cơ chế chia sẻ khung giờ công cộng (external slots) tương tự Calendly, cho phép người ngoài tổ chức tự đăng ký lịch hẹn trực tiếp mà không cần cấp quyền truy cập nội bộ.
- Thuật toán ngăn ngừa xung đột lịch: Hệ thống cung cấp cơ chế tự động đối soát và tính toán các khung giờ trống chung giữa nhiều bên tham gia và nhiều loại tài nguyên (phòng, thiết bị, nhân sự) trong một giao diện bảng điều khiển tập trung.
- Kiến trúc an toàn và hiệu năng: Việc áp dụng kỹ thuật Refresh Token Rotation giúp nâng cao mức độ an toàn cho phiên làm việc người dùng. Đồng thời, việc ứng dụng Quartz Scheduler để xử lý hàng đợi gửi email theo lịch trình đã giải quyết triệt để nguy cơ nghẽn mạng và bị khóa dịch vụ gửi thư.
Hạn chế và hướng nghiên cứu tiếp
Căn cứ vào nội dung và phạm vi nghiên cứu được tác giả trình bày trong văn bản:
- Hạn chế: Tính năng đồng bộ hóa lịch với Google Calendar hiện mới chỉ dừng lại ở cơ chế đồng bộ một chiều (one-way calendar synchronization) từ hệ thống nội bộ sang Google Calendar. Hệ thống chưa hỗ trợ đồng bộ ngược hai chiều từ Google Calendar về lại hệ thống để cập nhật các thay đổi phát sinh bên ngoài. Ngoài ra, phạm vi kiểm thử chỉ mới bao quát các ca kiểm thử chức năng cốt lõi (từ TC_01 đến TC_08) mà chưa mở rộng sang kiểm thử tải chịu đựng hoặc kiểm thử hiệu năng diện rộng.
- Hướng phát triển tiếp theo (Direction of development): Tác giả xác định tiếp tục hoàn thiện và bổ sung các tính năng nâng cao cho hệ thống, nâng cấp cơ chế đồng bộ hóa lịch hai chiều thời gian thực với các nền tảng lịch biểu bên ngoài, mở rộng thêm các cổng thanh toán và cải tiến quy trình quản lý tài nguyên linh hoạt hơn cho các mô hình tổ chức đa chi nhánh.
Giá trị tham khảo
Báo cáo khóa luận tốt nghiệp này là tài liệu tham khảo hữu ích cho sinh viên chuyên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và các kỹ sư phát triển ứng dụng web:
- Đối tượng tham khảo: Sinh viên năm cuối đang thực hiện đồ án tốt nghiệp về hệ thống thông tin quản lý hoặc ứng dụng web Full-stack; lập trình viên cần tìm hiểu kiến trúc kết hợp giữa Angular và Spring Boot; các nhóm phát triển đang xây dựng hệ thống quản lý lịch hẹn (appointment/scheduling system) và tài nguyên doanh nghiệp.
- Các phần có giá trị tham khảo cao:
- Chương 3 cung cấp tài liệu chi tiết về quy trình mô hình hóa phần mềm chuẩn mực: hệ thống bảng Use Case chi tiết (35 ca sử dụng), phân chia rành mạch giữa 8 nhóm vai trò, cùng các biểu đồ tuần tự (Sequence Diagrams) phân chia theo từng công đoạn xử lý nghiệp vụ phức tạp (gửi hàng đợi mail, tạo liên kết Google Meet, kiểm tra xung đột lịch).
- Giải pháp triển khai kỹ thuật bảo mật với JWT và Refresh Token Rotation, việc quản trị tác vụ nền bằng Quartz Scheduler để hạn chế giới hạn gửi thư (rate limit), và quy trình đóng gói container bằng Docker để triển khai lên hạ tầng đám mây AWS.
Câu hỏi thường gặp
1. Hệ thống giải quyết bài toán chống xung đột thời gian (time conflict) khi đặt nhiều tài nguyên như thế nào?
Hệ thống xử lý vấn đề này thông qua Use Case 1.17 (View available resources' slots). Khi người chủ trì (Event Hoster) lựa chọn danh sách các tài nguyên cần sử dụng (bao gồm con người, phòng họp và trang thiết bị), hệ thống sẽ đối soát đồng thời thời gian biểu làm việc và các lịch hẹn đã tồn tại của tất cả các tài nguyên đó cùng với lịch của chính người chủ trì. Từ đó, hệ thống chỉ tính toán và hiển thị lên giao diện những khung giờ trống chung (available slots) hoàn toàn không bị trùng lặp trong phạm vi 7 ngày để người dùng chọn đặt.
2. Kỹ thuật Refresh Token Rotation được nhóm tác giả ứng dụng nhằm mục đích gì?
Nhóm tác giả áp dụng kỹ thuật Refresh Token Rotation trong cơ chế xác thực JWT nhằm tăng cường bảo mật cho phiên làm việc. Kỹ thuật này giúp cấp mới mã thông báo làm mới (refresh token) mỗi khi người dùng lấy access token mới, ngăn chặn việc kẻ tấn công đánh cắp được refresh token và chiếm đoạt quyền hạn của người dùng trong một khoảng thời gian dài. Đồng thời, mỗi token đều được liên kết với một chuỗi UUID ngẫu nhiên để phục vụ việc kiểm soát và thu hồi phiên (đăng xuất).
3. Tại sao hệ thống cần sử dụng thư viện Quartz Scheduler cho việc gửi email?
Trong hệ thống, các sự kiện tạo mới, chia sẻ khung giờ hoặc dời lịch đều kích hoạt việc gửi thư thông báo tới người tham gia. Nhóm tác giả sử dụng Quartz Scheduler với các Biểu thức Cron để tự động hóa việc đẩy các thư điện tử vào một hàng đợi (email queue) và phát tán theo các khoảng thời gian giãn cách phù hợp, nhằm mục đích tránh việc tài khoản email bị nhà cung cấp dịch vụ ngăn chặn/khóa do gửi đi số lượng email quá lớn trong cùng một thời điểm.
4. Vai trò của Resource Manager khác biệt gì so với Manager của tổ chức?
Manager của tổ chức là người nắm toàn quyền quản trị: nhập danh sách tài khoản qua Excel, tạo tài nguyên, thiết lập lịch làm việc chung và phân bổ vai trò cho các thành viên. Trong khi đó, Resource Manager là một vai trò chuyên biệt chỉ quản lý tài nguyên dạng thiết bị (device), có thẩm quyền tiếp nhận, xem xét và đưa ra quyết định phê duyệt (approve) hoặc từ chối (reject) các yêu cầu mượn thiết bị phát sinh từ các sự kiện đặt chỗ.
5. Người dùng ngoài tổ chức (Public Partner) tương tác với hệ thống bằng cách nào?
Đối tác công cộng không cần có tài khoản nội bộ trong hệ thống. Họ nhận được thư mời chứa liên kết do Public Event Hoster gửi qua email. Khi nhấp vào liên kết, họ truy cập vào giao diện xem danh sách các khung giờ được chia sẻ (sharing external slots) hoặc sự kiện công cộng, từ đó tự chọn một khung giờ phù hợp để đăng ký xác nhận tham gia cuộc họp, hoặc có quyền gửi đề xuất đổi thời gian hẹn nếu cần thiết.
Kết luận
Khóa luận tốt nghiệp "Building The Resource Booking System For The Organization" của nhóm tác giả Nguyễn Phước Đăng và Nguyễn Minh Đăng đã giải quyết trọn vẹn bài toán tích hợp giữa quản lý lịch làm việc và đặt trước tài nguyên dùng chung trong doanh nghiệp. Đề tài xây dựng thành công kiến trúc ứng dụng web hiện đại kết hợp Angular và Spring Boot, tích hợp đồng bộ Google Calendar, lập lịch Quartz Scheduler và thanh toán PayPal, đồng thời triển khai hoàn chỉnh trên hạ tầng AWS bằng Docker. Công trình thể hiện quy trình phân tích, thiết kế phần mềm bài bản với hệ thống Use Case và biểu đồ tuần tự chi tiết, cung cấp tài liệu tham khảo kỹ thuật có giá trị cho các bài toán phát triển phần mềm quản lý lịch biểu tương tự.