Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh công nghệ thông tin phát triển mạnh mẽ, lĩnh vực du lịch và dịch vụ lưu trú chứng kiến sự chuyển dịch rõ rệt từ hình thức đặt phòng truyền thống sang các nền tảng trực tuyến. Người tiêu dùng ngày càng ưu tiên sử dụng các ứng dụng đặt homestay nhờ tính tiện lợi, khả năng tiết kiệm thời gian, sự đa dạng trong lựa chọn và tính minh bạch từ đánh giá cộng đồng. Đồng thời, việc ứng dụng công nghệ trực tuyến còn hỗ trợ đắc lực trong việc giảm thiểu tiếp xúc trực tiếp, đáp ứng nhu cầu du lịch an toàn. Xuất phát từ thực tế đó, đề tài "Xây dựng website OYO chuyên cung cấp dịch vụ đặt chỗ nghỉ trực tuyến" được thực hiện bởi nhóm sinh viên Nguyễn Đức Thành và Mai Bảo Huy, dưới sự hướng dẫn của ThS. Nguyễn Thủy An 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).

Mục tiêu nghiên cứu và phát triển của đề tài bao gồm bốn nội dung cốt lõi:

  1. Nghiên cứu cơ sở lý thuyết, kiến trúc và khả năng ứng dụng thực tế của hệ sinh thái công nghệ gồm Spring Boot và ReactJS trong quy trình kỹ nghệ phần mềm.
  2. Xây dựng hoàn chỉnh website OYO cung cấp dịch vụ đặt chỗ nghỉ trực tuyến với các tính năng tìm kiếm, quản lý và đặt homestay phục vụ chuyến du lịch.
  3. Hiện thực hóa các yêu cầu bảo mật thông tin: xác thực người dùng, phân quyền truy cập giữa máy khách và máy chủ, mã hóa dữ liệu nhạy cảm, tối ưu hóa hiệu suất xử lý và đảm bảo khả năng mở rộng khi khối lượng dữ liệu tăng cao.
  4. Thiết kế giao diện người dùng (UX/UI) có tính thẩm mỹ, phối màu hài hòa, bố cục khoa học, dễ thao tác và bảo đảm an toàn dữ liệu khách hàng.

Nhiệm vụ nghiên cứu tập trung vào việc đánh giá hành vi đặt chỗ nghỉ của người dùng, phân tích mô hình quản lý cơ sở dữ liệu quan hệ MySQL, ứng dụng Redux Toolkit/Redux Persist để quản lý luồng trạng thái, triển khai chuẩn bảo mật JSON Web Token (JWT), đồng thời thiết kế thuật toán cho hệ thống gợi ý (Recommendation System).

Đối tượng nghiên cứu của đồ án là quy trình kinh doanh và nghiệp vụ đặt phòng homestay trực tuyến, tương tác giữa các bên liên quan trên hệ thống web. Phạm vi nghiên cứu về mặt nghiệp vụ bao gồm các quy trình đăng ký, đăng nhập, quản lý thông tin tài khoản, đăng tin cho thuê, quản lý phòng, đặt phòng, xác nhận check-in/check-out, đối soát giao dịch và thống kê doanh thu. Về mặt thời gian, đề tài thực hiện đồ án chính thức từ ngày 10/03/2024 đến ngày 05/07/2024 (với toàn bộ chu kỳ khảo sát và hoàn thiện kéo dài từ ngày 15/11/2023 đến ngày 12/07/2024).

Cơ sở lý thuyết và phương pháp

Đồ án xây dựng trên nền tảng kỹ thuật công nghệ phân tách rõ rệt giữa hai tầng máy khách (Front-end) và máy chủ (Back-end), kết hợp mô hình học máy gợi ý nội dung.

Ở tầng Front-end, tác giả sử dụng thư viện ReactJS do Facebook phát triển. Thư viện này vận hành với cơ chế Document Object Model ảo (Virtual DOM) giúp giảm thiểu thao tác cập nhật trực tiếp lên DOM thật, kết hợp luồng dữ liệu một chiều (one-way data binding) truyền qua props và kiến trúc hướng thành phần (Component-based architecture). Kích thước gói cơ bản của ReactJS vào khoảng 35kB (nhẹ hơn mức 39kB của Angular). Để quản lý trạng thái toàn cục, hệ thống ứng dụng Redux Toolkit nhằm tinh gọn cấu trúc mã nguồn, tối ưu hóa hiệu suất và giảm thiểu mã trùng lặp. Các thư viện bổ trợ khác gồm:

  • Axios: Thư viện HTTP client dựa trên JavaScript Promise hỗ trợ kết nối RESTful API.
  • react-i18next: Thư viện quốc tế hóa giao diện đa ngôn ngữ.
  • Material UI: Bộ thành phần giao diện chuẩn hóa theo ngôn ngữ thiết kế Google Material Design.
  • react-hook-form: Công cụ xử lý và kiểm tra tính hợp lệ của biểu mẫu (form validation).

Ở tầng Back-end, hệ thống khai thác Spring Framework với hai nguyên lý nền tảng là Tiêm phụ thuộc (Dependency Injection - DI) và Lập trình hướng khía cạnh (Aspect Oriented Programming - AOP), xây dựng trên các đối tượng Java thuần túy (POJO) với phần nhân gọn nhẹ xấp xỉ 2MB. Cụ thể, framework Spring Boot được triển khai để tự động hóa cấu hình (auto-configuration), quản lý thông số qua file properties và tích hợp thư viện thông qua starter dependency. Hệ thống tích hợp Spring Security cùng cơ chế JSON Web Token (JWT) để xác thực và phân quyền người dùng không lưu trạng thái (stateless). Cơ sở dữ liệu được quản trị trên hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) MySQL của Tập đoàn Oracle, tương tác thông qua Spring Data JPA.

Về phương pháp nghiên cứu và giải quyết bài toán gợi ý (Recommendation System), tác giả khảo sát ba hướng tiếp cận lý thuyết: Lọc dựa trên nội dung (Content-based filtering), Lọc cộng tác (Collaborative filtering) và Phương pháp lai ghép (Hybrid Method). Trong khuôn khổ cài đặt, đồ án tính toán mức giá homestay trung bình và xác định hệ số tương đồng giữa các đặc tính homestay để đề xuất cho người dùng đã có lịch sử đặt phòng.

Phương pháp phát triển phần mềm được thực hiện qua các bước: khảo sát đối sánh ba hệ thống thương mại thực tế (Agoda, Booking.com, Airbnb), thu thập yêu cầu người dùng, phân tích mô hình hóa yêu cầu thông qua ca sử dụng (Use Case), thiết kế kiến trúc hệ thống, xây dựng lược đồ tuần tự (Sequence Diagram), chuẩn hóa cơ sở dữ liệu quan hệ và kiểm thử hộp đen trên các tài khoản mẫu.

Thiết kế và triển khai

Hệ thống OYO được thiết kế theo kiến trúc phân tầng Client - Server. Tầng giao diện phía máy khách gửi các yêu cầu định dạng HTTP/HTTPS đến tầng máy chủ dịch vụ, máy chủ tiếp nhận, xác thực quyền hạn thông qua token JWT, xử lý nghiệp vụ, giao tiếp với hệ quản trị cơ sở dữ liệu MySQL và phản hồi dữ liệu về máy khách dưới định dạng chuẩn JSON.

Cơ sở dữ liệu của hệ thống được chuẩn hóa với 34 bảng quan hệ, phản ánh đầy đủ chu trình vận hành nghiệp vụ từ danh mục lưu trú đến lịch sử tài chính:

Nhóm chức năng Tên các bảng dữ liệu trong hệ thống
Xác thực và người dùng Users, Role, UserRole, RefreshToken, MailConfrimToken
Chỗ nghỉ và tiện ích AccomPlace, AccommodationCategories, ImageAccom, Facility, FacilityAccom, FacilityCategories, BedRoom, TypeBed
Chính sách và chi phí GeneralPolicyDetail, PriceCustom, SurchargeCategory, SurchargeOfAccom
Đặt phòng và thanh toán Booking, BookingList, Payment, PaymentInfoDetail, Bank, AdminEarning, PartnerEarning, RevenueList
Đánh giá, tương tác, vị trí Review, ReviewList, ImageReview, WishList, WishItem, Notification, Province, District, Ward

Hệ thống đề xuất homestay được triển khai thông qua các module tính toán giá homestay trung bình, đo lường mức độ tương đồng giữa các địa điểm lưu trú dựa trên thông số tiện ích, loại hình, khoảng giá và vị trí. Thuật toán lọc và trả về danh sách các homestay tương đồng nhất dành riêng cho tài khoản User đã phát sinh giao dịch đặt phòng trước đó.

Về mặt giao diện, hệ thống xây dựng bộ điều hướng linh hoạt gồm Header, Footer, hỗ trợ chuyển đổi giao diện sáng (Light mode) và giao diện tối (Dark mode). Giao diện phía đối tác (Partner) cung cấp các tab chuyên biệt: thông tin chung, địa chỉ, tiện ích, hình ảnh/video, thiết lập phòng, chính sách và thông tin thanh toán ngân hàng. Phía quản trị viên (Admin) sở hữu bảng điều khiển trực quan hỗ trợ duyệt chỗ nghỉ mới, theo dõi trạng thái tài khoản và biểu đồ doanh thu.

Quá trình triển khai và kiểm thử phần mềm được tiến hành độc lập trên cả tầng Back-end (cấu hình Datasource, ánh xạ JPA Entity, thiết lập bộ lọc Spring Security) và Front-end (tổ chức React Router, Redux Store). Nhóm tác giả thiết lập hệ thống tài khoản kiểm thử cho từng vai trò để chạy thử nghiệm các ca kiểm thử chức năng (Guest, User, Partner, Admin).

Nội dung chính theo từng chương

Chương 1: Cơ sở lý thuyết

Chương này hệ thống hóa các kiến thức nền tảng phục vụ dự án. Về phía Front-end, tác giả trình bày cơ chế hoạt động của ReactJS (Virtual DOM, kiến trúc SPA, luồng dữ liệu một chiều) và Redux Toolkit, chỉ rõ nhược điểm của ReactJS là chỉ đảm nhiệm tầng View, không có sẵn Model/Controller và cần thư viện bổ trợ. Về phía Back-end, chương giới thiệu Spring Framework (nguyên lý DI, AOP, POJO, dung lượng lõi ~2MB) và framework Spring Boot giúp giảm thiểu cấu hình XML phức tạp qua cơ chế cấu hình tự động. Hệ quản trị MySQL được phân tích về các ưu điểm hiệu năng và tính linh hoạt. Cuối cùng, chương tổng hợp các mô hình lý thuyết của hệ thống gợi ý gồm Content-based filtering, Collaborative filtering và ba phương thức lai ghép Hybrid Method.

Chương 2: Khảo sát hiện trạng và mô hình hoá yêu cầu

Chương 2 trình bày kết quả khảo sát ba hệ sinh thái đặt phòng trực tuyến phổ biến:

  • Agoda: Nổi bật với khả năng hỗ trợ 38 ngôn ngữ, tích hợp thanh toán PayPal và thẻ tín dụng.
  • Booking.com: Điểm mạnh về độ phủ dữ liệu chỗ nghỉ toàn cầu và cơ chế tìm kiếm chi tiết.
  • Airbnb: Nổi bật với phong cách thiết kế mang màu sắc hồng Millennial, mô hình tập trung vào căn hộ/nhà dân bản địa và trải nghiệm sinh hoạt địa phương.

Từ kết quả khảo sát, đồ án xác định 4 tác nhân chính trong hệ thống và lập bảng phân rã chức năng cụ thể:

Tác nhân (Actor) Số lượng chức năng Danh mục nghiệp vụ tiêu biểu
Guest 6 chức năng Đăng ký, kích hoạt tài khoản qua email, xem danh sách homestay, xem chi tiết, tìm kiếm, lọc theo tiêu chí
User 13 chức năng Đăng nhập, quên mật khẩu, đổi thông tin cá nhân, danh sách yêu thích, đặt chỗ, hủy đặt, đánh giá sau checkout, xem gợi ý cá nhân hóa
Partner 7 chức năng chính Đăng homestay, gửi yêu cầu duyệt, quản lý chi tiết phòng, điều chỉnh giá linh hoạt theo ngày, quản lý check-in/check-out, quản lý lịch sử giao dịch, thống kê doanh thu
Admin 12 chức năng Đăng nhập/đăng xuất trang quản trị, quản lý người dùng (khóa/mở khóa), quản lý homestay, quản lý danh mục (loại hình, loại giường, tiện ích, phụ phí), phê duyệt chỗ nghỉ mới, thống kê toàn hệ thống

Bên cạnh đó, chương mô hình hóa hệ thống bằng các lược đồ Use Case tổng thể và xây dựng chi tiết 36 kịch bản đặc tả Use Case.

Chương 3: Phân tích và thiết kế hệ thống

Chương 3 chi tiết hóa giải pháp kỹ thuật qua việc xây dựng lược đồ kiến trúc Client - Server, biểu đồ lớp nghiệp vụ (Class Diagram tổng quan và chi tiết) cùng hệ thống lược đồ tuần tự (Sequence Diagram) cho các nghiệp vụ: đăng nhập, kích hoạt tài khoản, tìm kiếm, lọc, đặt phòng, hủy phòng, đánh giá, các thao tác của chủ nhà (check-in, check-out, cập nhật giá, phụ phí) và thao tác kiểm duyệt của Admin. Chương này cũng trình bày lược đồ quan hệ thực thể cơ sở dữ liệu với 34 bảng cấu trúc, mô hình hóa giải thuật gợi ý homestay dựa trên tính toán độ tương đồng và thiết kế chi tiết toàn bộ màn hình giao diện từ trang chủ, trang chi tiết, trang đặt phòng đến trang quản trị.

Chương 4: Cài đặt và thử nghiệm

Chương 4 mô tả quy trình cài đặt môi trường máy chủ Spring Boot, cấu hình datasource kết nối cơ sở dữ liệu MySQL và tích hợp các module kiểm soát bảo mật JWT. Phía giao diện, mã nguồn ReactJS được đóng gói và cấu hình tích hợp với Axios API. Nhóm tác giả sử dụng các tài khoản mẫu đại diện cho 4 nhóm tác nhân để tiến hành chạy thử nghiệm toàn bộ luồng chức năng thực tế trên giao diện web, ghi nhận kết quả phản hồi của hệ thống đối với từng chức năng đã đặc tả.

Kết quả và đóng góp

Đồ án ghi nhận các kết quả thực tế trên cả hai khía cạnh sản phẩm và năng lực kỹ thuật:

  • Về sản phẩm phần mềm: Xây dựng thành công ứng dụng web OYO với đầy đủ phân hệ chức năng cho 4 tác nhân. Phân hệ khách hàng (Guest và User) hỗ trợ tìm kiếm, lọc chỗ nghỉ, quy trình đặt phòng, quản lý chỗ đặt, lưu danh sách yêu thích và viết nhận xét sau lưu trú. Phân hệ đối tác (Partner) cung cấp công cụ đăng tin kèm kiểm soát trạng thái phòng, cập nhật bảng giá linh hoạt theo từng ngày trong lịch và hệ thống báo cáo thống kê doanh thu đa chiều (theo tháng, năm). Phân hệ quản trị (Admin) thực hiện kiểm duyệt homestay trước khi hiển thị công khai, quản lý tài khoản người dùng và thiết lập các danh mục hệ thống.
  • Về mặt thuật toán: Ứng dụng thành công module gợi ý chỗ nghỉ tương đồng dựa trên dữ liệu giá trung bình và thuộc tính homestay, kích hoạt tự động cho các tài khoản người dùng đã có lịch sử đặt phòng.
  • Về kỹ năng và kiến thức: Nhóm thực hiện làm chủ quy trình xây dựng kiến trúc RESTful API, quản trị luồng dữ liệu phía máy khách với ReactJS và Redux Toolkit, cơ chế xác thực phân quyền không trạng thái bằng Spring Security và JSON Web Token, cũng như kỹ năng thiết kế cơ sở dữ liệu quan hệ cho bài toán thương mại điện tử - dịch vụ du lịch.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên phạm vi và kết quả thực hiện đồ án, hệ thống còn tồn tại một số hạn chế:

  • Thuật toán gợi ý chỗ nghỉ mới chỉ dừng ở mức so khớp độ tương đồng cơ bản và phụ thuộc hoàn toàn vào dữ liệu lịch sử của người dùng đã đặt phòng, chưa giải quyết triệt để bài toán khởi đầu lạnh (cold-start) đối với người dùng mới.
  • Hệ thống tập trung hoàn toàn trên nền tảng ứng dụng web (Single Page Application), chưa phát triển phiên bản ứng dụng di động bản địa (Native Mobile App) để tăng tính tiện lợi cho người dùng và chủ nhà khi thao tác di động.
  • Tính năng xử lý giao dịch tài chính và cổng thanh toán tự động giữa ba bên (Khách hàng - Quản trị viên - Đối tác) cần tiếp tục hoàn thiện về cơ chế đối soát tự động chuyên sâu.

Hướng phát triển tiếp theo của đề tài bao gồm việc nâng cấp thuật toán gợi ý sang các mô hình học máy lai ghép (Hybrid Recommender System) đa tiêu chí, mở rộng xây dựng ứng dụng di động trên nền tảng React Native để đồng bộ hóa trải nghiệm, đồng thời tích hợp thêm các cổng thanh toán điện tử phổ biến tại Việt Nam.

Giá trị tham khảo

Đồ án là tài liệu học thuật và kỹ thuật có giá trị tham khảo thiết thực cho:

  • Sinh viên chuyên ngành Công nghệ phần mềm, Công nghệ thông tin đang thực hiện đồ án môn học hoặc khóa luận tốt nghiệp về đề tài thương mại điện tử, dịch vụ du lịch và lưu trú trực tuyến.
  • Lập trình viên muốn tìm hiểu giải pháp xây dựng hệ thống web kết hợp giữa ReactJS, Redux Toolkit ở máy khách và Spring Boot, Spring Security, JWT ở máy chủ.
  • Những người nghiên cứu thiết kế hệ thống có thể tham khảo trực tiếp cấu trúc thiết kế cơ sở dữ liệu quan hệ chuẩn hóa gồm 34 bảng nghiệp vụ lưu trú, hệ thống 36 kịch bản đặc tả Use Case chi tiết và chuỗi lược đồ tuần tự xử lý nghiệp vụ đặt phòng, check-in, check-out thực tế.

Câu hỏi thường gặp

1. Hệ thống OYO phân định quyền hạn người dùng như thế nào?
Hệ thống xác định 4 nhóm tác nhân riêng biệt gồm: Guest (khách vãng lai, xem và tìm kiếm thông tin), User (khách hàng có tài khoản, thực hiện đặt chỗ, hủy phòng, lưu danh sách yêu thích và đánh giá), Partner (chủ homestay, đăng chỗ nghỉ, thiết lập giá theo ngày, quản lý check-in/check-out và theo dõi doanh thu), và Admin (quản trị viên, kiểm duyệt chỗ nghỉ mới, quản lý danh mục phụ trợ và khóa/mở khóa tài khoản).

2. Cơ chế đề xuất chỗ nghỉ (Recommendation System) trong đề tài hoạt động ra sao?
Hệ thống sử dụng phương pháp tính toán mức giá trung bình và xác định mức độ tương đồng giữa các đặc trưng homestay. Chức năng đề xuất homestay chỉ hiển thị và hoạt động đối với những tài khoản User đã từng thực hiện đặt phòng thành công trên hệ thống OYO.

3. Cơ sở dữ liệu của website OYO bao gồm những thành phần nào?
Cơ sở dữ liệu được thiết kế trên hệ quản trị MySQL với 34 bảng quan hệ, bao quát toàn diện các khía cạnh nghiệp vụ: quản lý tài khoản và phân quyền (Users, Role, UserRole), danh mục và chi tiết lưu trú (AccomPlace, Facility, BedRoom), chính sách và giá tùy chỉnh (GeneralPolicyDetail, PriceCustom), đặt chỗ và giao dịch (Booking, Payment, AdminEarning, PartnerEarning) và các đơn vị hành chính (Province, District, Ward).

4. Giải pháp bảo mật và kiểm soát truy cập của hệ thống được xây dựng bằng công nghệ gì?
Hệ thống áp dụng chuẩn mã thông báo JSON Web Token (JWT) kết hợp với Spring Security phía Back-end. Dữ liệu nhạy cảm được mã hóa, phân quyền thực hiện độc lập tại các API RESTful, đồng thời hệ thống quản lý phiên đăng nhập và kích hoạt thông qua các bảng RefreshToken và MailConfrimToken.

5. Đối tác (Partner) quản lý giá homestay và lịch đặt phòng theo cơ chế nào?
Đối tác có thể chủ động điều chỉnh giá linh hoạt theo từng ngày khác nhau thông qua bảng PriceCustom, quản lý các danh mục phụ phí phát sinh (SurchargeOfAccom), kiểm soát tình trạng đặt phòng trong ngày (check-in/check-out) và theo dõi biểu đồ doanh thu theo tháng hoặc năm.

Kết luận

Đồ án tốt nghiệp "Xây dựng website OYO chuyên cung cấp dịch vụ đặt chỗ nghỉ trực tuyến" của sinh viên Nguyễn Đức Thành và Mai Bảo Huy đã hoàn thành đầy đủ các mục tiêu đề ra về mặt kỹ thuật và nghiệp vụ phần mềm. Hệ thống ứng dụng hiệu quả kiến trúc phân tầng kết hợp ReactJS, Spring Boot, MySQL và chuẩn xác thực JWT, mang lại trải nghiệm tiện lợi cho khách du lịch lẫn đối tác cho thuê. Đề tài cung cấp tài liệu chi tiết về thiết kế cơ sở dữ liệu quan hệ, quy trình nghiệp vụ đặt chỗ nghỉ và thuật toán gợi ý tương đồng, tạo tiền đề vững chắc cho việc tiếp tục mở rộng trên các nền tảng ứng dụng di động trong tương lai.