KIẾN THỨC NỀN TẢNG
React Native
React Native là một framework mã nguồn mở cho phép phát triển ứng dụng di động đa nền tảng bằng JavaScript và các thành phần giao diện giống với React Được phát triển bởi Facebook, React Native nhanh chóng trở thành công nghệ phổ biến cho việc xây dựng ứng dụng trên iOS và Android.
React Native cho phép các nhà phát triển tạo ra ứng dụng di động chất lượng cao một cách nhanh chóng và hiệu quả Những tính năng nổi bật như tái sử dụng mã, tương thích đa nền tảng và khả năng live reload giúp cập nhật ứng dụng dễ dàng và nhanh chóng, mang lại kết quả ngay lập tức.
NodeJS
Node.js là nền tảng phát triển ứng dụng web mã nguồn mở dựa trên JavaScript, cho phép các nhà phát triển xây dựng các ứng dụng hiệu quả và nhanh chóng.
JavaScript để viết các ứng dụng server-side, điều này cho phép các nhà phát triển tạo ra các ứng dụng web động và hiệu quả hơn.
Node.js cung cấp nhiều thư viện và framework hỗ trợ cho việc phát triển ứng dụng web, giúp các nhà phát triển tạo ra những ứng dụng đa dạng và phức tạp.
Node.js hỗ trợ tích hợp với nhiều công nghệ khác như cơ sở dữ liệu, bảo mật và dịch vụ đám mây, giúp các nhà phát triển xây dựng ứng dụng web phức tạp và đáp ứng nhu cầu người dùng hiệu quả.
FireBase
HỆ THỐNG GỢI Ý RECOMMENDER SYSTEM
Khái niệm
Hệ thống gợi ý (Recommender System) là công cụ tự động đề xuất sản phẩm phù hợp với sở thích của người dùng, vượt trội hơn các thuật toán tìm kiếm truyền thống Bằng cách phân tích dữ liệu người dùng trước đó, hệ thống dự đoán và gợi ý các sản phẩm, tính năng hoặc dịch vụ liên quan, giúp nâng cao chất lượng dịch vụ ứng dụng và gia tăng lợi nhuận, đặc biệt trong lĩnh vực thương mại điện tử.
Hệ thống gợi ý (Recommender System) là một lĩnh vực quan trọng trong Học Máy với lịch sử lâu dài, bắt đầu từ năm 1990 khi Jussi Karlgren lần đầu đề cập trong một báo cáo kỹ thuật tại Đại Học Columbia Tuy nhiên, sự bùng nổ thực sự của hệ thống gợi ý chỉ diễn ra trong 10-15 năm qua, nhờ vào sự gia tăng tương tác trực tuyến của người dùng, sự phát triển mạnh mẽ của các sàn thương mại điện tử, và những tiến bộ trong ngành Khoa học dữ liệu.
Các thuật ngữ sau đây sẽ thường được sử dụng,
Đối tượng, hay người dùng mà hệ thống gợi ý hướng đến được gọi làusers,
Sản phẩm mà hệ thống đưa ra gợi ý được gọi làitems
Sự tương quan giữa các đối tượng và sản phẩm, mức độ quan tâm của đối tượng đối với sản phẩm đó được gọi làrating
Về phân loại, các Recommender Systems thường được chia thành hai nhóm lớn:
Content-based systems: hoạt động dựa vào đặc điểm của items
Collaborative filtering: hoạt động với sự cộng tác của users và rating.
Trong đề tài này, nhóm chúng em tập trung phát triển hệ thống gợi ý, RecommenderSystem theo hướng thứ nhất: Content-based systems
Utility matrix
Trong hệ thống gợi ý, hai thực thể chính là người dùng (users) và sản phẩm (items) Mỗi người dùng có mức độ quan tâm khác nhau đối với từng sản phẩm, được gọi là rating, và được gán giá trị cho từng cặp user-item Tất cả các rating, bao gồm cả những giá trị chưa biết cần dự đoán, tạo thành một ma trận được gọi là utility matrix.
Người dùng đánh giá các Items 1, 2, 3 theo thang điểm từ 0 đến 5, thể hiện mức độ quan tâm của họ Các dấu '?' chỉ ra rằng dữ liệu chưa có trong cơ sở dữ liệu, và hệ thống gợi ý cần thực hiện tính toán để dự đoán giá trị cho những vị trí này.
Trong hệ thống có nhiều người dùng và sản phẩm, mỗi người thường chỉ đánh giá một số ít sản phẩm, thậm chí một số không đánh giá gì Độ chính xác của hệ thống gợi ý sẽ được cải thiện khi có nhiều đánh giá hơn Do đó, các hệ thống luôn khuyến khích người dùng chia sẻ ý kiến về sản phẩm và đánh giá càng nhiều càng tốt Việc đánh giá không chỉ giúp người dùng khác nhận biết chất lượng sản phẩm mà còn giúp hệ thống hiểu sở thích của từng người dùng, từ đó đưa ra những đề xuất chính xác hơn cho những người dùng sau.
Content-based Recommendation Systems
Hệ thống gợi ý dựa trên nội dung (Content-based Recommendation Systems) là một phương pháp hiệu quả trong lĩnh vực gợi ý, cung cấp các gợi ý dựa trên đặc điểm của các mục tiêu Các hệ thống này phân tích và so sánh thuộc tính, đặc điểm hoặc nội dung của các mục tiêu với lịch sử và sở thích của người dùng, từ đó đưa ra các gợi ý tương tự.
Hệ thống gợi ý nội dung cá nhân hóa dựa trên sở thích của người dùng, tạo ra các gợi ý phù hợp thông qua việc phân tích đặc điểm và lịch sử quan tâm của họ, từ đó mang lại trải nghiệm gợi ý độc đáo và gần gũi hơn.
Hệ thống này hoạt động mà không cần thông tin từ người dùng khác để tạo ra gợi ý, mà thay vào đó, nó dựa vào nội dung của các mục tiêu Điều này giúp tránh những hạn chế liên quan đến việc thu thập thông tin từ người dùng.
Hệ thống gợi ý dựa trên nội dung dễ dàng triển khai và thực hiện trong thực tế Việc thu thập thông tin về nội dung của các mục tiêu thường khả thi và không tiêu tốn nhiều tài nguyên.
Nhược điểm của Content-based:
Hệ thống gợi ý dựa trên nội dung thường chỉ đề xuất các mục tiêu tương tự, dẫn đến việc thiếu sự đa dạng trong các gợi ý Điều này có thể khiến người dùng bỏ lỡ những sự khác biệt và những mục tiêu mới mà họ có thể quan tâm.
Hệ thống sẽ gặp khó khăn trong việc đưa ra gợi ý phù hợp nếu người dùng có sở thích mới mà không có thông tin tương tự trong cơ sở dữ liệu.
Hệ thống chỉ dựa vào thông tin hiện có về người dùng để đưa ra gợi ý, điều này dẫn đến việc giới hạn kiến thức của người dùng Nó không có khả năng khám phá sở thích mới hoặc những mục tiêu mà người dùng chưa từng tiếp xúc.
Khi mua sắm trực tuyến, hệ thống gợi ý dựa trên nội dung giúp người dùng tìm kiếm sản phẩm tương tự hoặc phù hợp với những mặt hàng đã thêm vào giỏ hàng Chẳng hạn, nếu người dùng đã chọn một đôi giày thể thao của một thương hiệu cụ thể, hệ thống sẽ đề xuất các sản phẩm khác cùng thương hiệu hoặc loại giày thể thao tương tự.
Gợi ý sản phẩm dựa trên các mặt hàng trong giỏ hàng giúp người dùng dễ dàng tìm kiếm những sản phẩm tương tự hoặc phù hợp, từ đó nâng cao trải nghiệm mua sắm của họ.
Hình 3.2: Cách thức hoạt động của Content-based Recommendation Systems
Mặt hạn chế trong thực tế của Content-based Recommendation Systems:
Content-based Recommendation Systems có thể gặp khó khăn trong việc đưa ra gợi ý cho các mục tiêu mới hoặc nằm ngoài những đặc điểm nội dung đã biết.
Hệ thống chỉ chú trọng vào sở thích đã được xác định của người dùng, dẫn đến việc không thể phát hiện ra những sở thích mới hoặc sự thay đổi trong sở thích của họ.
Hệ thống gợi ý dựa trên nội dung không thể nhận biết hoặc dự đoán các ý định, tâm trạng, và các yếu tố phi nội dung khác mà người dùng có thể quan tâm khi tìm kiếm gợi ý.
Collaborative filtering Recommendation Systems
Lọc cộng tác (Collaborative filtering) là một phương pháp trong hệ thống gợi ý, hoạt động dựa trên sự tương quan giữa người dùng, sản phẩm và đánh giá, nhằm xác định sản phẩm mà người dùng có khả năng thích dựa trên hành vi lựa chọn của những người dùng tương tự Phương pháp này giúp cải thiện trải nghiệm người dùng bằng cách cung cấp các gợi ý chính xác và cá nhân hóa hơn.
Hệ thống sử dụng thông tin từ người dùng để phân tích hành vi Bằng cách nhận diện các đặc điểm hành vi của những người dùng tương tự, hệ thống có khả năng dự đoán hành vi của các người dùng khác.
Đơn giản, không cần phải mô tả đặc điểm mỗi item như Content-base
Nhược điểm của Collaborative filtering,
Hệ thống gặp khó khăn trong việc xử lý vấn đề khởi đầu lạnh, khi người dùng mới chưa có thông tin hành vi nào, chưa đánh giá sản phẩm nào, hoặc khi các sản phẩm mới chưa nhận được đánh giá từ người dùng.
Khi ma trận đánh giá có quy mô lớn với số lượng người dùng và sản phẩm cao, thời gian tính toán sẽ gia tăng, dẫn đến khó khăn trong việc cung cấp tư vấn trong thời gian thực hoặc gần thời gian thực.
Khi hai người dùng A và B cùng đánh giá cao các sản phẩm (điểm từ 4 đến 5), hệ thống có thể phân tích dữ liệu từ người dùng A để xác định những sản phẩm khác mà A yêu thích Dựa trên sự tương đồng này, hệ thống sẽ đề xuất những sản phẩm đó cho người dùng B, tăng khả năng B cũng sẽ thích chúng.
Hình 3.3: Cách thức hoạt động của Collaborative filtering
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ự.
Trên thực tế, User-user Collaboration filtering cũng tồn tại mặt hạn chế
Số lượng người dùng thường vượt xa số lượng sản phẩm, dẫn đến việc tính toán trở nên phức tạp và khối lượng dữ liệu lớn, gây khó khăn trong việc lưu trữ ma trận dữ liệu.
Khi một user thay đổi rating, hoặc rating thêm items, toàn bộ tính toán sẽ phải thực hiện lại
Một phương pháp tiếp cận khác là xác định sự tương đồng giữa các mục, thay vì giữa người dùng, được gọi là Item-Item Collaborative Filtering Phương pháp này giúp khắc phục những hạn chế của User-user.
Áp dụng vào đề tài: chức năng gợi ý thực phẩm
Nhóm đã chọn hệ thống gợi ý dựa trên nội dung (Content-based Recommendation Systems) để đề xuất thực phẩm cho người dùng dựa trên các sản phẩm mà họ đã thêm vào giỏ hàng Để thực hiện điều này, nhóm sử dụng thư viện hỗ trợ Content Based.
Recommendergiúp hỗ trợ trong việc triển khai hệ thống gợi ý cũng như thuật toán.
Hệ thống gợi ý dựa trên nội dung (Content-based Recommendation Systems) là phương pháp dễ tiếp cận nhất, sử dụng thuật toán phân tích nội dung để tìm kiếm các sản phẩm tương tự dựa trên đặc trưng sản phẩm Phương pháp này chỉ phân tích độc lập từng người dùng mà không phụ thuộc vào các người dùng khác trong hệ thống, rất phù hợp cho các hệ thống có ít người dùng và mới triển khai.
3.5.2 Thông tin về thư viện:
Quá trình đào tạo dữ liệu bao gồm 3 bước chính:
Tiền xử lý nội dung dữ liệu là bước quan trọng trong việc sử dụng kỹ thuật xử lý ngôn ngữ tự nhiên (NLP) nhằm giảm kích thước văn bản và nâng cao khả năng phân loại dữ liệu Một trong những kỹ thuật chính là loại bỏ stopwords, tức là các từ phổ biến không mang ý nghĩa như "a", "an", "the", "of", và "and" Việc loại bỏ những từ này giúp giảm kích thước văn bản, từ đó cải thiện hiệu suất trong việc xử lý và phân loại dữ liệu Ví dụ, trong câu "It is the biggest cake I have ever made", việc loại bỏ các stopwords sẽ giúp làm cho văn bản ngắn gọn và dễ xử lý hơn.
Quá trình stemming là việc loại bỏ hậu tố của từ để giảm số lượng từ khác nhau trong văn bản, ví dụ như từ "running", "runs" và "run".
Từ "runner" có thể được rút gọn thành "run", giúp cải thiện khả năng xử lý và phân loại dữ liệu bằng cách giảm số lượng từ khác nhau trong văn bản.
Ex: INPUT: “Do you really think it is weaknessthat yieldsto temptation” OUTPUT: “Do you really think it is weak that yield to temptat”
Hình thành tài liệu vectơ bằng tf-idf (Term Frequency-Inverse Document Frequency) giúp biểu diễn văn bản thành các vector số với hai thành phần chính: Tần số xuất hiện của từ (TF) và Nghịch đảo tần số của từ trong các tài liệu khác (IDF) TF-IDF tính toán mức độ quan trọng của từ bằng cách tăng giá trị của những từ xuất hiện nhiều trong văn bản nhưng ít trong các văn bản khác Kết quả là văn bản được chuyển đổi thành vector số, với mỗi thành phần tương ứng với giá trị TF-IDF của một từ, cho phép so sánh sự tương đồng giữa các văn bản và ứng dụng trong NLP như phân loại văn bản, tìm kiếm thông tin và dò tìm liên kết.
Để tìm điểm cosine similarity giữa tất cả các vectơ tài liệu, chúng ta sử dụng công thức trong đó A và B là hai vector cần so sánh, và dấu "." biểu thị phép nhân vector.
Độ dài của vector được biểu diễn bằng ký hiệu "|| ||" Cosine similarity có giá trị từ -1 đến 1, trong đó 1 biểu thị sự tương đồng hoàn hảo, 0 là không có tương đồng và -1 cho thấy sự đối lập giữa hai vector Tính toán điểm cosine similarity giữa các vector văn bản sẽ tạo ra một ma trận tương đồng, với mỗi phần tử thể hiện mức độ tương đồng giữa hai vector Ma trận này có thể ứng dụng trong việc phân loại văn bản hoặc tìm kiếm văn bản tương đồng trong các ứng dụng xử lý ngôn ngữ tự nhiên (NLP).
Chức năng gợi ý 2: gợi ý món ăn dựa trên thực phẩm đã chọn
Người dùng có thể lựa chọn thực phẩm trong giỏ hàng và nhấn vào gợi ý món ăn, từ đó nhận được danh sách các món ăn phù hợp với nguyên liệu đã chọn Danh sách này được sắp xếp theo mức độ phù hợp, cho phép người dùng dễ dàng chọn món ăn và xem các nguyên liệu hiện có cũng như những nguyên liệu cần bổ sung.
● Thực hiện: Sử dụng API của Spoonacular để tìm kiếm các món ăn phù hợp
ĐẶC TẢ USECASE
Sơ đồ Usecase
Danh sách tác nhân
(User) Là người dùng có thể đăng nhập vào ứng dụng
(Admin) Là người quản lý các đơn đặt hàng của người dùng
Bảng 4.1: Danh sách tác nhân
Danh sách Usecase
STT Tính năng Mô tả/ Ghi chú
1 Xem chi tiết thực phẩm Dành cho User, xem thông tin chi tiết thực
2 Tra cứu thực phẩm phẩmDành cho User, tìm kiếm thực phẩm
3 Thêm thực phẩm vào giỏ hàng Dành cho User, thêm thực phẩm vào giỏ hàng
4 Chọn số lượng và loại thực phẩm Dành cho User, một phần trong quy trình đặt hàng
5 Chọn địa chỉ giao hàng Dành cho User, một phần trong quy trình đặt hàng
6 Chọn phương thức thanh toán Dành cho User, một phần trong quy trình đặt hàng
7 Chọn mã giảm giá Dành cho User, một phần trong quy trình đặt hàng
8 Quản lý thực phẩm trong giỏ hàng Dành cho User, quản lý thêm xóa sửa trong giỏ hàng
9 Gợi ý món ăn Dành cho User, xem danh sách món ăn gợi ý dựa vào thực phẩm hiện có trong giỏ hàng
10 Sửa thông tin tài khoản Dành cho User, sửa hồ sơ cá nhân
11 Quản lý thông tin địa chỉ Dành cho User, quản lý thêm, sửa, xóa địa chỉ giao hàng
12 Xem lịch sử đơn hàng Dành cho User, xem lại lịch sử mua hàng
13 Đăng nhập Dành cho User hoặc Admin đã có tài khoản
14 Đăng ký tài khoản Dành cho User chưa có tài khoản
15 Đăng xuất Dành cho User hoặn Admin
16 Quản lý đơn đặt hàng Dành cho Admin, xem trạng thái đơn hàng và xác nhận đơn hàng cho User.
Mô tả chi tiết Usecase
Tên Use case Quản lý giỏ hàng
Người dùng có thể quản lý thực phẩm trong giỏ hàng của mình thông qua tính năng Use case Để sử dụng tính năng này, người dùng cần đăng nhập vào ứng dụng trước.
Hậu điều kiện (post-conditions)
Mức quan trọng Trung bình
Tác nhân chính Khách hàng
Loại use case Chi tiết
Các bên liên quan Khách hàng: thêm, sửa sản phẩm trong giỏ hàng, xem gợi ý món ăn
Mối quan hệ Liên hệ: tác nhân Khách hàng
Mở rộng: use case Sửa thực phẩm, use case Xóa thực phẩm, use case Gợi ý món ăn
Luồng sự kiện chính 1) Người dùng chọn Giỏ hàng
2) Nếu người dùng chọn sản phẩm và Xóa: thực hiện luồng sự kiện phụ S1
3) Nếu người dùng chọn sản phẩm và Sửa: thực hiện luồng sự kiện phụ S2
4) Nếu người dùng chọn sản phẩm và xem gợi ý món ăn: thực hiện luồng sự kiện phụ S3
Luồng sự kiện phụ S1: Xóa thực phẩm
1) Chọn các sản phẩm cần xóa
3) Kết thúc S2: Sửa thực phẩm
1) Chọn các sản phẩm cần sửa
2) Sửa thông tin về số lượng
3) Kết thúc S3: Gợi ý món ăn
1) Chọn các sản phẩm dự định sẽ mua
2) Chọn xem gợi ý món ăn
3) Hiện danh sách các món ăn gợi ý
Luồng sự kiện lỗi hoặc ngoại lệ S3.1: Thực phẩm không phải là nguyên liệu chính:
1) Thông báo và yêu cầu chọn thực phẩm khác, kết thúc
Bảng 4.3: Đặc tả Uscase Quản lý giỏ hàng
Hình 4.2: Sơ đồ hoạt động Quản lý giỏ hàng
Mô tả Use case cho phép quản trị viên quản lý đơn hàng của người dùng Để thực hiện điều này, người dùng cần phải đăng nhập vào ứng dụng trước.
Hậu điều kiện (post-conditions) Phải thông báo kết quả khi xác nhận đơn hàng
Mức quan trọng Trung bình
Tác nhân chính Quản trị
Loại use case Chi tiết
Các bên liên quan Quản trị: Xác nhận đơn hàng
Mối quan hệ Liên hệ: tác nhân Khách hàng
Trong quy trình xác nhận đơn hàng, người quản trị bắt đầu bằng cách lựa chọn xác nhận đơn hàng, từ đó thực hiện luồng sự kiện phụ S1, trong đó diễn ra quá trình xác nhận đơn hàng.
1) Chọn đơn hàng đang chờ xác nhận
2) Chọn xác nhận đơn hàng
Luồng sự kiện lỗi hoặc ngoại lệ
Bảng 4.4: Đặc tả UseCase Quản lý Đơn hàng
Hình 4.3: Sơ đồ hoạt động Quản lý Đơn hàng
Tên Use case Quản lý tài khoản
Mô tả Use case cho phép người dùng quản lý thông tin tài khoản, mã giảm giá và xem lịch sử hoạt động của mình
Tiền điều kiện (pre-conditions) Người dùng phải đăng nhập vào ứng dụng
Hậu điều kiện (post-conditions) Thông tin đã được cập nhật hoặc mã giảm giá đã được thêm vào tài khoản
Mức quan trọng Trung bình
Tác nhân chính Khách hàng
Loại use case Chi tiết
Các bên liên quan Khách hàng: sửa thông tin tài khoản, thêm mã giảm giá, xem lịch sử hoạt động
Mối quan hệ Liên hệ: tác nhân Khách hàng
Mở rộng: use case Sửa thông tin tài khoản, use hoạt động Luồng sự kiện chính 1) Người dùng chọn Tài khoản
2) Nếu người dùng chọn Sửa thông tin cá nhân: thực hiện luồng sự kiện phụ S1
3) Nếu người dùng chọn Thêm mã giảm giá: thực hiện luồng sự kiện phụ S2
4) Nếu người dùng chọn Xem lịch sử hoạt động: thực hiện luồng sự kiện phụ S3 Luồng sự kiện phụ S1: Sửa thông tin các nhân
1) Nhập các thông tin cần sửa
3) Kết thúc S2: Thêm mã giảm giá
1) Hiển thị danh sách mã giảm giá
3) Kết thúc S3: Xem lịch sử hoạt động
1) Chọn lịch sử hoạt động cần xem
2) Kết thúc Luồng sự kiện lỗi hoặc ngoại lệ
Bảng 4.5: Đặc tả UseCase Quản lý tài khoản
Hình 4.4: Sơ đồ hoạt động Quản lý tài khoản
4.4.4 Xem thông tin thực phẩm
Tên Use case Xem thông tin thực phẩm
Mô tả Use case cho phép người dùng tra cứu, xem thông tin thực phẩm đồng thời có thể thêm thực phẩm vào giỏ hàng
Tác nhân chính Khách hàng
Loại use case Chi tiết
Các bên liên quan Khách hàng: tra cứu, xem chi tiết thông tin thực phẩm và thêm thực phẩm vào giỏ hàng
Mối quan hệ Liên hệ: tác nhân Khách hàng
Mở rộng: use case Tra cứu thực phẩm, use case Xem chi tiết thực phẩm, use case Thêm thực phẩm vào giỏ hàng
Luồng sự kiện chính 1) Người dùng chọn Tra cứu thực phẩm: thực hiện luồng sự kiện phụ S1
2) Nếu người dùng chọn Sản phẩm và xem chi tiết sản phẩm: thực hiện luồng sự kiện phụ S2
3) Nếu người dùng chọn Thêm thực phẩm vào giỏ hàng: thực hiện luồng sự kiện phụ S3
Luồng sự kiện phụ S1: Tra cứu thực phẩm
1) Nhập từ tên sản phẩm cần tra cứu
2) Chọn sản phẩm cần tìm từ danh sách kết
3) Kết thúcquả S2: Xem chi tiết thực phẩm
2) Xem các thông tin chi tiết của sản phẩm
3) Kết thúc S3: Thêm sản phẩm vào giỏ hàng
1) Chọn icon giỏ hàng để thêm thực phẩm vào giỏ hàng
2) Kết thúc Luồng sự kiện lỗi hoặc ngoại lệ S1.1: Không tìm được sản phẩm cần tra cứu:
1) Nhập lại thông tin tìm kiếm, kết thúc
Bảng 4.6: Đặc tả UseCase Xem thông tin thực phẩm
Hình 4.5: Sơ đồ hoạt động Xem thông tin thực phẩm
Tên Use case Đặt hàng
Mã Use case UC02 thức thanh toán, số lượng, loại thực phẩm và địa chỉ giao hàng
Tiền điều kiện (pre-conditions) Người dùng phải đăng nhập vào ứng dụng và có thực phẩm trong giỏ hàng Hậu điều kiện (post-conditions)
Tác nhân chính Khách hàng
Loại use case Chi tiết
Các bên liên quan Khách hàng: chọn phương thức thanh toán, địa chỉ giao hàng, số lượng và loại thực phẩm
Mối quan hệ Liên hệ: tác nhân Khách hàng
Mở rộng: use case Nhập địa chỉ giao hàng, use case Chọn số lượng và loại thực phẩm, use case Chọn phương thức thanh toán
Luồng sự kiện chính 1) Người dùng chọn Nhập địa chỉ giao hàng: thực hiện luồng sự kiện phụ S1
2) Nếu người dùng chọn Chọn số lượng và loại thực phẩm: thực hiện luồng sự kiện phụ S2
3) Nếu người dùng chọn Chọn phương thức thanh toán: thực hiện luồng sự kiện phụ Luồng sự kiện phụ S1: Nhập địa chỉ giao hàngS3
1) Nhập địa chỉ giao hàng trong ô địa chỉ giao hàng
2) Kết thúc S2: Chọn số lượng và loại thực phẩm
2) Chọn icon cộng để tăng số lượng và icon trừ để giảm số lượng thực phẩm
3) Kết thúc S3: Chọn phương thức thanh toán
1) Chọn các phương thức thanh toán hiện có trong danh mục phương thức thanh toán
2) Kết thúc Luồng sự kiện lỗi hoặc ngoại lệ
Bảng 4.7: Đặc tả UseCase Đặt hàng
Hình 4.6: Sơ đồ hoạt động Đặt hàng
Hình 5.1: Sơ đồ cơ sở dữ liệu
Bảng TRANGTHAISP Thông tin các trạng thái
Bảng HINHANHMOTA Thông tin mô tả chi tiết thực phẩm
Bảng LOAITP Thông tin loại thực phẩm
Bảng THUCPHAM Thông tin của thực phẩm
Bảng CUAHANG Thông tin cửa hàng
Bảng DANHGIASP Thông tin đánh giá sản phẩm
Bảng GIOHANG Thông tin giỏ hàng của khách hàng
Bảng LUOTTHEODOI Thông tin theo dõi cửa hàng của các khách hàng
Bảng KHACHHANG Thông tin khách hàng
Bảng CT_DONHANG Thông tin các thực phẩm trong đơn hàng
Bảng MAGIAMGIA Thông tin mã giảm giá
Bảng DONHANG Thông tin đơn hàng của khách hàng
Bảng DIACHIGIAOHANG Thông tin các địa chỉ giao hàng
Bảng KH_MAGG Thông tin mã giảm giá của khách hàng
Bảng 5.1: Danh sách các bảng trong cơ sở dữ liệu
Chương 6.THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG
STT Tên màn hình Loại
2 Đăng ký tài khoản Đăng kí
3 Trang chào mừng Hiển thị
5 Trang tìm kiếm Hiển thị và nhập liệu
6 Trang giỏ hàng Hiển thị
7 Trang chi tiết sản phẩm Hiển thị
8 Trang cửa hàng Hiển thị
9 Trang đặt hàng Hiển thị
10 Trang hoàn thành đơn hàng Hiển thị
11 Trang gợi ý món ăn Hiện thị
12 Trang chi tiết món ăn Hiển thị
13 Thông tin tài khoản Hiển thị
14 Trang địa chỉ Hiển thị và Nhập liệu
15 Trang thông tin chi tiết người dùng Hiển thị và Nhập liệu
16 Trang mã giảm giá Hiển thị
17 Trang lịch sử mua hàng Hiển thị
18 Trang đánh giá sản phẩm Hiển thị và Nhập liệu
19 Trang quản lý đơn hàng(admin) Hiển thị
Bảng 6.1: Danh sách màn hình
6.2 Mô tả chi tiết màn hình
Mô tả: Nhập thông tin tài khoản, mật khẩu để đăng nhập
Mô tả: Nhập thông tin để đăng ký tài khoản
Nhập thông tin đăng ký
Mô tả: Hiển thị lời chào, giới thiệu về app
Chọn đăng nhập với user
Chọn đăng nhập với admin
Mô tả: Hiển thị danh sách các sản phẩm gợi ý và các danh mục sản phẩm
Chọn xem danh mục sản phẩm
Mô tả: Nhập thông tin để tìm sản phẩm
Nhập thông tin sản phẩm cần tìm
Chọn xem sản phẩm tìm được
Mô tả: Hiển thị thông tin các sản phẩm của trong giỏ hàng
Xóa, sửa số lượng sản phẩm trong giỏ hàng
Chọn sản phẩm để mua
6.2.7 Trang chi tiết sản phẩm
Mô tả: Hiển thị thông tin chi tiết của sản phẩm
Thêm sản phẩm vào giỏ hàng
Chọn xem thông tin mô tả sản phẩm
Chọn xem tất cả đánh giá
Chọn theo dõi, hủy theo dõi cửa hàng
Hình 6.8: Trang chi tiết sản phẩm
Mô tả: Hiển thị thông tin các sản phẩm cảu cửa hàng và thông tin chi tiết cửa hàng Chức năng:
Chọn danh mục xem danh mục sản phẩm
Chọn xem thông tin chi tiết cửa hàng
Chọn theo dõi, hủy theo dõi cửa hàng
Chọn xem chi tiết sản phẩm của cửa hàng
Hình 6.9: Trang thông tin chi tiết cửa hàng
Mô tả: Chọn thông tin cần thiết để đặt đơn hàng
Chọn địa chỉ giao hàng
Nhập thông tin lời nhắn
Chọn hoàn thành đơn hàng
6.2.10 Trang hoàn thành đơn hàng
Mô tả: Hiển thị đặt hàng thành công
Hình 6.12: Trang hoàn thành đặt hàng
Mô tả: Hiển thị danh sách món ăn từ các nguyên liệu đã chọn
Chọn xem chi tiết món ăn
Hình 6.13: Trang gợi ý món ăn
6.2.12 Trang chi tiết món ăn
Mô tả: Hiển thị chi tiết món ăn gợi ý bao gồm các nguyên liệu của món ăn
Xem nguyên liệu đã có
Xem nguyên liệu còn thiếu
Hình 6.14: Trang chi tiết món ăn
Mô tả: Hiển thị thông tin tài khoản và các mục để quản lý tài khoản
Chọn chỉnh sửa thông tin người dùng
Chọn quản lý lý địa chỉ giao hàng
Chọn xem mã giảm giá
Chọn xem lịch sử mua hàng
Hình 6.15: Trang thông tin tài khoản
Mô tả: Hiển thị danh sách món ăn từ các nguyên liệu đã chọn
Hình 6.16: Trang địa chỉ nhận hàng
6.2.15 Trang thông tin chi tiết người dùng
Mô tả: Hiển thị thông tin chi tiết của người dùng
Chọn đổi ảnh đại diện
Thay đổi tên, ngày sinh, sdt, email
Hình 6.17: Trang thông tin chi tiết người dùng
Mô tả: Hiển thị danh sách các mã giảm giá của mình
Chọn xem mục mã giảm giá
Hình 6.18: Trang mã giảm giá
6.2.17 Trang lịch sử mua hàng
Mô tả: Hiển thị danh sách lịch sử mua hàng và có thể hủy đơn hàng
Chọn đánh giá sản phẩm với các đơn hàng đã hoàn thành
Chọn hủy đơn hàng với các đơn hàng đang chờ xác nhận
Hình 6.19: Trang lịch sử mua hàng
6.2.18 Trang đánh giá sản phẩm
Mô tả: Nhập thông tin đánh giá sản phẩm đã mua
Chọn hoàn thành đánh giá
Hình 6.20: Trang đánh giá sản phẩm
6.2.19 Trang quản lý đơn hàng(admin)
Mô tả: Hiển thị danh sách các đơn hàng cho phép người dùng xác nhận các đơn hàng đang chờ xác nhận
Chọn xác nhận đơn hàng
Chọn danh mục các đơn hàng
Hình 6.21: Trang quản lý đơn hàng
Hoàn thành tất cả các tính năng theo kế hoạch dự kiến được đưa ra từ đầu.
Hiểu được thêm về cách hoạt động của hệ thống gợi ý Recommender System cũng như những kiến thức về phân tích dữ liệu, đánh giá mô hình
Biết cách quản lý mã nguồn và làm việc thông qua Github.
Cải thiện kỹ năng lập trình.
Các tính năng chưa được tối ưu tốt nên ứng dụng chạy còn chậm.
Hệ thống gợi ý chưa thật sự tối ưu.
Chưa có phiên bản dành cho hệ điểu hành IOS.
Sau quá trình thực hiện, nhóm nhận thấy còn nhiều hạn chế của đồ án cần cải thiện và mở rộng Cụ thể, có một số hướng phát triển tiềm năng sau đây.
Đã hoàn thiện thêm các chức năng cho quản trị viên, bao gồm khả năng thêm, xóa và sửa đổi thực phẩm, cửa hàng, cũng như mã giảm giá Ngoài ra, chức năng báo cáo thống kê của ứng dụng cũng đã được cải thiện.
● Hoàn thành thêm các chức năng cho user: o Thêm phương thức thanh toán khác như chuyển khoản o Tích hợp google map theo dõi quá trình giao hàng
● Tích hợp thêm tính năng để quản lý việc quản lý đồng tiền của app
Để cải thiện hệ thống gợi ý, cần áp dụng thêm các thuật toán và xử lý dữ liệu nhằm phân tích và đưa ra những gợi ý phù hợp nhất Đồng thời, việc cải thiện dữ liệu cũng rất quan trọng để tối ưu hóa hiệu suất của hệ thống gợi ý.
● Cải thiện chung: o Giao diện trực quan dễ sử dụng o Tăng cường tính bảo mật cho ứng dụng o Tăng hiệu năng xử lý
THIẾT KẾ CƠ SỞ DỮ LIỆU
Danh sách các bảng
Bảng TRANGTHAISP Thông tin các trạng thái
Bảng HINHANHMOTA Thông tin mô tả chi tiết thực phẩm
Bảng LOAITP Thông tin loại thực phẩm
Bảng THUCPHAM Thông tin của thực phẩm
Bảng CUAHANG Thông tin cửa hàng
Bảng DANHGIASP Thông tin đánh giá sản phẩm
Bảng GIOHANG Thông tin giỏ hàng của khách hàng
Bảng LUOTTHEODOI Thông tin theo dõi cửa hàng của các khách hàng
Bảng KHACHHANG Thông tin khách hàng
Bảng CT_DONHANG Thông tin các thực phẩm trong đơn hàng
Bảng MAGIAMGIA Thông tin mã giảm giá
Bảng DONHANG Thông tin đơn hàng của khách hàng
Bảng DIACHIGIAOHANG Thông tin các địa chỉ giao hàng
Bảng KH_MAGG Thông tin mã giảm giá của khách hàng
Bảng 5.1: Danh sách các bảng trong cơ sở dữ liệu
THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG
Danh sách màn hình
STT Tên màn hình Loại
2 Đăng ký tài khoản Đăng kí
3 Trang chào mừng Hiển thị
5 Trang tìm kiếm Hiển thị và nhập liệu
6 Trang giỏ hàng Hiển thị
7 Trang chi tiết sản phẩm Hiển thị
8 Trang cửa hàng Hiển thị
9 Trang đặt hàng Hiển thị
10 Trang hoàn thành đơn hàng Hiển thị
11 Trang gợi ý món ăn Hiện thị
12 Trang chi tiết món ăn Hiển thị
13 Thông tin tài khoản Hiển thị
14 Trang địa chỉ Hiển thị và Nhập liệu
15 Trang thông tin chi tiết người dùng Hiển thị và Nhập liệu
16 Trang mã giảm giá Hiển thị
17 Trang lịch sử mua hàng Hiển thị
18 Trang đánh giá sản phẩm Hiển thị và Nhập liệu
19 Trang quản lý đơn hàng(admin) Hiển thị
Bảng 6.1: Danh sách màn hình
Mô tả chi tiết màn hình
Mô tả: Nhập thông tin tài khoản, mật khẩu để đăng nhập
Mô tả: Nhập thông tin để đăng ký tài khoản
Nhập thông tin đăng ký
Mô tả: Hiển thị lời chào, giới thiệu về app
Chọn đăng nhập với user
Chọn đăng nhập với admin
Mô tả: Hiển thị danh sách các sản phẩm gợi ý và các danh mục sản phẩm
Chọn xem danh mục sản phẩm
Mô tả: Nhập thông tin để tìm sản phẩm
Nhập thông tin sản phẩm cần tìm
Chọn xem sản phẩm tìm được
Mô tả: Hiển thị thông tin các sản phẩm của trong giỏ hàng
Xóa, sửa số lượng sản phẩm trong giỏ hàng
Chọn sản phẩm để mua
6.2.7 Trang chi tiết sản phẩm
Mô tả: Hiển thị thông tin chi tiết của sản phẩm
Thêm sản phẩm vào giỏ hàng
Chọn xem thông tin mô tả sản phẩm
Chọn xem tất cả đánh giá
Chọn theo dõi, hủy theo dõi cửa hàng
Hình 6.8: Trang chi tiết sản phẩm
Mô tả: Hiển thị thông tin các sản phẩm cảu cửa hàng và thông tin chi tiết cửa hàng Chức năng:
Chọn danh mục xem danh mục sản phẩm
Chọn xem thông tin chi tiết cửa hàng
Chọn theo dõi, hủy theo dõi cửa hàng
Chọn xem chi tiết sản phẩm của cửa hàng
Hình 6.9: Trang thông tin chi tiết cửa hàng
Mô tả: Chọn thông tin cần thiết để đặt đơn hàng
Chọn địa chỉ giao hàng
Nhập thông tin lời nhắn
Chọn hoàn thành đơn hàng
6.2.10 Trang hoàn thành đơn hàng
Mô tả: Hiển thị đặt hàng thành công
Hình 6.12: Trang hoàn thành đặt hàng
Mô tả: Hiển thị danh sách món ăn từ các nguyên liệu đã chọn
Chọn xem chi tiết món ăn
Hình 6.13: Trang gợi ý món ăn
6.2.12 Trang chi tiết món ăn
Mô tả: Hiển thị chi tiết món ăn gợi ý bao gồm các nguyên liệu của món ăn
Xem nguyên liệu đã có
Xem nguyên liệu còn thiếu
Hình 6.14: Trang chi tiết món ăn
Mô tả: Hiển thị thông tin tài khoản và các mục để quản lý tài khoản
Chọn chỉnh sửa thông tin người dùng
Chọn quản lý lý địa chỉ giao hàng
Chọn xem mã giảm giá
Chọn xem lịch sử mua hàng
Hình 6.15: Trang thông tin tài khoản
Mô tả: Hiển thị danh sách món ăn từ các nguyên liệu đã chọn
Hình 6.16: Trang địa chỉ nhận hàng
6.2.15 Trang thông tin chi tiết người dùng
Mô tả: Hiển thị thông tin chi tiết của người dùng
Chọn đổi ảnh đại diện
Thay đổi tên, ngày sinh, sdt, email
Hình 6.17: Trang thông tin chi tiết người dùng
Mô tả: Hiển thị danh sách các mã giảm giá của mình
Chọn xem mục mã giảm giá
Hình 6.18: Trang mã giảm giá
6.2.17 Trang lịch sử mua hàng
Mô tả: Hiển thị danh sách lịch sử mua hàng và có thể hủy đơn hàng
Chọn đánh giá sản phẩm với các đơn hàng đã hoàn thành
Chọn hủy đơn hàng với các đơn hàng đang chờ xác nhận
Hình 6.19: Trang lịch sử mua hàng
6.2.18 Trang đánh giá sản phẩm
Mô tả: Nhập thông tin đánh giá sản phẩm đã mua
Chọn hoàn thành đánh giá
Hình 6.20: Trang đánh giá sản phẩm
6.2.19 Trang quản lý đơn hàng(admin)
Mô tả: Hiển thị danh sách các đơn hàng cho phép người dùng xác nhận các đơn hàng đang chờ xác nhận
Chọn xác nhận đơn hàng
Chọn danh mục các đơn hàng
TỔNG KẾT
Kết quả đạt được
Hoàn thành tất cả các tính năng theo kế hoạch dự kiến được đưa ra từ đầu.
Hiểu được thêm về cách hoạt động của hệ thống gợi ý Recommender System cũng như những kiến thức về phân tích dữ liệu, đánh giá mô hình
Biết cách quản lý mã nguồn và làm việc thông qua Github.
Cải thiện kỹ năng lập trình.
Các tính năng chưa được tối ưu tốt nên ứng dụng chạy còn chậm.
Hệ thống gợi ý chưa thật sự tối ưu.
Chưa có phiên bản dành cho hệ điểu hành IOS.
Hướng phát triển
Sau khi hoàn thành dự án, nhóm nhận thấy còn nhiều hạn chế có thể cải thiện và mở rộng Dưới đây là một số hướng phát triển tiềm năng trong tương lai.
Chúng tôi đã hoàn thành việc bổ sung các chức năng mới cho quản trị viên, bao gồm khả năng thêm, xóa và sửa đổi thực phẩm, cửa hàng, cũng như mã giảm giá Ngoài ra, chúng tôi cũng đã triển khai chức năng báo cáo thống kê cho ứng dụng, giúp quản trị viên dễ dàng theo dõi và phân tích dữ liệu.
● Hoàn thành thêm các chức năng cho user: o Thêm phương thức thanh toán khác như chuyển khoản o Tích hợp google map theo dõi quá trình giao hàng
● Tích hợp thêm tính năng để quản lý việc quản lý đồng tiền của app
Để cải thiện hệ thống gợi ý, cần áp dụng thêm các thuật toán và phương pháp xử lý dữ liệu nhằm phân tích và đưa ra những gợi ý phù hợp nhất Đồng thời, việc cải thiện chất lượng dữ liệu cũng là yếu tố quan trọng để tối ưu hóa hiệu suất của hệ thống gợi ý.
● Cải thiện chung: o Giao diện trực quan dễ sử dụng o Tăng cường tính bảo mật cho ứng dụng o Tăng hiệu năng xử lý