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

Bối cảnh thực tiễn và lý do chọn đề tài

Sách lưu trữ các giá trị văn hóa tinh thần, thông tin và tri thức của nhân loại. Theo ước tính từ Google được tác giả dẫn chứng, đến năm 2010 thế giới đã có xấp xỉ 130 triệu tựa sách khác nhau được xuất bản. Tuy nhiên, cùng với sự bùng nổ của các phương tiện giải trí kỹ thuật số và mạng xã hội, thói quen đọc sách có xu hướng suy giảm. Số liệu thống kê năm 2016 tại Việt Nam cho thấy tỷ lệ đọc sách còn thấp so với khu vực: 30% người dân đọc sách thường xuyên, 44% thỉnh thoảng đọc và 26% hoàn toàn không đọc sách.

Sự phát triển của thương mại điện tử (TMĐT) mở ra giải pháp phân phối sách trực tuyến, giúp người đọc tiếp cận nguồn sách thuận tiện hơn. Dù vậy, với khối lượng đầu sách khổng lồ, người mua gặp khó khăn trong việc tìm kiếm ấn phẩm phù hợp. Các nền tảng thương mại quốc tế (như Amazon, Chegg, Alibris, Waterstones) và trong nước (như Tiki, Fahasa, Adayroi, Bookbuy) đã ứng dụng các công cụ hỗ trợ tự động nhằm cá nhân hóa trải nghiệm người dùng. Xuất phát từ thực tế này, đề tài "Phát triển website bán sách kết hợp hệ thống hỗ trợ gợi ý (Recommendation System)" được thực hiện nhằm xây dựng giải pháp mua sắm và đọc sách điện tử trực tuyến tích hợp thuật toán gợi ý cá nhân hóa.

Mục tiêu và nhiệm vụ nghiên cứu

Nhiệm vụ của đồ án được phân chia thành hai hợp phần kỹ thuật chính:

  1. Xây dựng website bán sách (Thương mại điện tử):

    • Khảo sát mô hình hoạt động và quy trình nghiệp vụ của các website bán lẻ sách trực tuyến.
    • Thiết kế kiến trúc phân tầng và cơ sở dữ liệu quan hệ cho hệ thống.
    • Phát triển phân hệ người dùng (User): Đăng ký, đăng nhập (tích hợp xác thực qua Google, Facebook, khôi phục mật khẩu qua Gmail); tra cứu, tìm kiếm, lọc và sắp xếp sách; quản lý thông tin cá nhân; quản lý giỏ hàng, danh sách yêu thích (Wishlist); đánh giá, bình luận; đọc trước nội dung và đọc sách điện tử (EBook); theo dõi và hủy đơn hàng.
    • Phát triển phân hệ quản trị (Admin): Quản lý danh mục sách, quản lý đơn hàng, quản lý tài khoản người dùng, quản lý chương trình khuyến mãi, quản lý đơn nhập hàng và thống kê doanh thu.
    • Xây dựng cổng thanh toán tích hợp: Thanh toán khi nhận hàng (COD), thanh toán qua thẻ tín dụng và cổng thanh toán điện tử PayPal.
    • Tích hợp giao diện với hệ thống gợi ý thông qua giao thức API.
  2. Xây dựng hệ thống gợi ý (Recommendation System):

    • Nghiên cứu cơ sở lý thuyết về các kỹ thuật lọc cộng tác (Collaborative Filtering), gợi ý dựa trên nội dung (Content-based) và hệ thống lai (Hybrid).
    • Xây dựng mô hình tính toán độ tương đồng giữa các đặc tính của sách để xuất ra 5 cuốn sách liên quan nhất cho từng đầu sách cụ thể.
    • Xây dựng mô hình gợi ý dựa trên ma trận đánh giá (Rating) và ma trận tiện ích (Utility Matrix), sử dụng kỹ thuật phân rã ma trận (SVD - Singular Value Decomposition).
    • Xây dựng mô hình tổng quát tổng hợp các trọng số hành vi: danh sách yêu thích (Wishlist), số lần xem sách (Tracking), lịch sử đơn hàng đã mua và điểm đánh giá (Rating).
    • Thiết kế và triển khai RESTful API cung cấp dữ liệu gợi ý cho ứng dụng web.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Quy trình nghiệp vụ bán sách và cho thuê đọc sách điện tử trực tuyến; các giải thuật gợi ý sản phẩm cá nhân hóa.
  • Phạm vi công nghệ: Nền tảng backend sử dụng ASP.NET Core kết nối cơ sở dữ liệu MS SQL Server qua Entity Framework Core; giao diện người dùng frontend xây dựng trên thư viện ReactJS; mô hình gợi ý được xây dựng bằng ngôn ngữ Python; chuẩn giao tiếp giữa các thành phần qua RESTful API.
  • Phạm vi thời gian thực hiện: Từ ngày 24/02/2020 đến ngày 01/07/2020 tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.

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

Khung lý thuyết và công nghệ sử dụng

Đồ án áp dụng các cơ sở lý thuyết kỹ thuật phần mềm và khoa học dữ liệu sau:

Thành phần Công nghệ / Lý thuyết nền tảng Đặc tính kỹ thuật
Backend Framework ASP.NET Core (C#) Nền tảng mã nguồn mở, đa nền tảng (Cross-platform), tích hợp sẵn cơ chế Dependency Injection, tối ưu hóa xử lý HTTP Request, quản lý gói qua NuGet packages.
Data Access Entity Framework Core, MS SQL Server ORM (Object-Relational Mapping) ánh xạ đối tượng lập trình vào cơ sở dữ liệu quan hệ.
Frontend Library ReactJS (JavaScript) Xây dựng giao diện ứng dụng đơn trang (Single Page Application - SPA), sử dụng cú pháp JSX, cấu trúc dựa trên Component, cơ chế DOM ảo (Virtual DOM) và luồng dữ liệu một chiều (One-way data binding).
Kiến trúc giao tiếp RESTful API Chuẩn kiến trúc giao tiếp HTTP (GET, POST, PUT, DELETE), trao đổi dữ liệu định dạng JSON giữa Backend C#, Module gợi ý Python và Frontend ReactJS.
Hệ thống gợi ý Collaborative Filtering, Content-based, Hybrid Sử dụng mô hình ma trận đánh giá (Utility Matrix), kỹ thuật phân rã giá trị suy biến (SVD) và tính toán độ tương đồng cosine giữa các thuộc tính sách.

Phương pháp nghiên cứu

  • Phương pháp nghiên cứu lý thuyết: Thu thập và tổng hợp tài liệu học thuật về kiến trúc ứng dụng web đa tầng, cơ chế xác thực OAuth, và các thuật toán trong hệ thống gợi ý.
  • Phương pháp khảo sát hiện trạng: Khảo sát các website thương mại điện tử thực tế trong và ngoài nước (Tiki, Fahasa, Vinabook, Amazon...) để xây dựng danh sách yêu cầu chức năng và phi chức năng.
  • Phương pháp tham vấn chuyên gia: Tiếp thu hướng dẫn từ giảng viên và trao đổi chuyên môn để hiệu chỉnh mô hình dữ liệu.
  • Phương pháp phát triển phần mềm: Tiếp cận quy trình công nghệ phần mềm hướng đối tượng (OOAD) bao gồm các bước: Đặc tả yêu cầu Use Case $\rightarrow$ Thiết kế lược đồ thực thể quan hệ $\rightarrow$ Thiết kế lớp và lược đồ tuần tự $\rightarrow$ Hiện thực mã nguồn $\rightarrow$ Kiểm thử hộp đen qua các kịch bản thực thi.

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

Chương 1: Giới thiệu

Chương 1 trình bày tổng quan về nguồn gốc đề tài, các số liệu thực trạng về văn hóa đọc tại Việt Nam năm 2016, và vai trò của TMĐT trong việc phân phối tri thức. Tác giả xác định 6 mục tiêu cốt lõi cần đạt được, giới thiệu bộ công cụ thực hiện (ASP.NET Core, ReactJS, Python, MS SQL Server), phạm vi nghiên cứu công nghệ, phương pháp luận phát triển hệ thống và ý nghĩa thực tiễn của đề tài đối với trải nghiệm mua sắm trực tuyến.

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

Chương 2 phân tích chuyên sâu các công nghệ nền tảng:

  • ASP.NET Core: Phân tích đặc tính module hóa, kiến trúc hợp nhất Web UI và Web APIs, so sánh các phiên bản từ .NET Core 1.0 đến .NET Core 3.1.
  • ReactJS: Làm rõ cơ chế hoạt động của Virtual DOM trong việc đồng bộ hóa dữ liệu với Real DOM, nguyên lý phân tách Component, cú pháp JSX, luồng dữ liệu 1 chiều qua Props/State và tổng hợp tính năng các phiên bản React 16.x.
  • Recommendation System: Phân tích ba hướng tiếp cận chính:
    1. Lọc cộng tác (Collaborative Filtering): Phân tích hành vi tương đồng giữa các người dùng dựa trên vector đánh giá.
    2. Dựa trên nội dung (Content-based): Khai thác thuộc tính thực thể sách (thể loại, tác giả, mô tả) để tính độ tương đồng.
    3. Hệ thống lai (Hybrid): Kết hợp đa mô hình nhằm khắc phục hiện tượng dữ liệu thưa (sparsity) và vấn đề khởi đầu lạnh (cold start).
  • RESTful API: Định nghĩa nguyên lý kiến trúc REST, tài nguyên (Resource), phương thức HTTP và cấu trúc phản hồi dữ liệu JSON.

Chương 3: Khảo sát hiện trạng và xác định yêu cầu

Chương 3 tiến hành khảo sát giao diện, cấu trúc danh mục và quy trình thanh toán của Tiki.vn, Fahasa.com và Vinabook.com. Từ đó, tác giả phân loại 3 tác nhân tương tác (Actor) và xây dựng 26 Use Case chính:

Tác nhân (Actor) Số lượng Use Case Trách nhiệm và quyền hạn
Visitor (Khách vãng lai) 7 chức năng Xem danh sách/chi tiết sách, tìm kiếm, lọc, đọc thử sách, đổi ngôn ngữ, đổi màu giao diện, tương tác chatbot.
User (Người dùng đăng ký) 16 chức năng Đầy đủ quyền của Visitor, bổ sung: Đăng ký, đăng nhập, quên mật khẩu, cập nhật hồ sơ cá nhân, quản lý giỏ hàng, danh sách yêu thích, đánh giá, bình luận, đọc EBook, thanh toán (COD/Card/PayPal), quản lý đơn hàng.
Admin (Quản trị viên) 8 chức năng Đăng nhập/đăng xuất trang quản trị, quản trị sách, quản trị người dùng, quản trị đơn hàng, quản trị khuyến mãi, quản trị nhập hàng, thống kê báo cáo.

Chương 4: Thiết kế phần mềm

Chương 4 là phần trọng tâm về thiết kế kỹ thuật, bao gồm:

  • Thiết kế cơ sở dữ liệu: Xây dựng lược đồ quan hệ gồm 34 bảng (Account, Author, Book, BookCategory, BookNumber, BookViewTracking, Cart, CartBook, Category, Comment, CouponCode, EBook, EBookPayment, EBookRentalPolicy, FacebookAccount, Form, FormBook, ImageBook, ImportReceipt, Order, OrderDetail, Promotion, PromotionDetail, Publisher, PublisherBook, Rating, SearchHistory, SubCategory, SubscriptionEmail, Supplier, SupplierBook, User, UserEBook, WishList).
  • Thiết kế kiến trúc hệ thống: Mô hình 3 tầng phân tách rõ ràng (Tầng giao diện ReactJS, Tầng điều khiển Control, Tầng xử lý nghiệp vụ Logic).
  • Thiết kế giao diện và tuần tự: Đặc tả 57 thành phần giao diện mẫu và xây dựng 43 sơ đồ tuần tự (Sequence Diagram) chi tiết cho các luồng xử lý (xác thực bên thứ ba, đặt hàng, xử lý thanh toán trực tuyến, thuật toán gợi ý...).
  • Thiết kế mô hình gợi ý: Thiết lập cơ chế gợi ý lai: tính toán độ tương đồng nội dung để xuất 5 cuốn sách liên quan; tính ma trận Utility Matrix kết hợp các biến theo dõi lượt xem (BookViewTracking), danh sách mong muốn (WishList), lịch sử giao dịch và điểm đánh giá.

Chương 5: Cài đặt và kiểm thử

Chương 5 mô tả môi trường cài đặt phần mềm và thực hiện kiểm thử chức năng. Tác giả xây dựng các bộ dữ liệu kiểm thử (Test Cases) chi tiết cho 5 phân hệ cốt lõi: Đăng nhập, Đăng ký, Đổi mật khẩu, Thanh toán đơn hàng và Quên mật khẩu.

Chương 6: Kết luận

Chương 6 tổng kết kế hoạch thực hiện, đánh giá khối lượng công việc đã hoàn thành, nhận định các hạn chế kỹ thuật trong quá trình xây dựng đồ án và đề xuất các hướng mở rộng trong tương lai.


Thiết kế và triển khai

Kiến trúc phân tầng và cơ sở dữ liệu

Hệ thống được tổ chức theo mô hình kiến trúc đa tầng nhằm đảm bảo tính độc lập và khả năng bảo trì:

  1. Tầng biểu diễn (Presentation Layer): Triển khai bằng ReactJS, quản lý trạng thái ứng dụng theo kiến trúc Component, xử lý chuyển trang mượt mà không cần tải lại toàn bộ trang (Single Page Application).
  2. Tầng điều khiển (Control Layer - Web API): Xây dựng trên ASP.NET Core, chịu trách nhiệm tiếp nhận HTTP Request, xác thực quyền truy cập, định tuyến và chuyển tiếp dữ liệu đến tầng nghiệp vụ.
  3. Tầng xử lý nghiệp vụ và truy xuất dữ liệu (Logic & Data Layer): Chứa các quy tắc nghiệp vụ xử lý giao dịch, kiểm tra số lượng tồn kho, tính toán mã giảm giá và giao tiếp với MS SQL Server thông qua Entity Framework Core.

Cơ sở dữ liệu của đồ án gồm 34 bảng quan hệ, quản lý toàn diện các đối tượng: thông tin sách, tác giả, nhà xuất bản, sách điện tử (EBook), chính sách thuê đọc (EBookRentalPolicy), đơn hàng và chi tiết đơn hàng, giỏ hàng, đánh giá, bình luận và dữ liệu phục vụ gợi ý.

Thuật toán và mô hình hệ thống gợi ý

Mô hình gợi ý được hiện thực bằng Python thông qua hai hướng xử lý song song:

Kịch bản kiểm thử hệ thống

Nhóm tác giả đã tiến hành kiểm thử chức năng (Functional Testing) bằng phương pháp hộp đen trên các module trọng yếu, ghi nhận kết quả đạt chuẩn cho các trường hợp:

Phân hệ kiểm thử Kịch bản kiểm thử chính (Test Cases) Kết quả ghi nhận
Đăng nhập Kiểm tra đăng nhập với tài khoản đúng/sai, tài khoản bị khóa, đăng nhập qua Google OAuth và Facebook Graph API. Hệ thống phản hồi đúng thông báo lỗi hoặc chuyển hướng chính xác.
Đăng ký & Quên mật khẩu Kiểm tra hợp lệ định dạng email, mật khẩu trùng khớp, sinh mã token khôi phục và gửi email xác nhận qua Gmail SMTP. Khôi phục mật khẩu thành công, cập nhật mật khẩu mới vào cơ sở dữ liệu.
Giỏ hàng & Đơn hàng Thêm, sửa số lượng, xóa sách khỏi giỏ hàng; áp dụng mã Coupon; tính toán phí giao hàng và tổng tiền. Dữ liệu cập nhật chính xác giữa giỏ hàng tạm thời và cơ sở dữ liệu.
Thanh toán Thực hiện thanh toán với 3 phương thức: COD, thẻ tín dụng nội địa và cổng thanh toán quốc tế PayPal Sandbox. Lưu trạng thái đơn hàng tương ứng ("Đang xử lý", "Đã thanh toán"), trừ tồn kho chính xác.

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

Kết quả đạt được

Đồ án đã xây dựng hoàn chỉnh một nền tảng thương mại điện tử phục vụ mua sắm sách giấy và đọc/thuê sách điện tử trực tuyến với các kết quả cụ thể:

  • Hoàn thành đầy đủ 26 Use Case chức năng cho 3 nhóm tác nhân (Visitor, User, Admin).
  • Thiết kế và triển khai cơ sở dữ liệu quan hệ gồm 34 bảng đảm bảo tính toàn vẹn dữ liệu.
  • Tích hợp 3 hình thức thanh toán đa dạng: COD, thẻ tín dụng và cổng PayPal.
  • Xây dựng thành công các module mở rộng: Chatbot hỗ trợ giải đáp trực tuyến, tính năng thay đổi ngôn ngữ giao diện và tùy biến màu nền.
  • Tích hợp mô hình Recommendation System trên Python, trả về danh sách 5 tựa sách liên quan theo độ tương đồng và khối sách gợi ý cá nhân hóa dựa trên dữ liệu tổng hợp (xem, yêu thích, mua, đánh giá).

Đóng góp thực tiễn và học thuật

  • Về mặt kỹ thuật: Minh chứng tính khả thi của việc tích hợp kiến trúc phân tán giữa backend ASP.NET Core, frontend ReactJS và module trí tuệ nhân tạo Python thông qua chuẩn giao thức RESTful API.
  • Về mặt ứng dụng: Cung cấp giải pháp kết hợp giữa mô hình bán lẻ sách vật lý truyền thống và dịch vụ thuê đọc sách điện tử (EBook) trên cùng một nền tảng, góp phần tối ưu chi phí tiếp cận tri thức cho người đọc.

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

Hạn chế của đồ án

  • Thời gian nghiên cứu và thực hiện đề tài giới hạn trong 3 tháng (từ 24/02/2020 đến 01/07/2020), do đó việc tối ưu hóa hiệu năng tính toán của thuật toán gợi ý với tập dữ liệu cực lớn chưa được khảo sát chuyên sâu.
  • Mô hình gợi ý chủ yếu dựa trên tập dữ liệu mô phỏng và tương tác thử nghiệm, chưa được huấn luyện trên luồng dữ liệu thời gian thực quy mô lớn (Big Data).
  • Giao diện người dùng trên thiết bị di động mới dừng lại ở mức responsive trên web, chưa xây dựng ứng dụng di động (Mobile App) độc lập.

Hướng phát triển trong tương lai

  • Nâng cấp thuật toán gợi ý bằng các kỹ thuật Deep Learning (như Autoencoder, Neural Collaborative Filtering) để tăng độ chính xác của đề xuất.
  • Xây dựng ứng dụng di động đa nền tảng (React Native hoặc Flutter) đồng bộ với hệ thống backend hiện tại.
  • Mở rộng tính năng mạng xã hội đọc sách: tạo nhóm đọc sách, chia sẻ trích dẫn, viết bài đánh giá chuyên sâu.
  • Tối ưu hóa phân hệ quản trị kho hàng và tự động hóa quy trình nhập sách từ nhà cung cấp.

Giá trị tham khảo

Đồ án là tài liệu tham khảo cho sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và Hệ thống Thông tin:

  • Tham khảo thiết kế cơ sở dữ liệu: Cung cấp tài liệu chi tiết về 34 bảng quan hệ trong lĩnh vực thương mại điện tử và dịch vụ số hóa nội dung (EBook).
  • Tham khảo kiến trúc hệ thống: Cung cấp mẫu thiết kế kết nối đa công nghệ (ASP.NET Core RESTful API + ReactJS SPA + Python AI Engine).
  • Tham khảo sơ đồ phân tích thiết kế: Cung cấp hệ thống 43 sơ đồ tuần tự (Sequence Diagram) chuẩn mực mô tả các luồng nghiệp vụ xác thực, đặt hàng, xử lý thanh toán và tương tác AI.

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

Hệ thống sử dụng những công nghệ chính nào để xây dựng các tầng kiến trúc?

Website sử dụng ASP.NET Core (C#) kết hợp Entity Framework Core và MS SQL Server cho tầng Backend; ReactJS cho tầng Frontend; Python để lập trình mô hình gợi ý (Recommendation System); và RESTful API định dạng JSON làm cầu nối liên lạc giữa các thành phần.

Thuật toán gợi ý sách trong đồ án hoạt động dựa trên các nguyên lý nào?

Hệ thống sử dụng kỹ thuật gợi ý lai:

  1. Gợi ý dựa trên nội dung (Content-based) tính toán độ tương đồng giữa các thuộc tính sách (thể loại, tác giả, nhà xuất bản) để đề xuất 5 cuốn sách liên quan nhất.
  2. Gợi ý cá nhân hóa dựa trên ma trận đánh giá (Rating) kết hợp kỹ thuật phân rã ma trận SVD và tổng hợp các trọng số hành vi: lượt xem (BookViewTracking), danh sách yêu thích (WishList) và lịch sử mua hàng.

Cơ sở dữ liệu của hệ thống gồm bao nhiêu bảng và quản lý những thực thể nào?

Cơ sở dữ liệu gồm 34 bảng quan hệ, bao quát toàn bộ các thực thể về sách, tác giả, nhà xuất bản, chính sách đọc EBook, tài khoản, giỏ hàng, đơn hàng, chi tiết đơn hàng, khuyến mãi, đánh giá, bình luận, lịch sử tìm kiếm và dữ liệu theo dõi hành vi người dùng.

Hệ thống hỗ trợ những phương thức thanh toán nào?

Đồ án tích hợp 3 hình thức thanh toán:

  1. Thanh toán khi nhận hàng (COD - Cash On Delivery).
  2. Thanh toán qua thẻ tín dụng (Credit Card).
  3. Thanh toán trực tuyến qua cổng ví điện tử quốc tế PayPal.

Người dùng chưa có tài khoản (Visitor) được phép thực hiện những thao tác nào trên website?

Khách vãng lai (Visitor) có thể thực hiện 7 chức năng: xem danh sách và thông tin chi tiết sách, tìm kiếm sách theo từ khóa, lọc sách theo danh mục, đọc thử nội dung sách, thay đổi ngôn ngữ giao diện, tùy biến màu nền và trò chuyện với chatbot tự động.


Kết luận

Đồ án tốt nghiệp "Phát triển website bán sách kết hợp hệ thống hỗ trợ gợi ý" của sinh viên Nguyễn Trần Trung Kiên và Đặng Thanh Thế đã giải quyết trọn vẹn bài toán xây dựng nền tảng thương mại điện tử kết hợp thuật toán đề xuất thông minh. Hệ thống được thiết kế bài bản theo mô hình phân tầng, kết nối hiệu quả giữa ASP.NET Core, ReactJS và module phân tích dữ liệu Python. Đây là tài liệu học thuật có giá trị tham khảo cao về cả phương diện phân tích thiết kế phần mềm lẫn triển khai ứng dụng thực tế trong lĩnh vực công nghệ thông tin.