Bối cảnh và vấn đề nghiên cứu
Đề tài "Xây dựng website diễn đàn Tư vấn sinh viên với Spring Boot và ReactJS" (mã số SKL013867) do hai sinh viên Bùi Quốc Định và Huỳnh Văn Quới thực hiện dưới sự hướng dẫn của ThS. Nguyễn Hữu Trung tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (khóa 2020 – 2024, bảo vệ tháng 07/2024).
Lý do chọn đề tài và bối cảnh thực tiễn
Trong môi trường giáo dục đại học hiện đại, sinh viên thuộc thế hệ Gen-Z đòi hỏi khả năng tiếp cận, cập nhật và trao đổi thông tin nhanh chóng để thích ứng với chương trình đào tạo. Tuy nhiên, tại Trường Đại học Sư phạm Kỹ thuật TP.HCM, sinh viên chưa có một kênh diễn đàn học thuật và đời sống chính thức để trao đổi tập trung. Phần lớn các hoạt động tương tác, thảo luận hiện nay diễn ra thông qua các mạng xã hội phổ biến như Facebook, Zalo, Instagram. Thực trạng này bộc lộ hai bất cập lớn:
- Vấn đề xác thực danh tính: Các tài khoản trên mạng xã hội thiếu cơ chế liên kết với hồ sơ đào tạo của nhà trường, tạo điều kiện cho các đối tượng xấu giả mạo thông tin, trục lợi, lừa đảo và làm ảnh hưởng đến môi trường văn hóa sinh viên.
- Sự phân tán và đứt gãy thông tin: Không phải tất cả sinh viên đều sử dụng chung một mạng xã hội nhất định. Khi các lớp học phần hoặc hội nhóm sinh viên chọn một nền tảng bên ngoài làm kênh thông báo chính, nhiều sinh viên không nắm bắt được thông tin kịp thời, dẫn đến tình trạng bỏ sót các thông báo học vụ quan trọng.
Từ thực tế đó, nhóm tác giả đề xuất xây dựng một hệ sinh thái diễn đàn chuyên biệt dành riêng cho sinh viên trường, sử dụng chính tài khoản email do nhà trường cấp làm cơ sở định danh, nhằm giải quyết triệt để bài toán xác thực và kết nối thông tin nội bộ.
Mục tiêu và nhiệm vụ nghiên cứu
Văn bản xác định các nhiệm vụ nghiên cứu và thực hành cụ thể bao gồm:
- Khảo sát hiện trạng các nền tảng hỏi đáp, diễn đàn công nghệ tương tự (Stack Overflow, Viblo) và xác định yêu cầu hệ thống.
- Nghiên cứu cơ sở lý thuyết về các công nghệ hiện đại: ReactJS, Spring Boot, kiến trúc RESTful API, GraphQL, cơ chế xác thực JWT, hệ thống lưu trữ đệm Redis và mô hình ngôn ngữ lớn Google Gemini.
- Phân tích và thiết kế hệ thống phần mềm: xây dựng biểu đồ Use Case, biểu đồ tuần tự (Sequence Diagram), thiết kế cơ sở dữ liệu quan hệ và thiết kế giao diện người dùng.
- Triển khai lập trình giao diện người dùng (Front-end) bằng ReactJS kết hợp thư viện Shadcn UI, Tailwind CSS và Zustand.
- Triển khai xây dựng dịch vụ máy chủ (Back-end) bằng Spring Boot, Spring Data JPA, Spring Security, Spring GraphQL và cấu hình Docker phục vụ triển khai.
- Tích hợp cơ chế xác thực an toàn thông qua việc gửi mã OTP qua Email/SMS và tích hợp Gemini AI hỗ trợ người dùng.
- Xây dựng kịch bản kiểm thử (Test Case), thực hiện kiểm thử chức năng và hoàn thiện tài liệu báo cáo.
Đối tượng và phạm vi nghiên cứu
- Đối tượng người dùng:
- Người dùng (User): Sinh viên đăng ký và đăng nhập hệ thống bằng email sinh viên được trường cung cấp; thực hiện các quyền đăng bài, bình luận, đánh giá nội dung, tìm kiếm, lưu trữ bài viết, theo dõi người dùng khác và tham gia hội nhóm.
- Admin nhóm (Group Admin): Quản lý hoạt động trong phạm vi một nhóm cụ thể (duyệt/từ chối thành viên, duyệt bài viết trong nhóm, xóa thành viên, xóa nhóm).
- Admin hệ thống (System Admin): Quản trị toàn bộ nền tảng, quản lý danh mục chủ đề, quản lý người dùng, xử lý báo cáo vi phạm (bài viết, bình luận, người dùng), cộng/trừ điểm đóng góp, áp dụng/gỡ bỏ lệnh cấm tài khoản và theo dõi số liệu thống kê.
- Phạm vi nghiên cứu: Hệ thống tập trung xử lý các quy trình nghiệp vụ diễn đàn trực tuyến cho sinh viên HCMUTE. Các mô-đun cốt lõi gồm: quản lý tài khoản với xác thực OTP qua email sinh viên; quản lý bài viết và bình luận theo chủ đề; hệ thống điểm đóng góp; mô hình quản lý hội nhóm; tiếp nhận và xử lý vi phạm; thống kê tương tác. Đồ án được triển khai thực nghiệm trong khoảng thời gian từ ngày 06/02/2024 đến ngày 10/07/2024.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và công nghệ sử dụng
Hệ thống được xây dựng dựa trên mô hình kiến trúc ba tầng tiêu chuẩn (3-tier architecture): Tầng hiển thị (Presentation Layer), Tầng xử lý nghiệp vụ (Application Layer) và Tầng dữ liệu (Data Layer).
| Thành phần kiến trúc |
Công nghệ sử dụng |
Vai trò và đặc tính kỹ thuật |
| Front-end |
ReactJS 18 |
Thư viện giao diện người dùng, sử dụng cơ chế Virtual DOM giúp tối ưu tốc độ render. |
|
Shadcn UI & Tailwind CSS |
Thư viện thành phần UI hiện đại viết bằng TypeScript kết hợp CSS tiện ích (utility-first). |
|
React Zustand |
Thư viện quản lý trạng thái toàn cục (global state) dạng nhẹ, hạn chế boilerplate code. |
|
React-Apollo Hooks & GraphQL Codegen |
Tự động sinh mã nguồn TypeScript từ schema phía máy chủ để giao tiếp dữ liệu qua GraphQL. |
|
React Quill & Chart.js 2 |
Trình soạn thảo văn bản chuẩn WYSIWYG và thư viện vẽ biểu đồ thống kê trực quan. |
|
Axios |
Thư viện gửi yêu cầu HTTP Client để tương tác với các RESTful API. |
| Back-end |
Spring Boot |
Framework Java cung cấp cơ chế tự động cấu hình (auto-configuration) và Dependency Injection. |
|
Spring Data JPA |
Khung làm việc trừu tượng hóa tầng dữ liệu quan hệ theo chuẩn Object-Relational Mapping (ORM). |
|
Spring Security & JWT |
Quản lý phân quyền, xác thực người dùng không lưu trạng thái (stateless) qua mã thông báo JWT. |
|
Spring Email |
Xử lý gửi thư điện tử chứa mã xác thực OTP thông qua các giao thức SMTP/MIME và MimeMessageHelper. |
|
Spring GraphQL |
Xây dựng các endpoint dữ liệu định kiểu mạnh (strong-typing), giảm thiểu tình trạng over-fetching. |
|
SpringDoc OpenAPI |
Hỗ trợ tài liệu hóa API tự động và cung cấp giao diện tương tác Swagger UI. |
| Tầng đệm & AI |
Redis |
Hệ thống lưu trữ in-memory cấu trúc key-value dùng để quản lý phiên và bộ nhớ đệm (caching). |
|
Google Gemini |
Mô hình học sâu xử lý ngôn ngữ tự nhiên phục vụ phân tích dữ liệu và tương tác tự động. |
| Cơ sở dữ liệu |
MySQL |
Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) lưu trữ toàn bộ thực thể nghiệp vụ của hệ thống. |
| Triển khai |
Docker |
Ứng dụng công nghệ container hóa để đóng gói và triển khai hệ thống độc lập môi trường. |
Phương pháp nghiên cứu và nguồn dữ liệu
Nhóm tác giả áp dụng phương pháp nghiên cứu kỹ thuật phần mềm hướng đối tượng:
- Phương pháp phân tích - tổng hợp: Thu thập yêu cầu thực tế từ sinh viên trường, phân loại các luồng nghiệp vụ thành yêu cầu chức năng và phi chức năng.
- Phương pháp mô hình hóa UML: Sử dụng sơ đồ Use Case để phân ranh giới quyền hạn giữa các tác nhân; xây dựng Sequence Diagram để mô hình hóa trình tự trao đổi thông điệp giữa các lớp đối tượng; thiết kế sơ đồ cơ sở dữ liệu quan hệ.
- Phương pháp khảo sát đối chuẩn: Đánh giá hai nền tảng hỏi đáp, chia sẻ tri thức công nghệ thực tế là Stack Overflow và Viblo theo 7 tiêu chí: Giao diện, Bảo mật, Xây dựng nội dung, Tốc độ tải dữ liệu, Khả năng điều hướng, Khả năng mở rộng/nâng cấp và Khả năng tiếp cận. Từ đó đúc kết kinh nghiệm thiết kế giao diện phẳng, tối giản và bổ sung cơ chế kiểm duyệt nội dung.
Thiết kế và triển khai hệ thống
Kiến trúc tổng thể và luồng dữ liệu
Kiến trúc hệ thống vận hành theo chu trình 6 bước khép kín:
- Người dùng gửi yêu cầu thông qua giao diện Web (ReactJS client).
- Tầng Front-end điều phối trạng thái qua Zustand, chuyển đổi thành HTTP Request qua Axios (đối với REST API) hoặc Apollo Client (đối với GraphQL query/mutation).
- Tầng ứng dụng Spring Boot tiếp nhận yêu cầu, đưa qua chuỗi lọc bảo mật của Spring Security để xác thực tính hợp lệ của mã JWT.
- Tầng nghiệp vụ xử lý dữ liệu; trường hợp đọc dữ liệu lặp lại sẽ kiểm tra tầng đệm Redis, nếu không có mới gọi Spring Data JPA.
- Spring Data JPA thực thi câu lệnh SQL xuống cơ sở dữ liệu MySQL để đọc/ghi dữ liệu.
- Dữ liệu phản hồi được định dạng theo cấu trúc chuẩn (JSON/GraphQL response) trả về cho Front-end để cập nhật giao diện người dùng.
Kế hoạch và phân công triển khai
Dự án được thực hiện theo tiến độ chuẩn hóa trong 5 tháng (06/02/2024 – 10/07/2024):
| Giai đoạn |
Thời gian |
Hạng mục công việc chính |
| 1 |
06/02/2024 – 12/02/2024 |
Khảo sát hiện trạng, phân tích bài toán và xác định yêu cầu hệ thống. |
| 2 |
13/02/2024 – 26/02/2024 |
Thiết kế sơ đồ Use Case, viết tài liệu đặc tả và thiết kế Sequence Diagram. |
| 3 |
27/02/2024 – 12/03/2024 |
Thiết kế cấu trúc cơ sở dữ liệu quan hệ MySQL và thiết kế giao diện UI/UX. |
| 4 |
13/03/2024 – 26/03/2024 |
Nghiên cứu sâu lý thuyết các công nghệ: Spring Boot, GraphQL, ReactJS, Zustand. |
| 5 |
27/03/2024 – 23/05/2024 |
Triển khai lập trình Back-end (REST API, GraphQL) và Front-end (ReactJS). |
| 6 |
24/05/2024 – 14/06/2024 |
Ghép nối hệ thống Front-end và Back-end, xử lý tích hợp dữ liệu. |
| 7 |
15/05/2024 – 28/05/2024 |
Tích hợp máy chủ bộ nhớ đệm Redis và tích hợp dịch vụ trí tuệ nhân tạo Gemini. |
| 8 |
29/05/2024 – 23/06/2024 |
Thực thi kế hoạch kiểm thử chức năng toàn diện và tiến hành sửa lỗi hệ thống. |
| 9 |
24/06/2024 – 10/07/2024 |
Tổng hợp kết quả, nghiệm thu và hoàn thiện báo cáo khóa luận tốt nghiệp. |
Về phân công nhân sự: Sinh viên Bùi Quốc Định phụ trách thiết kế cơ sở dữ liệu, lập trình Back-end, kiểm thử Back-end và đồng tác giả báo cáo. Sinh viên Huỳnh Văn Quới phụ trách thiết kế giao diện (UI), lập trình Front-end, kiểm thử Front-end và đồng tác giả báo cáo. Cả hai thành viên được ghi nhận hoàn thành tốt nhiệm vụ.
Nội dung chính theo từng chương
Chương 1: Cơ sở lý thuyết
Chương 1 cung cấp nền tảng công nghệ toàn diện cho dự án. Tác giả phân tích sâu cơ chế hoạt động của ReactJS với Virtual DOM, chỉ cập nhật những thành phần DOM thực có thay đổi giúp tối ưu tài nguyên; phân tích tính linh hoạt của thư viện giao diện Shadcn UI và sự tiện lợi của Tailwind CSS. Về quản lý trạng thái, chương giải thích cơ chế lazy initialization của Zustand giúp hạn chế render dư thừa so với Redux. Về tầng máy chủ, chương làm rõ vai trò của Spring Boot với cấu chế tự cấu hình và Dependency Injection; sự kết hợp giữa Spring Security và JWT trong việc tạo phiên làm việc bảo mật không lưu trạng thái. Điểm nhấn công nghệ của chương là phân tích so sánh giữa GraphQL và REST API: GraphQL cho phép máy khách tự định nghĩa cấu trúc dữ liệu cần lấy trong một lần gửi yêu cầu duy nhất, khắc phục hạn chế over-fetching và under-fetching. Ngoài ra, chương cũng trình bày cơ chế lưu trữ dữ liệu RAM tốc độ cao của Redis và khả năng xử lý ngôn ngữ tự nhiên của mô hình Gemini.
Chương 2: Khảo sát và phân tích hiện trạng
Chương 2 trình bày kết quả khảo sát hai nền tảng tri thức trực tuyến tiêu biểu:
- Stack Overflow: Nổi bật với cấu trúc giao diện gọn gàng, thanh điều hướng chuẩn hóa, cơ chế bảo mật OAuth và SSL, chất lượng bài viết được kiểm duyệt qua biểu quyết cộng đồng và hệ thống danh tiếng (reputation), tốc độ phản hồi nhanh nhờ mạng phân phối nội dung (CDN).
- Viblo.asia: Nền tảng chia sẻ blog công nghệ của Việt Nam với thiết kế tối giản, hỗ trợ trình soạn thảo Markdown, tích hợp lưu trữ bài viết và phân loại theo hệ thống thẻ (tags).
Từ kết quả khảo sát, nhóm tác giả rút ra bài học thực tiễn và xác định hai nhóm yêu cầu cho hệ thống diễn đàn sinh viên:
- Yêu cầu phi chức năng: Giao diện thân thiện, tương thích thị hiếu sinh viên; thời gian phản hồi nhanh; hạn chế tối đa lỗi hiển thị; độ chính xác và tính bảo mật của dữ liệu cao.
- Yêu cầu chức năng: Chia thành hai cấp độ gồm nhóm chức năng cơ bản (đăng ký/đăng nhập bằng email sinh viên, quản lý thông tin tài khoản, đăng bài, bình luận, tìm kiếm theo từ khóa/chủ đề, nhắn tin) và nhóm chức năng nâng cao (phân loại bài viết theo chuyên mục học tập/tâm lý/nghề nghiệp, đánh giá bài viết, đánh dấu bài viết đã lưu, quản lý diễn đàn con/nhóm chat, thống kê tương tác).
Chương 3: Phân tích thiết kế
Đây là chương có dung lượng kỹ thuật lớn nhất của khóa luận, bao gồm:
- Lược đồ Use Case: Phân định rõ 3 lược đồ chính gồm Lược đồ User (Hình 3-1), Lược đồ Admin nhóm (Hình 3-2) và Lược đồ Admin hệ thống (Hình 3-3).
- Đặc tả Use Case: Cung cấp chi tiết 33 bảng đặc tả ca sử dụng (từ Bảng 3-1 đến Bảng 3-33), bao gồm các nghiệp vụ cốt lõi: Đăng ký tài khoản (xác thực OTP dựa trên email trường), Đăng nhập, Quên mật khẩu, Đổi mật khẩu, Đăng bài viết, Đánh giá bài viết/bình luận, Báo cáo (report) vi phạm, Tạo và duyệt thành viên vào nhóm, Xóa nhóm, Admin quản lý chủ đề, Admin cấm/gỡ cấm người dùng, Admin cộng/trừ điểm đóng góp và Admin xem biểu đồ thống kê.
- Lược đồ tuần tự (Sequence Diagram): Thể hiện luồng tương tác thông qua 20 lược đồ chi tiết (từ Hình 3-4 đến Hình 3-23), mô tả tuần tự các bước từ giao diện, bộ điều khiển (Controller), dịch vụ (Service) đến cơ sở dữ liệu cho các tác vụ như xác thực OTP, đăng bài viết, bình luận, phê duyệt thành viên và xử lý báo cáo.
- Thiết kế cơ sở dữ liệu: Xây dựng lược đồ quan hệ thực thể (Hình 3-24) chuẩn hóa, lưu trữ các bảng thực thể: người dùng, vai trò, bài viết, bình luận, điểm đánh giá, chủ đề, nhóm diễn đàn, đơn xin gia nhập nhóm và nhật ký báo cáo vi phạm.
- Thiết kế giao diện: Xây dựng và mô tả chi tiết 26 màn hình chức năng (từ Hình 2-25 đến Hình 3-51) cùng các bảng mô tả đi kèm (Bảng 0-57 đến 3-69), bao gồm cả giao diện máy khách của sinh viên và bảng điều khiển quản trị (Dashboard) của Admin.
Chương 4: Kiểm thử
Chương 4 thiết lập kế hoạch và chiến lược kiểm nghiệm hệ thống:
- Kế hoạch và chiến lược kiểm thử: Lịch trình và phương pháp được xây dựng theo bảng kiểm thử chuẩn hóa (Bảng 4-1 và 4-2). Phương pháp kiểm thử chủ đạo là kiểm thử chức năng (Functional Testing/Black-box Testing) nhằm xác nhận hệ thống phản hồi chính xác theo từng kịch bản đầu vào.
- Kịch bản kiểm thử (Test Case): Triển khai thực tế trên 5 nhóm ca kiểm thử lớn:
- Kiểm thử chức năng Đăng ký, Đăng nhập và xác thực OTP qua Email (Bảng 4-3).
- Kiểm thử chức năng Tạo bài viết và Bình luận trên diễn đàn (Bảng 4-4).
- Kiểm thử chức năng Đánh giá nội dung bài viết và bình luận (Bảng 4-5).
- Kiểm thử chức năng Quản lý hồ sơ và cập nhật thông tin cá nhân (Bảng 4-6).
- Kiểm thử quy trình Tạo nhóm, gửi yêu cầu gia nhập và duyệt thành viên (Bảng 4-7).
Kết quả và đóng góp
Kết quả chính đạt được
Khóa luận đã hoàn thành toàn bộ khối lượng công việc đặt ra trong đề cương:
- Xây dựng thành công nền tảng diễn đàn hoạt động ổn định với kiến trúc phân tầng kết hợp giữa Spring Boot và ReactJS.
- Triển khai thành công hệ thống xác thực tài khoản chặt chẽ, ràng buộc người dùng phải đăng ký bằng email của Trường Đại học Sư phạm Kỹ thuật TP.HCM và kích hoạt qua mã OTP gửi về hòm thư điện tử.
- Xây dựng đầy đủ hệ thống tương tác nội dung: trình soạn thảo văn bản phong phú React Quill, cơ chế chấm điểm tương tác giữa các sinh viên, cơ chế đánh dấu bài viết yêu thích và phân cấp quản lý nhóm.
- Thiết lập bảng điều khiển quản trị (Admin Dashboard) hoàn chỉnh với công cụ thống kê tương tác trực quan qua React Chart.js 2, giúp quản trị viên kiểm soát danh sách người dùng, tiếp nhận và xử lý kịp thời các nội dung bị báo cáo vi phạm.
Giải pháp và kiến nghị của tác giả
- Giải pháp định danh nội bộ: Sử dụng hệ thống tài khoản gắn liền với mã định danh sinh viên của trường nhằm chấm dứt tình trạng mạo danh, tạo dựng môi trường mạng lành mạnh, có trách nhiệm.
- Giải pháp kiểm duyệt đa tầng: Kết hợp giữa sự giám sát của quản trị viên và cơ chế tự điều tiết của cộng đồng thông qua hệ thống báo cáo vi phạm (report người dùng, report bài viết, report bình luận) cùng thang điểm đóng góp.
- Kiến nghị ứng dụng: Đề xuất nhà trường xem xét đưa hệ thống vào thử nghiệm thực tế trong các khoa chuyên môn, từng bước thay thế các nhóm thảo luận tự phát trên mạng xã hội bên ngoài.
Đóng góp kỹ thuật
Khóa luận thể hiện đóng góp rõ nét trong việc xây dựng mô hình kiến trúc lai giữa REST API và GraphQL trên nền tảng Spring Boot. Thay vì chỉ sử dụng một giao thức duy nhất, hệ thống linh hoạt sử dụng RESTful cho các tác vụ xác thực, quản lý phiên và dùng GraphQL (thông qua Apollo Client và GraphQL Codegen) cho các tác vụ truy vấn dữ liệu hiển thị phức tạp, giúp giảm thiểu đáng kể số lượng request gửi về máy chủ và tối ưu hóa băng thông truyền tải.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của đề tài
Dựa trên văn bản báo cáo và phạm vi nghiên cứu, đề tài còn tồn tại một số điểm hạn chế:
- Hệ quản trị cơ sở dữ liệu MySQL bộc lộ nhược điểm khi dung lượng bản ghi tăng cao đột biến, việc truy xuất các bảng quan hệ phức tạp có thể bị suy giảm hiệu năng.
- Hệ thống đệm Redis lưu trữ dữ liệu chủ yếu trên bộ nhớ RAM, tiềm ẩn rủi ro về tính bền vững của dữ liệu nếu phát sinh sự cố máy chủ mà chưa đồng bộ kịp xuống đĩa cứng.
- Chức năng nhắn tin trao đổi trực tiếp giữa các thành viên và quản lý nhiều nhóm chat mới dừng lại ở mức độ phân tích thiết kế yêu cầu và nhóm chat cơ bản, chưa hoàn thiện cơ chế nhắn tin thời gian thực đa phương tiện quy mô lớn.
Hướng nghiên cứu và phát triển tiếp theo
Văn bản xác định các hướng nâng cấp trong tương lai:
- Tiếp tục nghiên cứu và hoàn thiện mô-đun nhắn tin trực tiếp thời gian thực (real-time chat) cho các nhóm học tập chuyên biệt.
- Tối ưu hóa cấu trúc cơ sở dữ liệu và mở rộng giải pháp lưu trữ phân tán nhằm đáp ứng tải truy cập lớn khi triển khai toàn trường.
- Khai thác sâu hơn năng lực của trí tuệ nhân tạo Gemini để tự động phân loại bài viết theo chuyên mục học thuật, hỗ trợ gợi ý giải đáp thắc mắc tự động và tự động phát hiện các nội dung độc hại, tiêu cực trước khi người dùng báo cáo.
Giá trị tham khảo
Báo cáo khóa luận là tài liệu tham khảo hữu ích cho:
- Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Là tài liệu mẫu hoàn chỉnh về quy trình xây dựng một ứng dụng web full-stack kết hợp Spring Boot và ReactJS; cung cấp hướng dẫn áp dụng TypeScript, Tailwind CSS, Shadcn UI và quản lý trạng thái bằng Zustand.
- Người nghiên cứu kiến trúc tích hợp hệ thống: Cung cấp giải pháp triển khai song song RESTful API và Spring GraphQL trong cùng một dự án máy chủ Java, kèm theo quy trình tạo tài liệu tự động qua SpringDoc OpenAPI.
- Người thực hiện đồ án tốt nghiệp: Cung cấp cấu trúc phân tích thiết kế chuẩn mực từ khảo sát hiện trạng đối chuẩn, thiết lập danh mục 33 bảng đặc tả Use Case chi tiết đến hệ thống Sequence Diagram và kịch bản kiểm thử hộp đen.
Câu hỏi thường gặp
1. Hệ thống giải quyết bài toán mạo danh và bảo mật tài khoản sinh viên bằng cách nào?
Hệ thống bắt buộc người dùng đăng ký tài khoản thông qua địa chỉ Email chính thức do Trường Đại học Sư phạm Kỹ thuật TP.HCM cấp. Trong quá trình đăng ký (Use Case 01 và 02), hệ thống kích hoạt dịch vụ Spring Email gửi mã xác thực OTP về hòm thư sinh viên để xác thực quyền sở hữu. Mật khẩu được mã hóa an toàn bằng thuật toán băm mật khẩu (BCrypt), và các phiên làm việc được quản lý bảo mật thông qua chuẩn JSON Web Token (JWT) do Spring Security kiểm soát.
2. Sự kết hợp giữa GraphQL Codegen và React-Apollo Hooks mang lại lợi ích gì cho hệ thống?
Việc sử dụng GraphQL Codegen cho phép tự động phân tích schema từ máy chủ Spring GraphQL để sinh ra các kiểu dữ liệu TypeScript và các React-Apollo Hooks tương ứng. Điều này giúp đội ngũ phát triển không phải viết mã truy vấn thủ công, loại bỏ các lỗi sai lệch kiểu dữ liệu (type safety), giảm thiểu mã nguồn lặp lại và tối ưu hóa hiệu suất truyền nhận dữ liệu giữa máy khách và máy chủ.
3. Thành phần Redis và Gemini được tích hợp vào hệ thống nhằm phục vụ mục đích gì?
Redis được tích hợp như một hệ thống lưu trữ đệm in-memory tốc độ cao, hỗ trợ giảm tải truy vấn trực tiếp xuống cơ sở dữ liệu MySQL và tối ưu hóa thời gian phản hồi cho các yêu cầu lặp lại. Mô hình học sâu Gemini được tích hợp nhằm mục đích xử lý ngôn ngữ tự nhiên, hỗ trợ người dùng tương tác và định hướng thông minh trong việc tìm kiếm, phân loại nội dung trên diễn đàn.
4. Vai trò của tác nhân "Admin nhóm" khác biệt như thế nào so với người dùng thông thường và Admin hệ thống?
Người dùng thông thường chỉ có quyền đăng bài, bình luận và quản lý tương tác cá nhân. Admin nhóm (Group Admin) có thêm quyền lực quản trị trong phạm vi một hội nhóm cụ thể: kiểm duyệt đơn xin gia nhập nhóm của các sinh viên khác, kiểm duyệt hoặc xóa bài viết vi phạm trong nhóm, loại bỏ thành viên ra khỏi nhóm và giải tán nhóm. Ngược lại, Admin hệ thống nắm quyền toàn cục: quản lý toàn bộ chủ đề, can thiệp vào tài khoản sinh viên trên toàn hệ thống (cấm/gỡ cấm, cộng/trừ điểm đóng góp) và theo dõi biểu đồ thống kê tương tác chung.
5. Chiến lược kiểm thử chức năng của đồ án được triển khai trên những module nghiệp vụ nào?
Theo Chương 4 của báo cáo, nhóm tác giả xây dựng 5 bảng kịch bản kiểm thử chức năng chuyên biệt:
- Bảng 4-3: Kiểm thử luồng Đăng nhập, Đăng ký và xác thực OTP qua email.
- Bảng 4-4: Kiểm thử chức năng Tạo bài viết mới và gửi Bình luận.
- Bảng 4-5: Kiểm thử chức năng Đánh giá (voting/rating) bài viết và bình luận.
- Bảng 4-6: Kiểm thử chức năng Cập nhật và Quản lý thông tin hồ sơ cá nhân.
- Bảng 4-7: Kiểm thử quy trình Tạo nhóm, gửi đơn xin vào nhóm và xét duyệt thành viên.
Kết luận
Khóa luận tốt nghiệp của sinh viên Bùi Quốc Định và Huỳnh Văn Quới đã giải quyết trọn vẹn bài toán xây dựng diễn đàn tư vấn và trao đổi thông tin dành riêng cho sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM. Bằng việc làm chủ các công nghệ hiện đại gồm Spring Boot, ReactJS, GraphQL, Redis và Gemini AI, nhóm tác giả đã phát triển một hệ thống phần mềm hoàn chỉnh, đáp ứng tốt cả yêu cầu chức năng lẫn phi chức năng. Đề tài sở hữu tài liệu phân tích thiết kế công phu, có tính thực tiễn cao và là nguồn tài liệu tham khảo giá trị cho các nghiên cứu ứng dụng công nghệ phần mềm trong môi trường đại học.