1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn tốt nghiệp Khoa học máy tính: Ứng dụng phân hệ gợi ý vào hệ thống thương mại điện tử

158 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ứng dụng phân hệ gợi ý vào hệ thống thương mại điện tử
Tác giả Nguyễn Bửu Thịnh
Người hướng dẫn TS. Phan Trọng Nhân, ThS. Nguyễn Đình Thành
Trường học Đại học Quốc gia TP.HCM
Chuyên ngành Khoa học máy tính
Thể loại Luận văn tốt nghiệp
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 158
Dung lượng 22,38 MB

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI (16)
    • 1.1. Tổng quan đề tài (16)
    • 1.2. Mục tiêu và phạm vi đề tài (16)
    • 1.3. Nội dung của luận văn (17)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ (18)
    • 2.1. Cơ sở lý thuyết (18)
      • 2.1.1. Thương mại điện tử (18)
      • 2.1.2. Phân hệ gợi ý (19)
      • 2.1.3. Ứng dụng phân hệ gợi ý vào hệ thống thương mại điện tử (19)
      • 2.1.4. Một số website có tích hợp phân hệ gợi ý và cơ chế (20)
    • 2.2. Công nghệ sử dụng (21)
      • 2.2.1. Facebook Chatbot (21)
      • 2.2.2. Python, sklearn (23)
        • 2.2.2.1. Ngôn ngữ Python (23)
        • 2.2.2.2. Ứng dụng của Python (23)
      • 2.2.3. MySQL (24)
      • 2.2.4. HTML, Pug, CSS, Javascript, Bootstrap (25)
      • 2.2.5. NodeJS (27)
      • 2.2.6. ExpressJS (27)
      • 2.2.7. Paypal (28)
        • 2.2.7.1. Mô hình thanh toán Paypal (28)
        • 2.2.7.2. Paypal IPN (29)
  • CHƯƠNG 3: PHÂN TÍCH YÊU CẦU (30)
    • 3.1. Công nghệ sử dụng (30)
      • 3.1.1. Yêu cầu phi chức năng (30)
      • 3.1.2. Yêu cầu chức năng (30)
        • 3.1.2.1. Tổng quát (30)
        • 3.1.2.2. Yêu cầu chức năng của quản trị viên (30)
        • 3.1.2.3. Yêu cầu chức năng của nhân viên (31)
        • 3.1.2.4. Yêu cầu chức năng của người dùng (31)
        • 3.1.2.5. Yêu cầu chức năng của người dùng với tư cách khách (32)
    • 3.2. Lược đồ Use-Case (32)
    • 3.3. Đặc tả Use-Case cho các chức năng chính (37)
    • 3.4. Phân tích các yêu cầu chính (43)
    • 3.5. Phân tích các yêu cầu khác (44)
  • CHƯƠNG 4: THIẾT KẾ HỆ THỐNG VÀ THUẬT TOÁN (45)
    • 4.1. Kiến trúc hệ thống (45)
    • 4.2. Thiết kế cơ sở dữ liệu (46)
      • 4.2.1. Mô hình thực thể liên kết – EERD (46)
      • 4.2.2. Ánh xạ sang mô hình dữ liệu quan hệ (51)
    • 4.3. Các thuật toán học máy (machine learning) và phân hệ gợi ý (recommendation system) (54)
      • 4.3.1. Giải thuật lọc cộng tác (Neighborhood-based Collaborative Filtering) (54)
        • 4.3.1.1. Ý tưởng (54)
        • 4.3.1.2. Các bước thực hiện (55)
      • 4.3.2. Giải thuật lọc dựa trên nội dung (Content-based Recommendation System) (58)
        • 4.3.2.1. Ý tưởng (58)
        • 4.3.2.2. Các bước thực hiện (59)
        • 4.3.2.3. Đặc điểm mô hình (59)
      • 4.3.3. Giải thuật K-nearest Neighbors(KNN) (60)
    • 4.4. Thiết kế lớp đối tượng (60)
    • 4.5. Chức năng gợi ý sản phẩm(viết bằng Python) (62)
  • CHƯƠNG 5: HIỆN THỰC HỆ THỐNG (63)
    • 5.1. Công nghệ sử dụng (63)
    • 5.2. Xây dựng website (63)
      • 5.2.1. Trang chủ khi người dùng chưa đăng nhập (63)
      • 5.2.2. Trang chủ khi người dùng đã đăng nhập (64)
      • 5.2.3. Chatbot và thanh toán trên chatbot (66)
      • 5.2.4. Xem chi tiết sản phẩm (68)
      • 5.2.5. Đặt hàng trên hệ thống, thanh toán tiền mặt, paypal (69)
      • 5.2.6. Một số phần chính của trang quản trị viên (74)
      • 5.2.7. Quản trị viên xem danh sách đơn hàng (79)
      • 5.2.8. Nhân viên xác nhận đơn hàng (80)
      • 5.2.9. Hiển thị danh sách các sản phẩm gợi ý được người dùng xem, thêm vào giỏ hàng, mua nhiều nhất (82)
  • CHƯƠNG 6: KIỂM THỬ PHẦN MỀM (86)
    • 6.1. Chức năng gợi ý sản phẩm của phân hệ gợi ý hoặc sản phẩm phổ biến 82 6.2. Chức năng thêm sản phẩm vào giỏ hàng, đặt hàng và thanh toán trên (86)
    • 6.3. Chức năng tìm kiếm và đặt hàng trên chatbot (96)
    • 6.4. Kiểm thử kịch bản của chatbot (98)
    • 6.5. Kiểm thử tính năng đặt hàng trên chatbot (99)
  • CHƯƠNG 7: ĐÁNH GIÁ HỆ THỐNG VÀ PERFORMANCE (102)
    • 7.1. Đánh giá hiệu quả của phân hệ gợi ý (102)
    • 7.2. Đánh giá performance (103)
      • 7.2.1. Đánh giá trang chủ của website khi người dùng chưa đăng nhập (104)
      • 7.2.2. Đánh giá trang danh sách từng loại sản phẩm (107)
      • 7.2.3. Đánh giá performnace cho trang chủ khi người dùng đăng nhập vào tài khoản cá nhân (109)
      • 7.2.4. Đánh giá performance khi nhiều người dùng cùng tìm kiếm sản phẩm theo từ khoá (112)
      • 7.2.5. Đánh giá performance khi nhiều người dùng truy cập vào trang xem chi tiết sản phẩm (114)
  • CHƯƠNG 8: TỔNG KẾT (117)
    • 8.1. Những điều đã thực hiện được (117)
      • 8.1.1. Về nghiệp vụ (117)
      • 8.1.2. Về công nghệ (117)
    • 8.2. Đánh giá hệ thống (117)
      • 8.2.1. Ưu điểm (117)
      • 8.2.2. Những hạn chế chưa thực hiện được (117)
    • 8.3. Hướng phát triển tương lai (118)
  • PHỤ LỤC (17)

Nội dung

GIỚI THIỆU ĐỀ TÀI

Tổng quan đề tài

Hiện nay, với sự phát triển lớn mạnh của công nghệ thông tin, hàng loạt các sản phẩm công nghệ, xu hướng mới ra đời nhằm đáp ứng và phục vụ tốt hơn cho nhu cầu của người dùng Công nghệ thông tin ngày càng phát triển đã hỗ trợ rất nhiều cho người dùng trong mọi lĩnh vực

Việc ứng dụng công nghệ thông tin vào các lĩnh vực giúp tạo ra những sản phẩm công nghệ hiện đại, phục vụ tốt cho đời sống con người hiện nay

Một trong những ứng dụng lớn của công nghệ thông tin là xây dựng ra các website thương mại điện tử để hỗ trợ người dùng mua hàng cũng như tìm ra các sản phẩm phù hợp với nhu cầu của người dùng thay vì phải ra trực tiếp cửa hàng trải nghiệm và mua trực tiếp sản phẩm như trước đây Để phục vụ tốt hơn nữa trong việc đưa ra các sản phẩm phù hợp nhất đến tay người tiêu dùng, các website thương mại điện tử cần có những thuật toán phù hợp có khả năng tính toán và chọn ra các sản phẩm phù hợp nhất với người dùng dựa trên các tiêu chí cụ thể nào đó và gợi ý ra những sản phẩm đó cho người dùng Những thuật toán này được gọi là phân hệ gợi ý hay hệ gợi ý (recommendation system)

Việc ứng dụng phân hệ gợi ý vào hệ thống thương mại điện tử là xây dựng lên một website có tích hợp phân hệ gợi ý để gợi ý ra các sản phẩm phù hợp nhất tới tay người tiêu dùng cũng như giúp người kinh doanh có thể gợi ý ra các sản phẩm phù hợp nhất cho người dùng.

Mục tiêu và phạm vi đề tài

Mục tiêu của đề tài là xây dựng một website thương mại điện tử có tích hợp phân hệ gợi ý để đề xuất ra các sản phẩm phù hợp với nhu cầu mua sắm của người dùng Để phục vụ cho việc xây dựng một website thương mại điện tử có tích hợp phân hệ gợi ý, ta sẽ tập trung nghiên cứu và phân tích nghiệp vụ rồi đề ra một mô hình website kinh doanh các sản phẩm công nghệ có tích hợp phân hệ gợi ý vào website

Phạm vi của đề tài là ứng dụng phân hệ gợi ý vào hệ thống thương mại điện tử, hướng tới mục tiêu tạo ra một website có khả năng gợi ý sản phẩm phù hợp nhất tới tay người tiêu dùng cũng như giúp người dùng trải nghiệm quá trình mua hàng online, giúp gợi ý sản phẩm tốt nhất tới tay người tiêu dùng Đồng thời xây dựng một con chatbot có khả năng trả lời tin nhắn tự động cho người dùng khi người dùng đặt câu hỏi, chatbot có khả năng gợi ý các sản phẩm liên quan dựa trên tin nhắn tìm kiếm sản phẩm của người dùng, đồng thời chatbot cũng được xây dựng cho phép người dùng có thể đặt mua sản phẩm thông qua con chatbot thay vì thêm sản phẩm vào giỏ hàng trên website.

Nội dung của luận văn

• Chương 1: Giới thiệu đề tài

• Chương 2: Cơ sở lý thuyết và công nghệ

• Chương 3: Phân tích yêu cầu

• Chương 4: Thiết kế hệ thống và các thuật toán

• Chương 5: Hiện thực hệ thống

• Chương 6: Kiểm thử phần mềm

• Chương 7: Đánh giá hệ thống và performance

• Danh mục tài liệu tham khảo

CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ

Cơ sở lý thuyết

Thương mại điện tử là hoạt động mua bán sản phẩm (hoặc dịch vụ) thông qua các hệ thống điện tử như Internet và các mạng máy tính Thương mại điện tử còn được gọi là E-commerce, nghĩa là Electronic Commerce

Hoạt động thương mại điện tử tại Việt Nam bắt đầu hình thành từ những năm đầu thập niên 2010, sau đó được pháp luật công nhận vào năm 2013 Sự công nhận này tạo nên nền tảng pháp lý vững chắc cho sự phát triển của thương mại điện tử tại Việt Nam.

Thương mại điện tử tận dụng nhiều công nghệ tiên tiến như chuyển tiền điện tử, quản lý chuỗi cung ứng, tiếp thị trực tuyến, giao dịch trực tuyến, trao đổi dữ liệu điện tử (EDI), hệ thống quản lý kho hàng và hệ thống thu thập dữ liệu tự động Những công nghệ này tạo nên nền tảng vững chắc cho các quy trình thương mại điện tử hiệu quả, bao gồm việc truyền tải tiền tệ, tối ưu hóa quản lý hàng tồn kho, tiếp cận khách hàng và xử lý giao dịch trực tuyến nhanh chóng và an toàn.

Thương mại điện tử hiện đại thường sử dụng mạng World Wide Web là một điểm ít nhất phải có trong chu trình giao dịch, mặc dù nó có thể bao gồm một phạm vi lớn hơn về mặt công nghệ như email, các thiết bị di động như là điện thoại

Có tất cả 9 hình thức giao dịch thương mại điện tử:

• Chính phủ với Chính phủ (G2G)

• Chính phủ với Doanh nghiệp (G2B)

• Chính phủ với Công dân (G2C)

• Doanh nghiệp với Chính phủ (B2G)

• Doanh nghiệp với Doanh nghiệp (B2B)

• Doanh nghiệp với Khách hàng (B2C)

• Khách hàng với Chính phủ (C2G)

• Khách hàng với Khách hàng (C2C)

• Khách hàng với Doanh nghiệp (C2B)

Trong đó có 4 hình thức chúng ta thường nghe nhất là: B2C, B2B, C2C, C2B

Thương mại điện tử đã làm cho hoạt động thương mại của các doanh nghiệp vượt ra khỏi phạm vi quốc gia và trở thành hoạt động mang tính chất toàn cầu

Trước đây, lúc chưa có sự phát triển của thương mại điện tử, khi người dùng muốn mua một món hàng nào đó thì phải đến trực tiếp cửa hàng để xem, trải nghiệm và đặt hàng Điều này sẽ càng bất tiện khi người dùng muốn tìm mua các sản phẩm bên ngoài khu vực mà người dùng đang sinh sống thậm chí sản phẩm không được kinh doanh bên trong nước

Sự phát triển bùng nổ của thương mại điện tử giúp người dùng dễ dàng đặt mua sản phẩm từ những khu vực xa xôi, thậm chí là nước ngoài Chỉ với vài thao tác đơn giản trên thiết bị di động hoặc máy tính, người dùng có thể tương tác với các website thương mại điện tử để thực hiện giao dịch, mang đến sự tiện lợi và nhanh chóng trong quá trình mua sắm.

2.1.2 Phân hệ gợi ý Đối với thương mại điện tử, người mua và người bán không cần gặp gỡ trực tiếp, mà họ giao dịch với nhau trên trang web Vì vậy rất cần có một trợ lý bán hàng tự động có khả năng tư vấn, khuyến nghị cho người dùng các sản phẩm phù hợp Một trong những giải pháp để phục vụ cho nhu cầu này là tích hợp các phân hệ gợi ý vào website bán hàng của chúng ta Mục tiêu của phân hệ gợi ý là gợi ý các món hàng, sản phẩm liên quan nhất tới người dùng dựa vào các tiêu chí cụ thể nào đó

Phân hệ gợi ý (recommendation system) là kỹ thuật của trí tuệ nhân tạo, được nghiên cứu để cung cấp những gợi ý tự động tới người dùng hoặc khách hàng

Có 2 phương thức gợi ý chính, bao gồm:

• Gợi ý dựa trên dữ liệu về hành vi trong quá khứ của người dùng để hướng dẫn người dùng định vị được những sản phẩm mà họ thích, giúp người dùng có những quyết định tốt khi mua sắm online

- Gợi ý một danh sách các sản phẩm liên quan hoặc tương tự với một sản phẩm cụ thể để giúp người dùng lựa chọn được sản phẩm phù hợp nhất với nhu cầu của họ.

Ta có thể thấy rằng phân hệ gợi ý là một trong những công cụ được sử dụng rất phổ biến trên các website thương mại điện tử hiện nay Ví dụ:

• Khi ta xem một video clip nào đó trên YouTube, YouTube đã tự động gợi ý ra các video clip có liên quan đến video clip mà bạn đang xem YouTube còn tự gợi ý ra những clip có thể bạn sẽ thích

• Khi ta mua một món hàng nào đó trên Amazon, hệ thống sẽ tự động gợi ý ra những những sản phẩm khác thường được mua kèm với sản phẩm mà ta đã đặt mua, thậm chí hệ thống còn có thể biết ta thích món hàng nào dựa trên lịch sử mua hàng của chúng ta

• Facebook hiển thị quảng cáo những sản phẩm có liên quan đến từ khoá mà ta vừa tìm kiếm

• Facebook gợi ý kết bạn cho người dùng

• Netflix tự động gợi ý phim cho người dùng

2.1.3 Ứng dụng phân hệ gợi ý vào hệ thống thương mại điện tử Ứng dụng phân hệ gợi ý vào hệ thống thương mại điện tử là quá trình xây dựng một website thương mại điện tử, bán hàng có tích hợp phân hệ gợi ý để gợi ý ra các sản phẩm phù hợp với người dùng dựa trên những tiêu chí về sở thích cũng như là lịch sử tương tác của người dùng đối với website của chúng ta và những sản phẩm có liên quan, tương tự hay gần gũi đối với sản phẩm mà ta đang xem, nhằm đa dạng hoá việc gợi ý sản phẩm cho người dùng

Việc phát triển một hệ thống website thương mại điện tử đã giúp ích cho người dùng về nhiều mặt Thay vì phải tốn thời gian ra cửa hàng để mua và lựa chọn sản phẩm thì hiện nay, chỉ với vài thao tác trên máy tính và các thiết bị công nghệ là ta có thể xem thông tin các sản phẩm và lựa chọn đặt mua các sản phẩm cần thiết theo nhu cầu Hơn thế nữa, việc tích hợp phân hệ gợi ý vào trang thương mại điện tử lại còn giúp ích rất nhiều trong việc gợi ý sản phẩm phù hợp nhất tới tay người dùng cũng như tăng doanh thu của người khác Đối với thương mại truyền thống trước đây thì người bán thường dựa vào những sản phẩm phổ biến được người dùng ưa chuộng và trưng bày trên các gian hàng để người mua có thể dễ dàng tiếp cận những sản phẩm phổ biến Tuy nhiên điều này lại có một hạn chế là đối với nhiều người dùng khác nhau thì nhu cầu sử dụng khác nhau nên nhiều khi không gian trưng bày có hạn, khó có thể đưa ra những sản phẩm phù hợp đối với tất cả người dùng Có khi sản phẩm nào đó phù hợp với người dùng này nhưng không phù hợp với người dùng khác, điều này dẫn đến việc khó có thể gợi ý chính xác sản phẩm phù hợp nhất với nhu cầu của người dùng

Công nghệ sử dụng

Facebook, thành lập năm 2004, là một nền tảng truyền thông xã hội và mạng xã hội nổi tiếng Công ty có trụ sở tại Menlo Park, California, Hoa Kỳ và được sáng lập bởi Mark Zuckerberg cùng Eduardo Saverin, Andrew McCollum, Dustin Moskovitz và Chris Hughes, những sinh viên Đại học Harvard Facebook được xếp vào nhóm Big Four cùng với Amazon, Apple và Google, đại diện cho những công ty công nghệ hàng đầu toàn cầu.

Trong luận văn này, ta sẽ sử dụng chatbot messenger của facebook và nhúng plugin vào website thương mại điện tử của chúng ta và tích hợp các giải thuật của phân hệ gợi ý (recommendation system) và các giải thuật học máy(machine learning) khác vào để thực hiện trả lời câu hỏi của khách hàng khi khách hàng đặt câu hỏi trong chatbot

Khi một người gửi tin nhắn trên chatbot của facebook Máy chủ của facebook gửi webhook đến URL của máy chủ máy chủ doanh nghiệp, nơi lưu trữ ứng dụng nhắn tin Ứng dụng này có thể trả lời người đó trên messenger thông qua các API gửi Bằng cách này, ta có thể tạo dựng ra các cuộc trò chuyện một cách tự động giữa người dùng và chatbot khi người dùng gửi tin nhắn tới chatbot

Hình 2.1: Sơ đồ tương tác giữa người dùng với chatbot [1]

Mỗi lần một người bắt đầu một cuộc trò chuyện với chatbot của chúng ta Nền tảng messenger sẽ gán cho họ một ID người dùng trong trang, thường được gọi là PSID Mỗi một người sẽ có PSID khác nhau đối với mỗi bot messenger mà họ trò chuyện Điều này đảm bảo rằng chỉ những bot mà người dùng chọn bắt đầu cuộc trò chuyện mới có thể gửi tin nhắn cho họ

Mỗi khi chatbot phản hồi tin nhắn cho một ai đó, ta sẽ thêm PSID của họ vào thuộc tính recipient.id của yêu cầu để xác định ai sẽ nhận tin nhắn Tương tự, khi một người dùng thực hiện hành động cho một cuộc trò chuyện, chẳng hạn như nhấn vào một nút nào đó hoặc gửi tin nhắn, PSID của họ sẽ được thêm vào thuộc tính sender.id trên sự kiện webhook để chatbot của chúng ta có thể xác định được ai đã thực hiện hành động đó

Nền tảng messenger của facebook cung cấp các REST API hỗ trợ chúng ta xây dựng một chatbot có khả năng tương tác với người dùng một cách tự động và một số các tính năng khác trên messenger

Trong chatbot, chúng ta sử dụng các API của Facebook để tiếp nhận tin nhắn của người dùng Sau đó, thông qua thuật toán machine learning, chúng ta xác định loại tin nhắn (lời chào hay tìm kiếm sản phẩm) Dựa vào đó, chatbot sẽ trả lời phù hợp bằng cách hiển thị sản phẩm mà người dùng yêu cầu, cũng thông qua API của Facebook.

Trong chatbot của chúng ta, mỗi khi người gửi đặt câu hỏi liên quan đến tìm mua sản phẩm, ta sẽ gợi ý ra các sản phẩm kèm theo các nút bấm cho phép người dùng có thể đặt mua sản phẩm trên chatbot để thêm sản phẩm vào giỏ hàng, sau đó điền thông tin cá nhân để tiến hành đặt hàng hoặc chuyển sang trang đặt hàng để xác nhận đặt hàng trên chatbot Để xây dựng được chatbot trên website của chúng ta, trước tiên chúng ta cần cài đặt một ứng dụng facebook (facebook app) Ứng dụng facebook này là nơi mà liên kết trang facebook của chúng ta tới webhook, chúng ta sẽ cấu hình các cài đặt để sử dụng các công cụ trong chatbot messenger, sinh ra access token để tương tác với facebook messenger thông qua API và chọn ra các sự kiện gửi tới webhook

Bên cạnh đó chúng ta cần tạo ra một trang facebook Trang facebook này là nơi mà khi người dùng gửi tin nhắn tới chatbot, tin nhắn sẽ được nhận và phản hồi lại cho người dùng Chúng ta cũng cần phải có một webhook URL, đây là nơi để tiếp nhận các sự kiện, các hành động diễn ra trong cuộc trò chuyện với chatbot của chúng ta

Các bước thiết lập webhook:

• Thêm nền tàng messenger vào ứng dụng facebook

• Cấu hình webhook cho ứng dụng

Sau khi tạo trang Facebook, để nhận được các sự kiện webhook, bạn cần đăng ký ứng dụng Facebook cho trang đó Khi đăng ký thành công, chatbot messenger của bạn sẽ có thể nhận được các sự kiện khi người dùng nhắn tin đến.

Một khi thiết lập ứng dụng thành công, ta có thể bắt đầu xây dựng một chatbot để phản hồi tin nhắn của người dùng một cách tự động khi người dùng gửi tin nhắn đến

Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, thông dịch, mạnh mẽ, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991

Python là một ngôn ngữ lập trình mã nguồn mở, có cấu trúc dữ liệu cấp cao mạnh mẽ, hình thức cũng như cách tiếp cận đơn giản nhưng hiệu quả đối với đa số lập trình viên

Python là ngôn ngữ có cú pháp rõ ràng và linh hoạt, giúp việc viết kịch bản trở nên dễ dàng Đặc điểm này khiến Python trở thành lựa chọn lý tưởng để xây dựng ứng dụng đa nền tảng trong nhiều lĩnh vực khác nhau.

Python sử dụng các từ khoá tiếng Anh gần gũi với lập trình viên

Python có hỗ trợ lập trình hàm, lập trình hướng cấu trúc cũng như lập trình hướng đối tượng

Python có thể được sử dụng như là một ngôn ngữ kịch bạn hoặc có thể biên dịch sang byte-code để xây dựng các ứng dụng lớn hơn

Mọi thứ trong python đều là hướng đối tượng Lập trình hướng đối tượng giúp giải quyết các vấn đề phức tạp một cách trực quan, ta có thể chia những vấn đề phức tạp một cách nhỏ hơn bằng cách tạo ra các đối tượng

Các chương trình Python có khả năng di động cao giữa các nền tảng khác nhau, cho phép chạy liền mạch trên Windows, macOS và Linux Tính di động này giúp các chương trình Python có thể chuyển từ nền tảng này sang nền tảng khác mà không cần bất kỳ thay đổi nào.

Python có khả năng mở rộng và có thể nhúng Ta có thể dễ dàng kết hợp với các phần được viết bằng các ngôn ngữ khác như C, C++

Python có một số lượng lớn thư viện tiêu chuẩn giúp công việc lập trình trở nên dễ dàng, thuận tiện hơn

PHÂN TÍCH YÊU CẦU

Công nghệ sử dụng

3.1.1 Yêu cầu phi chức năng

Website có giao diện đẹp

Website cần chạy được trên nhiều nền tảng khác nhau Có thể responsive trên nhiều thiết bị khác nhau như điện thoại, máy tính bảng, desktop, …

Thiết kế sao cho thuận tiện, cấu trúc rõ ràng, dễ dàng phát triển hệ thống sau này Đầy đủ các chức năng cần thiết cho người dùng

Bảo mật thông tin người dùng Người dùng chỉ được truy cập đến những trang, phạm vi mà mình được cấp quyền

Website cần tích hợp phân hệ gợi ý để gợi ý sản phẩm cho người dùng

Website cần tích hợp chatbot để người dùng có thể trò chuyện, đặt mua hàng trên chatbot Chatbot cần tích hợp giải thuật học máy để phân biệt kiểu của tin nhắn người dùng gửi tới cũng như phân hệ gợi ý để gợi ý ra các sản phẩm khi người dùng hỏi mua hàng

Cho phép người dùng đặt hàng trên chatbot

Thanh toán đơn hàng thông qua công cụ thanh toán online Paypal

Chúng ta sẽ đặt ra các yêu cầu chức năng cho các người dùng khác nhau như: quản trị viên, có quyền quản lý hệ thống và người dùng khác; nhân viên, thực hiện các tác vụ cụ thể; người dùng, sử dụng hệ thống để thực hiện các công việc của mình; người dùng với tư cách khách, truy cập hệ thống mà không cần đăng nhập.

3.1.2.2 Yêu cầu chức năng của quản trị viên

Quản trị viên có quyền quản lý tất cả mọi thứ trên hệ thống Có quyền thực hiện các chức năng của nhân viên như đăng nhập vào tài khoản hệ thống để tương tác mua hàng trên trang chủ, xem sản phẩm, xác nhận đơn hàng của khách hàng, …

Các chức năng chính của quản trị viên:

• Đăng nhập: quản trị viên cần phải đăng nhập bằng email và password hợp lệ

• Thêm sản phẩm: quản trị viên là người tạo mới một sản phẩm trên trang web để người dùng có thể đặt mua, yêu cầu quản trị viên phải đăng nhập để thực hiện thêm sản phẩm

• Xem sản phẩm: quản trị viên là có quyền quản lý tất cả các sản phẩm mà mình đã thêm vào hệ thống, cần phải đăng nhập để thực hiện tác vụ này

• Chỉnh sửa sản phẩm: quản trị viên có thể điều chỉnh lại thông tin sản phẩm cho phù hợp và chính xác hơn

• Xem thông tin đơn hàng: quản trị viên có quyền quản lý, xem toàn bộ thông tin đơn hàng mà người dùng đã đặt mua trên trang quản trị viên

• Xem thông tin người dùng: quản lý thông tin người dùng thông qua trang quản trị viên, quản trị viên còn có quyền xoá thông tin người dùng đã đăng ký

Người quản trị có thể quản lý thông tin nhân viên thông qua trang quản trị Ngoài ra, người quản trị còn có quyền xóa thông tin tài khoản của nhân viên đã được đăng ký.

• Tạo tài khoản nhân viên: chỉ có quản trị viên mới có chức năng tạo tài khoản cho nhân viên

Ngoài ra quản trị viên còn có thể thực hiện các chức năng riêng dành cho nhân viên(tương tác trên trang nhân viên) cũng như người dùng thông thường và người dùng với tư cách khách(tương tác trên trang người dùng)

3.1.2.3 Yêu cầu chức năng của nhân viên Đăng nhập: nhân viên cần phải đăng nhập vào tài khoản nhân viên do admin tạo Nhân viên sẽ đăng nhập thông qua email và password do admin tạo và cấp cho

Xem thông tin đơn hàng: nhân viên có quyền kiểm tra thông tin đơn hàng mà khách hàng đặt hàng

Xác nhận thông tin sau khi giao hàng thành công, nhân viên sẽ thay đổi trạng thái đơn hàng thành trạng thái đã giao Tuy nhiên, nhân viên cũng có thẩm quyền hủy đơn hàng nếu khách hàng không còn nhu cầu mua hàng nữa.

Ngoài ra, nhân viên còn có thể thực hiện mọi chức năng của người dùng và người dùng khách

3.1.2.4 Yêu cầu chức năng của người dùng Đăng nhập: người dùng đăng nhập vào tài khoản do mình tạo ra thông qua việc nhập email và password

Xem chi tiết sản phẩm: nhấp vào nút xem chi tiết sản phẩm của sản phẩm mà họ muốn xem

Hệ thống gợi ý sản phẩm dựa trên lịch sử tương tác của từng người dùng Nói cách khác, hệ thống sẽ phân tích các hành vi của người dùng trên trang web, chẳng hạn như các sản phẩm đã xem, sản phẩm đã mua và thời gian dành cho từng sản phẩm Sau khi phân tích dữ liệu này, hệ thống sẽ gợi ý những sản phẩm phù hợp nhất với sở thích của từng người dùng.

Người dùng có thể thêm sản phẩm vào giỏ hàng trên trang danh sách sản phẩm hoặc trang chi tiết sản phẩm Để hoàn tất đơn hàng, người dùng cần đăng nhập bằng email và mật khẩu, từ đó hệ thống sẽ lấy thông tin cần thiết để xử lý đơn hàng Ngoài ra, người dùng còn có thể đặt hàng thông qua chatbot.

Quên mật khẩu cho phép người dùng dễ dàng lấy lại mật khẩu khi lỡ quên Hệ thống sẽ gửi một mã OTP tới email của người dùng, sau đó người dùng sử dụng mã OTP này để thiết lập lại mật khẩu mới Tính năng này đảm bảo tính bảo mật cho tài khoản người dùng, đồng thời giúp họ nhanh chóng lấy lại quyền truy cập mà không cần phải liên hệ với đội ngũ hỗ trợ.

Thanh toán đơn hàng khi đặt trên hệ thống: để thanh toán đơn hàng, yêu cầu người dùng phải đăng nhập để thực hiện thanh toán

3.1.2.5 Yêu cầu chức năng của người dùng với tư cách khách

Xem chi tiết sản phẩm: nhấp vào nút xem chi tiết sản phẩm của sản phẩm mà họ muốn xem

Người dùng có thể thêm sản phẩm vào giỏ hàng bằng cách sử dụng tùy chọn này trên trang danh sách sản phẩm hoặc trang chi tiết sản phẩm.

Lược đồ Use-Case

Trong hệ thống này, ta sẽ thiết kế website phục vụ cho 4 kiểu đối tượng người sử dụng chính bao gồm người dùng có đăng ký tài khoản(người dùng), người dùng với tư cách khách(khách), nhân viên, quản trị viên:

Lược đồ Use-Case tổng quát cho tất cả người truy cập vào website:

• Actor: Quản trị viên, nhân viên, người dùng, khách

• Trong đó: o Khách là những người dùng không đăng nhập vào hệ thống, những người dùng này sẽ có thể thao tác được với một số chức năng cụ thể, và bị giới hạn một vài chức năng so với các người dùng khác o Người dùng là những người đã đăng ký tài khoản thành viên và có thể trải nghiệm nhiều chức năng hơn so với những người dùng khách o Nhân viên là những người được cấp tài khoản dành cho nhân viên, những người dùng này có thể thực hiện được mọi chức năng của những người dùng thông thường và một số chức năng khác của nhân viên o Quản trị viên là người quản lý được mọi thông tin trên hệ thống, có đầy đủ mọi chức năng của những người sử dụng còn loại.

Hình 3.1: lược đồ Use-Case tổng quát cho tất cả các người dùng

Lược đồ Use-Case chi tiết cho người dùng khách:

Hình 3.2: lược đồ Use-Case chi tiết cho người xem với tư cách khách

Lược đồ Use-Case chi tiết cho người dùng:

Hình 3.3: lược đồ Use-Case chi tiết cho người dùng

Lược đồ use-case chi tiết cho nhân viên:

Hình 3.4: lược đồ Use-Case chi tiết cho nhân viên

Lược đồ use-case chi tiết cho quản trị viên:

Hình 3.5: lược đồ use-case chi tiết cho quản trị viên

Đặc tả Use-Case cho các chức năng chính

Trong phần này chúng ta sẽ đặc tả Use-Case cho một số chức năng quan trọng chính trên website, các chức năng khác sẽ được đặc tả ở phần phụ lục

• Chức năng gợi ý sản phẩm cho từng người dùng:

Name Gợi ý sản phẩm theo từng người dùng

Summary Hệ thống sẽ sử dụng phân hệ gợi ý dựa trên lịch sử tương tác của người dùng để đưa ra gợi ý riêng cho mỗi người dùng

Basic course of Event - Người dùng cần đăng nhập bằng email và password

- Hệ thống sẽ đưa ra những sản phẩm gợi ý khác nhau ứng với mỗi người dùng khác nhau

Exception paths Hệ thống không gợi ý ra được những sản phẩm gợi ý riêng cho người dùng

Nguyên nhân là do người dùng mới tạo tài khoản nên chưa có lịch sử tương tác nên không có cơ sở để gợi ý Preconditions Bắt buộc người dùng phải đăng nhập và trước đó phải tương tác với các sản phẩm của hệ thống Post conditions Hệ thống sẽ gợi ý ra những sản phẩm riêng biệt cho mỗi người dùng Business rules

Bảng đặc tả 3.1: gợi ý sản phẩm theo từng người dùng

• Chức năng gợi ý các sản phẩm liên quan, kèm theo 1 sản phẩm cụ thể nào đó:

Name Gợi ý sản phẩm kèm theo sản phẩm cụ thể nào đó

Summary Hệ thống sẽ sử dụng phân hệ gợi ý để gợi ý top 4 sản phẩm gần gũi nhất với sản phẩm đang xét

Basic course of Event - Người dùng truy cập vào trang chủ của hệ thống hoặc trang danh sách sản phẩm

- Nhấn vào nút xem chi tiết của bất kỳ sản phẩm nào

- Hệ thống sẽ hiển thị thông tin chi tiết sản phẩm và danh sách các sản phẩm liên quan ở gần cuối trang Exception paths Hệ thống bảo trì

Preconditions Người dùng truy cập vào một sản phẩm cụ thể nào đó

Post conditions Hệ thống sẽ gợi ý ra những sản phẩm liên quan ở gần cuối trang Business rules

Bảng đặc tả 3.2: gợi ý kèm theo với từng sản phẩm cụ thể

• Chức năng tìm kiếm sản phẩm dựa trên từ khoá trên thanh tìm kiếm:

Name Tìm kiếm sản phẩm dựa trên từ khoá

Khi người dùng nhập từ khóa tìm kiếm, hệ thống sẽ dựa vào phân hệ gợi ý để tìm ra các sản phẩm gần gũi nhất với từ khóa Sau đó, hệ thống sẽ trả về top 8 sản phẩm phù hợp nhất cho người dùng.

Basic course of Event - Người dùng truy cập vào trang chủ của hệ thống hoặc trang danh sách sản phẩm

- Nhập vào từ khoá của sản phẩm muốn tìm

- Hệ thống sẽ trả ra top 8 sản phẩm liên quan Exception paths Hệ thống bảo trì tạm thời

Preconditions Người dùng nhập vào từ khoá cần tìm kiếm trên thanh tìm kiếm Post conditions Hệ thống sẽ trả về những sản phẩm gần gũi nhất với từ khoá mà ta tìm kiếm Business rules

Bảng đặc tả 3.3: chức năng tìm kiếm sản phẩm trên thanh tìm kiếm

• Chức năng đặt hàng trên trang web hệ thống:

Summary Sau khi thêm sản phẩm vào giỏ hàng, ta sẽ tiến hành đặt hàng

Actors Người dùng, nhân viên

Basic course of Event - Truy cập vào trang chủ

- Nhấn vào nút giỏ hàng trên thanh tìm kiếm

- Nhấn vào nút đặt hàng trong popup danh sách đơn hàng

- Chuyển tới trang đặt hàng hoặc form đăng nhập để mua hàng(nếu chưa đăng nhập)

- Lựa chọn phương thức thanh toán

- Nhấn vào nút tiến hành đặt hàng Exception paths Không vào được trang đặt hàng

- Thông tin đăng nhập sai

- Hệ thống bảo trì tạm thời Preconditions Người dùng bắt buộc phải đăng nhập để có thể đặt hàng Post conditions Hiển thị thông báo đặt hàng thành công nếu thanh toán bằng tiền mặt hoặc chuyển tới trang thanh toán bằng paypal để người dùng đăng nhập và thanh toán

Bảng đặc tả 3.4: chức năng đặt hàng trên hệ thống

• Chức năng thanh toán bằng paypal:

Name Thanh toán bằng paypal

Summary Khi người dùng lựa chọn thanh toán bằng paypal, người dùng cần đăng nhập vào tài khoản paypal để tiến hành thanh toán

Actors Người dùng, nhân viên

Basic course of Event - Truy cập vào trang chủ

- Thêm sản phẩm vào giỏ hàng

- Nhấn nút giỏ hàng trên thanh tiêu đề

- Nhấn vào nút đặt hàng

- Hiển thị form đăng nhập để mua hàng(nếu chưa đăng nhập) hoặc trang thanh toán

- Chọn phương thức thanh toán bằng paypal

- Nhấn vào nút Tiến hành đặt hàng

- Đăng nhập vào paypal để tiến hành thanh toán

- Hiển thị trang đặt hàng và thanh toán thành công Exception paths Thanh toán không thành công

- Hệ thống bảo trì tạm thời

- Paypal tạm thời không hoạt động

- Chưa có tài khoản hệ thống hoặc paypal Preconditions Người dùng phải có tài khoản hệ thống và paypal

Post conditions Hiển thị thông báo đặt hàng thành công

Bảng đặc tả 3.5: chức năng thanh toán paypal

• Chức năng trò chuyện trên chatbot:

Name Trò chuyện với chatbot

Summary Hệ thống có tích hợp chatbot cho phép người dùng có thể trò chuyện cũng như tìm mua sản phẩm trên chatbot Actors Người dùng, khách, nhân viên, quản trị viên, …

Basic course of Event - Truy cập vào trang chủ

- Nhấn vào biểu tượng messenger chatbot ở góc trái bên dưới của trang web

- Nhấn vào nút Tiếp tục với vai trò khách trong popup chatbot để mở khung chat

- Nhập tin nhắn trò chuyện với chatbot

- Chatbot phản hồi tin nhắn mỗi khi ta gửi tin nhắn đến Exception paths Chatbot không phản hồi tin nhắn:

- Hệ thống bảo trì tạm thời

- Chatbot messenger bị lỗi bảo trì tạm thời Preconditions Bất kỳ người dùng nào cũng có thể trò chuyện với chatbot

Post conditions Chatbot sẽ trả về tin nhắn lời chào hoặc danh sách sản phẩm trả về tuỳ vào ngữ cảnh tin nhắn người dùng gửi tới Business rules

Bảng đặc tả 3.6: chức năng trò chuyện với chatbot

• Chức năng đặt hàng trên chatbot:

Name Đặt hàng trên chatbot

Khi tương tác với chatbot, nếu người dùng có nhu cầu mua sắm, chatbot sẽ cung cấp danh sách sản phẩm phù hợp và hỗ trợ người dùng trong quá trình đặt hàng, giúp trải nghiệm mua sắm trở nên thuận tiện và nhanh chóng cho người dùng.

Actors Người dùng, khách, nhân viên, quản trị viên, …

Basic course of Event - Truy cập vào trang chủ

- Nhấn vào biểu tượng messenger chatbot ở góc trái bên dưới của trang web

- Nhấn vào nút Tiếp tục với vai trò khách trong popup chatbot để mở khung chat

- Nhập tin nhắn tìm kiếm sản phẩm nào đó

- Hệ thống sẽ gửi lại danh sách các sản phẩm gần gũi nhất với từ khoá tin nhắn ta vừa gửi để ta lựa chọn và đặt hàng

- Sau khi tìm được sản phẩm phù hợp, nhấn vào nút Chọn mua sản phẩm để thêm vào giỏ hàng, ta có thể thêm nhiều sản phẩm khác nhau vào giỏ hàng

- Nhấn vào nút chuyển tới trang đặt hàng để tiến hành đặt hàng

- Ta có thể điều chỉnh số lượng sản phẩm trong chatbot

- Ta cần điền thông tin đặt hàng(tên, email, số điện thoại, địa chỉ) nếu chưa đăng nhập vào tài khoản hệ thống

- Nhấn vào nút tiến hành đặt hàng Exception paths Chatbot không phản hồi tin nhắn:

- Hệ thống bảo trì tạm thời

- Chatbot messenger bị lỗi bảo trì tạm thời Preconditions Bất kỳ người dùng nào cũng có thể đặt hàng trên chatbot mà không nhất thiết phải đăng nhập vào tài khoản hệ thống Post conditions Đơn hàng đã được khởi tạo thành công

Bảng đặc tả 3.7: chức năng đặt hàng trên chatbot

• Chức năng xem danh sách sản phẩm gợi ý được người dùng tương tác, ưa chuộng nhiều nhất:

Name Xem danh sách sản phẩm gợi ý

Summary Bất kỳ người dùng nào khi truy cập vào trang chủ đều có thể xem được danh sách loạt sản phẩm gợi ý này Actors Người dùng, khách, nhân viên, quản trị viên

Basic course of Event - Truy cập vào trang chủ

- Nhấn vào link My Thesis trên thanh tiêu đề

- Hệ thống hiển thị danh sách sản phẩm gợi ý cho người dùng

Exception paths Không vào được vào trang xem danh sách sản phẩm gợi ý

- Hệ thống bảo trì tạm thời Preconditions Bất kỳ người dùng nào cũng có thể truy cập và xem được danh sách sản phẩm gợi ý này Post conditions Hiển thị danh sách các sản phẩm gợi ý cho người dùng Business rules

Bảng đặc tả 3.8: chức năng xem danh sách gợi ý trên trang người dùng

• Chức năng xem thông tin thống kê dành cho quản trị viên:

Name Quản trị viên xem thống kê

Summary Quản trị viên sẽ truy cập vào trang quản trị viên để xem thông tin thống kê

Basic course of Event - Truy cập vào trang quản trị viên

- Hệ thống hiển thị form yêu cầu đăng nhập

- Nhân viên nhập email, mật khẩu

- Hệ thống xác thực thông tin và chuyển đến trang quản trị viên và hiển thị thông tin thống kê

Exception paths Không vào được vào trang quản trị viên:

- Hệ thống bảo trì tạm thời

- Không có quyền truy cập vào Preconditions Phải là quản trị viên mới được quyền truy cập

Post conditions Hiển thị thông tin thống kê ở trang quản trị viên

Bảng đặc tả 3.9: chức năng xem thông tin thống kê trên trang quản trị viên

• Chức năng thêm sản phẩm mới vào hệ thống:

Name Quản trị viên thêm sản phẩm mới

Summary Quản trị viên sẽ thêm sản phẩm mới vào hệ thống để kinh doanh

Basic course of Event - Truy cập vào trang quản trị viên

- Hệ thống hiển thị form yêu cầu đăng nhập

- Nhân viên nhập email, mật khẩu

- Hệ thống xác thực thông tin và chuyển đến trang quản trị viên và hiển thị thông tin thống kê

- Nhấp vào nút thêm sản phẩm ở trang quản trị viên

- Nhập thông tin sản phẩm mới vào

- Nhấn vào nút THÊM SẢN PHẨM MỚI

- Hiển thị thông báo thêm sản phẩm thành công Exception paths Không vào được vào trang quản trị viên:

- Hệ thống bảo trì tạm thời

- Không có quyền truy cập vào Không thêm được sản phẩm:

- Thông tin nhập vào không phù hợp Preconditions Phải là quản trị viên mới được thêm sản phẩm

Post conditions Hiển thị thông báo và sản phẩm mới đã được thêm vào Business rules

Bảng đặc tả 3.10: chức năng thêm mới sản phẩm của quản trị viên

• Chức năng xem chi tiết đơn hàng phía quản trị viên:

Name Quản trị viên xem chi tiết đơn hàng

Summary Quản trị viên có thể xem danh sách cũng như chi tiết đơn hàng trên trang quản trị viên

Basic course of Event - Truy cập vào trang quản trị viên

- Hệ thống hiển thị form yêu cầu đăng nhập

- Nhân viên nhập email, mật khẩu

- Hệ thống xác thực thông tin và chuyển đến trang quản trị viên và hiển thị thông tin thống kê

- Nhấp vào nút danh sách đơn hàng ở trang quản trị viên

- Nhấn vào icon chi tiết ở đơn hàng mà ta muốn xem chi tiết

- Hiển thị thông tin chi tiết đơn hàng Exception paths Không hiển thị được thông tin đơn hàng:

- Hệ thống bảo trì tạm thời

Preconditions Phải là quản trị viên mới được xem thông tin đơn hàng ở trang quản trị viên Post conditions Hiển thị thông tin chi tiết sản phẩm

Bảng đặc tả 3.11: chức năng xem chi tiết đơn hàng phía quản trị viên

Phân tích các yêu cầu chính

Yêu cầu cốt lõi của website là xây dựng hệ thống gợi ý sản phẩm dựa trên sản phẩm cụ thể mà người dùng quan tâm Để đáp ứng yêu cầu này, website cần tích hợp các phân hệ gợi ý nhằm đưa ra những sản phẩm phù hợp với nhu cầu của người dùng.

Mục đích của phân hệ gợi ý là để đưa ra những sản phẩm phù hợp nhất tới tay người tiêu dùng, giúp người tiêu dùng có thể tiếp cận được với sản phẩm mà họ đang quan tâm, tìm kiếm, từ đó giúp tăng doanh thu bán hàng

Có 2 loại phân hệ gợi ý chính được tích hợp trong website này là phân hệ gợi ý đối với từng người dùng khác nhau và phân hệ gợi ý theo từng sản phẩm cụ thể nào đó Đối với phân hệ gợi ý cho từng người dùng khác nhau, hệ thống sẽ dựa trên lịch sử tương tác của người dùng với các sản phẩm của hệ thống và so sánh với lịch sử tương tác của những người dùng khác đã tương tác với hệ thống sau đó xem xét được mức độ tương quan về sở thích đối với từng người dùng khác nhau, từ đó đưa ra những gợi ý riêng biệt, phù hợp nhất cho mỗi người dùng Mỗi người dùng khác nhau sẽ được gợi ý những món hàng khác nhau Đối với phân hệ gợi ý theo từng sản phẩm cụ thể nào đó, hệ thống sẽ dựa trên thông tin của sản phẩm đó(thông tin về cấu hình, mô tả sản phẩm, hãng, …) và so sánh thông tin sản phẩm đó với các sản phẩm khác rồi từ đó chọn ra top các sản phẩm gần gũi nhất với sản phẩm mà ta đang xét và từ đó gợi ý ra sản phẩm kèm theo sản phẩm cụ thể nào đó cho người dùng

Bên cạnh đó, website còn phải tích hợp chatbot có khả năng trò chuyện với người dùng khi người dùng đặt câu hỏi Chính năng quan trọng chính cần có trong chatbot là chatbot cần phải tích hợp phân hệ gợi ý có khả năng gợi ý sản phẩm cho người tiêu dùng

Ta sẽ phải tạo ra con chatbot có khả năng phân biệt được 2 ngữ cảnh của tin nhắn mà người dùng gửi tới: lời chào và tin nhắn hỏi mua hàng

• Với tin nhắn gửi tới là lời chào, chatbot sẽ trả về cho người dùng là một tin nhắn lời chào

Khi người dùng gửi tin nhắn hỏi mua hàng, hệ thống sẽ phân tích từ khóa trong tin nhắn để xác định nhóm sản phẩm có liên quan Sau đó, hệ thống sẽ đưa ra danh sách các sản phẩm cụ thể liên quan đến từ khóa tìm kiếm để người dùng dễ dàng lựa chọn và tìm được sản phẩm mình cần.

Hơn thế nữa, chatbot cần thiết kế sao cho có khả năng hỗ trợ người dùng đặt hàng mà không cần phải tương tác trực tiếp trên hệ thống Đối với chức năng đặt hàng trong chatbot này, người dùng không nhất thiết phải đăng nhập vào hệ thống để có thể đặt mua hàng, nếu trước đó người dùng đã đăng nhập vào hệ thống thì hệ thống sẽ lấy thông tin cá nhân trong tài khoản người dùng để làm thông tin đặt hàng, người dùng vẫn có thể thay đổi thông tin này bằng cách nhập lại thông tin cá nhân trên các trường Nếu người dùng chưa đăng nhập vào tài khoản người dùng thì các trường thông tin cá nhân sẽ được để trống, để có thể đặt hàng, người dùng cần phải nhập thông tin vào các trường thông tin này

Bên cạnh đó, website cần tích hợp tính năng thanh toán online khi người dùng đặt hàng và chọn phương thức thanh toán paypal Để có thể thanh toán bằng paypal, người dùng cần phải có tài khoản paypal Mỗi khi người dùng đặt hàng trên hệ thống và thanh toán bằng paypal, hệ thống sẽ chuyển tới trang đăng nhập vào paypal để người dùng thanh toán đơn hàng, khi người dùng thanh toán thành công, sẽ hiển thị trang thanh toán đơn hàng thành công.

Phân tích các yêu cầu khác

Để đảm bảo tính bảo mật, hệ thống cần thiết lập phân quyền chặt chẽ Theo đó, người dùng chỉ được phép thực hiện các thao tác trong phạm vi chức năng được cấp quyền Ví dụ, chỉ quản trị viên mới có quyền tạo tài khoản nhân viên, còn việc hủy hoặc xác nhận đơn hàng chỉ được giao cho nhân viên hoặc quản trị viên thực hiện.

Giao diện tương tác cần rõ ràng, nhất quán Ví dụ: khi người dùng đặt mua hàng, thông tin sản phẩm rõ ràng, phù hợp, …

THIẾT KẾ HỆ THỐNG VÀ THUẬT TOÁN

Kiến trúc hệ thống

Hình 4.1: kiến trúc mô hình của hệ thống

Hình 4.1 là mô hình kiến trúc tổng hợp của hệ thống, hệ thống được thiết kế hoạt động theo mô hình MVC (Model – View – Controller)

Mô hình MVC là một mô hình thiết kế được sử dụng trong kỹ thuật phần mềm

Nó đóng vai trò quan trong trong quá trình xây dựng, phát triển, vận hành, bảo trì một hệ thống hay một ứng dụng phần mềm Mô hình MVC là một mô hình gồm 3 lớp: Model (dữ liệu), View (giao diện) và Controller (bộ điều khiển), mỗi lớp sẽ thực hiện những nhiệm vụ riêng và độc lập với những lớp khác

• Model là nơi chứa tất cả các nghiệp vụ tương tác với dữ liệu hoặc hệ quản trị cơ sở dữ liệu Nó bao gồm các class hoặc các hàm xử lý nhiều nghiệp vụ như kết nối database, truy vấn dữ liệu, thêm, xoá, sửa dữ liệu, …

• View sẽ đảm nhận nhiệm vụ hiển thị dữ liệu, giúp người dùng tương tác với hệ thống View là nơi chứa tất cả các file HTML, các form, image, …

• Controller là nơi tiếp nhận và điều hướng những yêu cầu từ phía người dùng, bao gồm các class hoặc các hàm xử lý yêu cầu giúp lấy đúng dữ liệu từ Model và trà kết quả về cho người dùng thông qua View

Khi người dùng truy cập vào website của chúng ta, trình duyệt sẽ gửi request lên web server Khi request được gửi đến web server, nó sẽ thông qua bộ định tuyến (router) để phân tích và xác định các yêu cầu được gửi tới web server để rồi xác định các response trả về tương ứng Router sẽ thông qua dispatcher để gọi các response trả về cho trình duyệt thông qua controller

Điều khiển (Controller) đóng vai trò trung gian giữa mô hình (Model) và giao diện (View) trong lập trình Các thành phần này giao tiếp với nhau theo mô hình MVC (Model-View-Controller) Điều khiển lấy dữ liệu từ Mô hình và gửi tới Giao diện để hiển thị trên màn hình.

Ngoài ra, controller còn thực hiện chức năng gọi API của paypal để phục vụ cho quá trình thanh toán online khi người dùng đặt hàng và chọn hình thức thanh toán trực tiếp, cũng như gọi API của facebook chatbot để gửi, nhận tin nhắn khi người dùng trò chuyện với chatbot

Model có thể lấy dữ liệu theo 2 cách: hoặc là truy vấn trực tiếp dữ liệu trong database, hoặc là sẽ thông qua mô hình phân hệ gợi ý với các dữ liệu đầu vào cụ thể để trả về thông tin phù hợp nhất với thông tin đang được yêu cầu

Ta sẽ sử dụng cơ sở dữ liệu MySQL để lưu trữ dữ liệu cho hệ thống

Tiếp theo, ta sẽ bắt đầu xây dựng mô hình EERD để thiết kế cơ sở dữ liệu cho hệ thống.

Thiết kế cơ sở dữ liệu

4.2.1 Mô hình thực thể liên kết – EERD

Hệ thống website được thiết kế để phục vụ doanh nghiệp trong quá trình kinh doanh các sản phẩm thương mại điện tử, đồng thời hỗ trợ người dùng đặt mua hàng qua mạng một cách thuận lợi nhất bằng nhiều cách thức khác nhau

Website được thiết kế cho nhiều đối tượng người sử dụng khác nhau, bao gồm: người dùng có tài khoản(người dùng), người dùng với tư cách khách(khách), nhân viên, quản trị viên

Bất kỳ người dùng nào cũng có thể tương tác với website hệ thống cũng như đặt mua hàng trên hệ thống website Để người dùng có thể tương tác với sản phẩm của hệ thống, trước tiên ta cần phải lưu trữ thông tin về các sản phẩm để hệ thống đó thể truy xuất và hiển thị lên website, mỗi sản phẩm đều có id sản phẩm khác nhau, hệ thống cần lưu trữ các thông tin về sản phẩm như: loại sản phẩm(điện thoại, máy tính bảng, laptop, đồng hồ thông minh), tên sản phẩm, hãng (apple, samsung, …), toàn bộ thông tin cấu hình sản phẩm, tên hình của sản phẩm để hiển thị, bên cạnh đó, ta cần tạo thêm một trường lưu trữ nhiều hình ảnh mô tả chi tiết hơn nữa về sản phẩm, giá sản phẩm Để có thể đặt mua hàng trên hệ thống, người sử dụng cần tạo tài khoản để hệ thống có thể sử dụng thông tin của người dùng để khởi tạo đơn hàng Vì vậy, ta cần khởi tạo cơ sở dữ liệu lưu trữ thông tin tài khoản người dùng

Mỗi khi người dùng tạo tài khoản, hệ thống sẽ tự động sinh ra id của người dùng, giá trị id này là phân biệt đối với mỗi người dùng khác nhau Tài khoản người dùng cần lưu trữ các thông tin: họ tên, email người dùng, số điện thoại, địa chỉ, vai trò của người dùng Bên cạnh đó, ngoài việc lưu trữ thông tin người dùng, cơ sở dữ liệu tài khoản người dùng này còn dùng để lưu trữ thông tin tài khoản của nhân viên, tài khoản nhân viên sẽ do quản trị viên tạo Cơ sở dữ liệu này sẽ phân biệt người dùng hoặc nhân viên thông qua thông tin vai trò được lưu trong bảng Đối với tính năng đặt hàng trên hệ thống website, hệ thống có hỗ trợ đặt hàng trên hệ thống và đặt hàng trên chatbot Đối với đặt hàng trên hệ thống thì yêu cầu người dùng phải đăng nhập Đối với đặt hàng qua chatbot thì không nhất thiết phải đăng nhập Khi đặt hàng bằng cả 2 phương thức này thì hệ thống sẽ cần phải lưu trữ thông tin đơn hàng trên cơ sở dữ liệu Vì vậy ta cần phải tạo cơ sở dữ liệu lưu trữ thông tin đơn hàng Mỗi đơn hàng sẽ được định danh bằng một mã đơn hàng có 20 ký tự, mã đơn hàng này là duy nhất đối với mỗi đơn hàng, mỗi đơn hàng có thể có một hoặc nhiều sản phẩm Mỗi đơn hàng sẽ lưu trữ các thông tin như sau: Mã đơn hàng, tên người đặt hàng, email đặt hàng, số điện thoại, danh sách sản phẩm, địa chỉ nhận hàng, tình trạng đơn hàng, thời gian đặt hàng, phương thức thanh toán

Yêu cầu tối quan trọng của một hệ thống website là khả năng gợi ý sản phẩm cho người dùng và tìm ra danh sách các sản phẩm phổ biến để giới thiệu đến họ Để có thể thực hiện việc gợi ý, hệ thống cần lưu trữ thông tin về lịch sử tương tác của người dùng với sản phẩm Đối với những khách hàng mới hoặc chưa có tương tác, hệ thống sẽ gợi ý dựa trên mức độ phổ biến của sản phẩm.

Ta sẽ tiến hành tạo cơ sở dữ liệu để lưu trữ thông tin về số lượt xem của sản phẩm, cơ sở dữ liệu này sẽ có các trường thông tin như sau: id sản phẩm và số lượt xem, trong đó id sản phẩm phải khớp với id sản phẩm này phải khớp với id của sản phẩm trong cơ sở dữ liệu sản phẩm Đối với người dùng cụ thể, ta sẽ dựa vào lịch sử tương tác của họ để xem xét độ tương quan về sở thích với các người dùng khác để đưa ra gợi ý Vì vậy ta sẽ phải lưu trữ lượt xem của từng người dùng cụ thể này Ta cần tạo cơ sở dữ liệu và lưu trữ các trường thông tin như sau: id người dùng, email người dùng, id sản phẩm, số lượt xem của sản phẩm đó Dữ liệu phải đảm bảo id người dùng phải khớp với id người dùng trong bảng tài khoản người dùng, id sản phẩm phải khớp với id của sản phẩm trong bảng danh sách sản phẩm Đối với website này, quản trị viên sẽ kiểm soát thông tin thống kê về việc tương tác của khách hàng với sản phẩm, đặc biệt là kiểm tra mức độ hiệu quả của phân hệ gợi ý Hệ thống website chúng ta có 2 mô hình phân hệ gợi ý chính là gợi ý theo người dùng, và gợi ý sản phẩm liên quan theo 1 sản phẩm cụ thể nào đó Ta cần tạo lập thêm cơ sở dữ liệu để lưu trữ lịch sử tương tác của người dùng với các sản phẩm trên hệ thống để từ đó tính toán ra mức độ hiệu quả của phân hệ gợi ý

Vì có 2 mô hình phân hệ gợi ý nên ta cần có 2 bảng nhật ký lưu trữ lịch sử tương tác của người dùng với sản phẩm Khi người dùng tương tác với mọi sản phẩm được gửi tới người dùng thông qua phân hệ gợi ý, mọi thông tin đều được lưu trữ trong 2 bản nhật ký này Đối với mỗi bảng nhật ký, ta sẽ lưu trữ 2 trường thông tin là: mã phiên tương tác và lịch sử tương tác Đây là toàn bộ đặc tả về nghiệp vụ lưu trữ dữ liệu của hệ thống website Bây giờ ta sẽ tiến hành vẽ ra mô hình thực thể liên kết của cơ sở dữ liệu trong hệ thống của chúng ta:

Thực thể Tài khoản đại diện cho những người dùng có thông tin tài khoản tồn tại trên hệ thống, bao gồm Tài khoản người dùng dành cho người dùng tự tạo tài khoản trên website, Tài khoản nhân viên dành cho tài khoản nhân viên được quản trị viên tạo ra

Thực thể Khách đại diện cho những người dùng truy cập với tư cách khách(không có tài khoản hệ thống) Khách có các chức năng: tạo tài khoản người dùng, đặt hàng trên chatbot

Những người dùng có thông tin tài khoản tồn tại trên hệ thống(Thực thể Tài khoản) vẫn có thể đặt mua hàng trên chatbot Hơn nữa có thể đặt hàng trên hệ thống

Chỉ những người dùng có tài khoản nhân viên (Thực thể Tài khoản nhân viên) mới có thể Xác nhận, Xem thông tin đơn hàng

Thực thể Quản trị viên đại diện cho những người dùng có quyền quản lý hệ thống Quản trị viên được trao quyền truy cập cao, bao gồm khả năng xem và xóa thông tin tài khoản của người dùng và nhân viên (Thực thể Tài khoản).

Quản trị viên có thể Tạo, Xoá, Sửa thông tin sản phẩm(Thực thể Sản phẩm)

Quản trị viên cũng là người nắm rõ thông tin về lịch sử tương tác của các sản phẩm gợi ý (Thực thể Lịch sử tương tác sản phẩm gợi ý)

Thực thể Lịch sử tương tác sản phẩm gợi ý lưu trữ thông tin tương tác của người dùng khi tương tác với các sản phẩm do hệ thống gợi ý đề xuất Hệ thống gợi ý bao gồm gợi ý theo người dùng (Thực thể Sản phẩm gợi ý theo người dùng) và gợi ý theo sản phẩm (Thực thể Sản phẩm gợi ý theo sản phẩm).

Thực thể Đơn hàng đại diện cho thông tin của đơn hàng mà người dùng đã đặt hàng Một đơn hàng có thể có 1 hoặc nhiều sản phẩm(Thực thể Sản phẩm)

Thực thể Sản phẩm đại diện cho thông tin sản phẩm tồn tại trên hệ thống Mỗi sản phẩm đều sẽ có số lượt xem của khách đại diện cho số lượng người dùng truy cập vào sản phẩm này(Thực thể Lượt xem của khách), và số lượt xem của một người dùng cụ thể đối với một sản phẩm cụ thể nào đó(Thực thể Lượt xem)

Lượt xem của khách đại diện cho tần suất người dùng tương tác với sản phẩm trên hệ thống Dữ liệu này có vai trò quan trọng trong việc gợi ý các sản phẩm được ưa chuộng, thu hút nhiều lượt xem nhất cho người dùng.

Các thuật toán học máy (machine learning) và phân hệ gợi ý (recommendation system)

Một trong những yêu cầu quan trọng nhất của hệ thống là phải có khả năng giới thiệu sản phẩm cho người dùng Để làm được điều này, website của chúng ta cần phải tích hợp phân hệ gợi ý

Ta sẽ tích hợp phân hệ gợi ý để gợi ý riêng các sản phẩm cho người dùng, mỗi người dùng khác nhau sẽ được gợi ý các danh sách sản phẩm khác nhau dựa trên lịch sử tương tác, để làm được điều này, ta sẽ sử dụng phân hệ gợi ý lọc cộng tác (Neighborhood-based Collaborative Filtering) Bên cạnh đó, hệ thống còn gợi ý các sản phẩm liên quan, gần gũi với một sản phẩm cụ thể nào đó, ta sẽ sử dụng phân gợi ý dựa trên nội dung (Content-based Recommendation System) trong trường hợp này Ta cũng sẽ tích hợp phân hệ gợi ý này trong trường tìm kiếm sản phẩm và chatbot

Trong giao tiếp bằng chatbot, tin nhắn người dùng gửi đến sẽ được phân loại thành 2 loại chính: lời chào và tin nhắn hỏi mua hàng Để thực hiện phân loại này, chúng ta sử dụng mô hình học máy K-nearest neighbors Mô hình này sẽ phân tích nội dung tin nhắn và xác định chúng thuộc loại nào dựa trên những mẫu dữ liệu có sẵn Quá trình này giúp chatbot phản hồi phù hợp với từng loại tin nhắn, phục vụ tối ưu nhu cầu của người dùng.

Ta sẽ tìm hiểu các thuật toán machine learning và recommendation system được sử dụng trong hệ thống website của chúng ta

4.3.1 Giải thuật lọc cộng tác (Neighborhood-based Collaborative Filtering)

4.3.1.1 Ý tưởng Ý tưởng cơ bản của giải thuật lọc cộng tác này là xác định mức độ quan tâm của một người dùng(user) tới một món sản phẩm(item) dựa trên dựa trên các người dùng khác gần giống với người dùng này Việc gần giống nhau giữa các người dùng có thể được xác định thông qua mức độ quan tâm của các người dùng này tới các sản phẩm khác mà hệ thống đã biết Ví dụ 2 người dùng A và B đều quan tâm tới sản phẩm iPhone

11 pro max, có số lượt xem, quan tâm đến sản phẩm này cao, ta lại biết them A cũng quan tâm rất nhiều đến sản phẩm Apple Watch Series 5, vậy nhiều khả năng B cũng quan tấm đến sản phẩm Apple Watch Series 5 này Để có thể thực hiện giải thuật lọc cộng tác này, ta cần phải:

• Xác định được sự giống nhau, tương tự của 2 người dùng

• Dự đoán mức độ quan tâm của người dùng với một sản phẩm cụ thể

Việc xác định mức độ quan tâm của một người dùng đến một món sản phẩm dựa trên mức độ quan tâm của một số người dùng tương tự tới một món sản phẩm nào đó được gọi là User-user collaborative filtering Có một hướng tiếp cận khác là Item-item collaborative filtering Trong hướng tiếp cận này, thay vì xác định mức độ quan tâm của mỗi người dùng, ta sẽ xác định mức độ tương tự của các sản phẩm Từ đó, hệ thống sẽ gợi ý những món sản phẩm gần giống với những sản phẩm mà người dùng quan tâm nhiều

Trong hệ thống gợi ý sản phẩm, thuật toán User-user collaborative filtering được sử dụng để đề xuất sản phẩm phù hợp cho từng người dùng Thuật toán này dựa trên hành vi và sở thích của những người dùng tương tự.

Trước tiên, ta cần phải xác định được sự giống nhau(similarity) giữa 2 người dùng Dữ liệu duy nhất mà chúng ta có là Utility matrix Y, là ma trận thể hiện mức độ quan tâm của các người dùng đến các món sản phẩm thông qua số lượt xem, tương tác với các món sản phẩm này, vậy nên sự giống nhau này phải được xác định dựa trên các cột tương ứng với 2 người dùng trong ma trận này

Ta xét ví dụ trong bảng sau đây: u0 u1 u2 u3 u4 u5 u6 i0 5 5 2 0 1 ? ? i1 3 ? ? 0 ? ? ? i2 ? 4 1 ? ? 1 2 i3 2 2 3 4 4 ? 4 i4 2 0 4 ? ? ? 5

Bảng 4.11: ví dụ về utility matrix dựa trên số lượng tương tác của người dùng

Từ bảng utility matrix trên, ta có thể thấy được hành vi của u0 giống với u1 hơn là u2, u3, u4, u5 u6 Từ đó ta có thể dự đoán rằng u0 sẽ quan tâm tới i2 vì u1 cũng quan tâm tới sản phẩm này Để dự đoán mức độ quan tâm của các người dùng với các sản phẩm chưa biết, ta sẽ thực hiện theo các bước như sau

Giả sử ta có các người dùng từ u0 tới u6 và các sản phẩm i0 đến i4, trong đó các số trong mỗi ô vuông thể hiện mức độ quan tâm mà mỗi người dùng đã tương tác cho các sản phẩm, giá trị cao hơn thể hiện mức độ quan tâm cao hơn Các dấu chấm hỏi là các giá trị mà hệ thống cần dự đoán Đặt mức độ tương tự của 2 người dùng là ui, uj là sim(ui, uj)

Từ utility matrix trên, ta có thể thấy rằng u0 quan tâm nhiều đến i0, i1 và ít quan tâm hơn đối với i3, i4 Tương tự, ta cũng thấy u1 quan tâm nhiều đến i0, i2 và cũng ít quan tâm đối với i3, i4, trái ngược với các người dùng còn lại Ta cần có một similarity function thỏa mãn:

Từ đó, để xác định mức độ quan tâm của u0 lên i2, chúng ta nên dựa trên hành vi của u1 lên sản phẩm này Ta thấy rằng u1 quan tâm nhiều đến i2 nên hệ thống cần gợi ý i2 cho u0

Một trong những điều mà ta cũng cần quan tâm là hàm similarity như thế nào là tốt Để đo similarity giữa hai người dùng, ta thường xây dựng vector đặc trưng(feature vector) cho mỗi người dùng rồi áp dụng một hàm có khả năng đo mức độ tương tự giữa

2 vector đó Với mỗi người dùng, thông tin đặc trưng của mỗi người dùng mà chúng ta có chính là mức độ quan tâm của từng người dùng đến tất cả các sản phẩm, được đặc trưng bằng mỗi cột trong utility matrix Tuy nhiên, khó khăn chúng ta gặp phải chính là các cột thường bị khuyết nhiều giá trị (do trong hệ thống có nhiều sản phẩm, tuy nhiên người dùng chỉ tương tác nhiều với một số sản phẩm), ta cần có một biện pháp để khắc phục nhược điểm này Cách khắc phụ là bằng một cách nào đó ta giúp hệ thống điền các giá trị này sao cho việc điền không làm ảnh hưởng nhiều đến sự giống nhau giữa hai vector

Một trong những cách khả thi để thực hiện là ta sẽ lấy trung bình cộng của các số lượt xem mả người dùng tương ứng đã xem

Ta sẽ đi qua từng bước tính toán:

• Bước 1: Tính trung bình cộng số lượt view của mỗi người dùng: u0 u1 u2 u3 u4 u5 u6 i0 5 5 2 0 1 ? ? i1 3 ? ? 0 ? ? ? i2 ? 4 1 ? ? 1 2 i3 2 2 3 4 4 ? 4 i4 2 0 4 ? ? ? 5

Bảng 4.12: tính trung bình cộng số lượt xem của từng người dùng

Bước tiếp theo, chúng ta trừ giá trị trung bình đã tính được cho từng lượt xem của người dùng và thay những giá trị chưa biết bằng 0 để chuẩn hóa ma trận tiện ích (normalized utility matrix) Như vậy, ma trận tiện ích có dạng:i0 | 1.75 | 2.25 | -0.5 | -1.33 | -1.5 | 0 | 0i1 | 0.75 | 0 | 0 | -1.33 | 0 | 0.5 | 0i2 | 0 | 1.25 | -1.5 | 0 | 0 | -0.5 | -2.33i3 | -1.25 | -0.75 | 0.5 | 2.67 | 1.5 | 0 | 0.67i4 | -1.25 | -2.75 | 1.5 | 0 | 0 | 0 | 1.67

Thiết kế lớp đối tượng

Danh sách lớp đối tượng và tác dụng của các hàm trong đó:

• AddNewProductController: tạo mới sản phẩm và lưu vào cơ sở dữ liệu

• AddProductAdminController: hiển thị trang thêm sản phẩm của quản trị viên

• AdminController: hiển thị trang chủ của quản trị viên

• AdminCreateEmployeeAccountController: hiển thị trang tạo tài khoản nhân viên của quản trị viên

• AdminCreateEmployeeAccountProcessorController: xử lý việc tạo tài khoản nhân viên của quản trị viên

• AdminDeleteEmployeeController: xử lý việc xoá tài khoản nhân viên

• AdminDeleteProductController: xử lý việc xoá sản phẩm trên hệ thống

• AdminDeleteUserController: xử lý việc xóa tài khoản người dùng

• AdminModifyProductController: hiển thị trang để cho người dùng chỉnh sửa thông tin sản phẩm

• AdminSeeCustomerListController: hiển thị danh sách khách hàng ở trang quản trị viên

• AdminSeeEmployeeListController: hiển thị danh sách nhân viên ở trang quản trị viên

• AdminSeeProductController: hiển thị danh sách sản phẩm ở trang quản trị viên

• ChatBotController-v4: xử lý các chức năng gửi, nhận tin nhắn trên chatbot

• EmployeeChangeOrderStatusController: chuyển trạng thái đơn hàng

• EmployeeController: hiển thị đăng nhập vào trang nhân viên

• GenCodeResetPasswordController: sinh ra mã OTP để thay đổi mật khẩu

• HostpageController: hiển thị trang chủ dành cho người dùng

• LoginController: hiển thị form đăng nhập dành cho người dùng

• LoginForBuyProductProcessorController: xác thực đăng nhập và chuyển sang trang thanh toán đặt hàng

• LoginProcessorController: xác thực đăng nhập và chuyển vào trang chủ

• LoginProcessorForAdminController: xác thực đăng nhập và chuyển đến trang quản trị viên

• LoginProcessorForEmployeeController: xác thực đăng nhập và chuyển đến trang nhân viên

• LogoutAdminController: xử lý đăng xuất cho quản trị viên

• LogoutController: xử lý đăng xuất cho người dùng, nhân viên

• ManipulateOrderAdminController: chuẩn bị dữ liệu hiển thị danh sách đơn hàng trên trang quản trị viên

• ModifyForProductController: chứa các hàm để thay đổi thông tin sản phẩm

• OrderDetailAdminController: hiển thị chi tiết đơn hàng ở trang quản trị viên

• OrderDetailEmployeeController: hiển thị chi tiết đơn hàng ở trang nhân viên

• OrderOnChatBotController: hiển thị trang đặt hàng cho chatbot

• OrderProductController: hiển thị trang thanh toán đặt hàng hệ thống

• OrderTableAdminController: hiển thị danh sách đơn hàng trên trang quản trị viên

• PaycheckProcessorController: xử lý đặt hàng trên hệ thống đồng thời xử lý thanh toán bằng paypal nếu chọn phương thức thanh toán paypal

• ProductDetailController: hiển thị trang chi tiết sản phẩm

• RecommendForUserController: hiển thị top sản phẩm gợi ý được người dùng quan tâm nhiều nhất

• RegisterController: hiển thị trang đăng ký tài khoản

• RegisterProcessorController: xử lý đăng ký tài khoản

• ResetPasswordController: hiển thị trang để thay đổi mật khẩu

• SearchProductController: xử lý tìm kiếm sản phẩm theo từ khoa và trả về sản phẩm theo từ khoá

• SpecificProductController: hiển thị danh sách sản phẩm theo loại sản phẩm(điện thoại, laptop, …)

• UpdateDiaryCollaborativeController: cập nhật nhật ký tương tác khi người dùng tương tác với các sản phẩm gợi ý mà hệ thống gợi ý riêng cho người dùng

• UpdateDiaryForViewController: cập nhật nhật ký tương tác khi người dùng tương tác với các sản phẩm gợi ý liên quan, gần gũi với sản phẩm mà người dùng đang xem xét

• UpdateNewPasswordController: xử lý thay đổi mật khẩu

• UpdateParameterAdminController: thay đổi số lượng sản phẩm thống kê hiển thị ở trang quản trị viên.

Chức năng gợi ý sản phẩm(viết bằng Python)

collaborative_machine_learning-v2.py: trả về danh sách sản phẩm gợi ý theo người dùng content-base-for-product-and-chatbot.py: trả về danh sách sản phẩm gợi ý theo sản phẩm, tìm kiếm sản phẩm cũng như gợi ý sản phẩm trong chatbot getTypeTextMessage_K_nearest_neighbors.py: xác định dạng của tin nhắn gửi tới trong chatbot để đưa ra các phản hồi phù hợp.

HIỆN THỰC HỆ THỐNG

Công nghệ sử dụng

Công nghệ và ứng dụng Phiên bản Chức năng

NodeJS 14.16.0 Hiện thực phía backend của hệ thống Python 3.7.6 Dùng để hiện thực các giải thuật machine learning và recommendation system MySQL 7.4.12 Dùng để tạo và lưu trữ cơ sở dữ liệu

Bootstrap 4 Framework để thiết kế giao diện frontend

MAMP Server 6.3 Chạy website ở localhost

Paypal IPN 1.5 Kết nối cổng thanh toán paypal

Xây dựng website

Trong phần này ta sẽ hiện thực một số trang chính của hệ thống, phần còn lại sẽ được hiện thực ở phần phụ lục

Một số trang chính bao gồm:

• Trang chủ khi người dùng chưa đăng nhập

• Trang chủ khi người dùng đã đăng nhập

• Chatbot và thanh toán trên chatbot

• Xem chi tiết sản phẩm

• Đặt hàng trên hệ thống, thanh toán tiền mặt, paypal

• Một số phần chính của trang quản trị viên

• Nhân viên xác nhận đơn hàng

5.2.1 Trang chủ khi người dùng chưa đăng nhập

Khi người dùng truy cập vào website của hệ thống trong trạng thái chưa đăng nhập, website sẽ hiển thị giao diện trang chủ như hình 5.1 bên dưới

Trên web sẽ hiển thị các nội dung gồm:

• Đầu tiên là header của website, nơi chứa các link dẫn tới trang chủ và các trang danh sách từng loại sản phẩm như điện thoại, laptop, máy tính bảng, đồng hồ thông minh, nút xem giỏ hàng và nút đăng nhập để hỗ trợ người dùng chuyển qua các form đăng nhập hoặc đăng ký tài khoản

• Trường tìm kiếm sản phẩm: cho phép người dùng tìm kiếm sản phẩm bằng cách nhập từ khoá tên sản phẩm mà ta muốn tìm kiếm

• Danh sách các sản phẩm phổ biến

• Icon chatbot giúp cho người dùng có thể trò chuyện với chatbot, khi người dùng nhấp vào icon này sẽ hiển thị lên popup chatbot để người dùng có thể nhập tin nhắn trò chuyện với chatbot và được chatbot phản hồi một cách tự động

• Icon của chatbot sẽ nằm cố định cho dù ta có cuộn lên xuống website

• Bên dưới danh sách sản phẩm có thêm link bấm Xem thêm sản phẩm để người dùng muốn xem thêm sản phẩm thì sẽ click vào link này

• Dưới cùng là footer của website

Hình 5.1: giao diện trang chủ của website 5.2.2 Trang chủ khi người dùng đã đăng nhập

Khi người dùng đăng nhập thành công sẽ chuyển đến trang chủ và nội dung trang chủ sẽ khác so với lúc người dùng chưa đăng nhập

Có 2 trường hợp hợp khi người dùng đã đăng nhập

• Nếu người dùng mới, chưa xem sản phẩm của hệ thống lần nào thì hệ thống sẽ hiển thị ra các sản phẩm phổ biến cho người dùng

• Khi người dùng đã tương tác nhiều với các sản phẩm của hệ thống, hệ thống sẽ gợi ý sản phẩm cho người dùng dựa trên lịch sử tương tác và so sánh tương quan sở thích với các người dùng khác rồi đưa ra các gợi ý cho người dùng

Hình 5.2: nội dung hiển thị trang chủ khi người dùng đã đăng nhập

5.2.3 Chatbot và thanh toán trên chatbot

Tiếp theo là giao diện chatbot của website:

Hình 5.3: giao diện hiển thị khi click vào icon messenger chatbot

Khi nhấp vào nút Tiếp tục với vài trò khách sẽ hiển thị ra khung chat để trò chuyện với chatbot

Hình 5.4: giao diện khung chat để trò chuyện với chatbot

Ngoài ra, chatbot còn hỗ trợ người dùng đặt hàng và thanh toán trực tiếp trên nền tảng Khi sử dụng tính năng thanh toán của chatbot, người dùng sẽ được cung cấp giao diện hỗ trợ với các thông tin cần thiết, tạo thuận tiện cho quá trình giao dịch.

Hình 5.5: giao diện thanh toán trên chatbot khi người dùng chưa đăng nhập

Khi người dùng chưa đăng nhập thì các trường THÔNG TIN KHÁCH HÀNG sẽ trống Khi người dùng đã đăng nhập thì hệ thống sẽ tự động lấy thông tin người dùng và hiển thị lên form

Hình 5.6: các trường thông tin trong giao diện thanh toán khi đã đăng nhập

Ta sẽ nhấn vào nút TIẾN HÀNH ĐẶT HÀNG để đặt hàng trên chatbot

5.2.4 Xem chi tiết sản phẩm

Khi muốn xem chi tiết sản phẩm, ta sẽ rê chuột vào sản phẩm mà ta muốn xem chi tiết, khi đó sẽ hiển thị nút xem chi tiết cũng như thêm sản phẩm vào giỏ hàng như hình:

Hình 5.7: hình 1 sản phẩm cụ thể hiển thị trong danh sách sản phẩm

Ở hình 5.7, có hai nút: nút xem chi tiết sản phẩm bên trái và nút thêm sản phẩm vào giỏ hàng bên phải Nhấp vào nút xem chi tiết sản phẩm, trang web sẽ hiển thị chi tiết sản phẩm như hình 5.8.

Nội dung trang chi tiết sản phẩm bao gồm:

• Tên, giá, mã, hãng sản phẩm

• Hình slider chi tiết sản phẩm

• Popup cấu hình sản phẩm bằng cách click vào nút CẤU HÌNH SẢN PHẨM CHI TIẾT để xem

• Popup mô tả sản phẩm nếu nội dung popup nhiều hơn 3 đoạn văn

• Nút ĐẶT MUA SẢN PHẨM

• Danh sách hình sản phẩm liên quan dưới cùng Danh sách này là do hệ thống gợi ý dựa trên sản phẩm mà người dùng đang xem Tức là hệ thống sẽ dựa trên thông tin chi tiết của sản phẩm mà ta đang xem hiện tại(Apple MacBook Pro M1 2020 8GB/256GB (MYD82SA/A)) và so sánh sự tương quan với các sản phẩm trên hệ thống và chọn ra top 4 sản phẩm tương tự nhất với sản phẩm này và gợi ý ra cho người dùng

Hình 5.8: chi tiết sản phẩm 5.2.5 Đặt hàng trên hệ thống, thanh toán tiền mặt, paypal Để đặt hàng trên hệ thống, ta có 2 cách:

• Cách 1: rê chuột vào mỗi sản phẩm như ta đã trình bày ở trên Khi đó sẽ hiển thị ra 2 nút: xem chi tiết sản phẩm(bên trái) và thêm vào giỏ hàng(bên phải), ta sẽ click vào nút thêm vào giỏ hàng

• Cách 2: ta đi vào trang chi tiết sản phẩm giống như hình 5.8, click vào nút ĐẶT MUA SẢN PHẨM

Ta có thể thêm số lượng sản phẩm bằng cách nhấp vào nút đặt mua nhiều lần

Sau khi đặt mua sản phẩm, ta sẽ tiến hành thanh toán bằng cách nhấp vào nút giỏ hàng ở thanh tiêu đề Khi đó sẽ hiển thị popup như hình 5.9:

Hình 5.9: popup hiển thị danh sách sản phẩm đã đặt mua trong giỏ hàng

Khi chưa đăng nhập, người dùng sẽ phải điền thông tin vào form đặt hàng để hoàn tất quy trình mua sắm Chi tiết về form đặt hàng này sẽ được cung cấp trong phần phụ lục.

Khi người dùng đã đăng nhập thì sẽ hiển thị trang cho người dùng xác nhận đặt hàng như hình 5.10 như sau:

Hình 5.10: form đặt hàng hệ thống

Trong form đặt hàng trên hệ thống này, ta có thể thay đổi phương thức thanh toán bằng tiền mặt hoặc bằng paypal

Sau đó ta nhấn vào nút tiến hành đặt hàng để đặt hàng

Nếu người dùng chọn phương thức thanh toán bằng tiền mặt thì sẽ hiển thị trang thông báo đặt hàng thành công như hình 5.11 sau đây:

Hình 5.11: thông báo đặt hàng thành công khi thanh toán tiền mặt

Nếu người dùng thanh toán bằng paypal thì hệ thống sẽ chuyển đến trang yêu cầu đăng nhập vào paypal để thanh toán như hình 5.12:

Hình 5.12: trang để thanh toán paypal

Click vào nút Continue để tiến hành thanh toán, khi thanh toán thành công sẽ chuyển về trang thông báo đặt hàng thành công như hình 5.13:

Hình 5.13: thông báo đặt hàng trên hệ thống và thanh toán paypal thành công 5.2.6 Một số phần chính của trang quản trị viên

Trang quản trị viên gồm có các chức năng:

• Xem thống kê thông tin tổng quát

• Xem danh sách sản phẩm, chi tiết sản phẩm

• Xem danh sách đơn hàng, chi tiết đơn hàng

• Tạo tài khoản nhân viên

Trong phần này ta cũng sẽ hiện thực một số phần chính của trang quản trị viên, phần còn lại xem thêm ở phụ lục

Trang chủ quản trị viên gồm nhiều phần, bao gồm:

• Thông tin số lượng người dùng, số lượng đơn hàng, số lượng sản phẩm

• Hiển thị top 5 sản phẩm được xem nhiều nhất

• Đánh giá hiệu quả của mô hình recommendation system, thông tin website

• Thống kê top lịch sử tương tác với các sản phẩm giới thiệu cho người dùng thông qua phân hệ gợi ý

Ta sẽ hiện thực từng phần như sau:

Hình 5.14: thống kê thông tin số lượng người dùng, số đơn hàng, số sản phẩm

Hình 5.15: top 5 sản phẩm được xem nhiều nhất

Hệ thống sẽ chọn ra 5 sản phẩm có số lượt xem nhiều nhất để hiển thị lên hệ thống

Hình 5.16: thông tin đánh giá mô hình phân hệ gợi ý và thông tin website

Hệ thống sẽ dựa vào nhật ký tương tác của người dùng với các sản phẩm gợi ý và trung bình cộng điểm tương tác

Hình 5.17: thanh tuỳ chọn cho phép hiển thị số lượng top sản phẩm gợi ý

Hình 5.18: top sản phẩm gợi ý theo sản phẩm được tương tác nhiều nhất

Trường này sẽ thống kê top 5, 10 hoặc 20 sản phẩm gợi ý theo sản phẩm mà được tương tác nhiều nhất

Hình 5.19: top sản phẩm gợi ý theo sản phẩm được tương tác nhiều nhất

Trường này sẽ thống kê top 5, 10 hoặc 20 sản phẩm được riêng gợi ý cho từng người dùng được tương tác nhiều nhất

Hình 5.20: top sản phẩm gợi ý theo sản phẩm được xem nhiều nhất

Trường này sẽ thống kê top 5, 10 hoặc 20 sản phẩm được hệ thống gợi ý theo sản phẩm mà người dùng tương tác nhiều nhất

Hình 5.21: top gợi ý theo sản phẩm được thêm vào giỏ hàng nhiều nhất

Trường này sẽ thống kê top 5, 10 hoặc 20 sản phẩm gợi ý theo sản phẩm mà được người dùng quan tâm và thêm vào giỏ hàng

Hình 5.22: top gợi ý theo sản phẩm được người dùng đặt mua nhiều nhất

Trường này sẽ thống kê top 5, 10 hoặc 20 sản phẩm được gợi ý theo sản phẩm mà được người dùng đặt mua nhiều nhất

Hình 5.23: top gợi ý cho từng người dùng được người dùng xem nhiều nhất

Trường này sẽ thống kê top 5, 10 hoặc 20 sản phẩm mà hệ thống gợi ý cho người dùng và được người dùng xem nhiều nhất

Hình 5.24: top gợi ý cho từng người dùng được thêm vào giỏ hàng nhiều nhất

Trường này sẽ thống kê top 5, 10 hoặc 20 sản phẩm gợi ý cho từng người dùng và được người dùng thêm vào giỏ hàng nhiều nhất

Hình 5.25: top gợi ý cho từng người dùng được đặt mua nhiều nhất

Trường này sẽ thống kê top 5, 10 hoặc 20 sản phẩm gợi ý cho từng người dùng được người dùng đặt mua nhiều nhất

5.2.7 Quản trị viên xem danh sách đơn hàng

Quản trị viên có quyền quản lý danh sách đơn hàng ở trang quản trị viên

Hình 5.26: xem danh sách đơn hàng ở trang quản trị viên

Trang quản trị viên cho phép quản trị viên tra cứu thông tin đơn hàng theo mã đơn hàng hoặc số điện thoại Đồng thời cho phép lọc đơn hàng theo các tình trạng: đơn hàng đã duỷ, đơn hàng chưa thanh toán, đơn hàng đã thanh toán, đơn hàng đã giao

Quản trị viên có quyền xem chi tiết đơn hàng bằng cách nhấp vào icon chữ i ở cột chi tiết của sản phẩm mà quản trị viên muốn xem

Hình 5.27: quản trị viên xem chi tiết đơn hàng 5.2.8 Nhân viên xác nhận đơn hàng

Khi nhân viên đăng nhập vào trang dành cho nhân viên, hệ thống sẽ hiển thị trang danh sách đơn hàng mà khách hàng đã đặt mua Giao diện như sau:

Hình 5.28: xem danh sách đơn hàng ở trang nhân viên

Trang này cho phép nhân viên tra cứu thông tin đơn hàng theo mã đơn hàng hoặc số điện thoại Đồng thời cho phép lọc đơn hàng theo các tình trạng: đơn hàng đã duỷ, đơn hàng chưa thanh toán, đơn hàng đã thanh toán, đơn hàng đã giao

Nhân viễn cũng có quyền xem chi tiết đơn hàng bằng cách nhấp vào icon chữ i ở cột chi tiết của sản phẩm mà nhân viên muốn xem

Hình 5.29: nhân viên xem chi tiết đơn hàng

Nhân viên cũng có quyền thao tác huỷ hơn hàng, xác nhận mua hàng, xác nhận đã giao hàng

5.2.9 Hiển thị danh sách các sản phẩm gợi ý được người dùng xem, thêm vào giỏ hàng, mua nhiều nhất

Ta sẽ thiết kế một trang danh sách top các sản phẩm mà hệ thống gợi ý cho người dùng hoặc gợi ý kèm theo sản phẩm cụ thể nào đó mà được người dùng quan tâm nhiều nhất

Mục tiêu của danh sách này là để gợi ý cho người dùng những sản phẩm mà hệ thống đã gợi ý ra được người dùng ưa chuộng nhất

Danh sách các sản phẩm gợi ý này được chia ra làm 8 phần:

Hình 5.30: danh sách gợi ý theo các sản phẩm được tương tác nhiều nhất

KIỂM THỬ PHẦN MỀM

Chức năng gợi ý sản phẩm của phân hệ gợi ý hoặc sản phẩm phổ biến 82 6.2 Chức năng thêm sản phẩm vào giỏ hàng, đặt hàng và thanh toán trên

Trong website này, ta có ứng dụng phân hệ gợi ý để thực hiện gợi ý sản phẩm cho người dùng Có 2 loại gợi ý được tích hợp trong website này là gợi ý dựa trên tương tác của người dùng và gợi ý dựa trên sản phẩm tương tự với sản phẩm mà người dùng đang xem xét Ta sẽ tiến hành kiểm thử 2 tính năng gợi ý này:

STT Mô tả Kết quả Kết luận

1 Kiểm thử tính năng gợi ý sản phẩm khi người dùng mở trang web trong trạng thái chưa đăng nhập

Hệ thống sẽ gợi ý ra những sản phẩm phổ biến, được người dùng tương tác nhiều trong phần sản phẩm phổ biến như hình 6.1

2 Khi người dùng mới tạo tài khoản và đăng nhập vào

Hệ thống chưa có thông tin về lịch sử tương tác của người dùng nên chỉ gợi ý những sản phẩm dựa trên mức độ phổ biến của sản phẩm như hình 6.2 ở phần sản phẩm phổ biến

3 Gợi ý sản phẩm với những người dùng đã tương tác nhiều với sản phẩm

Hệ thống sẽ gợi ý sản phẩm cho người dùng theo 2 phần như hình 6.3

Bao gồm: gợi ý cho bạn do hệ thống gợi ý gợi ý riêng cho từng người dùng, sản phẩm phổ biến vẫn sẽ dựa trên mức độ phổ biến sản phẩm

4 Gợi ý sản phẩm tương tự với sản phẩm mà người dùng đang xem chi tiết

Ta sẽ thực hiện kiểm tra với sản phẩm

Máy tính bảng iPad gen 8 2020 WiFi

32GB rồi từ đó gợi ý các sản phẩm liên quan cho người dùng

Hệ thống sẽ dựa trên mức độ tương tự giữa các sản phẩm với nhau và chọn ra

4 sản phẩm tương tự nhất với sản phẩm mà người dùng đang xem xét rồi từ đó gợi ý cho người dùng như hình 6.4

5 Chức năng tra cứu sản phẩm theo từ khoá, người dùng sẽ nhập từ khoá với Hệ thống sẽ chọn ra 8 sản phẩm gần gũi nhất với từ khoá truy vấn sản phẩm

Pass tên sản phẩm mà người dùng muốn tìm kiếm

Trong trường hợp này, mình sẽ tra cứu sản phẩm Macbook Pro M1 Ta sẽ gõ từ khoá trong trường tìm kiếm sản phẩm như hình 6.5 mà ta vừa nhập vào rồi từ đó gợi ý ra những sản phẩm mà người dùng đang tìm kiếm như hình 6.6

Bảng 6.1: kiểm thử chức năng gợi ý và hiển thị sản phẩm phổ biến

Hình 6.1: gợi ý sản phẩm phổ biến khi người dùng chưa đăng nhập

Hình 6.2: gợi ý sản phẩm cho người dùng mới

Hình 6.3: gợi ý sản phẩm dựa trên lịch sử tương tác của người dùng

Hình 6.4: danh sách sản phẩm liên quan, gần gũi với sản phẩm cụ thể

Hình 6.5: trường tìm kiếm sản phẩm, gõ tên sản phẩm đang cần tìm

Hình 6.6: danh sách kết quả trả về khi tìm kiếm sản phẩm

6.2 Chức năng thêm sản phẩm vào giỏ hàng, đặt hàng và thanh toán trên website

STT Mô tả Kết quả Kết luận

1 Thêm sản phẩm vào giỏ hàng trên các trang hiển thị danh sách nhiều sản phẩm

Ta sẽ thực hiện rê chuột vào sản phẩm ta muốn thêm, khi đó sẽ hiển thị 2 nút, 1 nút để xem chi tiết sản phẩm, 1 nút để thêm sản phẩm vào giỏ hàng như hình 6.7

Ta sẽ click vào nút có icon giỏ hàng để thêm sản phẩm vào giỏ hàng

Ta có thể chọn mua nhiều sản phẩm

Sản phẩm được thêm vào giỏ hàng, đồng thời hiển thị thông báo ở góc phải trên màn hình để thông báo sản phẩm đã được thêm vào giỏ hàng, đồng thời số lượng sản phẩm trên nút giỏ hàng cũng được tăng lên(Hình 6.8) và khi click vào nút này sẽ hiển thị popup danh sách sản phẩm như hình 6.9

2 Tăng số lượng sản phẩm trong popup giỏ hàng Ta sẽ nhấn vào nút có dấu +(Hình 6.9) của sản phẩm mà ta muốn tăng số lượng trong popup giỏ hàng

Số lượng sản phẩm mà ta vừa bấm vào nút + tăng lên

1 Chi phí tổng cộng cho từng sản phẩm cũng được tính lại tuỳ theo số lượng

Thông tin thanh toán ở cuối popup hình 6.9 (Tổng tiền, Phí ship, Tiền phải trả) cũng được tính lại

Để giảm số lượng một sản phẩm trong popup giỏ hàng khi số lượng của sản phẩm đó bằng 1, bạn thực hiện bằng cách nhấn vào nút có dấu trừ "-" (Hình 6.9) tương ứng với sản phẩm bạn muốn giảm số lượng.

Sản phẩm được xoá hẳn ra khỏi popup giỏ hàng Trong popup không còn hiển thị thông tin của sản phẩm mà ta vừa bấm vào nút giảm số lượng đó nữa Thông tin thanh toán ở phần dưới cùng của popup cũng được tính toán lại

4 Giảm số lượng sản phẩm trong popup giỏ hàng khi số sản phẩm của một món hàng cụ thể lớn hơn 1

Ta sẽ thực hiện bằng cách nhấn vào nút có dấu –(Hình 6.9) của sản phẩm mà ta muốn giảm số lượng

Số lượng sản phẩm mà ta vừa bấm vào nút – giảm xuống 1 Chi phí tổng cộng cho từng sản phẩm cũng được tính lại tuỳ theo số lượng Thông tin thanh toán ở cuối popup hình 6.9 (Tổng tiền, Phí ship, Tiền phải trả) cũng được tính lại

5 Xoá sản phẩm ra khỏi giỏ hàng trong popup Ta sẽ nhấn vào nút

Xoá sản phẩm ứng với sản phẩm mà ta muốn xoá

Sản phẩm được xoá hẳn ra khỏi giỏ hàng Thông tin thanh toán cũng được tính lại

6 Nhấn vào nút đặt hàng ở dưới cùng trong popup danh sách sản phẩm có trong giỏ hàng để tiến hành đặt hàng trong trường hợp người dùng chưa đăng nhập

Chuyển tới form Đăng nhập để mua sản phẩm và tiến hành đăng nhập(Hình 6.10)

7 Đăng nhập vào from Đăng nhập để mua sản phẩm Khi thông tin đăng nhập sai

Hiển thị cảnh báo và yêu cầu đăng nhập lại

8 Đăng nhập vào from Đăng nhập để mua sản phẩm Khi thông tin đăng nhập chính xác

Chuyển tới trang thông tin thanh toán(Hình 6.11)

9 Lựa chọn phương thức thanh toán bằng tiền mặt(Ngay chỗ Phương thức thanh toán ở hình 6.11) sau đó nhấn vào nút tiến hành đặt hàng

Hiển thị thông báo đặt hàng thành công và chuyển tới trang thông tin đặt hàng thành công(Hình 6.12), đồng thời email xác nhận đặt hàng được gửi tới như hình 6.13

10 Lựa chọn phương thức thanh toán bằng paypal sau đó nhấn vào nút tiến hành đặt hàng

Chuyển tới trang đăng nhập vào paypal để tiến hành thanh toán(hình 6.14), người dùng sẽ đăng nhập vào và tiến hành thanh toán sản phẩm online(hình 6.15), sau khi thanh toán thành công sẽ chuyển tới trang thông báo người dùng đã đặt hàng thành công(Hình 6.16), đồng thời cũng có email gửi tới giống như hình 6.13

Bảng 6.2: kiểm thử chức năng thêm vào giỏ hàng, đặt hàng, thanh toán

Hình 6.7: hiển thị nút thêm sản phẩm và xem chi tiết sản phẩm khi rê chuột

Hình 6.8: Số lượng sản phẩm đang có trong giỏ hàng

Hình 6.9: popup danh sách sản phẩm đã được thêm vào giỏ hàng

Hình 6.10: Form khi người dùng đăng nhập để mua sản phẩm

Hình 6.11: Trang thông tin thanh toán

Hình 6.12: trang thông báo đặt hàng thành công bằng tiền mặt

Hình 6.13: email xác nhận đặt hàng thành công

Hình 6.14: trang đăng nhập vào paypal để thanh toán đơn hàng

Hình 6.15: trang thanh toán bằng paypal để tiến hành thanh toán

Chức năng tìm kiếm và đặt hàng trên chatbot

Chatbot này có thể hiểu được 2 loại của văn bản là lời chào hoặc câu hỏi đặt mua hàng Khi người dùng gửi tin nhắn đến chatbot này, chatbot sẽ thông qua thuật toán machine learning để phân biệt loại văn bản này là lời chào hay câu hỏi mua hàng Nếu là lời chào thì sẽ trả về một lời chào tương ứng Nếu là câu hỏi mua hàng thì sẽ gợi ý ra những sản phẩm tương ứng với sản phẩm mua hàng mà người dùng đang tìm kiếm

Bên cạnh đó chatbot còn có thể hỗ trợ người dùng đặt mua hàng trên chatbot sau đó chuyển đến trang đặt hàng để điền thông tin đặt hàng vào

Trong phần kiểm thử chatbot này, ta sẽ thực hiện 2 loại kiểm thử là kiểm thử kịch bản của chatbot và kiểm thử tính năng đặt hàng, mua hàng trên chatbot

Hình 6.17: icon giao diện chatbot

Khi nhấn chọn icon giao diện chatbot sẽ hiển thị ra popup, ta sẽ lựa chọn Tiếp tục với vai trò khách để bắt đầu trò chuyện với chatbot Kết quả hiển thị như sau:

Khi tin nhắn người dùng gửi tới là lời chào thì sẽ hiển thị tin nhắn dạng lời chào như sau:

Hình 6.19: tin nhắn trả về trên chatbot khi tin nhắn gửi tới là lời chào

Khi tin nhắn người dùng gửi tới là tin nhắn hỏi mua hàng thì hệ thống sẽ gợi ý ra các sản phẩm và hỗ trợ người dùng đặt hàng như hình:

Kiểm thử kịch bản của chatbot

STT Tin nhắn gửi tới chatbot Phân loại Kỳ vọng Kết quả

1 Xin chào Lời chào Trả về tin nhắn lời chào Pass

2 Tôi muốn mua hàng Lời chào Trả về tin nhắn lời chào Pass

3 Tôi muốn tìm mua sản phẩm

Mua hàng Trả về danh sách sản phẩm tuỳ ý

4 Chào bạn, bạn có thể hỗ trợ tôi không Lời chào Trả về tin nhắn lời chào Pass

5 Tôi muốn mua macbook Mua hàng Trả về danh sách các sản phẩm macbook Pass

6 Tôi đang tìm apple watch

Mua hàng Trả về các sản phẩm apple watch, trong đó có apple watch S5

7 Shop có bán laptop HP không

Mua hàng Trả về danh sách các sản phẩm laptop HP

8 Xem danh sách iphone Mua hàng Trả về danh sách các điện thoại iphone Pass

9 Tôi muốn mua iphone XR Mua hàng Trả về danh sách các điện thoại iphone trong đó có iphone XR

10 Admin ơi Lời chào Trả về tin nhắn lời chào Pass

11 Đang tìm samsung galaxy Mua hàng Trả về danh sách các sản phẩm samsung galaxy

12 Tôi cần tìm ipad pro Mua hàng Trả về danh sách các sản phẩm ipad, trong đó có ipad pro

13 Hello Lời chào Trả về tin nhắn lời chào Pass

14 Tôi muốn mua oppo Mua hàng Trả về danh sách các sản phẩm oppo

15 Mua vivo Mua hàng Trả về danh sách các sản phẩm vivo Pass

M1 Mua hàng Trả về macbook pro M1 và các sản phẩm macbook khác

17 Laptop asus vivobook Mua hàng Trả về các laptop asus vivobook và các laptop khác

18 Tôi muốn mua asus zenbook i5 Mua hàng Trả về laptop asus zenbook i5 và các laptop khác

19 Laptop acer aspire Mua hàng Trả về danh sách các sản phẩm laptop acer aspire và các laptop khác

20 Laptop gaming Mua hàng Trả về laptop gaming và các laptop khác Pass

Kiểm thử tính năng đặt hàng trên chatbot

STT Mô tả Kết quả Kết luận

1 Trong chatbot, sau khi truy vấn sản phẩm mà ta muốn mua, nhấn vào nút

Chọn mua sản phẩm của sản phẩm mà ta muốn thêm vào giỏ hàng

Hiển thị thông báo về việc thêm sản phẩm vào giỏ hàng thành công và nút Chuyển tới trang đặt hàng

2 Mua thêm các sản phẩm khác Ta sẽ thực hiện truy vấn các sản phẩm khác và tiếp tục nhấn Chọn mua sản phẩm đối với sản phẩm mà ta muốn mua

Hiển thị thông báo về việc thêm sản phẩm vào giỏ hàng thành công và nút Chuyển tới trang đặt hàng

3 Tiến hành đặt hàng các sản phẩm vừa thêm đặt mua trong chatbot trong trường hợp người dùng chưa đăng nhập

Trên trang đặt hàng của chatbot, chúng ta điền thông tin vào các trường trống Trang này hiển thị thông tin về các sản phẩm mà chúng ta đã đặt mua, như thể hiện ở hình 6.21.

4 Tiến hành đặt hàng các sản phẩm vừa đặt mua trong chatbot trong trường hợp người dùng đã đăng nhập vào tài khoản thành viên

Chuyển tới trang đặt hàng trên chatbot với các trường thông tin chính là thông tin đăng nhập của người dùng, trong trang có hiển thị thông tin các sản phẩm mà chúng ta đặt mua như hình 6.22

5 Trong trang đặt hàng trên chatbot, ta tiến hành tăng số lượng sản phẩm của một món hàng bằng cách nhấn vào

Số lượng của sản phẩm được tăng lên 1 sau mỗi lần nhấn vào, đồng thời thay

Pass dấu cộng của sản phẩm mà ta muốn tăng số lượng đổi số tiền cần phải thanh toán

6 Trong trang đặt hàng trên chatbot, ta tiến hành giảm số lượng sản phẩm của một món hàng bằng cách nhấn vào dấu trừ của sản phẩm mà ta muốn giảm số lượng trong trường hợp số sản phẩm hiện tại là 1

Sản phẩm sẽ được xoá hẳn khỏi giỏ hàng, đồng thời cập nhật lại thông tin thanh toán

7 Trong trang đặt hàng trên chatbot, ta tiến hành giảm số lượng sản phẩm của một món hàng bằng cách nhấn vào dấu trừ của sản phẩm mà ta muốn giảm số lượng trong trường hợp số sản phẩm hiện tại lớn hơn 1

Số lượng của sản phẩm được giảm xuống 1 sau mỗi lần nhấn vào, đồng thời thay đổi số tiền cần phải thanh toán

8 Nhấn vào nút TIẾN HÀNH ĐẶT

HÀNG để bắt đầu quá trình đặt hàng Hiển thị thông báo đặt hàng thành công đồng thời trở về trang chủ

Bảng 6.4: kiểm thử tính năng đặt hàng trên chatbot

Hình 6.21: trang đặt hàng trên chatbot khi người dùng chưa đăng nhập

Hình 6.22: trang đặt hàng trên chatbot khi người dùng đã đăng nhập

ĐÁNH GIÁ HỆ THỐNG VÀ PERFORMANCE

Đánh giá hiệu quả của phân hệ gợi ý

Để đánh giá một cách khách quan mức độ hiệu quả của phân hệ gợi ý, ta sẽ đánh giá mức độ hiệu quả của mô hình phân hệ gợi ý thông qua lịch sử tương tác của người dùng với các sản phẩm gợi ý

Nguyên tắc đánh giá như sau:

• Khi người dùng tương tác với các sản phẩm gợi ý thì hệ thống sẽ lưu điểm tương tác của người dùng vào nhật ký

• Khi người dùng nhấn vào xem sản phẩm gợi ý thì điểm tương tác của người dùng với các sản phẩm gợi ý là 0.5, khi người dùng thêm sản phẩm gợi ý vào giỏ hàng thì điểm tương tác của người dùng với các sản phẩm gợi ý là 0.8, khi người dùng đã đặt mua hàng các sản phẩm gợi ý thì điểm tương tác của người dùng với các sản phẩm đó là 1

• Khi người dùng thêm sản phẩm gợi ý vào giỏ hàng sau đó xoá sản phẩm đó ra khỏi giỏ hàng thì điểm tương tác vẫn là 0.8, chỉ khi nào người dùng đặt hàng thì điểm tương tác của sản phẩm đó sẽ là 1

• Khi người dùng tương tác nhấn vào xem sản phẩm gợi ý A thì điểm tương tác của người dùng với sản phẩm A là 0.5, nếu người dùng thêm sản phẩm A vào giỏ hàng thì điểm sản phẩm sẽ thành 0.8

Hệ thống của chúng ta có sử dụng 2 phân hệ gợi ý là gợi ý theo người dùng và gợi ý theo sản phẩm, ta sẽ đánh giá mức độ hiệu quả cho 2 phân hệ này

Thông tin về mức độ hiệu quả của 2 phân hệ gợi ý này sẽ được tích hợp và hiển thị trên trang quản trị viên

Mỗi lần người dùng tương tác với các sản phẩm gợi ý thì điểm tương tác đều sẽ được lưu trên nhật ký và sẽ được tính toán lại và hiển thị trên trang quản trị viên mỗi lần quản trị viên truy cập Từ đó có thể đánh giá được mức độ hiệu quả của phân hệ gợi ý Đối với mỗi phân hệ gợi ý, ta sẽ tính trung bình cộng điểm tương tác của người dùng với các sản phẩm gợi ý

Hình 7.1: kết quả đánh giá tổng quát mức độ hiệu quả của phân hệ gợi ý

Kết quả đánh giá tổng quát mức độ hiệu quả của mô hình phân hệ gợi ý sẽ dao động trong khoảng từ 50% đến 100%, kết quả càng cao thì mức độ hiệu quả của sản phẩm gợi ý càng cao, nghĩa là sản phẩm gợi ý được người dùng thêm vào giỏ hàng hoặc mua càng nhiều

Theo kết quả hiển thị như hình 7.1, mức độ tương tác đối với sản phẩm gợi ý liên quan(gợi ý theo sản phẩm) và sản phẩm gợi ý cho mỗi người dùng(gợi ý theo người dùng) lần lượt là 81.03% và 92.14% cho thấy tỉ lệ tương tác thêm vào giỏ hàng và đặt hàng khá cao.

Đánh giá performance

Để đánh giá hiệu suất của website, chúng tôi sử dụng JMeter để mô phỏng nhiều người dùng truy cập đồng thời Quá trình kiểm tra được thực hiện trên các trang chính của website đã triển khai trên các tên miền như Heroku và Azure.

Ta sẽ thực hiện đánh giá performance khi nhiều người dùng cùng truy cập cho các trang của hệ thống như trang chủ khi người dùng chưa đăng nhập, trang danh sách từng loại sản phẩm, trang chủ khi người dùng đăng nhập, hiển thị danh sách sản phẩm tìm kiếm theo từ khoá, …

Ta sẽ thiết lập thông số về số lượng người dùng truy cập như hình sau đây:

Hình 7.2: thiết lập thông số về số người dùng truy cập và thời gian kiểm tra

Tuỳ từng trường hợp khác nhau mà ta sẽ thiết lập các thông số khác nhau như là số lượng người dùng truy cập khác nhau trong khoảng thời gian khác nhau

Tiếp đến ta sẽ tạo 1 HTTP Request Default để thiết lập các thông tin website mà ta thực hiện kiểm tra Các thông tin cấu hình như sau:

Hình 7.3: thiết lập thông tin website mà ta thực hiện kiểm tra

Website mà ta thực hiện kiểm tra có tên miền là https://luanvanbeta2.azurewebsites.net/, ta sẽ thực hiện kiểm tra chạy ở port 80 Để đánh giá tổng quá performance của website, ta sẽ sử dụng dạng report Aggregate Report của Jmeter Ta sẽ dựa vào các thông tin sau đây để kiểm tra performance của website:

• Label: hiển thị tên của từng requests trong test plan

• # Samples: tổng số lần chạy của request Ta có giá trị của # Samples: # Samples

Hiệu suất phản hồi của một trang web được tính bằng công thức: (Số người dùng) * (Số lần lặp) Trong quá trình kiểm tra, số lượng người dùng sẽ khác nhau, do các trang khác nhau có tỷ lệ đáp ứng yêu cầu của người dùng khác nhau Chúng tôi sử dụng số lần lặp là 1 và thực hiện kiểm tra nhiều lần để đảm bảo tính chính xác.

• Average (millisecond): Thời gian phản hồi trung bình (Response Time) của request, tính cho đến lần chạy cuối cùng

• Min(millisecond): thời gian đáp ứng thấp nhất (nhanh nhất) của tất cả các request

• Maximum(millisecond): thời gian đáp ứng cao nhất (lâu nhất) của tất cả các request

• 90% Line(millisecond): nghĩa là 90% số requests sẽ có thời gian đáp ứng nhỏ hơn giá trị hiển thị trong bảng, 10% số requests còn lại sẽ có thời gian đáp ứng lớn hơn giá trị hiển thị trong bảng

• Tương tự, 95% Line: nghĩa là 95% số request sẽ có thời gian đáp ứng nhỏ hơn giá trị hiển thị trong bảng, 5% số requests còn lại sẽ có thời gian đáp ứng lớn hơn giá trị hiển thị trong bảng

• Median (millisecond): nghĩa là 50% số request sẽ có thời gian đáp ứng nhỏ hơn giá trị hiển thị trong bảng, 50% còn lại sẽ có thời gian đáp ứng lớn hơn giá trị hiển thị trong bảng

• Error %: % số lượng request bị lỗi

• Throughput: thông lượng, biểu thị số lượng request được xử lý trong một đơn vị thời gian(có thể là giây, phút, giờ) Ví dụ: giá trị throughput hiển thị là 24.4/min nghĩa là trong một phút sẽ có khoảng 24 request được xử lý

• Received KB/sec và Sent KB/sec cũng là thông lượng nhưng đo bằng số lượng

KB gửi hoặc nhận trong một đơn vị thời gian thay vì đo theo số lượng request trong một đơn vị thời gian

7.2.1 Đánh giá trang chủ của website khi người dùng chưa đăng nhập

Trường hợp người dùng chưa đăng nhập sẽ khác với trường hợp người dùng đăng nhập, thông số thiết lập cũng sẽ khác nhau

Trước tiên, ta sẽ bắt đầu kiểm tra cho trang chủ của website trong trường hợp người dùng chưa đăng nhập

Giao diện trang chủ như sau:

Hình 7.4: giao diện trang chủ trong trường hợp người dùng chưa đăng nhập

Ta sẽ tiến hành đánh giá hiệu năng truy cập khi nhiều người dùng truy cập vào trang chủ này Để làm điều này, ta sẽ tạo một HTTP Request Ta sẽ thiết lập thông tin cho HTTP Request này như sau:

Hình 7.5: thiết lập HTTP Request để kiểm tra trang chủ khi chưa đăng nhập

Ta sẽ đặt tên cho HTTP Request này là HomePage Phương thức để truy cập vào trang này là phương thức get Ta sẽ thực hiện kiểm tra khi người dùng truy cập vào trang chủ theo đường dẫn là http://luanvanbeta2.azurewebsites.net/

Trong phần này, ta sẽ thực hiện đánh giá nhiều trường hợp khác nhau trong các trường hợp số người dùng truy cập khác nhau

Ta sẽ sử dụng Listener là Aggregate Report để nhận kết quả Kết quả mô phỏng như sau:

Ta sẽ thực hiện 6 lần kiểm tra trang chủ khi người dùng chưa đăng nhập, với số lượng người dùng truy cập khác nhau và theo kết quả hiển thị cho thấy:

• Website có khả năng đáp ứng cho 250 người cùng truy cập(Error % = 0%)

• Thời gian phản hồi trung bình dao động trong khoảng 3.4 – 3.7s

• Giá trị Median qua các lần test chênh lệch không nhiều, trung bình khoảng 3464.2 ms ị Trung bỡnh khoảng 50% số lượng request cú thời gian đỏp ứng nhỏ hơn 3464.2 ms

• Qua 6 lần kiểm tra ta thấy thời gian đáp ứng nhanh nhất khoảng 3215 ms, chậm nhất 16546 ms

7.2.2 Đánh giá trang danh sách từng loại sản phẩm

Trang danh mục sản phẩm Laptop có giao diện gồm: thanh tìm kiếm, bộ lọc, danh sách sản phẩm và phân trang Trong đó, danh sách sản phẩm hiển thị hình ảnh, tên sản phẩm, giá và nút xem chi tiết Bộ lọc giúp người dùng dễ dàng tìm kiếm sản phẩm theo các tiêu chí như hãng sản xuất, mức giá, cấu hình và hệ điều hành.

Hình 7.6: trang danh sách từng loại sản phẩm

Ta cũng sẽ kiểm tra hiệu năng của trang này khi nhiều người dùng đồng thời truy cập Ta sẽ tiến hành tạo HTTP Request với các thông tin như sau:

Hình 7.7: thiết lập HTTP Request để kiểm tra trang danh sách sản phẩm

Trong website của chúng ta, để truy cập vào danh sách sản phẩm này, ta sẽ sử dụng phương thức get với đường dẫn là: /specific-product, tham số cho phương thức get này là type_of_product Với trường hợp danh sách sản phẩm là Laptop thì giá trị type_of_product=laptop

Kết quả đánh giá như sau:

TỔNG KẾT

Những điều đã thực hiện được

Thông qua quá trình tìm hiểu và phân tích nghiệp vụ của các website thương mại điện tử cũng như các website cung cấp dịch vụ nhạc hay phim đã giúp tôi có cái nhìn tổng quan cũng như nắm rõ cơ chế cũng như lợi ích và tầm quan trọng của việc tích hợp các phân hệ gợi ý vào hệ thống thương mại điện tử

Quá trình thực hiện đề tài này đã giúp tôi có cơ hội tìm hiểu về ngôn ngữ Python và các thư viện của Python để áp dụng các mô hình machine learning cũng như các phân hệ gợi ý vào hệ thống thương mại điện tử Bên cạnh đó tôi còn có cơ hội tìm hiểu và sử dụng NodeJS và các framework như Bootstrap 4 để xây dựng website thương mại điện tử rồi từ đó tích hợp các phân hệ gợi ý và chatbot vào website.

Đánh giá hệ thống

Xây dựng được một website có tích hợp phân hệ gợi ý và có khả năng gợi ý sản phẩm cho người dùng dựa trên lịch sử tương tác cũng như gợi ý các sản phẩm gần gũi với một sản phẩm cụ thể nào đó

Tích hợp được chatbot có khả năng trả lời tự động tin nhắn của người dùng, hỗ trợ người dùng đặt hàng trên chatbot

Xây dựng được một website tương tác tốt với người dùng

Hỗ trợ người dùng đặt hàng, mua hàng trực tiếp trên website

8.2.2 Những hạn chế chưa thực hiện được

Chatbot chưa phân biệt được nhiều ngữ cảnh tin nhắn hơn

Chưa thể cấu hình kịch bản cũng như thông tin kết nối cho chatbot

Chưa hỗ trợ nhiều phương thức thanh toán hơn khi đặt hàng bằng hệ thống cũng như trong chatbot

Kỹ thuật bảo mật của website chưa thật sự tốt

Giao diện còn tồn tại một vài khuyết điểm

Thời gian đáp ứng của website chưa đủ nhanh

Chưa đầy đủ các chức năng, một số chức năng chưa thật sự tốt.

Ngày đăng: 31/07/2024, 10:20

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Giới thiệu về nền tảng messenger. Truy cập 28/6/2021, từ https://developers.facebook.com/docs/messenger-platform/introduction/ Sách, tạp chí
Tiêu đề: Giới thiệu về nền tảng messenger
[2] The Python Tutorial. Truy cập 15/7/2021, từ https://docs.python.org/3/tutorial/ Sách, tạp chí
Tiêu đề: The Python Tutorial
[3] Python Tutorial. Truy cập 15/7/2021, từ https://www.w3schools.com/python/ Sách, tạp chí
Tiêu đề: Python Tutorial
[4] MySQL là gì? Hướng dẫn toàn tập về MySQL. Truy cập 15/7/2021, từ https://wiki.matbao.net/mysql-la-gi-huong-dan-toan-tap-ve-mysql/ Sách, tạp chí
Tiêu đề: MySQL là gì? Hướng dẫn toàn tập về MySQL
[5] Refsnes Data (1998). Node.js MySQL. Truy cập 15/7/2021, từ https://www.w3schools.com/nodejs/nodejs_mysql.asp Sách, tạp chí
Tiêu đề: Node.js MySQL
Tác giả: Refsnes Data
Năm: 1998
[6] Refsnes Data (1998). Node.js Tutorial. Truy cập 20/7/2021, từ https://www.w3schools.com/nodejs/nodejs_mysql.asp Sách, tạp chí
Tiêu đề: Node.js Tutorial
Tác giả: Refsnes Data
Năm: 1998
[7] Node.js – Express Framework. Truy cập 15/7/2021, từ https://www.tutorialspoint.com/nodejs/nodejs_express_framework.htm Sách, tạp chí
Tiêu đề: Node.js – Express Framework
[8] [MVC] Routes & Controllers. Truy cập 28/5/2021, từ https://www.youtube.com/watch?v=Pd_ZIpCVZPc&list=PL_-VfJajZj0VatBpaXkEHK_UPHL7dW6I3&index=18 Sách, tạp chí
Tiêu đề: [MVC] Routes & Controllers
[10] Vũ Hữu Tiệp (2017). Bài 6: K-nearest neighbors. Truy cập 23/7/2021, từ https://machinelearningcoban.com/2017/01/08/knn/ Sách, tạp chí
Tiêu đề: Bài 6: K-nearest neighbors
Tác giả: Vũ Hữu Tiệp
Năm: 2017
[11] Vũ Hữu Tiệp (2017). Bài 23: Content-Based Recommendation Systems. Truy cập 23/7/2021, từhttps://machinelearningcoban.com/2017/05/17/contentbasedrecommendersys/ Sách, tạp chí
Tiêu đề: Bài 23: Content-Based Recommendation Systems
Tác giả: Vũ Hữu Tiệp
Năm: 2017
[12] Vũ Hữu Tiệp (2017). Bài 24: Neighborhood-Based Collaborative Filtering. Truy cập 23/7/2021, từ https://machinelearningcoban.com/2017/05/24/collaborativefiltering/ Sách, tạp chí
Tiêu đề: Bài 24: Neighborhood-Based Collaborative Filtering
Tác giả: Vũ Hữu Tiệp
Năm: 2017
[13] Introduction to Recommender System. Truy cập 15/6/2021, từ https://towardsdatascience.com/intro-to-recommender-system-collaborative-filtering-64a238194a26 Sách, tạp chí
Tiêu đề: Introduction to Recommender System
[14] Tomer Ben Rachel (2021). How to Use Nodemailer to Send Emails from Your Node.js Server. Truy cập 12/6/2021, từ https://www.freecodecamp.org/news/use-nodemailer-to-send-emails-from-your-node-js-server/ Sách, tạp chí
Tiêu đề: How to Use Nodemailer to Send Emails from Your Node.js Server
Tác giả: Tomer Ben Rachel
Năm: 2021
[15] Get started with Bootstrap. Truy cập 1/7/2021, từ https://getbootstrap.com/docs/4.0/getting-started/introduction/[16] Javascript Tutorial. Truy cập 10/7/2021, từ Sách, tạp chí
Tiêu đề: Get started with Bootstrap". Truy cập 1/7/2021, từ https://getbootstrap.com/docs/4.0/getting-started/introduction/ [16] "Javascript Tutorial
[9] Paypal Guide: Install Payment Notification Guide – Paypal: 11-43 Khác

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w