Đặc biệt, với sự phát triển mạnh mẽ của các thuật toán và trí tuệ nhân tạo, các hệ thống đề xuất thông minh Recommendation System đang ngày càng được áp dụng rộng rãi, giúp nâng cao trải
Giới thiệu đề tài
Giới thiệu đề tài
Thị trường thời trang trực tuyến đang bùng nổ nhờ công nghệ số và thói quen mua sắm trực tuyến, trong đó hệ thống gợi ý sản phẩm đóng vai trò quan trọng trong việc cá nhân hóa trải nghiệm người dùng Đề tài "Xây dựng hệ thống quản lý và gợi ý sản phẩm cho website bán hàng thời trang trực tuyến" ứng dụng trí tuệ nhân tạo và học máy nhằm tối ưu hóa quản lý và cung cấp gợi ý sản phẩm phù hợp cho từng khách hàng Qua đó, đề tài không chỉ đáp ứng nhu cầu thị trường mà còn khai thác tiềm năng công nghệ hiện đại, mang lại lợi ích vượt trội cho người dùng và doanh nghiệp.
Lý do chọn đề tài
Thị trường thời trang trực tuyến đang bùng nổ, tạo cơ hội lớn cho việc áp dụng công nghệ tiên tiến nhằm cải thiện trải nghiệm mua sắm Hệ thống gợi ý sản phẩm cá nhân hóa phân tích dữ liệu hành vi người dùng để đưa ra những đề xuất phù hợp với sở thích và phong cách riêng của từng khách hàng Điều này không chỉ nâng cao trải nghiệm người dùng mà còn tiết kiệm thời gian tìm kiếm, giúp việc mua sắm trở nên nhanh chóng và tiện lợi hơn.
Hệ thống gợi ý là công cụ tối ưu hóa doanh thu hiệu quả cho cửa hàng trực tuyến, giúp gia tăng giá trị đơn hàng và cải thiện tỷ lệ giữ chân khách hàng bằng cách giới thiệu sản phẩm liên quan hoặc phổ biến Đồng thời, việc ứng dụng các thuật toán học máy và trí tuệ nhân tạo trong đề tài này khai thác tiềm năng công nghệ hiện đại, phát triển giải pháp tự động hóa thông minh, thúc đẩy đổi mới và tăng cường năng lực cạnh tranh cho doanh nghiệp.
Mục tiêu nghiên cứu
Đề tài này phân tích và thiết kế một hệ thống quản lý bán hàng trực tuyến, tập trung vào phát triển hệ thống gợi ý sản phẩm cá nhân hóa dựa trên dữ liệu người dùng Mục tiêu là mang đến trải nghiệm mua sắm tiện lợi và nhanh chóng cho khách hàng, đồng thời cải thiện hiệu quả kinh doanh cho doanh nghiệp thông qua các đề xuất chính xác Ngoài ra, đề tài còn đánh giá hiệu quả của hệ thống gợi ý trong việc nâng cao sự hài lòng của người dùng và tối ưu hóa giá trị đơn hàng, áp dụng các tiến bộ trong trí tuệ nhân tạo và học máy để tạo ra giải pháp thông minh và hiện đại.
Tìm hiểu lí thuyết
Hệ thống thông minh (Intelligent System)
Kết nối người dùng với trí tuệ nhân tạo (học máy) để đạt được các mục tiêu có ý nghĩa.
Hệ thống thông minh là những hệ thống máy tính có khả năng tự động thực hiện các nhiệm vụ mà trước đây chỉ con người mới làm được, bao gồm phân tích, ra quyết định và học hỏi từ dữ liệu Chúng sử dụng trí tuệ nhân tạo (AI), học máy và các công nghệ xử lý dữ liệu phức tạp khác để hoạt động hiệu quả trong môi trường không chắc chắn, nhằm đạt được các mục tiêu nhất định.
Học máy và hệ thống thông minh
Học máy là một nhánh của trí tuệ nhân tạo, chuyên phát triển các thuật toán và mô hình máy tính có khả năng học hỏi từ dữ liệu mà không cần lập trình cụ thể cho từng tác vụ Bằng cách phân tích và nhận dạng mẫu trong dữ liệu, học máy giúp hệ thống tự động cải thiện hiệu suất và đưa ra quyết định chính xác hơn.
Mục tiêu của học máy là giúp máy tính tự học và đưa ra dự đoán hay quyết định mà không cần can thiệp từ con người Thay vì lập trình cho từng nhiệm vụ cụ thể, người dùng chỉ cần cung cấp dữ liệu, và mô hình sẽ tự động học cách xử lý dữ liệu để thực hiện các tác vụ phức tạp như phân loại, dự đoán và nhận diện mẫu.
Học máy có nhiều loại, bao gồm:
Học giám sát là phương pháp mà mô hình được đào tạo trên tập dữ liệu đã được gán nhãn, trong đó mỗi đầu vào tương ứng với một đầu ra mong muốn Một ví dụ điển hình là việc phân loại email thành "spam" hoặc "không spam" dựa trên dữ liệu đã biết trước.
Học không giám sát (Unsupervised Learning) là phương pháp học máy không cần dữ liệu đã gán nhãn, cho phép hệ thống tự động phát hiện các mẫu và mối quan hệ ẩn trong dữ liệu Một ví dụ điển hình là việc phân nhóm khách hàng dựa trên hành vi mua sắm mà không cần thông tin nhãn trước.
Học tăng cường (Reinforcement Learning) là một phương pháp học máy, trong đó một tác nhân học cách hành động trong môi trường để tối ưu hóa kết quả thông qua phần thưởng hoặc hình phạt Ví dụ điển hình là một robot tự động điều chỉnh hành vi của nó nhằm di chuyển hiệu quả hơn.
Hệ thống thông minh là một nhánh của trí tuệ nhân tạo (AI) nhằm phát triển các hệ thống có khả năng hoạt động và ra quyết định tương tự như con người Những hệ thống này có khả năng tự học hỏi, suy luận và đưa ra quyết định dựa trên dữ liệu và thông tin thu thập được Trí tuệ nhân tạo bao gồm các kỹ thuật và công nghệ như xử lý ngôn ngữ tự nhiên, nhận diện hình ảnh, và học máy.
Mục tiêu của trí tuệ nhân tạo (AI) là phát triển các hệ thống có khả năng thực hiện những nhiệm vụ trí tuệ mà con người thường làm, bao gồm giải quyết vấn đề, hiểu ngôn ngữ, nhận diện hình ảnh và ra quyết định AI không chỉ mô phỏng trí tuệ con người mà còn mở rộng khả năng này thông qua việc xử lý và phân tích khối lượng dữ liệu lớn một cách nhanh chóng và hiệu quả.
Xây dựng và triển khai hệ thống thông minh
Xây dựng hệ thống thông minh là một quá trình phức tạp và đòi hỏi sự cân nhắc kỹ lưỡng Quy trình này thường bao gồm các bước sau:
Thu thập và xử lý dữ liệu là bước đầu tiên và quan trọng nhất trong quy trình phát triển mô hình AI Dữ liệu được thu thập từ nhiều nguồn khác nhau, bao gồm cả dữ liệu có cấu trúc như cơ sở dữ liệu và bảng tính, cũng như dữ liệu phi cấu trúc như hình ảnh và văn bản Sau khi thu thập, dữ liệu cần được xử lý để loại bỏ nhiễu, chuẩn hóa và chuyển đổi thành định dạng có thể sử dụng cho mô hình AI.
Sau khi dữ liệu được chuẩn bị, việc lựa chọn mô hình AI phù hợp là bước quan trọng tiếp theo Quyết định này phụ thuộc vào đặc điểm của dữ liệu và yêu cầu cụ thể của hệ thống, bao gồm các loại mô hình như học máy giám sát, không giám sát, hoặc học tăng cường.
Quá trình huấn luyện mô hình AI bao gồm việc áp dụng dữ liệu vào hệ thống để giúp nó "học" nhận diện các mẫu Qua các chu kỳ huấn luyện, mô hình cải thiện khả năng dự đoán và ra quyết định, từ đó nâng cao hiệu suất của nó.
Kiểm thử và đánh giá là bước quan trọng sau khi mô hình được huấn luyện Trong giai đoạn này, mô hình sẽ được kiểm tra trên một tập dữ liệu mới nhằm đảm bảo khả năng dự đoán chính xác trong các tình huống thực tế.
Để nâng cao hiệu suất của hệ thống, cần áp dụng các kỹ thuật tối ưu hóa như điều chỉnh siêu tham số, mở rộng dữ liệu huấn luyện và thay đổi kiến trúc mô hình nếu chưa đạt được kết quả mong muốn.
Triển khai hệ thống thông minh là giai đoạn cuối cùng trong quá trình phát triển, khi mô hình đã được xây dựng và kiểm thử kỹ lưỡng Việc tích hợp vào các ứng dụng hoặc hệ thống vận hành thực tế cần đảm bảo hệ thống hoạt động ổn định, có khả năng mở rộng và được giám sát thường xuyên để phát hiện các vấn đề trong quá trình hoạt động.
Tổ chức hệ thống thông minh là quá trình phối hợp các thành phần như bộ thu thập dữ liệu, bộ xử lý dữ liệu, mô hình AI và giao diện người dùng, nhằm đảm bảo hiệu suất và khả năng tương tác tối ưu Việc sắp xếp hiệu quả các thành phần này không chỉ cải thiện quy trình xử lý mà còn nâng cao trải nghiệm người dùng.
Trong quá trình phát triển hệ thống thông minh, việc giải quyết các vấn đề trade-offs là rất quan trọng để đạt được sự cân bằng tối ưu giữa các yếu tố khác nhau.
Trong quá trình phát triển mô hình, việc cân nhắc giữa độ chính xác và tốc độ xử lý là rất quan trọng Đôi khi, để đạt được tốc độ nhanh hơn, bạn có thể phải hy sinh một phần độ chính xác Chẳng hạn, một mô hình có thể mang lại dự đoán chính xác hơn nhưng yêu cầu nhiều tính toán, dẫn đến việc giảm tốc độ phản hồi.
Trong việc phát triển hệ thống thông minh, cần cân nhắc giữa tiêu chuẩn đạo đức và hiệu suất, đặc biệt khi sử dụng dữ liệu nhạy cảm có thể vi phạm quyền riêng tư của người dùng Đạo đức trong xây dựng hệ thống là yếu tố quan trọng để bảo vệ quyền lợi cá nhân và xã hội, đồng thời tránh sự thiên vị trong quyết định của hệ thống Các hệ thống AI có thể vô tình tiếp nhận thiên vị từ dữ liệu, dẫn đến kết quả không công bằng, vì vậy cần thiết lập biện pháp kiểm soát để phát hiện và ngăn chặn những vấn đề này Các vấn đề đạo đức trong AI ngày càng trở nên quan trọng trong cộng đồng nghiên cứu và ứng dụng công nghệ.
Phân tích thiết kế
Mô tả hệ thống bằng ngôn ngữ tự nhiên
Hệ thống bán quần áo trực tuyến bao gồm các thành phần chính như khách hàng, nhân viên quản lý, thông tin tài khoản và mặt hàng quần áo Nó tích hợp với các nhà cung cấp để duy trì danh mục sản phẩm, đồng thời hỗ trợ hệ thống gợi ý sản phẩm dựa trên sở thích và hành vi mua sắm của người dùng.
Khách hàng là người dùng cuối của hệ thống, bao gồm cá nhân và tổ chức có nhu cầu mua sắm quần áo Họ có thể tạo tài khoản trên hệ thống để lưu trữ thông tin cá nhân, địa chỉ giao hàng và theo dõi lịch sử đơn hàng.
Hệ thống hỗ trợ khách hàng tìm kiếm và duyệt danh mục sản phẩm, cho phép thêm sản phẩm vào giỏ hàng và thanh toán trực tuyến dễ dàng Ngoài ra, hệ thống còn gợi ý sản phẩm dựa trên thói quen mua sắm và sở thích trước đây, nâng cao trải nghiệm mua sắm của khách hàng.
+ Nhân viên quản lý là những người điều hành và quản trị hệ thống bán quần áo.
+ Họ có quyền truy cập vào các chức năng quản lý quan trọng như quản lý tài khoản khách hàng, sản phẩm, và đơn hàng.
Họ có chức năng tạo, chỉnh sửa và xóa bản ghi sản phẩm quần áo, quản lý trạng thái đơn hàng, đồng thời hỗ trợ khách hàng khi gặp vấn đề phát sinh.
+ Thông tin tài khoản là phần của hệ thống lưu trữ thông tin cá nhân của khách hàng và nhân viên quản lý.
+ Đối với khách hàng, thông tin tài khoản bao gồm tên, địa chỉ, thông tin liên hệ, và lịch sử mua hàng.
+ Đối với nhân viên quản lý, thông tin tài khoản bao gồm quyền hạn để quản lý sản phẩm, danh mục, và đơn hàng.
- Các mặt hàng Quần áo
+ Các mặt hàng quần áo là tập hợp các sản phẩm thời trang có sẵn để bán trên hệ thống.
+ Mỗi sản phẩm quần áo có thông tin cụ thể như tên sản phẩm, mô tả, kích thước, màu sắc, giá cả, và số lượng tồn kho.
Các sản phẩm được phân loại thành nhiều danh mục khác nhau, giúp khách hàng dễ dàng tìm kiếm và lựa chọn Hệ thống cũng cung cấp gợi ý về các sản phẩm tương tự hoặc phù hợp với sở thích của khách hàng.
+ Nhà cung cấp là các đối tác cung cấp sản phẩm quần áo cho hệ thống bán hàng.
Hệ thống quản lý thông tin nhà cung cấp lưu trữ tên, địa chỉ và thông tin liên hệ, giúp quản lý quy trình nhập hàng hiệu quả và đảm bảo danh mục sản phẩm luôn được cập nhật đầy đủ.
Công nghệ và tài nguyên sử dụng
NodeJS là môi trường chạy JavaScript bên ngoài trình duyệt, cho phép phát triển ứng dụng web một cách linh hoạt Nó bao gồm nhiều thành phần và thư viện, giúp NodeJS hoạt động hiệu quả như một máy chủ ứng dụng web.
Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên
Javascript Runtime của Chrome mà chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng
Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ
Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao
Node.js là nền tảng lý tưởng để phát triển các ứng dụng có tốc độ xử lý nhanh và khả năng tương tác thời gian thực Nó phù hợp cho các sản phẩm có lượng truy cập lớn, yêu cầu khả năng mở rộng nhanh chóng, cũng như đáp ứng nhu cầu đổi mới công nghệ Đặc biệt, Node.js là lựa chọn tuyệt vời cho các dự án khởi nghiệp muốn ra mắt trong thời gian ngắn nhất.
Express.js là một framework web mạnh mẽ cho Node.js, giúp xây dựng ứng dụng web và API nhanh chóng và hiệu quả Với công cụ đơn giản và linh hoạt, Express.js cho phép các nhà phát triển triển khai ứng dụng phía máy chủ dễ dàng mà không cần viết nhiều mã.
Những đặc điểm nổi bật của Express.js bao gồm:
● Đơn giản và nhẹ: Express.js cung cấp một lớp trừu tượng tối giản trên nền tảng
Node.js, giúp xây dựng ứng dụng web dễ dàng mà vẫn duy trì hiệu suất cao.
Hệ thống định tuyến của Express.js rất mạnh mẽ và linh hoạt, cho phép người dùng dễ dàng định nghĩa các URL và quản lý cách xử lý chúng một cách trực quan.
Express.js cung cấp hỗ trợ mạnh mẽ cho middleware, cho phép thực hiện các tác vụ như xác thực, ghi log và xử lý dữ liệu trước khi gửi phản hồi đến client.
● Tối ưu hóa cho API RESTful: Express.js đặc biệt phù hợp để phát triển các API
RESTful, giúp quản lý và triển khai các dịch vụ web hiệu quả.
Express.js cho phép tích hợp dễ dàng với các hệ quản trị cơ sở dữ liệu như MongoDB, MySQL và PostgreSQL, giúp quản lý và xử lý dữ liệu trong ứng dụng một cách hiệu quả.
Với các đặc tính trên, Express.js là lựa chọn lý tưởng để phát triển các ứng dụng web linh hoạt và hiện đại.
NoSQL (Not Only SQL) là cơ sở dữ liệu phi quan hệ, được phát triển để khắc phục hạn chế của cơ sở dữ liệu quan hệ truyền thống, đặc biệt trong việc xử lý dữ liệu lớn và không đồng nhất Xuất hiện vào cuối những năm 2000, NoSQL nhanh chóng trở thành lựa chọn phổ biến cho các ứng dụng cần khả năng mở rộng và tốc độ xử lý nhanh, đặc biệt trong các dịch vụ trực tuyến và mạng xã hội.
NoSQL nổi bật với khả năng mở rộng theo chiều ngang, cho phép bổ sung máy chủ dễ dàng mà không làm giảm hiệu suất Hệ thống này hỗ trợ nhiều mô hình dữ liệu như document-based (MongoDB), key-value (Redis), column-family (Cassandra), và graph-based (Neo4j), mang lại sự linh hoạt trong việc xử lý dữ liệu phức tạp.
NoSQL cung cấp tính linh hoạt vượt trội trong việc lưu trữ dữ liệu không đồng nhất mà không cần cấu trúc bảng cố định, điều này rất có lợi cho các ứng dụng đang thay đổi và phát triển dữ liệu liên tục Hơn nữa, khả năng chịu lỗi và tính sẵn sàng cao của NoSQL đảm bảo hệ thống hoạt động liên tục mà không bị gián đoạn, nhờ vào việc phân tán dữ liệu qua nhiều máy chủ.
Tóm lại, NoSQL là lựa chọn lý tưởng cho các ứng dụng hiện đại yêu cầu xử lý dữ liệu lớn, khả năng mở rộng và hiệu suất cao.
MongoDB là cơ sở dữ liệu NoSQL mã nguồn mở, chuyên lưu trữ và xử lý dữ liệu phi cấu trúc, với khả năng mở rộng vượt trội Phát triển bởi 10gen, hiện nay được biết đến với tên gọi MongoDB Inc.
Ra đời vào năm 2007, MongoDB Inc đã nhanh chóng trở thành một trong những hệ quản trị cơ sở dữ liệu phổ biến nhất trong cộng đồng phát triển phần mềm Sử dụng mô hình dữ liệu dạng tài liệu (document-oriented), MongoDB lưu trữ dữ liệu dưới dạng tài liệu BSON (Binary JSON), thay vì các bảng dữ liệu như trong cơ sở dữ liệu quan hệ Điều này mang lại sự linh hoạt lớn trong việc xử lý dữ liệu có cấu trúc không đồng nhất và khả năng mở rộng quy mô dễ dàng.
MongoDB nổi bật với khả năng mở rộng theo chiều ngang, cho phép người dùng dễ dàng thêm máy chủ mới khi khối lượng dữ liệu tăng lên mà không làm gián đoạn hệ thống Ngoài ra, MongoDB hỗ trợ sao chép và phân tán dữ liệu giữa các máy chủ, đảm bảo tính khả dụng và phục hồi nhanh chóng khi có sự cố xảy ra.
MongoDB nổi bật với tính linh hoạt trong lưu trữ dữ liệu, cho phép lưu trữ dưới dạng tài liệu JSON/BSON với cấu trúc khác nhau mà không cần tuân theo định dạng cố định như trong cơ sở dữ liệu quan hệ Điều này làm cho MongoDB trở thành lựa chọn lý tưởng cho các ứng dụng có dữ liệu không đồng nhất hoặc thay đổi thường xuyên Ngoài ra, MongoDB cung cấp các tính năng mạnh mẽ như truy vấn dữ liệu nhanh chóng, tìm kiếm toàn văn và tích hợp dễ dàng với các công cụ phân tích dữ liệu, giúp các nhà phát triển xây dựng ứng dụng web và di động linh hoạt, hiệu quả.
MongoDB là một cơ sở dữ liệu mạnh mẽ và linh hoạt, lý tưởng cho các ứng dụng cần xử lý dữ liệu lớn và không cấu trúc Khả năng mở rộng dễ dàng của nó khiến MongoDB trở thành lựa chọn hàng đầu trong phát triển ứng dụng hiện đại.
HTML (HyperText Markup Language) là ngôn ngữ đánh dấu chuẩn được sử dụng để xây dựng và phát triển trang web trên Internet Được Tim Berners-Lee, người sáng lập World Wide Web, phát triển vào năm 1991, HTML không phải là ngôn ngữ lập trình mà là công cụ mô tả cấu trúc của các trang web thông qua các thẻ đánh dấu Với khả năng tạo ra nội dung tĩnh dễ dàng, HTML cho phép người dùng xây dựng giao diện web một cách đơn giản, bao gồm văn bản, hình ảnh, liên kết và mã nhúng Nó định nghĩa các thành phần cơ bản của trang web như đầu trang, thân trang, danh sách, bảng biểu, hình ảnh và liên kết.
Sơ đồ phân cấp chức năng
Hình 1 Sơ đồ User Case
4.1 Sơ đồ các chức năng cụ thể đối với quản lý
4.1.1 Chức năng quản lý sản phẩm
Hình 2 Sơ đồ phân cấp chức năng
Hình 3 Sơ đồ chức năng quản lý sản phẩm
Sơ đồ chức năng quản lí đơn hàng
Hình 4 Sơ đồ chức năng quản lý đơn hàng
Mô tả chi tiết các chức năng:
- Thêm sản phẩm mới: Khi có nhu cầu thêm sản phẩm mới người quản lý sẽ tiến hành nhập thông tin của sản phẩm để mở thêm mới.
Khi phát hiện thông tin sản phẩm không chính xác hoặc cần thay đổi, người quản lý có thể chỉnh sửa các thông tin như tên và loại sản phẩm Tuy nhiên, mã sản phẩm không thể được sửa đổi.
- Xóa sản phẩm: Khi sản phẩm không còn được bán nữa thì người quản lý có thể xóa.
4.1.2 Chức năng quản lý đơn hàng
Mô tả chi tiết các chức năng:
- Xem danh sách và trạng thái đơn hàng:
Người quản lý có khả năng truy cập danh sách tất cả các đơn hàng đã được đặt trên hệ thống, bao gồm các thông tin chi tiết như mã đơn hàng, tên người đặt hàng, ngày đặt hàng, sản phẩm và tổng giá trị đơn hàng.
+ Người quản lý cũng có thể xem trạng thái hiện tại của từng đơn hàng, ví dụ như
"Waiting", "Pending", "Shipped", "Delivered", "Cancelled"
- Cập nhật trạng thái đơn hàng:
Người quản lý có khả năng thay đổi trạng thái đơn hàng theo tiến trình thực tế, chẳng hạn như chuyển từ "Pending" sang "Shipped" Khi đơn hàng đã ở trạng thái "Shipped", việc hủy đơn hàng sẽ không còn khả thi.
Chức năng này theo dõi và đảm bảo quy trình xử lý đơn hàng diễn ra suôn sẻ, đồng thời thông báo kịp thời cho người mua về tình trạng đơn hàng của họ.
4.1.3 Chức năng quản lý thanh toán
Hình 5 Sơ đồ chức năng quản lý thanh toán
Mô tả chi tiết chức năng:
- Xem và theo dõi trạng thái thanh toán:
+ Hệ thống quản lý thanh toán cho phép người quản trị và người dùng xem trạng thái của các giao dịch thanh toán.
+ Người dùng có thể theo dõi chi tiết về các giao dịch đã hoàn tất, đang chờ xử lý, hay bị hủy.
+ Mỗi giao dịch sẽ có các thông tin liên quan như ngày thanh toán, tổng số tiền, và phương thức thanh toán.
- Quản lý các giao dịch thanh toán:
+ Người quản trị có thể xem toàn bộ các giao dịch thanh toán đã được thực hiện trên hệ thống.
Tính năng này giúp quản lý lịch sử thanh toán của tất cả người dùng, đồng thời cung cấp các công cụ tìm kiếm và lọc theo thời gian, trạng thái hoặc người dùng.
+ Người quản trị có thể thực hiện các hành động như xác nhận hoặc hủy thanh toán.
4.2 Sơ đồ các chức năng đối với người dùng
4.2.1 Chức năng xem sản phẩm
Mô tả chi tiết các chức năng:
- Duyệt và tìm kiếm sản phẩm sẵn có:
+ Người dùng có thể duyệt qua danh mục sản phẩm trên website để tìm kiếm các sản phẩm mà họ quan tâm.
Hệ thống của chúng tôi cung cấp các công cụ lọc và tìm kiếm hiệu quả, cho phép người dùng tìm kiếm theo tên, danh mục, giá cả, cũng như các đặc điểm cụ thể như màu sắc, kích thước và thương hiệu.
+ Người dùng có thể dễ dàng tìm kiếm sản phẩm dựa trên từ khóa hoặc sử dụng các bộ lọc để thu hẹp lựa chọn.
- Xem thông tin chi tiết sản phẩm
Sơ đồ chức năng quản lý thanh toán
Sơ đồ chức năng xem sản phẩm
Hình 6 Sơ đồ chức năng xem sản phẩm
Khi lựa chọn một sản phẩm, người dùng có thể xem thông tin chi tiết như tên, mô tả, giá cả, kích thước, màu sắc và số lượng còn lại trong kho.
Hình ảnh sản phẩm, đánh giá từ người dùng khác và các tùy chọn liên quan được hiển thị để hỗ trợ người dùng trong việc đưa ra quyết định mua sắm.
Hệ thống sẽ đề xuất những sản phẩm liên quan, bao gồm các sản phẩm mà người dùng có khả năng thích dựa trên dự đoán, cũng như những sản phẩm tương đồng với sản phẩm mà người dùng đã chọn.
4.2.2 Chức năng quản lý giỏ hàng
Mô tả chi tiết chức năng:
+ Người dùng có thể thêm các sản phẩm vào giỏ hàng của mình khi duyệt qua danh mục sản phẩm.
+ Khi chọn một sản phẩm, người dùng có thể chọn kích cỡ, màu sắc (nếu có), và số lượng trước khi thêm vào giỏ hàng.
+ Sản phẩm được thêm vào giỏ hàng sẽ được lưu trong database của người dùng và hiển thị trong danh sách giỏ hàng.
- Cập nhật số lượng sản phẩm:
+ Người dùng có thể chỉnh sửa số lượng của mỗi sản phẩm trong giỏ hàng trực tiếp từ trang giỏ hàng.
+ Hệ thống sẽ tự động cập nhật lại giá trị tổng cộng của giỏ hàng mỗi khi số lượng sản phẩm thay đổi.
+ Người dùng có thể loại bỏ bất kỳ sản phẩm nào không muốn mua nữa ra khỏi giỏ hàng.
+ Khi xóa sản phẩm, giỏ hàng sẽ được cập nhật và hiển thị lại danh sách các sản phẩm còn lại cũng như tổng giá trị mới.
- Xem tổng giá trị giỏ hàng:
+ Người dùng có thể xem tổng giá trị của tất cả các sản phẩm trong giỏ hàng, bao gồm tổng giá sản phẩm và phí vận chuyển (nếu có).
Sơ đồ chức năng quản lý giỏ hàng
Hình 7 Sơ đồ chức năng quản lý giỏ hàng
+ Hệ thống sẽ tính toán và hiển thị tổng số tiền cần thanh toán để người dùng có thể xác nhận trước khi tiếp tục đến bước thanh toán.
Mô tả chi tiết chức năng:
- Tạo đơn hàng từ giỏ hàng:
+ Sau khi người dùng hoàn tất việc chọn sản phẩm và cập nhật giỏ hàng, họ có thể tiến hành đặt hàng từ giỏ hàng.
+ Hệ thống sẽ yêu cầu người dùng cung cấp hoặc xác nhận thông tin giao hàng và phương thức thanh toán.
Sau khi thông tin được xác nhận, hệ thống sẽ tạo đơn hàng mới với các sản phẩm trong giỏ hàng, tổng giá trị, phí vận chuyển (nếu có), và trạng thái ban đầu của đơn hàng sẽ là "Pending".
4.2.4 Chức năng quản lý tài khoản
Mô tả chi tiết chức năng:
Sơ đồ chức năng quản lí tài khoản
Hình 8 Sơ đồ chức năng đặt hàng
Hình 9 Sơ đồ chức năng quản lý tài khoản
Người dùng mới có thể dễ dàng đăng ký tài khoản bằng cách cung cấp thông tin cần thiết như tên, email, mật khẩu và các chi tiết liên quan khác.
+ Sau khi hoàn tất đăng ký, tài khoản sẽ được tạo và lưu trữ trong cơ sở dữ liệu.
+ Người dùng có thể nhận được email xác nhận để kích hoạt tài khoản (nếu hệ thống yêu cầu).
Người dùng có thể đăng nhập vào tài khoản của mình bằng cách nhập email và mật khẩu Sau khi xác thực thành công, hệ thống sẽ tạo một phiên làm việc hoặc token (JWT) để giữ cho trạng thái đăng nhập được duy trì.
+ Sau khi đăng nhập, người dùng có thể truy cập vào các chức năng cá nhân như giỏ hàng, đơn hàng và hồ sơ cá nhân.
- Cập nhật thông tin tài khoản:
Người dùng có thể dễ dàng truy cập trang cá nhân để cập nhật thông tin tài khoản, bao gồm tên, email, mật khẩu, địa chỉ giao hàng và các thông tin liên hệ khác.
+ Sau khi cập nhật, thông tin mới sẽ được lưu vào cơ sở dữ liệu và sẽ có hiệu lực ngay lập tức.
4.2.5 Chức năng xem lịch sử đơn hàng
Mô tả chi tiết chức năng:
- Xem lịch sử đơn hàng đã đặt:
+ Người dùng có thể xem danh sách tất cả các đơn hàng đã đặt trước đó thông qua giao diện lịch sử đơn hàng.
Danh sách này cung cấp thông tin cơ bản về từng đơn hàng, bao gồm mã đơn hàng, ngày đặt hàng, tổng giá trị và các sản phẩm đã được mua.
- Xem trạng thái đơn hàng:
+ Người dùng có thể theo dõi trạng thái hiện tại của từng đơn hàng, chẳng hạn như
"Đang xử lý", "Đã giao hàng", "Đã hủy", hoặc "Đang chờ thanh toán".
Sơ đồ chức năng xem lịch sử đơn hàng
Hình 10 Sơ đồ chức năng xem lịch sử đơn hàng
+ Trạng thái đơn hàng giúp người dùng biết được đơn hàng của họ đang ở giai đoạn nào trong quá trình xử lý và vận chuyển.
4.2.6 Chức năng quản lý đánh giá sản phẩm
Mô tả chi tiết chức năng:
Người dùng có thể xem lại các sản phẩm đã đánh giá bằng cách truy cập vào mục “Đánh giá sản phẩm” Tại đây, họ sẽ thấy danh sách đầy đủ các sản phẩm đã từng đánh giá, bao gồm tên sản phẩm, hình ảnh và mức độ đánh giá.
ERD
Hình 12 Mô hình erd quản lý website bán quần áo
Mỗi sản phẩm trong hệ thống đều có một ID tự sinh từ MongoDB và một slug URL-friendly duy nhất Sản phẩm có thể có nhiều biến thể khác nhau, mỗi biến thể có thuộc tính về màu sắc, kích thước (sizes) và hình ảnh riêng Ví dụ, sản phẩm "Áo thun baby tee" có hai biến thể: biến thể 1 màu đen với các size S, M, L, XL và hình ảnh tương ứng; biến thể 2 màu trắng cũng với các size S, M, L, XL Mỗi sản phẩm thuộc về một danh mục (category) cụ thể Khi xóa sản phẩm, nếu sản phẩm chưa nằm trong đơn hàng hay đơn nhập nào, nó sẽ bị xóa vĩnh viễn; nếu không, trường isUsed sẽ được gán là false để giữ lại sản phẩm Khi truy vấn, chỉ các sản phẩm có trường isUsed là true mới được hiển thị Admin có quyền chỉnh sửa sản phẩm, bao gồm việc giữ nguyên hoặc thay đổi hình ảnh cho từng biến thể; các hình ảnh bị thay đổi sẽ bị xóa khỏi cơ sở dữ liệu để tránh dư thừa dữ liệu.
+ User sẽ có 2 role là Admin và Customer.
- Admin có quyền các chức năng quản lý các user, quản lý category, quản lý sản phẩm, quản lý băng rôn, quản lý đơn hàng, quản lý nhập hàng,…
- Customer có quyền chỉnh sửa thông tin cá nhân, địa chỉ nhận hàng, mật khẩu của mình.
Mỗi khách hàng có thể quản lý một giỏ hàng riêng, với quyền thêm hoặc xóa sản phẩm theo ý muốn Khách hàng cũng có khả năng xem lại lịch sử các đơn đặt hàng trước đó và quản lý danh sách đánh giá sản phẩm của mình.
Each order consists of an array of order items, which are the products being purchased, along with the order status ("Waiting," "Pending," "Shipped," "Delivered," "Cancelled"), the order date, and the delivery address Every order is associated with a specific customer, and the admin has the authority to view and modify the order status.
Đơn nhập hàng bao gồm importOrderItems, là một mảng các biến thể của sản phẩm, bao gồm size, giá nhập và số lượng Ví dụ, đơn đặt hàng có thể chứa 5 sản phẩm "Áo thun baby tee" màu đen, size M và 15 sản phẩm "Áo thun baby tee" màu trắng, size L Ngoài ra, đơn nhập còn ghi rõ ngày tạo đơn, ngày nhận đơn và tổng số tiền của đơn hàng.
Danh mục (category) cần có tên và slug, với slug là phiên bản URL-friendly của tên danh mục Điều này là bắt buộc và phải đảm bảo tính duy nhất Quản trị viên có quyền thêm, xóa hoặc sửa các danh mục chưa được gán cho sản phẩm nào.
Người dùng có quyền lựa chọn phương thức thanh toán trực tuyến qua VNPAY hoặc thanh toán khi nhận hàng Hệ thống cung cấp các trạng thái thanh toán để quản lý tình trạng giao dịch, xác định xem đơn hàng đã được thanh toán hay chưa Mỗi giao dịch thanh toán sẽ tương ứng với một đơn hàng cụ thể.
Từ điển dữ liệu
FK FOREIGN KEY (KHÓA NGOẠI)
Thuộc tính Kiểu dữ liệu
Mô tả Quy tắc/Điều kiện lastName String Họ của người dùng Bắt buộc firstName String Tên của người dùng Bắt buộc email String Email người dùng (duy nhất)
Bắt buộc, duy nhất password String Mật khẩu người dùng Bắt buộc role String Vai trò của người dùng
"Admin" address Array of Danh sách địa chỉ của người Mặc định là mảng
The address object requires specific fields: `address.lastName` (String) for the last name, `address.firstName` (String) for the first name, and `address.phone` (String) for the phone number, all of which are mandatory Additionally, the `address.isDefault` (Boolean) indicates whether the address is the default one, with a default value set accordingly.
The address details include mandatory fields such as the city ID and name, district ID and name, ward ID and name, and a specific street address Additionally, the account creation date is set to the current date by default, and order history is maintained as an array.
Lịch sử đơn hàng (tham chiếu đến bảng Order)
FK, Mặc định là mảng rỗng cart Array of
Giỏ hàng Mặc định là mảng rỗng cart.product ObjectId Sản phẩm trong giỏ hàng,
Tham chiếu đến bảng Product
The article outlines essential product attributes for a shopping cart, including the required quantity as a number, size as a string, and color as a string Additionally, it specifies the necessity of providing a birth date and includes a gender attribute, which defaults to 0, indicating male (0: Male).
Objects Đánh giá sản phẩm Mặc định là mảng rỗng ratings.product ObjectId Sản phẩm được đánh giá,
Tham chiếu đến bảng Product
FK, Bắt buộc ratings.isRated Boolean Trạng thái đã đánh giá Mặc định là False ratings.rating Number Điểm đánh giá sản phẩm Bắt buộc, Giá trị từ
1 đến 5 ratings.comment String Bình luận về sản phẩm Bắt buộc avatar String Đường dẫn ảnh đại diện Giá trị mặc định:
"public/image s/default- avatar.jpg" otp.code String Mã OTP - otp.expiresAt Date Thời điểm mã OTP hết hạn -
Bài viết mô tả các thuộc tính của sản phẩm bao gồm: tên sản phẩm (name) là kiểu dữ liệu String và bắt buộc, slug sản phẩm (slug) cũng là kiểu String, yêu cầu phải duy nhất, mô tả sản phẩm (description) là kiểu String và không bắt buộc, danh mục sản phẩm (category) là ObjectId, bắt buộc phải tham chiếu đến bảng Category, và cuối cùng là các biến thể sản phẩm (variants) dưới dạng mảng.
Các biến thể sản phẩm (màu sắc, kích cỡ, hình ảnh)
Mặc định là mảng rỗng variants.colorNa me
String Tên màu sắc của biến thể sản phẩm
Bắt buộc variants.size Array of
Danh sách kích cỡ và số lượng tồn kho
String Tên kích cỡ, ví dụ: "S", "M",
Bắt buộc variants.size.stoc k
Number Số lượng sản phẩm trong kho ứng với kích cỡ
Bắt buộc variants.imageUrl String Đường dẫn hình ảnh của biến thể sản phẩm
Bắt buộc variants.isUsed Boolean Trạng thái hoạt động của biến thể sản phẩm
The default value for the product price is set to true, with a numerical format required The creation date of the product is recorded as 'createdAt', defaulting to the current date The product view count, labeled as 'views', starts at zero by default The 'isUsed' status is a boolean indicating whether the product is in use, defaulting to true Additionally, reviews are stored in an array format.
Danh sách đánh giá từ người dùng
Mặc định là mảng rỗng reviews.user ObjectId Người dùng đã đánh giá(Tham chiếu đến bảng User)
FK, bắt buộc reviews.rating Number Điểm đánh giá Bắt buộc, Giá trị từ
1 đến 5 reviews.comment String Bình luận đánh giá Bắt buộc averageRating Number Điểm đánh giá trung bình của sản phẩm
Giá trị mặc định là 0
3 Category (Danh mục sản phẩm)
Dữ liệu danh mục bao gồm các kiểu dữ liệu như sau: tên danh mục (name) là một chuỗi bắt buộc; slug (slug) là một chuỗi duy nhất và cũng là bắt buộc; đường dẫn hình ảnh của danh mục (imageUrl) được định dạng dưới dạng chuỗi Tất cả các trường này cần được tuân thủ theo quy tắc và điều kiện đã đề ra.
Thuộc tính Kiểu dữ liệu Mô tả Quy tắc/Điều kiện user ObjectId Người dùng đặt hàng (tham chiếu đến bảng User)
FK, Bắt buộc payment ObjectId Phương thức thanh toán FK orderItems Array of
Danh sách các sản phẩm trong đơn hàng
Mặc định là mảng rỗng orderItems.produ ct
ObjectId Sản phẩm trong đơn hàng
(Tham chiếu đến bảng Product)
FK, Bắt buộc orderItems.quanti ty
Number Số lượng sản phẩm Bắt buộc orderItems.price Number Giá sản phẩm tại thời điểm mua
Bắt buộc orderItems.size String Kích cỡ sản phẩm Bắt buộc orderItems.color String Màu sắc sản phẩm Bắt buộc orderItems.image
String Đường dẫn ảnh sản phẩm Bắt buộc shippingAddress Object Địa chỉ giao hàng Bắt buộc shippingAddress. lastName
String Họ trong địa chỉ giao hàng Bắt buộc shippingAddress. firstName
String Tên trong địa chỉ giao hàng Bắt buộc shippingAddress. phone
String Số điện thoại người nhận Bắt buộc shippingAddress. isDefault
Boolean Địa chỉ mặc định Giá trị mặc định:
String Mã thành phố Bắt buộc shippingAddress. city.name
String Tên thành phố Bắt buộc shippingAddress. district.id
String Mã quận/huyện Bắt buộc shippingAddress. district.name
String Tên quận/huyện Bắt buộc shippingAddress. ward.id
String Mã phường/xã Bắt buộc shippingAddress. ward.name
Tên phường/xã là thông tin bắt buộc trong địa chỉ giao hàng, cùng với tên đường hoặc địa chỉ cụ thể Ngày tạo đơn hàng mặc định là ngày hiện tại, và trạng thái đơn hàng có các giá trị cho phép nhất định.
Bắt buộc, mặc định là "Waiting" isPaid Boolean Trạng thái thanh toán của đơn hàng
Mặc định là false totalCost Number Tổng chi phí của đơn hàng Bắt buộc shippingFee Number Phí vận chuyển Bắt buộc
Thuộc tính Kiểu dữ liệu Mô tả Quy tắc/Điều kiện user ObjectId Người dùng thanh toán
(tham chiếu đến bảng User)
FK, Bắt buộc order ObjectId Đơn hàng đã thanh toán
(tham chiếu đến bảng Order)
FK, Bắt buộc paymentMethod String Phương thức thanh toán
"VNPAY", "ByCash". paidAt Date Thời gian thanh toán
(Nếu không có tức chưa thanh toán) createdAt Date Ngày tạo giao dịch thanh Mặc định là ngày hiện toán tại
Thuộc tính Kiểu dữ liệu Mô tả Quy tắc/Điều kiện orderItems Array Danh sách sản phẩm trong phiếu nhập.
- orderItems.product ObjectId Sản phẩm trong đơn hàng
(Tham chiếu đến bảng Product)
FK, Bắt buộc orderItems.quantity Number Số lượng sản phẩm Bắt buộc orderItems.price Number Giá sản phẩm tại thời điểm mua
The order must include the size of the product as a string (orderItems.size), the color of the product as a string (orderItems.color), and the image URL as a string (orderItems.imageUrl) Additionally, it is essential to specify the total cost of the order as a number (totalCost).
Bắt buộc receivedAt Date Ngày nhận hàng - createdAt Date Ngày tạo đơn hàng Giá trị mặc định:
Date.now status String Giá trị mặc định:
"Pending", các giá trị cho phép: "Pending",
Trạng thái của đơn hàng
Thiết kế thông minh
Công cụ
Python là ngôn ngữ lập trình bậc cao, nổi bật với tính đơn giản và dễ sử dụng, đồng thời vẫn đảm bảo sức mạnh và khả năng mở rộng Ngôn ngữ này được phát triển nhằm phục vụ nhu cầu lập trình hiệu quả và linh hoạt.
Python, được Guido van Rossum phát triển vào năm 1991, đã trở thành một ngôn ngữ lập trình hàng đầu trong nhiều lĩnh vực như phát triển ứng dụng, phân tích dữ liệu, trí tuệ nhân tạo (AI) và học máy Sự thu hút của Python đến từ cú pháp rõ ràng, dễ đọc cùng với một hệ sinh thái phong phú các thư viện hỗ trợ, giúp người dùng dễ dàng phát triển và triển khai các ứng dụng phức tạp.
Python nổi bật với sự tiện lợi trong phát triển phần mềm nhờ tính đa nền tảng, khả năng tích hợp linh hoạt với các ngôn ngữ khác và tốc độ triển khai nhanh Những yếu tố này đã giúp Python trở thành lựa chọn hàng đầu cho cả lập trình viên mới và các chuyên gia trong lĩnh vực công nghệ tiên tiến.
Python là ngôn ngữ lập trình quan trọng trong phát triển hệ thống trí tuệ nhân tạo, nhờ vào tính năng mạnh mẽ và khả năng hỗ trợ đa dạng.
● Thư viện và Framework chuyên biệt
Python có một hệ sinh thái thư viện và framework phong phú, đặc biệt cho các ứng dụng AI Các thư viện như TensorFlow, PyTorch, và Keras cung cấp công cụ mạnh mẽ để xây dựng và huấn luyện mô hình học sâu Bên cạnh đó, NumPy và Pandas giúp tối ưu hóa xử lý dữ liệu, trong khi Scikit-learn hỗ trợ triển khai các thuật toán học máy truyền thống.
● Khả năng tích hợp và mở rộng
Ngôn ngữ Python hỗ trợ tích hợp linh hoạt với các công cụ và ngôn ngữ lập trình khác như C hoặc C++, giúp tăng tốc độ xử lý và tối ưu hóa hiệu suất Điều này rất quan trọng cho các ứng dụng AI cần tính toán lớn và phức tạp, đồng thời đơn giản hóa quá trình phát triển và thử nghiệm.
Python nổi bật với khả năng giảm thiểu độ phức tạp trong phát triển phần mềm Cú pháp gần gũi với ngôn ngữ tự nhiên giúp lập trình viên dễ dàng biến ý tưởng thành hiện thực Điều này đặc biệt hữu ích trong việc xây dựng các nguyên mẫu AI, cho phép thử nghiệm nhanh chóng và hiệu quả.
● Hỗ trợ từ cộng đồng và tài liệu phong phú
Python sở hữu một cộng đồng phát triển mạnh mẽ, cung cấp nhiều tài nguyên và tài liệu hữu ích Điều này giúp lập trình viên dễ dàng tiếp cận kiến thức chuyên môn, tìm giải pháp cho các vấn đề kỹ thuật và sử dụng các công cụ hỗ trợ học tập hiệu quả.
FastAPI là một framework hiện đại và hiệu năng cao, lý tưởng cho việc xây dựng API web bằng Python Dựa trên chuẩn ASGI, FastAPI tận dụng lập trình bất đồng bộ để cung cấp khả năng xử lý song song mạnh mẽ Với tính dễ sử dụng và tốc độ cao, FastAPI phù hợp cho phát triển ứng dụng API RESTful, đồng thời tích hợp các tiêu chuẩn hiện đại như OpenAPI và JSON Schema.
FastAPI được thiết kế để tối ưu hóa trải nghiệm lập trình bằng cách giảm thiểu lỗi và tăng năng suất, đồng thời hỗ trợ kiểu dữ liệu tĩnh của Python Điều này không chỉ nâng cao hiệu quả phát triển mà còn đảm bảo chất lượng và độ tin cậy của mã nguồn Framework này còn tích hợp các công cụ như Swagger UI và ReDoc để tự động sinh tài liệu API, giúp việc tương tác và kiểm thử trở nên dễ dàng hơn.
FastAPI nổi bật nhờ sự kết hợp giữa hiệu năng vượt trội và tính năng phong phú.
FastAPI, được xây dựng trên nền tảng Starlette và Pydantic, mang lại hiệu suất tương đương với các framework nổi tiếng như Node.js và Go trong việc xử lý yêu cầu HTTP Nhờ đó, FastAPI trở thành sự lựa chọn lý tưởng cho các ứng dụng cần xử lý nhiều kết nối đồng thời và yêu cầu phản hồi nhanh chóng.
Hỗ trợ kiểu dữ liệu tĩnh
FastAPI tận dụng hiệu quả type hints trong Python để tự động kiểm tra kiểu dữ liệu và xác thực đầu vào, giúp phát hiện lỗi sớm trong quá trình phát triển và nâng cao khả năng tự động tạo tài liệu API.
Tích hợp tiêu chuẩn hiện đại
Framework này hỗ trợ các chuẩn công nghiệp như OpenAPI, OAuth2 và JSON Schema, giúp lập trình viên dễ dàng xây dựng API tuân thủ quy định quốc tế Tính năng này rất hữu ích cho các hệ thống lớn, nơi khả năng tích hợp và tương tác là yếu tố quan trọng.
FastAPI tự động tạo tài liệu API thông qua giao diện đồ họa như Swagger UI và ReDoc, giúp tiết kiệm thời gian viết tài liệu Tính năng này không chỉ tăng cường tính trực quan khi làm việc với API mà còn cải thiện giao tiếp giữa các nhóm phát triển.
Tương thích với lập trình bất đồng bộ
FastAPI hỗ trợ các từ khóa async và await, giúp lập trình viên khai thác tối đa khả năng của lập trình bất đồng bộ Điều này rất quan trọng cho các ứng dụng cần xử lý song song hoặc thực hiện các truy vấn I/O lớn.
Hệ thống đề xuất sản phẩm cho người dùng dựa trên hành vi của một người dùng khác
2.1 Tìm hiểu lý thuyết a Thu thập và xử lý dữ liệu
Dữ liệu khách hàng, hay còn gọi là ma trận người dùng-sản phẩm, lưu trữ thông tin về các sản phẩm như quần áo mà người dùng đã mua, đánh giá hoặc thêm vào giỏ hàng Dữ liệu này được tổ chức dưới dạng bảng, giúp dễ dàng theo dõi và phân tích hành vi của người tiêu dùng.
+ Hàng (rows): Đại diện cho từng người dùng (user).
+ Cột (columns): Đại diện cho các sản phẩm (items), ví dụ: áo, quần, váy, phụ kiện.
Giá trị trong bảng phản ánh đánh giá của người dùng cho sản phẩm, sử dụng thang điểm từ 1 đến 5 Nếu người dùng chưa thực hiện giao dịch hoặc tương tác với sản phẩm, giá trị sẽ là 0 hoặc để trống.
Phương pháp Collaborative Filtering xác định mức độ quan tâm của người dùng đối với một sản phẩm dựa trên sở thích của những người dùng tương tự Sự tương đồng giữa các người dùng được đánh giá thông qua mức độ quan tâm của họ đối với các sản phẩm khác đã được hệ thống ghi nhận Ví dụ, nếu người dùng A và B đều đánh giá áo 1 với 5 sao, điều này cho thấy họ có sở thích tương đồng.
Ta đã biết A cũng thích áo 2, vậy nhiều khả năng B cũng thích chiếc áo này.
Hai câu hỏi quan trọng nhất trong một hệ thống Collaborative Filtering là:
+ Làm thế nào xác định được sự giống nhau giữa hai users?
+ Khi đã xác định được các users gần giống nhau (similar users) rồi, làm thế nào dự đoán được mức độ quan tâm của một user lên một item?
User -user collaborative filtering là phương pháp xác định mức độ quan tâm của từng người dùng đối với một sản phẩm dựa trên sự quan tâm của những người dùng tương tự Tuy nhiên, một phương pháp khác được cho là hiệu quả hơn là item-item collaborative filtering, trong đó hệ thống tập trung vào việc xác định sự tương đồng giữa các sản phẩm Nhờ vào cách tiếp cận này, hệ thống có thể gợi ý những sản phẩm tương tự mà người dùng đã quan tâm nhiều.
Trong User-user Collaborative Filtering, bước quan trọng nhất là xác định sự giống nhau giữa hai người dùng Dữ liệu duy nhất có sẵn là ma trận Utility Y, vì vậy sự tương đồng này được đánh giá dựa trên các cột tương ứng của hai người dùng trong ma trận Ví dụ minh họa có thể thấy trong Hình 1.
Ví dụ về utility matrix dựa trên số sao một user rate cho một item
Giả sử có bảy người dùng từ u0 đến u6 và năm mục từ i0 đến i4, trong đó các số trong ô vuông biểu thị số sao mà mỗi người dùng đã đánh giá cho mục, với giá trị cao hơn thể hiện mức độ quan tâm lớn hơn Các dấu hỏi chấm đại diện cho các giá trị mà hệ thống cần tìm kiếm Mức độ tương đồng giữa hai người dùng ui và uj được xác định bởi sim(ui, uj).
Trong nghiên cứu này, chúng ta nhận thấy rằng các người dùng u0 và u1 có xu hướng ưa thích các mục i0, i1, i2, trong khi không mấy ưa chuộng các mục i3, i4 Ngược lại, các người dùng khác lại thể hiện sự thích thú với các mục này Do đó, một hàm tương đồng hiệu quả cần đảm bảo rằng sim(u0, u1) phải lớn hơn sim(u0, u1) cho mọi mục i lớn hơn 1.
Để đánh giá mức độ quan tâm của u0 đối với i2, chúng ta cần xem xét hành vi của u1 đối với sản phẩm này Vì u1 đã thể hiện sự thích thú với i2, hệ thống nên đề xuất i2 cho u0.
Câu hỏi quan trọng là hàm số similarity nào là hiệu quả nhất trong việc đo lường sự tương đồng giữa hai người dùng Để thực hiện điều này, cần xây dựng feature vector cho mỗi người dùng và áp dụng hàm đo similarity giữa các vector đó Thông tin duy nhất mà chúng ta có về mỗi người dùng là các ratings mà họ đã thực hiện, thể hiện qua các cột trong Utility matrix Tuy nhiên, vấn đề lớn là nhiều cột thường có rất nhiều giá trị missing, do mỗi người dùng chỉ rating một số lượng nhỏ các items Giải pháp là tìm cách điền các giá trị này mà không làm ảnh hưởng nhiều đến độ tương đồng giữa các vector, với mục đích duy nhất là tính toán similarity, không phải để suy luận giá trị cuối cùng.
Để hạn chế sai lệch khi thay thế các dấu ‘?’, một lựa chọn là sử dụng giá trị ‘0’, nhưng điều này không khả thi vì nó thể hiện mức độ quan tâm thấp nhất Giá trị an toàn hơn là 2.5, là trung bình cộng của 0 và 5 Tuy nhiên, giá trị này có thể không phù hợp với người dùng dễ tính, những người thường cho 5 sao cho các sản phẩm họ thích và có thể cho 3 sao cho những sản phẩm ít ưa thích Ngược lại, với người dùng khó tính, họ có thể chỉ cho 3 sao cho sản phẩm yêu thích và ít sao hơn cho các sản phẩm không thích, dẫn đến việc giá trị 2.5 có thể tạo ra sự tiêu cực cho cả hai nhóm người dùng.
Một cách tiếp cận khả thi hơn là sử dụng trung bình cộng của các đánh giá mà người dùng đã thực hiện Phương pháp này giúp giảm thiểu ảnh hưởng từ những người dùng quá khắt khe hoặc dễ dãi, đảm bảo rằng luôn có những sản phẩm mà người dùng ưa thích hơn những sản phẩm khác.
Giá trị trung bình của ratings cho mỗi user, như thể hiện trong Hình a, cho thấy người dùng dễ tính có giá trị cao hơn Khi thực hiện bước chuẩn hóa bằng cách trừ giá trị này từ mỗi rating và thay thế các giá trị chưa biết bằng 0, chúng ta tạo ra ma trận tiện ích chuẩn hóa như trong Hình b Bước chuẩn hóa này rất quan trọng vì nó giúp cải thiện độ chính xác của các dự đoán trong hệ thống gợi ý.
Việc trừ đi trung bình cộng từ mỗi cột giúp tạo ra các giá trị dương và âm Các giá trị dương thể hiện sự yêu thích của người dùng đối với item, trong khi các giá trị âm cho thấy sự không thích Giá trị bằng 0 cho biết chưa xác định được cảm xúc của người dùng đối với item đó.
Về mặt kỹ thuật, utility matrix có kích thước lớn với hàng triệu người dùng và mục, dẫn đến việc lưu trữ toàn bộ các giá trị trong một ma trận sẽ tốn nhiều bộ nhớ Do số lượng đánh giá thường rất nhỏ so với kích thước của utility matrix, việc lưu trữ dưới dạng sparse matrix, chỉ ghi lại các giá trị khác không và vị trí của chúng, là giải pháp tối ưu hơn Các dấu ‘?’ nên được thay thế bằng giá trị ‘0’ để thể hiện rằng chưa xác định liệu người dùng có thích mục hay không Phương pháp này không chỉ giúp tiết kiệm bộ nhớ mà còn cải thiện hiệu quả tính toán similarity matrix sau này.
Sau khi đã chuẩn hóa dữ liệu như trên, một vài similarity function thường được sử dụng là:
Cosine Similarity là hàm phổ biến và quen thuộc, thường được sử dụng để đo độ tương đồng giữa hai vectơ Nếu bạn quên công thức tính cosine của góc giữa hai vectơ u1 và u2 từ chương trình học phổ thông, dưới đây là công thức cần nhớ.
Giao diện UI
3.1 Giao diện đăng nhập, đăng ký
Hình 13 Màn hình đăng nhập
Cần nhập đầy đủ các trường:
Nếu không có mật khẩu nhấn “Không có tài khoản? Đăng ký ngay”
Hình 14 Màn hình đăng ký
Cần nhập đầy đủ thông tin các trường
- Last Name: Không được bỏ trống
- First Name: Không được bỏ trống
- Email: Cần nhập đúng định dạng và email phải chưa có trong hệ thống
- Password: Không được bỏ trống
- Confirm Password: Nhập lại mật khẩu phải trùng khớp với mật khẩu
- Address: Không được bỏ trống
- Gender: Chọn nam hoặc nữ
- Phone: Nhập số điện thoại (10 số)
3.2 Giao diện của người quản lý
3.2.1 Giao diện quản lý sản phẩm
Hình 15 Quản lý sản phẩm
Người dùng có quyền xem, sửa, xóa sản phẩm, kiểm tra tồn kho, sắp xếp theo giá tăng dần, giảm dần,
Hình 16 Màn hình thêm, sửa sản phẩm 1
Hình 17 Màn hình thêm, sửa sản phẩm 2
Người dùng cần nhập các trường yêu cầu theo quy định sau
- Name không được để trống, tối thiểu 3 ký tự
- Slug phải đảm bảo pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
- Description không được để trống
- Category không được để trống
- Color name không được để trống
Quản lý các category hiện có Có quyền xóa các category chưa có sản phẩm nào.
Hình 19 Màn hình thêm, sửa category
Cần nhập đầy đủ các trường yêu cầu
- Name: không được bỏ trống, tối thiểu 3 ký tự.
- Slug: không được để trống, đảm bảo pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$.
- File Image: chọn file hình ảnh đại diện cho category.
Hình 20 Màn hình quản lý đơn hàng
Bạn có thể xem thông tin chi tiết của đơn hàng bao gồm mã đơn, ngày đặt hàng, ngày nhận hàng (nếu đã giao), trạng thái đơn hàng, trạng thái thanh toán và giá trị đơn hàng Ngoài ra, có nút để xem chi tiết đơn hàng.
- Sắp xếp đơn hàng theo ngày nhận tăng dần, giảm dần, giá tăng dần, giảm dần,
- Lọc đơn hàng theo trạng thái đơn, lọc theo khoảng ngày đặt hàng.
Hình 21 Màn hình xem chi tiết đơn hàng
Bạn có thể xem chi tiết thông tin đơn hàng, bao gồm các sản phẩm đã đặt, số lượng, phương thức thanh toán, trạng thái đơn hàng và thanh toán, cũng như địa chỉ giao hàng và thông tin khách hàng.
- Có thể cancel đơn hàng nếu chưa bàn giao cho đơn vị vận chuyển.
- Có thể cập nhật trạng thái đơn hàng.
3.2.4 Quản lý đơn nhập hàng
Hình 22 Màn hình quản lý đơn nhập hàng
Bạn có thể xem thông tin chi tiết của đơn hàng bao gồm mã đơn, ngày đặt hàng, ngày nhận hàng (nếu đã giao), trạng thái đơn hàng, trạng thái thanh toán và giá trị đơn hàng Ngoài ra, có nút để xem chi tiết đơn hàng.
- Sắp xếp đơn hàng theo ngày nhận tăng dần, giảm dần, giá tăng dần, giảm dần,
- Lọc đơn hàng theo trạng thái đơn, lọc theo khoảng ngày đặt hàng.
Hình 23 Màn hình xem chi tiết đơn đặt hàng
- Xem được danh sách các đơn nhập hàng, số lượng đơn giá,
- Có thể thêm, xóa sản phẩm danh sách nhập hàng nếu đơn hàng không ở trạng thái hoàn thành.
- Có thể thay đổi trạng thái đơn nhập (Nếu đơn nhập ở trạng thái hoàn thành thì không thể thay đổi).
Hình 24 Quản lý băng rôn
Hình 25 Quản lý băng rôn
- Thêm xóa sửa slider trong home page.
- Có thể xem review trực tiếp.
Hình 26 Quản lý price filter
- Chọn loại price filter (Lower price, Greater price, Range price).
- Quản lý (thêm, xóa) các price filter đang hoạt động.
- Có thể thay đổi thứ tự xuất hiện của các price filter.
3.3.1 Chỉnh sửa thông tin người dùng
Hình 27 Màn hình quản lý thông tin người dùng
Hình 28 Quản lý thông tin cá nhân
- Người dùng xem, sửa được thông tin cá nhân của mình.
- Thay đổi được ảnh đại diện.
3.3.2 Quản lý địa chỉ người dùng
Hình 29 Quản lý địa chỉ người dùng
Hình 30 Thay đổi thông tin địa chỉ người dùng
- Có thể quản lý (thêm, xóa, sửa) địa chỉ của mình.
- Có thế set địa chỉ mặc định (địa chỉ này sẽ được chọn khi thanh toán)
3.3.3 Thay đổi mật khẩu người dùng
Hình 31 Thay đổi mật khẩu người dùng
Hình 32 Nhập mã xác thực đổi mật khẩu
- Người dùng có quyền thay đổi mật khẩu (cần nhập đúng mật khẩu hiện tại)
- Khi nhập đúng mật khẩu và submit, cần phải nhập mã OTP được gửi về email của người dùng nếu nhập đúng thì thay đổi mật khẩu thành công
- Có thể yêu cầu gửi lại mã OTP (mỗi 30s)
3.3.4 Xem các đơn hàng đã đặt
Hình 33 Xem các đơn hàng đã đặt
Xem danh sách thông tin các đơn hàng đã đặt, bao gồm các sản phẩm, số lượng, mã đơn, ngày đặt, ngày giao, phí giao hàng, giá trị đơn hàng, địa chỉ giao hàng và trạng thái đặt hàng.
- Có thể lọc danh sách theo trạng thái đơn hàng.
3.3.5 Đánh giá và nhận xét sản phẩm
Hình 34 Giao diện đánh giá sản phẩm
Hình 35 Giao diện thực hiện đánh giá
Hình 36 Đánh giá sản phẩm thành công
- Xem được các sản phẩm đã đánh giá và chưa đánh giá.
- Có thể đánh giá các sản phẩm đã mua nhưng chưa đánh giá.
- Có thể sửa đánh giá các sản phẩm đã đánh giá.
Hình 37 Màn hình tất cả sản phẩm
- Xem các sản phẩm hiện có của website
- Có thể sắp xếp theo tên, giá
- Có thể lọc theo thể loại, khoảng giá.
Hình 38 Giao diện tìm kiếm sản phẩm
- Tìm kiếm các sản phẩm theo tên, thể loại, mô ta sản phẩm
3.3.8 Xem chi tiết sản phẩm
Hình 39 Xem chi tiết sản phẩm (1)
Hình 40 Xem chi tiết sản phẩm (2)
Hình 41 Xem chi tiết sản phẩm (3)
Hình 42 Đề xuất sản phẩm tương tự
- Xem chi tiết sản phẩm (hình ảnh, giá, màu sắc, số lượng, mô tả sản phẩm, )
- Thêm sản phẩm vào giỏ hàng
- Xem được các đánh giá của những người dùng đã trải nghiệm sản phẩm
- Đề xuất các sản phẩm tương tự sản phẩm đang xem
- Đề xuất các sản phẩm mà hệ thống dự đoán người dùng thích
- Người dùng chỉ được quyền chọn những màu sắc có số lượng tồn lớn hơn 0 để thêm vào giỏ hàng
Hình 43 Quản lý giỏ hàng
Hình 44 Màn hình giỏ hàng người dùng
- Người dùng có quyền xóa sản phẩm, tăng số lượng sản phẩm trong giỏ hàng của mình
- Người dùng có thể điều chỉnh địa chỉ nhận hàng (chọn địa chỉ có sản hoặc tạo địa chỉ nhận hàng mới).
- Người dùng chọn thanh toán bằng VNPay hoặc thanh toán khi nhận được hàng
- Hệ thống tính toán phí giao hàng và ngày dự kiến giao tùy thuộc vào địa chỉ nhận hàng của người dùng
Hình 45 Giao diện thanh toán
Khi người dùng xác nhận thanh toán qua VNPay, họ sẽ được chuyển đến trang thanh toán của VNPay với số tiền tương ứng và mã đơn hàng khớp với mã đơn trong hệ thống.
Nếu thành công màn hình hiển thị trạng thái thanh công hiện ra và đơn hàng được đặt ở trạng thái waiting
Hình 46 Thanh toán thành công
Nếu thất bại trở về màn hình giỏ hàng, và trạng thái đơn hàng được cập nhật là cancelled