Bối cảnh và vấn đề nghiên cứu
Khóa luận tốt nghiệp với đề tài "Xây dựng website kinh doanh khóa học online" được thực hiện bởi nhóm sinh viên Nguyễn Phúc Thanh Toàn (MSSV: 19110479) và Nguyễn Ngọc Trung (MSSV: 19110490), dưới sự hướng dẫn của ThS. Nguyễn Minh Đạo tại Bộ môn Công nghệ Phần mềm, Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (hoàn thành vào tháng 07 năm 2023).
Về tính cấp thiết, tác giả xác định việc ứng dụng công nghệ thông tin vào đời sống là yêu cầu thiết yếu nhằm thúc đẩy tiến độ phát triển xã hội, giải quyết rào cản về khoảng cách địa lý, tối ưu hóa nhân lực và hiệu năng vận hành. Bối cảnh thực tiễn được ghi nhận rõ nét trong giai đoạn dịch bệnh Covid-19, khi các giải pháp kỹ thuật số đóng vai trò quan trọng trong việc hạn chế tiếp xúc trực tiếp. Tuy vậy, thực trạng kết nối giữa bên cung cấp dịch vụ đào tạo và người học vẫn tồn tại nhiều khó khăn và bất cập. Xuất phát từ nhu cầu thực tiễn đó, nghiên cứu hướng đến việc phát triển một nền tảng thương mại điện tử chuyên biệt cho giáo dục trực tuyến, kết nối trực tiếp người bán và người mua. Mô hình này cho phép người học chủ động tra cứu, lựa chọn khóa học phù hợp mà không cần thông qua tư vấn viên trung gian, đồng thời hỗ trợ giảng viên giới thiệu chương trình giảng dạy, thông tin ưu đãi và liên hệ trực tiếp mà không tốn chi phí cho các kênh quảng cáo trung gian.
Mục tiêu nghiên cứu của đề tài được tác giả xác định cụ thể qua 4 nội dung:
- Xây dựng một trang kinh doanh khóa học online với những chức năng cơ bản phục vụ người dùng và giảng viên của các khóa học.
- Xây dựng giao diện thân thiện với người sử dụng, đảm bảo tính thuận tiện trong thao tác.
- Tích hợp và áp dụng các hình thức thanh toán trực tuyến qua cổng VNPAY vào hệ thống.
- Ứng dụng dịch vụ lưu trữ đám mây AWS S3 để quản lý tài nguyên và dữ liệu đa phương tiện cho toàn bộ hệ thống.
Về đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Nhu cầu học tập linh hoạt (mọi lúc, mọi nơi) của người dùng thông qua các thiết bị thông minh kết nối Internet; đồng thời tập trung nghiên cứu hệ sinh thái công nghệ phần mềm bao gồm Spring Boot, Spring Security, Spring Data JPA, ReactJS, MySQL, JSON Web Token (JWT) và dịch vụ lưu trữ AWS S3 Bucket.
- Phạm vi nghiên cứu: Về mặt thời gian, đề tài được triển khai từ ngày 14/03/2023 đến ngày 10/07/2023 (với kế hoạch thực hiện phân kỳ từ 27/02/2023 đến 07/07/2023). Về mặt không gian và nghiệp vụ, hệ thống tập trung vào hai mảng chính:
- Phân hệ người học: Tìm kiếm, tham khảo khóa học, thực hiện mua hàng, thanh toán qua VNPAY, học trực tiếp trên website, ghi chú bài học (note), bình luận thảo luận dưới video, tương tác hỏi đáp với Chatbot sử dụng ChatGPT, thiết lập lịch nhắc hẹn học tập, thực hiện bài kiểm tra trắc nghiệm (quiz) và đánh giá khóa học đã mua.
- Phân hệ quản trị và vận hành: Quản trị danh mục khóa học, quản lý giảng viên, theo dõi doanh thu hệ thống, xét duyệt hồ sơ đăng ký trở thành giảng viên, phân công người kiểm duyệt (Reviewer) và kiểm duyệt nội dung các khóa học mới trước khi phát hành.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và công nghệ được tác giả sử dụng làm nền tảng phát triển hệ thống gồm:
- Khung phát triển phía máy chủ: Spring Boot (phiên bản dựa trên nền tảng Java) kết hợp các mô-đun Spring MVC, Spring Core. Hệ thống áp dụng kiến trúc phân lớp (Three-layer Architecture) bao gồm tầng trình diễn (Presentation Layer), tầng xử lý nghiệp vụ (Business Layer), tầng tương tác dữ liệu (Persistence Layer) và cơ sở dữ liệu (Database Layer).
- Cơ chế bảo mật và phân quyền: Spring Security phối hợp với chuẩn mã thông báo JSON Web Token (JWT - tiêu chuẩn RFC 7519). Cấu trúc mã JWT gồm 3 phần: Header (thuật toán mã hóa HMAC SHA256 hoặc RSA), Payload (chứa các Registered claims, Public claims và Private claims) và Signature (chữ ký bí mật). Luồng xác thực vận hành qua bộ lọc
JwtAuthenticationFilter, quản lý người dùng với UserDetail và lưu trữ trạng thái đăng nhập trong SecurityContextHolder.
- Quản trị cơ sở dữ liệu: Hệ quản trị cơ sở dữ liệu quan hệ MySQL, tương tác thông qua Spring Data JPA với giao diện
JpaRepository (thừa kế từ PagingAndSortingRepository) nhằm hỗ trợ sắp xếp, phân trang và các thao tác CRUD cơ bản.
- Giao thức truyền thông và API: Kiến trúc RESTful API sử dụng các phương thức HTTP tiêu chuẩn (GET, POST, PUT, DELETE). Dữ liệu trao đổi giữa máy khách và máy chủ được đóng gói đồng bộ thông qua đối tượng truyền dữ liệu (DTO) và lớp chuẩn hóa phản hồi
ResponseObject.
- Thư viện giao diện máy khách: ReactJS xây dựng giao diện dựa trên cơ chế Virtual DOM, cú pháp mở rộng JSX, phân rã Component, quản lý dữ liệu qua Props và State, quản lý điều hướng với
react-router-dom. Trạng thái toàn cục (như phiên đăng nhập của người dùng, dữ liệu giỏ hàng) được quản lý tập trung thông qua Redux Toolkit (cartRedux.js, store.js và hàm useSelector). Giao diện kết hợp thư viện Material UI (Google Material Design) cùng Bootstrap (react-bootstrap) nhằm đảm bảo khả năng hiển thị đáp ứng (responsive).
- Hạ tầng lưu trữ và đám mây: Amazon Web Services (AWS) bao gồm dịch vụ lưu trữ đối tượng AWS S3 Bucket (lưu trữ video, hình ảnh, tài liệu bài giảng, tệp phiên âm từ dịch vụ AWS Transcribe) và mạng phân phối nội dung AWS CloudFront. Máy chủ Backend được triển khai trên nền tảng Ubuntu Server của Digital Ocean.
Phương pháp nghiên cứu thực tế được thực hiện qua các bước:
- Phương pháp khảo sát hiện trạng: Khảo sát đối sánh thực tế giao diện và tính năng của hai nền tảng đào tạo trực tuyến hiện hành tại Việt Nam là Unica và F8 (Học lập trình để đi làm).
- Phương pháp phân tích và mô hình hóa yêu cầu: Thu thập yêu cầu chức năng, yêu cầu phi chức năng, xây dựng biểu đồ ca sử dụng (Use Case Diagram) và phân rã chi tiết thành 24 sơ đồ tuần tự (Sequence Diagram).
- Phương pháp thiết kế hệ thống: Thiết kế mô hình dữ liệu quan hệ (Entity-Relationship) và thiết kế giao diện chi tiết cho từng tác nhân.
- Phương pháp cài đặt và kiểm thử: Xây dựng hệ thống theo quy trình tích hợp liên tục (CI/CD script) và tiến hành kiểm thử hộp đen (Black-box testing) trên các chức năng cốt lõi.
Nguồn dữ liệu của nghiên cứu bao gồm: dữ liệu khảo sát từ các nền tảng giáo dục trực tuyến; dữ liệu đặc tả nghiệp vụ thương mại điện tử; tài liệu kỹ thuật từ nhà cung cấp dịch vụ (Spring, React, AWS, Digital Ocean); và hệ thống dữ liệu kiểm thử giả lập (mock data) về thông tin tài khoản, khóa học, bài kiểm tra và giao dịch thanh toán thử nghiệm qua cổng VNPAY.
Thiết kế và triển khai
Hệ thống được thiết kế theo kiến trúc nguyên khối (Monolithic) phía Backend kết hợp với mô hình ứng dụng đơn trang (Single Page Application - SPA) phía Frontend.
Kiến trúc phân tầng Backend
Backend viết bằng Spring Boot được tổ chức theo cấu trúc 3 tầng:
- Tầng trình diễn (Presentation Layer): Tiếp nhận HTTP request từ máy khách thông qua các lớp được đánh dấu bằng
@RestController. Tầng này chịu trách nhiệm kiểm tra định dạng dữ liệu đầu vào, ánh xạ các tham số URL (@RequestParam, @PathVariable, @RequestHeader) và trả về dữ liệu định dạng JSON qua ResponseObject. Việc xử lý ngoại lệ tập trung trên toàn hệ thống được đảm nhiệm bởi @ControllerAdvice.
- Tầng nghiệp vụ (Business Layer): Chứa các lớp được đánh dấu
@Service, được phân chia rõ rệt thành hai gói: Interface (định nghĩa các phương thức nghiệp vụ) và Implementation (triển khai mã nguồn chi tiết), đảm bảo tính trừu tượng hóa và giảm độ phụ thuộc.
- Tầng tương tác dữ liệu (Persistence Layer): Chứa các giao diện Repository kế thừa từ
JpaRepository, thực hiện thao tác ánh xạ các Entity xuống cơ sở dữ liệu quan hệ MySQL mà không cần viết các câu lệnh truy vấn SQL thủ công.
Thiết kế cơ sở dữ liệu
Cơ sở dữ liệu của hệ thống được xây dựng trên MySQL với 29 bảng lưu trữ, phân định theo từng nhóm nghiệp vụ:
| Nhóm nghiệp vụ |
Tên các bảng dữ liệu |
| Tài khoản và Phân quyền |
Account, UserDetail, role, teacher_profile, reviewer_role, Register_Teacher_Form |
| Quản lý Khóa học và Bài giảng |
Category, courses, Chapters, lectures, learning_process, wish_list, Announcement |
| Kiểm duyệt Khóa học |
course_summary_info_register, register_course_session, register_chapter, register_lectures |
| Bán hàng và Thanh toán |
Cart, Cart Detail, Orders, Order Detail, Payment, courses_paid, Coupon |
| Tương tác và Đánh giá |
reviews, Note, discuss, quiz_question, quiz_answer |
Tương tác người dùng và kiểm duyệt
Hệ thống thiết lập phân quyền chặt chẽ cho 4 nhóm tác nhân (Actors):
- Người dùng (User): Tìm kiếm khóa học, thêm khóa học vào giỏ hàng, đặt mua qua cổng VNPAY, theo dõi tiến trình bài học, thêm ghi chú mốc thời gian, tạo câu hỏi thảo luận, hỏi đáp với AI Chatbot và làm bài tập trắc nghiệm.
- Giảng viên (Teacher): Soạn thảo cấu trúc khóa học, thêm các chương học và bài giảng (video hoặc bài kiểm tra quiz), tải tài liệu lên AWS S3, gửi hồ sơ phê duyệt khóa học lên ban quản trị, đăng thông báo cho học viên.
- Người kiểm duyệt (Reviewer): Nhận nhiệm vụ kiểm duyệt khóa học được phân công từ hệ thống, xem xét chi tiết nội dung video và tài liệu, phê duyệt hoặc từ chối yêu cầu tạo khóa học mới kèm lý do.
- Quản trị viên (Admin): Quản trị toàn bộ người dùng, quản lý tài khoản giảng viên, xét duyệt đơn đăng ký trở thành giảng viên, thiết lập và cấp quyền tài khoản Reviewer, quản lý doanh thu và hệ thống danh mục.
Triển khai và Kiểm thử phần mềm
- Triển khai máy chủ (Deployment): Phía Frontend được đóng gói thành các tệp tĩnh và đẩy lên AWS S3 Bucket cấu hình chế độ Static Website Hosting, kết hợp với mạng phân phối nội dung AWS CloudFront để tăng tốc độ phân phối và giảm độ trễ. Quy trình triển khai tự động hóa qua kịch bản CI/CD, kích hoạt khi có mã nguồn được commit vào nhánh chỉ định. Phía Backend được cấu hình chạy trên nền tảng máy chủ Ubuntu Server (Digital Ocean), hỗ trợ chuyển đổi linh hoạt giữa các môi trường thông qua hai cấu hình
application-local.properties (MySQL Docker) và application.properties (AWS RDS).
- Kế hoạch kiểm thử: Tiến hành kiểm thử chức năng (Functional Testing) với 16 kịch bản kiểm thử hộp đen chi tiết (từ Bảng 76 đến Bảng 91), bao gồm:
- Kiểm thử xác thực: Đăng nhập với dữ liệu hợp lệ, Đăng ký tài khoản mới.
- Kiểm thử giao dịch và học tập: Tìm kiếm khóa học, Thêm sản phẩm vào giỏ hàng, Thanh toán đơn hàng qua VNPAY, Đánh giá khóa học đã mua, Thêm ghi chú bài giảng, Tạo câu hỏi thảo luận, Hỏi đáp với AI, Đánh dấu hoàn thành bài học.
- Kiểm thử quy trình quản trị: Gửi yêu cầu trở thành giảng viên, Phê duyệt yêu cầu trở thành giảng viên, Đăng ký tạo khóa học mới, Phê duyệt khóa học cho phép duyệt, Thêm bài học mới định dạng video, Thêm bài học mới định dạng quiz trắc nghiệm.
Nội dung chính theo từng chương
Phần mở đầu
Phần này trình bày tính cấp thiết của đề tài trong việc giải quyết bài toán kết nối giữa người có nhu cầu học tập và bên cung cấp khóa học; xác định đối tượng nghiên cứu xoay quanh nhu cầu học trực tuyến và các công nghệ phần mềm hiện đại; vạch rõ phạm vi triển khai hệ thống (các tính năng cho người học, giảng viên và công tác quản trị); xác định 4 mục tiêu nghiên cứu cụ thể; và nêu bật ý nghĩa khoa học lẫn giá trị thực tiễn của đề tài trong đào tạo trực tuyến.
Chương 1: Cơ sở lý thuyết
Chương 1 cung cấp tổng quan kỹ thuật và nguyên lý vận hành của các công nghệ được lựa chọn trong đề tài:
- Spring Boot Framework: Kiến trúc phân lớp, luồng hoạt động từ Controller đến Service và Repository; ưu điểm về máy chủ nhúng (Tomcat, Jetty), tự động cấu hình không dùng XML; nhược điểm về kích thước tệp và sự phức tạp khi di chuyển dự án cũ.
- Spring Security: Cơ chế chuỗi bộ lọc (
springSecurityFilterChain), vai trò của AuthenticationProvider và UserDetail, khả năng phòng chống các lỗ hổng bảo mật như CSRF, bảo vệ session, mã hóa mật khẩu; ứng dụng cấu hình qua JwtAuthenticationFilter.
- Cơ sở dữ liệu MySQL: Mô hình client-server, cách thức lưu trữ dạng bảng, ưu điểm về tốc độ, tính ổn định, dễ sử dụng, khả năng mở rộng; nhược điểm về tải lớn khi số bản ghi tăng cao.
- RESTful API: Khái niệm kiến trúc REST, 4 phương thức HTTP tương ứng thao tác CRUD (GET, POST, PUT, DELETE), cách cấu hình đường dẫn qua
@RestController và chuẩn hóa đầu ra qua lớp ResponseObject.
- JSON Web Token (JWT): Định dạng nhỏ gọn theo chuẩn RFC 7519, phân tích 3 phần cấu thành (Header, Payload, Signature), các loại claim (Registered, Public, Private) và cơ chế ký xác thực an toàn bằng thuật toán HMAC SHA256.
- AWS S3 và CloudFront: Khái niệm lưu trữ đối tượng dạng Bucket, cơ chế phân quyền truy cập thông qua Bucket Policy, khả năng lưu trữ tài nguyên học tập đa phương tiện (video, tài liệu, phụ đề sinh bởi AWS Transcribe) và hosting tĩnh; kết hợp AWS CloudFront để phân phối tài nguyên.
- ReactJS và Redux: Các khái niệm then chốt của React gồm JSX, Component, Props, State, mô hình luồng dữ liệu một chiều; phân tích ưu điểm Virtual DOM và khả năng render; ứng dụng quản lý trạng thái tập trung với Redux Toolkit (
store.js, cartRedux.js) và điều hướng trang bằng react-router-dom.
- Thư viện giao diện: Giới thiệu Material UI với hệ thống thành phần dựa trên chuẩn thiết kế của Google, phối hợp với Bootstrap và
react-bootstrap nhằm xây dựng giao diện hiển thị đáp ứng trên các kích cỡ màn hình khác nhau.
Chương 2: Khảo sát hiện trạng và mô hình hóa yêu cầu
Nội dung chương tập trung vào việc nghiên cứu thực tế và hình thức hóa yêu cầu của hệ thống:
- Khảo sát hiện trạng: Phân tích ưu nhược điểm giao diện và luồng trải nghiệm người dùng của hai website học trực tuyến phổ biến là Unica và F8 – Học lập trình để đi làm.
- Xác định yêu cầu: Liệt kê chi tiết yêu cầu chức năng (các hành vi nghiệp vụ của từng nhóm đối tượng) và yêu cầu phi chức năng (tính an toàn bảo mật, thời gian đáp ứng, tính toàn vẹn dữ liệu).
- Mô hình hóa yêu cầu: Xây dựng biểu đồ Use Case tổng thể cho 4 tác nhân chính: Quản trị viên (Admin), Giảng viên (Teacher), Người kiểm duyệt (Reviewer) và Học viên (User). Đi kèm là 24 bảng đặc tả Use Case chi tiết và 24 sơ đồ tuần tự (Sequence Diagram) mô tả tuần tự các bước gửi thông điệp giữa các đối tượng trong từng trường hợp sử dụng cụ thể (từ Hình 47 đến Hình 70).
Chương 3: Thiết kế hệ thống
Chương này chuyển hóa các yêu cầu đã phân tích thành thiết kế kỹ thuật cụ thể:
- Thiết kế cơ sở dữ liệu: Trình bày lược đồ thực thể (Entity-Relationship) và lược đồ lớp (Class Diagram - Hình 71), mô tả cấu trúc chi tiết của 29 bảng dữ liệu (từ Bảng 25 đến Bảng 53) bao gồm tên cột, kiểu dữ liệu, khóa chính, khóa ngoại và ràng buộc toàn vẹn.
- Thiết kế giao diện (UI/UX): Thiết kế và mô tả chi tiết bố cục, thành phần hiển thị cho từng phân hệ (từ Bảng 54 đến Bảng 74 và các Hình 73 - 97):
- Giao diện quản trị và giảng viên: Trang đăng nhập, quản lý khóa học, chỉnh sửa thông tin tổng quan, chỉnh sửa bài học, thêm mới chương học (chapter), quản lý yêu cầu phê duyệt khóa học, duyệt yêu cầu trở thành giảng viên, thêm mới người kiểm duyệt.
- Giao diện người dùng: Trang chủ, danh mục khóa học, trang chi tiết khóa học, phòng học trực tuyến (tích hợp phát video, ghi chú bài giảng, khung thảo luận, đặt lịch học, xem thông báo từ giảng viên, khung hỏi đáp với Chatbot AI), giỏ hàng, lịch sử mua hàng, chi tiết giảng viên.
Chương 4: Cài đặt và kiểm thử
Chương 4 ghi lại quá trình hiện thực hóa giải pháp và kiểm chứng chất lượng phần mềm:
- Cài đặt phần mềm: Hướng dẫn cài đặt các ứng dụng và thư viện cần thiết; cấu hình mã nguồn phía Backend (tổ chức các gói controller, service, repository, dto, config); cấu hình mã nguồn phía Frontend phân tách giữa giao diện người dùng và giao diện quản trị (Admin, Teacher, Reviewer); thiết lập kịch bản triển khai tự động CI/CD lên AWS S3 và CloudFront.
- Kiểm thử phần mềm: Trình bày kế hoạch kiểm thử và kết quả thực hiện 16 trường hợp kiểm thử chức năng (Bảng 76 đến Bảng 91), đánh giá tính chính xác của các luồng nghiệp vụ đăng nhập, đăng ký, tìm kiếm, giỏ hàng, thanh toán qua cổng VNPAY, tương tác bài học, làm bài trắc nghiệm quiz, và quy trình kiểm duyệt nội dung nhiều bước giữa giảng viên và người kiểm duyệt.
Phần kết luận
Đánh giá tổng quan mức độ hoàn thành so với mục tiêu đề ra ban đầu; chỉ ra các kết quả đạt được về mặt sản phẩm; thẳng thắn phân tích các nhược điểm kỹ thuật còn tồn đọng; và vạch ra định hướng phát triển, nâng cấp hệ thống trong tương lai.
Kết quả và đóng góp
Về kết quả đạt được:
- Đã xây dựng hoàn chỉnh ứng dụng web kinh doanh khóa học online với đầy đủ các phân hệ chức năng cho 4 vai trò người dùng: Học viên, Giảng viên, Người kiểm duyệt và Quản trị viên.
- Triển khai thành công quy trình giao dịch thanh toán trực tuyến qua cổng VNPAY API, bảo đảm luồng xử lý đơn hàng và cấp quyền truy cập khóa học chính xác.
- Tích hợp thành công dịch vụ điện toán đám mây AWS S3 Bucket nhằm lưu trữ toàn bộ tệp tin bài giảng đa phương tiện (video, tài liệu, hình ảnh, tệp phiên âm transcript từ AWS Transcribe) và phân phối tĩnh thông qua AWS CloudFront.
- Thiết lập cơ chế bảo mật xác thực người dùng dựa trên chuẩn JSON Web Token kết hợp chuỗi bộ lọc của Spring Security, quản lý phiên làm việc thông qua token gửi kèm trong HTTP request header.
- Hiện thực hóa các công cụ hỗ trợ người học: chức năng ghi chú tại mốc thời gian của video, chức năng thảo luận, lập lịch nhắc hẹn học tập, làm bài kiểm tra trắc nghiệm đánh giá năng lực, và tích hợp Chatbot AI dựa trên mô hình ChatGPT hỗ trợ giải đáp thắc mắc.
- Hoàn thiện bộ cơ sở dữ liệu gồm 29 bảng lưu trữ trên MySQL, đáp ứng đầy đủ các mối quan hệ nghiệp vụ phức tạp từ khâu tạo khóa học, kiểm duyệt, bán hàng đến tiến trình học tập.
Đóng góp của đề tài do tác giả tự nêu:
- Đề tài giúp người thực hiện tiếp thu, củng cố và nâng cao kỹ năng lập trình phần mềm, làm chủ các công nghệ hiện đại thuộc hệ sinh thái Java (Spring Boot, JPA, Spring Security) và JavaScript (ReactJS, Redux Toolkit).
- Cung cấp một giải pháp hệ thống kết nối trực tiếp giảng viên và học viên mà không cần thông qua đơn vị trung gian, hỗ trợ người dạy tự chủ kênh phân phối tri thức và giúp người học tiếp cận nguồn tài liệu giáo dục trực tuyến thuận tiện, tiết kiệm chi phí.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của hệ thống được ghi nhận từ văn bản:
- Kiến trúc phần mềm Backend xây dựng theo dạng Monolithic, tiềm ẩn khó khăn trong việc mở rộng quy mô khi hệ thống phát triển lớn.
- Khung Spring Boot phát sinh nhiều phần phụ thuộc (dependencies) không được sử dụng hết, dẫn đến kích thước tệp đóng gói triển khai lớn.
- Cơ sở dữ liệu MySQL có dung lượng và khả năng mở rộng hữu hạn; việc truy xuất dữ liệu có nguy cơ suy giảm hiệu năng khi số lượng bản ghi tăng đột biến nếu chưa có giải pháp chia tải (database sharding) hay tạo bộ nhớ đệm (caching).
- Hệ thống chỉ mới tập trung triển khai giao diện và chức năng trên môi trường trình duyệt web, chưa có ứng dụng di động độc lập.
Hướng nghiên cứu tiếp theo:
- Tối ưu hóa hiệu năng truy vấn cơ sở dữ liệu thông qua việc áp dụng giải pháp lưu trữ đệm trong bộ nhớ (như Redis) và phân tán cơ sở dữ liệu trên nhiều máy chủ.
- Xem xét chuyển đổi kiến trúc hệ thống từ khối thống nhất (Monolithic) sang kiến trúc vi dịch vụ (Microservices) nhằm nâng cao tính sẵn sàng và khả năng chịu tải.
- Mở rộng phát triển ứng dụng di động đa nền tảng (sử dụng công nghệ như React Native) dựa trên hệ thống RESTful API sẵn có.
- Hoàn thiện và nâng cấp các tính năng học tập thông minh dựa trên trí tuệ nhân tạo, tối ưu hóa thuật toán gợi ý khóa học theo nhu cầu người học.
Giá trị tham khảo
Báo cáo khóa luận là tài liệu tham khảo phù hợp cho:
- Sinh viên chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm đang chuẩn bị thực hiện đồ án chuyên ngành hoặc khóa luận tốt nghiệp thuộc hướng ứng dụng web thương mại điện tử hoặc hệ thống đào tạo trực tuyến (E-learning).
- Các lập trình viên hoặc nhóm nghiên cứu cần tài liệu tham khảo thực tế về mô hình kết hợp Spring Boot và ReactJS.
Các nội dung có giá trị tham khảo cao trong tài liệu:
- Thiết kế cơ sở dữ liệu: Hệ thống 29 bảng dữ liệu được chuẩn hóa, mô tả chi tiết kiểu dữ liệu và mối quan hệ ràng buộc giữa các thực thể, đặc biệt là cách tách biệt dữ liệu khóa học chính thức và dữ liệu bản nháp chờ kiểm duyệt (
course_summary_info_register, register_chapter, register_lectures).
- Kiến trúc bảo mật: Phương pháp cấu hình chi tiết
JwtAuthenticationFilter, cơ chế sinh và thẩm định token JWT, phân quyền truy cập theo vai trò dựa trên Spring Security.
- Tích hợp dịch vụ đám mây và thanh toán: Kịch bản CI/CD triển khai tệp tĩnh lên AWS S3 kết hợp AWS CloudFront, và phương thức kết nối API cổng thanh toán VNPAY.
Câu hỏi thường gặp
-
Hệ thống sử dụng công nghệ nào để xác thực và phân quyền người dùng?
Hệ thống sử dụng Spring Security kết hợp với mã thông báo JSON Web Token (JWT) theo chuẩn RFC 7519. Khi người dùng đăng nhập thành công qua đường dẫn /api/v1/login, hệ thống sẽ khởi tạo một JWT token chứa chữ ký mã hóa thuật toán HMAC SHA256 trả về cho client. Trong các yêu cầu kế tiếp, client gửi token này trong phần header của request để bộ lọc JwtAuthenticationFilter giải mã và xác thực quyền truy cập.
-
Quy trình kiểm duyệt khóa học mới được tổ chức như thế nào?
Quy trình kiểm duyệt được thiết kế qua tác nhân Người kiểm duyệt (Reviewer). Khi giảng viên hoàn tất việc đăng ký thông tin khóa học, các nội dung bài học được lưu vào nhóm bảng đăng ký (register_course_session, register_chapter, register_lectures). Reviewer nhận tác vụ kiểm duyệt, kiểm tra nội dung video và tài liệu, sau đó gửi kết quả phê duyệt. Nếu đạt yêu cầu, dữ liệu mới được chuyển sang bảng chính thức (courses, Chapters, lectures) để hiển thị bán trên hệ thống.
-
Dữ liệu video, hình ảnh và tài liệu học tập được lưu trữ ở đâu?
Toàn bộ video bài giảng, hình ảnh, tài liệu (PDF, PPT) do giảng viên và người dùng tải lên được lưu trữ trên dịch vụ đám mây AWS S3 (Amazon Simple Storage Service) thông qua các Bucket được thiết lập chính sách quyền truy cập (Bucket Policy). Ngoài ra, S3 còn lưu trữ các tệp phiên âm (transcript) tự động sinh ra từ video bởi dịch vụ AWS Transcribe.
-
Giao diện phía Frontend quản lý trạng thái giỏ hàng bằng công cụ gì?
Giao diện Frontend xây dựng bằng ReactJS sử dụng thư viện Redux Toolkit để quản lý trạng thái toàn cục (global state) của giỏ hàng thông qua tệp cartRedux.js. Dữ liệu giỏ hàng được đưa vào trung tâm lưu trữ store.js và bao bọc toàn bộ ứng dụng tại index.js. Các thành phần giao diện (như component Header) truy xuất danh sách sản phẩm trong giỏ hàng (listCart) thông qua hook useSelector.
-
Khóa luận đã thực hiện kiểm thử những trường hợp chức năng nào?
Tác giả đã lập kế hoạch và thực thi 16 trường hợp kiểm thử chức năng (Bảng 76 - 91), bao gồm: Đăng nhập đúng dữ liệu, Đăng ký đúng dữ liệu, Tìm kiếm khóa học, Thanh toán đơn hàng, Thêm sản phẩm vào giỏ hàng, Đánh giá khóa học đã mua, Thêm ghi chú bài học, Thêm câu hỏi thảo luận, Hỏi đáp với AI Chatbot, Đánh dấu hoàn thành bài học, Gửi yêu cầu làm giảng viên, Duyệt yêu cầu làm giảng viên, Đăng ký tạo khóa học, Phê duyệt khóa học hợp lệ, Thêm bài học mới dạng video và Thêm bài học mới dạng quiz trắc nghiệm.
Kết luận
Khóa luận tốt nghiệp "Xây dựng website kinh doanh khóa học online" của sinh viên Nguyễn Phúc Thanh Toàn và Nguyễn Ngọc Trung đã hoàn thành trọn vẹn mục tiêu nghiên cứu và phát triển một nền tảng giáo dục điện tử toàn diện. Đề tài kết hợp thành công các công nghệ tiêu biểu hiện nay bao gồm Spring Boot, Spring Security, MySQL, ReactJS, Redux Toolkit cùng hạ tầng đám mây AWS S3 và CloudFront. Hệ thống đã giải quyết tốt bài toán nghiệp vụ phức tạp từ phân quyền đa tác nhân (User, Teacher, Reviewer, Admin), quy trình kiểm duyệt nội dung, hỗ trợ học tập tương tác với AI đến xử lý thanh toán thực tế qua cổng VNPAY. Đây là công trình kỹ thuật phần mềm có cấu trúc mạch lạc, thiết kế cơ sở dữ liệu chi tiết và cung cấp giá trị tham khảo rõ ràng cho các nghiên cứu ứng dụng liên quan.