Tìm sản phẩm theo danh mục: Hiển thị danh sách sản phẩm theo từng danh mục và có hiển thị phân trang Danh sách giỏ hàng : Hiển thị các sản phẩm được chọn mua trong giỏ hàng Danh sách hóa
PHÂN TÍCH YẾU CẦU PHẦN MỀM
Đặc tả yêu cầu
1.1.1 Yêu cầu chức năng phần website
Bảng 1 Yêu cầu chức năng phần website
Yêu cầu Mô tả Chi tiết
Để đảm bảo bảo mật thông tin và phiên làm việc của người dùng, hệ thống sử dụng JWT (JSON Web Token) Trong hệ thống, có hai quyền cơ bản được phân quyền cho người dùng: ADMIN và USER, nhằm quản lý và kiểm soát truy cập hiệu quả.
Lưu trữ Thông tin người dùng, sản phẩm, danh mục, thương hiệu, được lưu trữ trên bộ nhớ của cơ sở dữ liệu MySQL
Thư viện hình ảnh được lưu trữ trên AWS và lưu trữ trong cơ sở dữ liệu dưới dạng URL, cho phép người dùng dễ dàng tra cứu và tìm kiếm sản phẩm theo yêu cầu.
Tìm sản phẩm theo danh mục: Hiển thị danh sách sản phẩm theo từng danh mục và có hiển thị phân trang
Danh sách giỏ hàng : Hiển thị các sản phẩm được chọn mua trong giỏ hàng
Danh sách hóa đơn và chi tiết hóa đơn: Hiển thị danh sách các hóa đơn đã đặt của người dùng và chi tiết của hóa đơn
Danh sách sản phẩm yêu thích: Hiển thị danh sách sản phẩm mà người dùng yêu thích
Danh sách mã giảm giá: Cung cấp một danh sách mã giảm giá hấp dẫn Tính toán và thống kê các thông tin quan trọng như số lượng người dùng, số đơn hàng, số sản phẩm và tổng giá trị hóa đơn.
Chức năng quản lý Quản lý người dùng Đăng ký tài khoản Đăng nhập
Chỉnh sửa thông tin cá nhân Đổi mật khẩu
Quên mật khẩu Quản lý địa chỉ Quản lý danh mục sản phẩm
Thêm, xóa, sửa danh mục
Thêm, xóa, sửa thương hiệu
Thêm, xóa sửa sản phẩm
Quản lý mã giảm giá
Thêm, xóa, sửa mã giảm giá
Chức năng tự động Gửi thông báo
Gửi thông báo khi người dùng xác nhận đặt hàng và tình trạng đơn hàng
1.1.2 Yêu cầu phi chức năng phần website
Bảng 2 Yêu cầu phi chức năng phần website
Yêu cầu Mô tả Chi tiết
Chương trình xây dựng trên tiêu chuẩn
Sử dụng Springboot và React
Cấu trúc request và response theo mẫu
Code cần có comment Thiết bị sử dụng Trình duyệt web
Hỗ trợ Microsoft Edge version ≥ 88.0 Tốc độ và thời gian xử lý
Tốc độ và thời gian xử lý phải nhanh
Thời gian tối đa xử lý dữ liệu : 10 giây Trong lúc xử lý phải hiển thị loading để tránh gây hiểu nhầm
Thông báo Đưa thông báo cụ thể
Thông báo cụ thể về lỗi, cách sử dụng, thông tin thao tác một cách cụ thể nhất, không lan man
Bảo mật trên trình duyệt
Tự động đăng xuất sau khoảng 10 phút không hoạt động của người dùng
1.1.3 Yêu cầu chức năng phần app
Bảng 2 Chức năng phần app
Yêu cầu Mô tả Chi tiết
Yêu cầu nghiệp vụ Bảo mật Bảo mật thông tin, phiên làm việc của người dùng bằng JWT
Phân quyền người dùng trong hệ thống: Có hai quyền cơ bản được xác định trong ứng dụng là: MANAGER và SHIPPER
Thông tin người dùng, sản phẩm, danh mục và thương hiệu được lưu trữ trong cơ sở dữ liệu MySQL Bên cạnh đó, thư viện hình ảnh được lưu trữ trên AWS S3 và được ghi lại trong cơ sở dữ liệu dưới dạng URL.
Tra cứu Tra cứu tình trạng đơn hàng
Danh sách hóa đơn và chi tiết hóa
Tính toán Thống kê các thông tin như số shipper, số đơn hàng, số sản phẩm, tổng giá trị hóa đơn
Chức năng quản lý Quản lý người dùng Đăng ký tài khoản Đăng nhập
Chỉnh sửa thông tin cá nhân Đổi mật khẩu
Lên lịch giao đơn, giao đơn, theo dõi, xác nhận đơn hàng
Xem thông tin danh thu của shipper
Chức năng tự động Gửi thông báo
Gửi thông báo khi shipper giao thành công hoặc nhận đơn
1.1.4 Yêu cầu phi chức năng phần app
Bảng 3 Chức năng phi yêu cầu phần app
Yêu cầu Mô tả Chi tiết
Chương trình xây dựng trên tiêu chuẩn
Sử dụng Springboot và ReactNative
Cấu trúc request và response theo mẫu Code cần có comment
Thiết bị sử dụng Android
Thời gian tối đa xử lý dữ liệu : 10 giây
Tốc độ và thời gian xử lý
Tốc độ và thời gian xử lý phải nhanh
Trong lúc xử lý phải hiển thị loading để tránh gây hiểu nhầm
Thông báo Đưa thông báo cụ thể
Thông báo cụ thể về lỗi, cách sử dụng, thông tin thao tác một cách cụ thể nhất, không lan man.
Mô tả usecase
1.2.1 Lược đồ usecase tổng quan
1.2.2 Lược đồ usecase chi tiết
Bảng 4 Chi tiết usecase đăng nhập
Use Case Name Đăng nhập hệ thống
Description Đăng nhập vào website của hệ thống này
Pre-Condition(s) Có tài khoản cá nhân đã được tạo
Post-Condition(s) Xác thực đăng nhập thành công
Basic Flow Người dùng truy cập trang đăng nhập của website
Nhập thông tin tương ứng vào form đăng nhập Nhấp chọn nút đăng nhập
Hệ thống tiến hành xác thực đăng nhập và gửi thông báo
16 Ứng dụng thông báo đăng nhập thành công và chuyển hướng vào màn hình chính
Exception Flow E5 Xác thực thất bại và ứng dụng hiển thị thông báo “Đăng nhập không thành công, vui lòng kiểm tra lại tài khoản và mật khẩu”
Business Rules BR1: Người dùng nhập sai thông tin đăng nhập ở lần thứ 6 liên tiếp sẽ bị khóa tài khoản 30 phút
NFR1: Mật khẩu của người dùng phải được hash
1.2.2.2 Use case đổi mật khẩu
Bảng 5 Chi tiết usecase đổi mật khẩu
Use Case Name Đổi mật khẩu
Description Quy trình đổi mật khẩu của người dùng
Pre-Condition(s) Đã đăng nhập vào hệ thống
Post-Condition(s) Thay đổi mật khẩu mới thành công
1 Truy cập vào trang thông tin cá nhân
3 Nhập mật khẩu hiện tại và mật khẩu mới
4 Hệ thống xác thực mật khẩu
5 Hệ thống thông báo thay đổi mật khẩu thành công Alternative Flow
Exception Flow E4 Mật khẩu khẩu xác thực tất bại
E4.1 Mật khẩu cũ không chính xác E4.2 Mật khẩu mới không đủ mạnh Business Rules BR1: Mật khẩu mới không giống mật khẩu cũ
BR2: Mật khẩu mới phải tuân thủ các yêu cầu về độ an toàn (ít nhất 8 ký tự, bao gồm chữ, số và ký tự đặc biệt)
Bảng 6 Chi tiết usecase chỉnh sửa thông tin cá nhân
1.2.2.3 Use case xem và sửa thông tin cá nhân
Use Case Name Xem và sửa thông tin cá nhân
Description Quy trình xem và sửa thông tin cá nhân của người dùng
Pre-Condition(s) Đã đăng nhập vào hệ thống
Post-Condition(s) Thông tin được cập nhật thành công
1 Truy cập vào trang thông tin cá nhân
2 Hệ thống hiển thị thông tin của người dùng
3 Người dùng nhập thông tin mới
5 Hệ thống thông báo xác nhận đổi mật khẩu
6 Hệ thống xác thực thông tin mới
7 Hệ thống thông báo cập nhật thông tin thành công
Alternative Flow A5 Người dùng chọn “Hủy” không muốn sửa thông tin Use case quay lại bước 2 Exception Flow E6 Hệ thống xác thực thông tin thất bại
Xem và sửa thông tin 1
1.2.2.4 Use case xem danh sách sản phẩm
Bảng 7 Xem danh sách sản phẩm
Use Case Name Xem danh sách sản phẩm
Description Cho phép người dùng xem danh sách sản phẩm, lọc và tìm kiếm sản phẩm
Trigger Người dùng muốn xem danh sách các sản phẩm
Pre-Condition Người dùng đã truy cập vào website
Thiết bị người dùng được kết nối internet khi sử dụng
Basic Flow 1 Người dùng truy cập vào trang sản phẩm
2 Hệ thống hiển thị danh sách sản phẩm
3 Nguời dùng nhấn vào sản phẩm bất kỳ để xem thông tin chi tiết
4 Hệ thống hiển thị chi tiết sản phẩm
A.F.1.2:Người dùng chọn danh mục sản phẩm
Tiếp tục thực hiện bước 2
A.F.1.4:Người đùng nhập tên sản phẩm vào trường tìm kiếm
Tiếp tục thực hiện bước 2
Exception Flow Người dùng nhập tên sản phẩm không tồn tại trong hệ thống
Hệ thống báo danh sách sản phẩm trống
1.2.2.5 Use case tìm kiếm sản phẩm
Bảng 8 Usecase tìm kiếm sản phẩm
Use Case Name Tìm kiếm sản phẩm
Description Quy trình người dùng thực hiện để tìm kiếm sản phẩm
Pre-Condition(s) Đã truy cập vào website
Post-Condition(s) Kết quả tìm kiếm được hiển thị cho người dùng
1 Truy cập vào trang chủ của website
2 Nhập thông tin vào ô tìm kiếm
3 Nhấn Enter hoặc nhấn nút “Tìm kiếm”
4 Hệ thống tìm kiếm sản phẩm phù hợp với từ khóa
5 Hệ thống tìm kiếm cho người dùng
Alternative Flow A5 Không tìm thấy sản phẩm phù hợp từ khóa thì hiển thị “Không tìm thấy”
NFR1: Tốc độ tìm kiếm nhanh và chính xác
1.2.2.6 Use case lọc sản phẩm
Bảng 9 Lọc theo yêu cầu
Use Case Name Filter sản phẩm
Description Lọc các sản phẩm theo yêu cầu
Post-Condition(s) Danh sách sản phẩm theo yêu cầu
Basic Flow 1 Người dùng chọn danh mục, nhập khoảng giá,và đánh giá mong muốn trên thanh sidebar
1.2.2.7.Use case thêm giỏ hàng
Use Case Name Quản lý giỏ hàng
Description Xem, cập nhật và thanh toán giỏ hàng
Trigger Người dùng muốn thanh toán giỏ hàng
Pre-Condition Người dùng phải có sẵn tài khoản
Tài khoản đã được phân quyền
Người dùng đã đăng nhập vào website
Thiết bị người dùng được kết nối internet khi sử dụng
Basic Flow 1 Người dùng bấm vào nút “Đặt hàng”
2 Hệ thống hiển thị thông báo xác nhận đặt hàng, người dùng bấm đồng ý
3 Hệ thống hiển thị thông báo đặt hàng thành công và lưu dữ liệu đơn hàng
4 Hệ thống xóa bỏ giỏ hàng cũ
2.1 Nếu người dùng bấm hủy bỏ, hệ thống chuyển hướng người dùng về trang giỏ hàng
4.1 Nếu không chọn thanh toán toàn bộ, một giỏ hàng mới với các sản phẩm còn lại sẽ được tạo ra
A.F.1.2: Người dùng chọn sản phẩm và thực hiện thay đổi số lượng sản phẩm trong giỏ hàng, nếu số lượng bằng 0 Sản phẩm sẽ bị xóa khỏi giỏ hàng A.F.1.3: Người dùng chọn lệnh xóa toàn bộ sản phẩm trong giỏ hàng, tất cả sản phẩm trong giỏ hàng sẽ bị xóa
Exception Flow Nếu không có sản phẩm nào trong giỏ hàng, hệ thống sẽ thông báo giỏ hàng trống
1.2.2.8 Use case Cập nhật giỏ hàng
Bảng 11 Cập nhật giỏ hàng
Use Case Name Cập nhật giỏ hàng
Description Quy trình cập nhật giỏ hàng
Pre-Condition(s) Đã đăng nhập vào hệ thống
Post-Condition(s) Giỏ hàng được cập nhật thành công
1 Truy cập vào giỏ hàng
2 Hệ thống hiển thị các sản phẩm đã được thêm vào giỏ hàng
3 Nhấn dấu công để tăng số lượng hoặc dấu trừ để giảm số lượng hoặc nhấn nút xóa để loại bỏ sản phẩm ra khỏi giỏ hàng ở từng sản phẩm
4 Hệ thống hiển thị lại thông tin danh sách các sản phẩm có trong giỏ hàng Alternative Flow
Use Case Name Mua hàng
Description Quy trình đặt hàng
Pre-Condition(s) Đã đăng nhập vào hệ thống
Post-Condition(s) Đơn hàng được thêm vào đơn mua
Basic Flow Truy cập vào giỏ hàng chọn các sản phẩm cần mua nhấn nút mua hàng
Hệ thống hiển thị thông báo đơn hàng đã được đặt hàng thành công
1.2.2.10 Use case xem trạng thái đơn
Use Case Name Xem trạng thái đơn hàng
Description Quy trình xem trạng thái đơn hàng
Pre-Condition(s) Đã đăng nhập vào hệ thống
Post-Condition(s) Xem được các đơn hàng đã được đặt hàng
1 Nhấn vào tên đăng nhập
3 Hệ thống hiển thị danh sách các đơn mua và trạng thái của nó
1 Admin ấn vào đơn hàng trên thanh taskbar
2 Hệ thống hiển thị danh sách đơn hàng Alternative Flow
1.2.2.11 Use Case quản lý sản phẩm
Bảng 13 Quản lý sản phẩm
Use Case Name Quản lý sản phẩm
Description Quy trình quản lý sản phẩm
Pre-Condition(s) Đã đăng nhập vào hệ thống
Post-Condition(s) Quản lý được các sản phẩm
Basic Flow Trường hợp 1: Xem danh sách sản phẩm
1.1 Admin ấn vào sản phẩm trên thanh taskbar 1.2 Hệ thống hiển thị danh sách sản phẩm Trường hợp 2: Xem chi tiết sản phẩm 2.1 Admin ấn vào sản phẩm muốn xem chi tiết 2.2 Hệ thống hiển thị chi tiết thông tin sản phẩm Trường hợp 3: Thêm sản phẩm
3.1 Admin ấn vào nút Thêm sản phẩm 3.2 Hệ thống hiển thị form nhập thông tin sản phẩm 3.3 Admin điền thông tin và nhấn vào nút thêm 3.4 Hệ thống thông báo thêm sản phẩm thành công
Trường hợp 4: Cập nhật sản phẩm 4.1 Admin ấn vào sản phẩm muốn cập nhật
4.2 Hệ thống hiển thị form cập nhật thông tin sản phẩm
4.3 Admin cập nhật thông tin và nhấn vào nút thêm
4.4 Hệ thống thông báo cập nhật sản phẩm thành công
Trường hợp 5: Xóa sản phẩm 5.1 Admin nhấn vào sản phẩm muốn xóa 5.2 Hệ thống xóa sản phẩm
Alternative Flow 3.3.1 Admin nhấn vào nút hủy
3.3.2 Hệ thống trở về trang xem danh sách 4.3.1 Admin nhấn vào nút hủy
4.3.2 Hệ thống trở về trang xem danh sách Exception Flow
1.2.2.12 Use Case quản lý đơn hàng
Bảng 14 Quản lý đơn hàng
Use Case Name Quản lý đơn hàng
Description Quản lý các đơn hàng của khách hàng
Basic Flow Trường hợp 1: Xem danh sách đơn hàng
1.1 Admin ấn vào đơn hàng trên thanh taskbar 1.2 Hệ thống hiển thị danh sách đơn hàng Trường hợp 2: Xem chi tiết đơn hàng 2.1 Admin ấn vào đơn hàng muốn xem chi tiết 2.2 Hệ thống hiển thị chi tiết đơn hàng
Trường hợp 3: Xác nhận đơn hàng 3.1 Admin ấn vào đơn hàng muốn xác nhận 3.2 Admin ấn xác nhận đã giao hàng thành công
Use Case Name Đăng nhập
Description Đăng nhập vào hệ thống
Người dùng đã đăng ký tài khoản mới
Tài khoản được phân quyền rồi
Thiết bị người dùng được kết nối internet khi sử dụng dịch vụ
1 Người dùng nhấn vào nút “Đăng nhập” trên ứng dụng
2 Hệ thống hiển thị form đăng nhập
3 Người dùng nhập tài khoản và mật khẫu và bấm nút “Đăng nhập”
4 Hệ thống xử lý đăng nhập thành công
2.1 Nếu chưa có tài khoản, người dùng có thể bấm vào nút
“Đăng ký” để chuyển sang usecase Đăng Ký
2.2 Nếu người dùng quên mật khẫu, người dùng có thể bấm vào nút “Quên mật khẩu” để chuyển sang usecase Quên mật khẫu
4.1 Nếu người dùng chưa nhập tài khoản hoặc mật khẩu, hệ thống hiển thị thông báo “Vui lòng nhập đầy đủ tài khoản, mật khẫu”
4.2 Nếu người dùng nhập thông tin không chính xác, hệ thống thông báo “Thông tin đăng nhập không chính xác”
Use Case Name Đăng ký
Description Đăng ký tải khoản
Pre-Condition Thiết bị người dùng được kết nối internet khi sử dụng
1 Người dùng nhấn vào nút “Đăng ký” trên ứng dụng
2 Hệ thống hiển thị form đăng ký
3 Người dùng nhập tài khoản, mật khuẫ và các thông tin khác và bấm nút “Đăng ký”
4 Hệ thống xử lý đăng ký thành công
2.1 Nếu có tài khoản, người dùng có thể bấm vào nút “Đăng nhập” để chuyển sang usecase Đăng nhập
4.1 Nếu người dùng chưa nhập tài khoản hoặc mật khẩu, hệ thống hiển thị thông báo “Vui lòng nhập đầy đủ tài khoản, mật khẫu”
1.3.2.3 Use case chỉnh sửa thông tin
Use Case Name Nhận đơn hàng
Description Shipper nhận đơn hàng đi giao
Thiết bị người dùng được kết nối internet khi sử dụng
1 Người dùng chọn đơn hàng muốn nhận trên danh sách
2 Hệ thống hiển thị cảnh báo “Bạn có chắc chắn muốn nhận đơn này không”
3 Người dùng ấn nút “Xác nhận”
4 Hệ thống thông báo “Đã nhận đơn hàng thành công”
3.1 Người dùng ấn “Huỷ” quay trở lại trang danh sách đơn hàng
Exception Flow 4.1 Hệ thống thông báo “Đơn hàng nhận thất bại do có shipper khác đã nhận”
Use Case Name Vận đơn
Description Shipper giao hàng cho khách
Thiết bị người dùng được kết nối internet khi sử dụng
1 Người dùng chọn đơn hàng muốn giao
2 Hệ thống hiển thị hiển thị “Bạn chắc chắn muốn vận đơn”
3 Người dùng ấn nút “Xác nhận”
4 Hệ thống thông báo “Đơn hàng đang được vận chuyển”
3.1 Người dùng ấn “Huỷ” quay trở lại trang danh sách đơn hàng
1.3.2.6 Use case xác nhận đơn
Use Case Name Xác nhận đơn hàng
Description Shipper xác nhận giao hàng thành công
Thiết bị người dùng được kết nối internet khi sử dụng
1 Người dùng chọn đơn hàng đang giao
2 Hệ thống hiển thị hiển thị form nhập thông tin, hình ảnh đơn hàng
3 Người dùng upload hình ảnh và ấn “Xác nhận”
4 Hệ thống thông báo “Đơn hàng đang chờ manager xét duyệt”
3.1 Người dùng ấn “Huỷ” quay trở lại trang danh sách đơn hàng
1.3.2.6 Use case huỷ nhận đơn
Use Case Name Huỷ đơn hàng
Description Shipper huỷ đơn hàng do có vấn đề phát sinh
Thiết bị người dùng được kết nối internet khi sử dụng
Basic Flow 1 Người dùng chọn đơn hàng đang giao hoặc đả nhận và chọn “Huỷ đơn hàng”
2 Hệ thống hiển thị form nhập thông tin
3 Người dùng nhập lý do huỷ đơn và nhấn “Huỷ”
4 Hệ thống hiển thị cảnh báo “Bạn có chắc chắn muốn huỷ đơn hàng!”
5 Người dùng nhấn “Xác nhận”
6 Hệ thống thông báo “Đơn hàng đã huỷ thành công”
5.1 Người dùng ấn “Huỷ” quay trở lại trang danh sách đơn hàng
Use Case Name Chat – liên lạc
Description Chat giữa shipper và manager
Thiết bị người dùng được kết nối internet khi sử dụng
1 Người dùng chọn hỗ trợ trên menu
2 Hệ thống hiển thị app chat
3 Người dùng nhập tin nhắn và nhấn “Gửi”
Use Case Name Giao đơn
Description Manager giao đơn hàng cho shipper
Thiết bị người dùng được kết nối internet khi sử dụng
1 Người dùng chọn đơn hàng cần giao, và ấn nút “Giao đơn”
2 Hệ thống hiển thị form chọn shipper
3 Người dùng chọn shipper và nhấn “Xác nhận”
4 Hệ thống giao đơn hàng cho shipper và thông báo “Giao đơn thành công”
Flow 3.1 Người dùng nhấn “Huỷ” quay về trang danh sách
Lược đồ sequence
Hình 1 Sequence đăng nhập
Hình 2 Sequence Đăng ký
1.3.3 Use case đổi mật khẩu
Hình 3 Sequence Đổi mật khẩu
Figure 3: SD Đổi mật khẩu
1.3.4 Use case xem và sửa thông tin cá nhân
Hình 4 Sequence xem và sửa thông tin
1 Figure 4: SD Xem và sửa thông tin cá nhân
1.3.3 Use case tìm kiếm sản phẩm
Hình 5 Tìm kiếm sản phẩm
Figure 5: SD Tìm kiếm sản phẩm
1.3.6 Use case thêm sản phẩm
Hình 6 Sequence thêm giỏ hàng
Figure 6: SD Thêm giỏ hàng
1.3.7 Use case cập nhật giỏ hàng
Hình 7 Sequence cập nhật giỏ hàng
Figure 7: SD Cập nhật giỏ hàng
Hình 8 Sequence mua hàng
1.3.9 Use case xem trạng thái đơn
Hình 9 xem trạng thái
Figure 9: SD Xem trạng thái đơn
1.3.10 Use case thêm sản phẩm
Hình 10 Thêm sản phẩm
Figure 10: SD Thêm sản phẩm
Hình 11 Danh sách sản phẩm
Figure 11: SD Xem danh sách sản phẩm
Hình 12 Cập nhật sản phẩm
Figure 12: SD Cập nhật sản phẩm
Hình 13 Xóa sản phẩm
Figure 13: SD Xo sản phẩm
1.3.11 Use case xem danh sách đơn hàng
Hình 14 Xem danh sách đơn hàng
Figure 14: SD Xem danh sách các đơn hàng
Hình 15 Cập nhật trạng thái đơn hàng
Figure 15: SD Cập nhật trạng thái đơn hàng
1.3.12 Use case xem tài khoản người dùng
Hình 16 Xem danh sách tài khoản
Figure 16: SD Xem danh sách tài khoản người dùng
Hình 17 Cập nhật tài khoản người dùng
1.3.16 Use case chỉnh sửa thông tin cá nhân
Lượt đồ activity
Class Diagram
ERD sản phẩm và đơn hàng:
HỆ THỐNG GỢI Ý SẢN PHẨM
Tìm hiểu về các hệ thống gợi ý sản phẩm hiện nay
2.1.1 Giới thiệu về hệ thống gợi ý
Hệ thống gợi ý (Recommender System) là công nghệ trí tuệ nhân tạo (AI) giúp tìm kiếm và đề xuất sản phẩm, nội dung phù hợp với người dùng dựa trên hành vi và sở thích của họ trên ứng dụng Hệ thống này phân tích dữ liệu từ trang web, thông tin mua hàng và tương tác của người dùng để dự đoán những sản phẩm và nội dung mà họ có khả năng quan tâm.
Hệ thống gợi ý hiện nay được áp dụng phổ biến trong nhiều lĩnh vực, bao gồm thương mại điện tử, dịch vụ truyền hình trực tuyến, mạng xã hội và các trang web tin tức.
2.1.2 Các loại hệ thống gợi ý chính hiện nay
Hiện nay, có ba loại hệ thống gợi ý chính:
Hệ thống gợi ý dựa trên lọc cộng tác (Collaborative Filtering)
Hệ thống này hoạt động dựa trên nguyên tắc rằng những người có sở thích tương tự sẽ có xu hướng ưa chuộng những sản phẩm giống nhau Bằng cách phân tích dữ liệu hành vi người dùng, như thông tin tìm kiếm, lượt truy cập và đánh giá, hệ thống có khả năng nhóm người dùng có sở thích tương đồng Sau đó, nó sẽ đề xuất cho từng người dùng trong nhóm những sản phẩm mà các thành viên khác đã mua, từ đó tối ưu hóa trải nghiệm mua sắm.
Hệ thống gợi ý dựa trên nội dung (Content-based Filtering)
Hệ thống này hoạt động dựa trên nguyên tắc rằng người dùng có xu hướng yêu thích các sản phẩm có nội dung tương tự Bằng cách phân tích nội dung của những sản phẩm mà người dùng đã xem hoặc mua trước đó, hệ thống sẽ đề xuất những sản phẩm khác có nội dung tương đồng.
Hệ thống lọc và gợi ý sản phẩm giúp người dùng tìm kiếm các sản phẩm tương tự trong hệ thống Ví dụ, trên một trang web bán sách, khi người dùng mua sách, hệ thống sẽ phân tích thói quen xem và mua sách của họ, từ đó đưa ra gợi ý về những cuốn sách có nội dung và thể loại tương đồng.
Hệ thống gợi ý lai (Hybird Filtering):
Hệ thống này kết hợp hai hệ thống khác nhau, mang lại hiệu quả tốt hơn trong thực tế Tuy nhiên, việc kết hợp này cũng đòi hỏi độ phức tạp và chi phí cao hơn Do đó, việc lựa chọn và sử dụng hệ thống cần xem xét kỹ lưỡng các yếu tố như nghiệp vụ, nhân lực, tài nguyên và dữ liệu hiện có.
Ngoài ra, còn tồn tại các hệ thống gợi ý khác như hệ thống gợi ý dựa trên quy tắc (Rule-based filtering) và hệ thống gợi ý dựa trên mạng xã hội (Social Filtering).
So sánh việc áp dụng các hệ thống gợi ý vào website hiện tại
Tiêu chí Lọc cộng tác (CF) Lọc dựa trên nội dung (CBF) Lọc lai (Hybrid) Khả năng khám phá
Cao - Giới thiệu sản phẩm mới dựa trên sở thích tương đồng, đa dạng, tránh "bong bóng lọc"
Thấp - Giới thiệu sản phẩm mới dựa trên nội dung tương tự, ít đa dạng, dễ tạo "bong bóng lọc"
Cao - Kết hợp ưu điểm của CF và CBF, giới thiệu sản phẩm mới đa dạng, tránh
Cá nhân hóa Cao - Cá nhân hóa cao dựa trên lịch sử mua hàng, hành vi duyệt web, thích ứng tốt với sở thích thay đổi
Thấp - Cá nhân hóa thấp hơn CF, chỉ dựa trên sở thích nội dung, thích ứng kém hơn
Cao - Kết hợp ưu điểm của CF và CBF, cá nhân hóa cao dựa trên sở thích, hành vi và nội dung, thích
57 với sở thích thay đổi ứng tốt với sở thích thay đổi
Khó - Khó giải thích cho người dùng và nhà phát triển do thuật toán phức tạp
Dễ - Dễ giải thích cho người dùng do dựa trên nội dung sản phẩm, dễ giải thích cho nhà phát triển do quy tắc rõ ràng
Phụ thuộc - Khả năng giải thích phụ thuộc vào cách kết hợp và hiển thị lý do gợi ý, có thể dễ hoặc khó giải thích
Minh bạch Thấp - Thiếu minh bạch do thuật toán học máy phức tạp, khó kiểm soát
Cao - Cao minh bạch do dựa trên quy tắc rõ ràng, dễ kiểm soát
Phụ thuộc - Phụ thuộc vào cách kết hợp và minh bạch của từng thuật toán
Phụ thuộc dữ liệu người dùng
Cao - Yêu cầu lượng dữ liệu người dùng lớn để hoạt động hiệu quả, gặp vấn đề "cold start"
Thấp - Ít phụ thuộc dữ liệu người dùng hơn CF, có thể hoạt động hiệu quả với dữ liệu hạn chế
Trung bình - Cần cả dữ liệu người dùng và dữ liệu nội dung sản phẩm, lượng dữ liệu vừa phải
Lịch sử mua hàng, hành vi duyệt web
Mô tả sản phẩm, thông số kỹ thuật, danh mục, đánh giá
Cả hai loại dữ liệu
Kỹ thuật học máy phổ biến
KNN, Matrix Factorization, Collaborative Filtering with ALS
TF-IDF, LDA, Word Embedding
NCF, MFSI, Attention-based Recommender Systems Ưu điểm Khả năng khám phá cao, cá nhân
Khả năng giải thích cao, minh
Kết hợp ưu điểm của
58 hóa cao, thích ứng tốt bạch, ít phụ thuộc dữ liệu
Nhược điểm Yêu cầu nhiều dữ liệu, gặp vấn đề
"cold start", khó giải thích
Khả năng khám phá thấp, thiên vị sản phẩm phổ biến
Phức tạp, cần nhiều dữ liệu và nguồn lực
Lựa chọn cho website bán đồ công nghệ
Phù hợp khi có nhiều dữ liệu người dùng và muốn đề xuất sản phẩm mới
Phù hợp khi có dữ liệu nội dung sản phẩm chất lượng cao và muốn giải thích dễ dàng
Phù hợp khi muốn kết hợp ưu điểm của cả
CF và CBF, có đủ dữ liệu để huấn luyện mô hình
Dựa trên các yếu tố phân tích và tài nguyên hiện có, chúng tôi nhận thấy rằng với thời gian tìm hiểu và nghiên cứu hạn chế, việc triển khai hệ thống gợi ý Hybrid là quá khó khăn Do đó, chúng tôi sẽ tập trung vào một trong hai hệ thống còn lại để triển khai trước, và dự kiến sẽ nâng cấp lên hệ thống Hybrid trong tương lai.
Để xây dựng một hệ thống gợi ý hiệu quả, việc xem xét dữ liệu hiện tại và tương lai là rất quan trọng Một tập dữ liệu đa dạng và chất lượng cao là yếu tố quyết định cho sự thành công của hệ thống Chúng tôi đã tiến hành phân tích các loại dữ liệu, nội dung chi tiết và hành vi của website hiện tại cũng như các website tương tự đang hoạt động tại Việt Nam.
Dữ liệu chi tiết về nội dung sản phẩm hiện có trên website và dễ dàng tìm thấy trên các diễn đàn chia sẻ, với độ chính xác rất cao.
Dữ liệu hành vi người dùng thường khó thu thập, vì nó chủ yếu dựa vào các tương tác của người dùng với trang web Để có được thông tin chính xác, dữ liệu này cần được tích lũy và tổng hợp trong một khoảng thời gian dài.
Dựa trên khảo sát của chúng tôi trên các trang bán đồ công nghệ nổi tiếng như Thế giới di động, FPT Shop, và Cellphones, số lượng đánh giá của người dùng đối với sản phẩm là rất ít, mặc dù đây là những website mua sắm hàng đầu tại Việt Nam So sánh số lượng đánh giá của sản phẩm bán chạy nhất trên Thế giới di động với các sàn thương mại điện tử khác cho thấy sự chênh lệch rõ rệt Nguyên nhân cơ bản của vấn đề này nằm ở chất lượng sản phẩm.
Một chiếc smartphone, ngay cả khi là flagship giá rẻ, vẫn có giá trị cao Là người tiêu dùng, tôi không thể chỉ dựa vào đánh giá trên trang web để quyết định mua Thay vào đó, tôi thường nghiên cứu kỹ lưỡng và so sánh nhiều mẫu điện thoại trong cùng phân khúc Nguồn thông tin tin cậy mà tôi lựa chọn là các video review sản phẩm trên Youtube.
Nếu chọn xây dựng hệ thống gợi ý bằng Collaborative Filtering, chúng tôi không thể chỉ dựa vào đánh giá sản phẩm, đặc biệt khi số lượng đánh giá hiện tại còn hạn chế Để theo đuổi hướng này, chúng tôi cần đầu tư thời gian và công sức để thu thập dữ liệu hành vi người dùng, chẳng hạn như số lượt xem và thời gian người dùng tương tác với sản phẩm Điều này yêu cầu một nỗ lực lớn và thời gian đáng kể.
Nếu chọn xây dựng hệ thống gợi ý bằng phương pháp Content-based Filtering, chúng tôi có thể tiết kiệm thời gian và công sức, từ đó nâng cao hiệu quả trong việc nghiên cứu và phát triển hệ thống, đáp ứng tốt hơn nhu cầu hiện tại và đảm bảo hoàn thiện trong thời gian cho phép.
Hệ thống AI hiện nay có khả năng thu thập dữ liệu chi tiết về các sản phẩm công nghệ từ nhiều nguồn khác nhau Thông tin này được chia sẻ rộng rãi trên các trang web, giúp việc thu thập dữ liệu trở nên dễ dàng hơn Đặc biệt, dữ liệu này thường có độ chính xác cao vì nó chủ yếu là dữ liệu gốc, không phải là thông tin ngẫu nhiên.
Chính vì tất cả những yếu tố trên mà nhóm em quyết định xây dựng hệ thống gợi ý sản phẩm dựa trên phương pháp Content-based Filtering
Tìm hiểu cách gợi ý sản phẩm bằng lọc nội dung (Content-based filtering) 60 2.4 Thực hiện tìm hiểu và triễn khai trên tập data mẫu
Content-based filtering (CBF) là một kỹ thuật trong hệ thống đề xuất, giúp dự đoán mức độ quan tâm của người dùng đối với các mục dựa trên nội dung của chúng CBF phân tích nội dung các mục mà người dùng đã tương tác trước đó, như bài viết, video hay sản phẩm, để tìm ra những mục tương tự mà người dùng có thể yêu thích.
CBF hoạt động dựa trên hai bước chính:
Xây dựng hồ sơ (Profile):
Để xác định các đặc trưng mô tả nội dung của các mục, cần xem xét các yếu tố quan trọng như chủ đề, từ khóa và tác giả đối với bài viết, trong khi đối với sản phẩm, các đặc trưng bao gồm loại sản phẩm, thương hiệu và giá cả Việc phân tích các đặc trưng này giúp tạo ra nội dung có giá trị và tối ưu hóa cho công cụ tìm kiếm.
- Tạo hồ sơ cho mỗi mục bằng cách biểu diễn các đặc trưng của mục đó dưới dạng vectơ
Tạo hồ sơ người dùng dựa trên lịch sử tương tác giúp cá nhân hóa trải nghiệm của họ, bằng cách phân tích các bài viết đã đọc và sản phẩm đã mua Việc này không chỉ nâng cao sự hài lòng của người dùng mà còn tối ưu hóa nội dung và sản phẩm được đề xuất, từ đó tăng cường khả năng giữ chân khách hàng.
Tính toán mức độ tương thích:
- Sử dụng các phương pháp so sánh vectơ để tính toán mức độ tương thích giữa hồ sơ người dùng và hồ sơ của các mục
- Gợi ý cho người dùng những mục có mức độ tương thích cao nhất
Các thuật toán phổ biến
- K-Nearest Neighbors (KNN): Tìm kiếm K mục có mức độ tương thích cao nhất với hồ sơ người dùng
- Cosine Similarity: Tính toán độ tương đồng cosin giữa vectơ hồ sơ người dùng và vectơ hồ sơ của các mục
Chỉ số Jaccard là phương pháp tính toán tỷ lệ giao nhau giữa tập hợp các đặc trưng trong hồ sơ người dùng và tập hợp các đặc trưng trong hồ sơ của các mục.
- Support Vector Machines (SVM): Sử dụng SVM để phân loại các mục thành
"thích" và "không thích" dựa trên lịch sử tương tác của người dùng
2.4 Thực hiện tìm hiểu và triễn khai trên tập data mẫu
Data mẫu là một tập data smartphone với các giá trị model, price, rating, sim, …
Xây dựng dữ liệu đầu vào: Trong phần này, tôi muốn so sánh sự tương đồng của dữ liệu đầu vào dựa trên một cột dữ liệu cụ thể Do đó, tôi sẽ triển khai theo hai phương pháp khác nhau.
- Gộp hết data vào một cột bằng nối chuổi rồi train model
Sau đó ta sẽ dùng thuật toán TF*IDF để tạo ma trận và tính ma trận tương tự cosine
Cuối cùng dùng ma trận cosine tìm được lấy sản phẩm tương đồng nhất với sản phẩm ban đầu
- Train model cho từng cột data và gợi ý theo cột
Với cách này ta sẽ training cho từng cột data
Khi gợi ý sản phẩm, ta sẽ thêm option column để lọc ra sản phẩm gợi ý Đánh giá
Hệ số tương đồng giữa các vector chưa cao
Tìm hiểu Bidirectional Encoder Representations from Transformers
BERT (Bidirectional Encoder Representations from Transformers) là mô hình ngôn ngữ do Google phát triển vào năm 2018, đánh dấu một bước tiến quan trọng trong xử lý ngôn ngữ tự nhiên (NLP) Mô hình này được thiết kế để hiểu ngữ cảnh từ trong câu bằng cách sử dụng kiến trúc transformer hai chiều.
Transformer là một kiến trúc mô hình tiên tiến dựa trên cơ chế tự chú ý (self-attention), loại bỏ hoàn toàn các kết nối tuần tự như trong mạng nơ-ron truyền thống (RNN hoặc LSTM) Kiến trúc này bao gồm hai phần chính, giúp cải thiện hiệu suất xử lý dữ liệu và tối ưu hóa khả năng học tập của mô hình.
- Encoder: Biến đổi đầu vào thành một loạt các vector
- Decoder: Biến đổi các vector này thành đầu ra mong muốn
BERT là một mô hình transformer hai chiều, cho phép nó phân tích ngữ cảnh của từ từ cả hai phía, trước và sau Điều này tạo ra sự khác biệt so với các mô hình trước đây như GPT, chỉ xem xét ngữ cảnh từ trái sang phải.
Huấn Luyện Trước (Pre-training) và Tinh Chỉnh (Fine-tuning)
BERT sử dụng hai giai đoạn huấn luyện:
- Pre-training: Mô hình được huấn luyện trước trên một lượng lớn văn bản không nhãn bằng cách sử dụng hai nhiệm vụ chính:
Masked Language Model (MLM): Một số từ trong câu được che lại (masked) và mô hình phải dự đoán các từ bị che này
Next Sentence Prediction (NSP): Mô hình phải dự đoán xem một câu có phải là câu tiếp theo của câu trước đó hay không
Mô hình BERT sau khi được huấn luyện sẽ được tinh chỉnh cho các nhiệm vụ cụ thể bằng cách sử dụng dữ liệu có nhãn Quá trình này cho phép toàn bộ mô hình BERT được điều chỉnh lại, tối ưu hóa hiệu suất cho từng nhiệm vụ riêng biệt.
Các Phiên Bản Của BERT
BERT có nhiều phiên bản khác nhau tùy thuộc vào kích thước của mô hình:
BERT-base: 12 layers (transformer blocks), 768 hidden units, 12 self-attention heads
BERT-large: 24 layers (transformer blocks), 1024 hidden units, 16 self- attention heads Ứng Dụng Của BERT
BERT có thể được áp dụng trong nhiều nhiệm vụ NLP khác nhau như:
Phân loại văn bản (Text classification)
Trả lời câu hỏi (Question answering)
Nhận dạng thực thể có tên (Named entity recognition)
Dịch máy (Machine translation) Ưu Điểm Của BERT
Hiệu Quả Cao: BERT đã thiết lập các chuẩn mực mới cho nhiều tác vụ NLP
Đa Nhiệm Vụ: BERT có thể được sử dụng cho nhiều nhiệm vụ khác nhau với hiệu suất cao
Hiểu Ngữ Cảnh Tốt Hơn: BERT có khả năng hiểu ngữ cảnh của từ trong câu tốt hơn so với các mô hình trước đây
Tài Nguyên Tính Toán: Huấn luyện và tinh chỉnh BERT đòi hỏi rất nhiều tài nguyên tính toán.
Tìm hiểu Bidirectional Encoder Representations from Transformers
Dữ liệu tiền để là một bộ dữ liệu mẫu về smartphone mà nhóm chúng tôi đã thực hiện nhằm kiểm tra hiệu quả của các mô hình Sau đó, nhóm sẽ lựa chọn mô hình tốt nhất để phát triển chức năng.
Hiện tại, nhóm em quyết định xử lý tập data mẫu với sự tương đồng cao về cấu trúc lưu trữ, nhằm thêm 1020 sản phẩm vào hệ thống Để thực hiện điều này, em sẽ cài đặt các tham số cần thiết như thương hiệu, màu sắc và tỷ số quy đổi tiền hiện tại, vì dữ liệu mẫu không sử dụng tiền VND.
Sau đó em sẽ xây dựng các function để tiến hành extract được dữ liệu từ data mẫu
Sau khi trích xuất dữ liệu, tôi sẽ tạo file JSON để thêm sản phẩm Một số trường dữ liệu có thể không có thông tin, vì vậy tôi sẽ tiến hành giả lập dữ liệu cho những trường này.
68 Tiếp đến em sẽ sử dụn API thêm sản phẩm đã có ở hệ thống hiện tại để tiến hành thêm đồng loạt các sản phẩm vào hệ thống
Sau khi hoàn tất quy trình, hệ thống của chúng tôi đã thu thập dữ liệu từ hơn 1000 sản phẩm điện thoại thông minh Đây là nguồn dữ liệu quan trọng, giúp hệ thống gợi ý của chúng tôi hoạt động hiệu quả dựa trên thông tin sản phẩm.
2.6.2 Giai đoạn xử lý dữ liệu Đầu tiên ta tiến hành lấy các thông tin cơ bản của sản phẩm từ database lên Sau đó ở giai đoạn xử lý, ta dùng một thư viện chuẩn hoá dữ liệu của python nltk để tiến hành chuẩn hoá dữ liệu Ở đây nhóm em đang sử dụng hai resource chính là wordnet và punkt
WordNet là một cơ sở dữ liệu từ vựng phong phú cho tiếng Anh, tổ chức các từ thành các tập hợp đồng nghĩa (synsets) Nó không chỉ cung cấp định nghĩa ngữ nghĩa ngắn gọn mà còn ghi nhận các mối quan hệ giữa các tập hợp này, giúp người dùng hiểu rõ hơn về cách sử dụng từ trong ngữ cảnh.
- Lemmatization: Sử dụng để chuẩn hóa các từ về dạng cơ bản (nguyên thể) Ví dụ, từ "running" sẽ được chuẩn hóa về "run"
Tìm kiếm từ đồng nghĩa là một phương pháp quan trọng giúp nâng cao hiệu suất của các ứng dụng xử lý ngôn ngữ tự nhiên Việc hiểu và nhận diện các từ có cùng ý nghĩa không chỉ cải thiện khả năng phân tích ngôn ngữ mà còn tối ưu hóa quá trình xử lý thông tin.
- Hyponyms/Hypernyms: Giúp xác định mối quan hệ phân cấp giữa các từ Ví dụ,
"car" là hyponym của "vehicle" và "vehicle" là hypernym của "car"
- Word Similarity: Đánh giá mức độ tương tự giữa các từ dựa trên khoảng cách ngữ nghĩa của chúng trong cơ sở dữ liệu
Punkt là một công cụ tokenizer tiên tiến, được đào tạo trên dữ liệu tiếng Anh, giúp tách văn bản thành các câu và từ một cách hiệu quả Thay vì sử dụng từ điển hay quy tắc cú pháp, Punkt dựa vào mô hình thống kê đã được huấn luyện trước để thực hiện nhiệm vụ này.
- Sentence Tokenization: Tách một đoạn văn bản thành các câu Ví dụ, từ đoạn văn
"This is a sentence This is another sentence." sẽ tách thành hai câu riêng biệt
- Word Tokenization: Tách một câu thành các từ Ví dụ, từ câu "This is a sentence." sẽ tách thành các từ ["This", "is", "a", "sentence", "."]
- Language Independence: Mặc dù được huấn luyện chủ yếu trên dữ liệu tiếng Anh, Punkt có thể được tùy chỉnh và áp dụng cho các ngôn ngữ khác
Additionally, we will utilize "stopwords_vietnamese.txt" to eliminate redundant words in properties that predominantly use Vietnamese, particularly in the description section.
Trong hệ thống, mô tả đang được lưu trữ dưới dạng HTML, vì vậy tôi sẽ sử dụng thư viện BeautifulSoup để loại bỏ các thẻ HTML khỏi dữ liệu.
Sau quá trình xử lý dữ liệu, data sẽ được ghi vào một file CSV để có thể read nhanh hơn thay vì truy vấn vào database
2.6.3 Xây dựng chức năng gợi ý
Tải Mô Hình Và Tokenizer BERT và tính độ tương đồng similarity Đầu tiên, chúng ta tải mô hình BERT và tokenizer từ thư viện transformers:
Chúng tôi đã triển khai việc viết các hàm để chuyển đổi câu thành vector dựa trên mô hình BERT, đồng thời thực hiện tính toán độ tương đồng giữa hai vector.
Chúng em đã phát triển một hàm để tính toán độ tương đồng giữa sản phẩm mà khách hàng chọn và tất cả các sản phẩm hiện có trong hệ thống Kết quả của quá trình tính toán sẽ được lưu trữ trong một mảng.
Cuối cùng là thực hiện lấy ra top N sản phẩm có độ trung bình tương đồng cao nhất, từ trên xuống
- Thời gian để có thể tính toán hết lượng sản phẩm hiện tại (hơn 1000 sản phẩm) là quá lớn
- Với cách làm như vậy, việc chuyển đổi vector được lặp đi lặp lại nhiều lần, tốn nhiều tài nguyên
Tối ưu hoá tốc độ gợi ý với FAISS(IndexFlatIP)
FAISS (Facebook AI Similarity Search) là thư viện mã nguồn mở do Facebook AI Research phát triển, cung cấp các giải pháp hiệu quả và linh hoạt cho việc tìm kiếm và phân tích sự tương đồng trong dữ liệu.
FAISS là công cụ hỗ trợ tìm kiếm các vector gần nhất (k-NN) trên không gian lớn, cho phép thực hiện cả tìm kiếm chính xác và tìm kiếm gần đúng (Approximate Nearest Neighbor Search) Được thiết kế để xử lý các tập dữ liệu lớn, FAISS tận dụng khả năng tính toán của CPU và GPU nhằm tăng tốc độ xử lý hiệu quả.
Cơ Sở Lý Thuyết FAISS IndexFlatIP
Tìm Kiếm K-Nearest Neighbors (k-NN Search) là một bài toán cơ bản trong học máy và xử lý dữ liệu, nhằm xác định k điểm dữ liệu gần nhất với một điểm truy vấn trong tập dữ liệu Bài toán này đóng vai trò quan trọng trong nhiều ứng dụng, bao gồm tìm kiếm thông tin, nhận diện hình ảnh và gợi ý sản phẩm.
APP QUẢN LÝ VẬN CHUYỂN
Mô tả Quy trình Vận chuyển
CHƯƠNG 3: APP QUẢN LÝ VẬN CHUYỂN 3.1 Giới thiệu Ứng dụng quản lý vận chuyển là một công cụ quan trọng trong việc điều hành và quản lý các hoạt động vận chuyển hàng hóa Nó giúp doanh nghiệp theo dõi, quản lý và tối ưu hóa quá trình giao nhận hàng hóa từ lúc đặt hàng đến khi hàng hóa được giao thành công hoặc hoàn trả Đây là một phần mềm không thể thiếu trong việc nâng cao hiệu quả và giảm thiểu rủi ro trong hoạt động vận chuyển
Sơ đồ flow trạng thái đơn hàng
Hình 20 Sơ đồ flow trạng thái đơn hàng
3.2 Mô tả Quy trình Vận chuyển
Quy trình vận chuyển hàng hóa trong ứng dụng được mô tả chi tiết qua các trạng thái và hoạt động sau:
Khi một đơn hàng được tạo ra, nó sẽ ở trạng thái "Ordered" (Đơn hàng đã được đặt)
3.2.2 Xác nhận đơn hàng (Confirmed)
Sau khi đơn hàng được xác nhận bởi quản lý, nó sẽ chuyển sang trạng thái
"Confirmed" (Đơn hàng đã được quản lý xác nhận)
Nếu đơn hàng bị hủy, nó sẽ chuyển sang trạng thái "Cancelled" (Đơn hàng đã bị hủy)
3.2.4 Yêu cầu giao hàng (Requesting)
Khi đơn hàng được yêu cầu giao cho shipper, nó sẽ chuyển sang trạng thái
"Requesting" (Đơn hàng shipper yêu cầu giao)
Khi đơn hàng được phân công cho shipper, nó sẽ chuyển sang trạng thái "Working" (Đơn hàng đã phân công cho shipper)
Khi shipper bắt đầu vận chuyển đơn hàng, trạng thái sẽ chuyển sang "Delivering" (Đơn hàng đang được vận chuyển)
3.2.7 Chuyển giao shipper khác (Change_Delivering)
Nếu đơn hàng cần chuyển giao cho shipper khác, trạng thái sẽ là
"Change_Delivering" (Đơn hàng đang được chuyển cho shipper khác)
3.2.7.1 Thất bại vận chuyển (Delivering_Fail)
Nếu quá trình vận chuyển gặp thất bại, đơn hàng sẽ chuyển sang trạng thái
"Delivering_Fail_1", "Delivering_Fail_2" hoặc "Delivering_Fail_3" tùy theo mức độ thất bại
Khi đơn hàng được giao thành công, trạng thái sẽ chuyển sang "Delivered" (Đơn hàng đã vận chuyển)
3.2.9 Yêu cầu đổi hàng (Request_Change)
Nếu khách hàng yêu cầu đổi hàng, đơn hàng sẽ chuyển sang trạng thái
"Request_Change" (Yêu cầu đổi hàng)
Trong quá trình đổi hàng, trạng thái sẽ là "Changing" (Đơn hàng đang đổi)
3.2.9.2 Đổi hàng thành công (Changed)
Khi quá trình đổi hàng hoàn tất, trạng thái sẽ chuyển sang "Changed" (Đơn hàng đổi thành công)
3.2.10 Yêu cầu trả hàng (Request_Return)
Nếu khách hàng yêu cầu trả hàng, đơn hàng sẽ chuyển sang trạng thái
"Request_Return" (Yêu cầu trả hàng)
Trong quá trình trả hàng, trạng thái sẽ là "Returning" (Đơn hàng đang trả lại)
3.2.10.2 Trả hàng thành công (Returned)
Khi quá trình trả hàng hoàn tất, trạng thái sẽ chuyển sang "Returned" (Đơn hàng trả lại shop thành công)
3.2.11 Yêu cầu đổi và trả hàng (Request_Change_And_Return)
Nếu khách hàng yêu cầu đổi và trả hàng cùng lúc, trạng thái sẽ là
"Request_Change_And_Return" (Yêu cầu trả và đổi hàng)
3.2.11.1 Đang đổi và trả hàng (Changing_And_Returning)
Trong quá trình đổi và trả hàng, trạng thái sẽ là "Changing_And_Returning" (Đang đổi và trả hàng)
3.2.11.2 Đổi và trả hàng thành công (Changed_And_Returned)
Khi quá trình đổi và trả hàng hoàn tất, trạng thái sẽ chuyển sang
"Changed_And_Returned" (Đã đổi và trả hàng thành công)
3.2.12 Đơn hàng nhận thành công (Received)
Khi khách hàng nhận được hàng, trạng thái sẽ là "Received" (Đơn hàng đã được nhận)
3.2.13 Đơn hàng thành công (Success)
Khi toàn bộ quy trình hoàn tất mà không có vấn đề gì, đơn hàng sẽ được đánh dấu là
"Success" (Đơn hàng thành công)
3.2.14 Đơn hàng thất bại (Failed)
Nếu bất kỳ phần nào của quy trình thất bại, đơn hàng sẽ được đánh dấu là "Failed" (Đơn hàng thất bại).
Kết luận
Ứng dụng quản lý vận chuyển mang đến hệ thống theo dõi và quản lý toàn diện, giúp tối ưu hóa quá trình vận chuyển Sử dụng ứng dụng này, doanh nghiệp có thể nâng cao hiệu quả hoạt động, giảm rủi ro và cải thiện trải nghiệm khách hàng.
LẬP KẾ HOẠCH KIỂM THỬ
Lịch trình kiểm thử
Trong quá trình kiểm thử, các công việc quan trọng được thực hiện bao gồm: Lập kế hoạch kiểm thử với tài liệu Test Plan trong 4 ngày từ 07/11/2023 đến 10/11/2023; Xem lại các tài liệu Test Plan trong 2 ngày từ 11/11/2023 đến 12/11/2023; Thiết kế các testcase với tài liệu Testcase trong 2 ngày từ 14/11/2023 đến 15/11/2023; và cuối cùng, Viết các testcase trong 1 ngày vào 16/11/2023.
Thực thi các testcase và viết bugreports
Tài liệu Testcase, Tài liệu bugreports 2 ngày 17/11/2023 18/11/2023
Ghi nhận và đánh giá kết quả kiểm thử Tài liệu Testcase 1 ngày 19/11/2023 19/11/2023
Chọn mã nguồn kiểm thử hộp trắng
Tài liệu mã nguồn hộp trắng 1 ngày 21/11/2023 21/11/2023
Thiết kế các sơ đồ
Tài liệu sơ đồ luồng điều khiển và luồng dữ liệu
Kiểm thử luồng dữ liệu từng biến
Tài liệu luồng dữ liệu cho từng biến 2 ngày 24/11/2023 25/11/2023
Ghi nhận và đánh giá kiểm thử hộp trắng
Tài liệu kiểm thử hộp trắng 1 ngày 26/11/2023 26/11/2023
Ghi nhận và đánh giá kết quả kiểm thử của đồ án
Tài liệu Testcase, Tài liệu kiểm thử hộp trắng, Tài liệu bugreports
Mục tiêu kiểm thử
- Xác định thông tin cơ bản về dự án và các thành phần chức năng được kiểm thử và không được kiểm thử
- Liệt kê những yêu cầu cho việc kiểm thử
- Những chiến lược kiểm thử nên được sử dụng
- Ước lượng những yêu cầu về tài nguyên và chi phí cho việc kiểm thử
- Những tài liệu được lập sau khi hoàn thành việc kiểm thử
4.2.2 Những người sử dụng tài liệu này
Tài liệu này được sử dụng cho Test Manager, Test Designer và Tester.
Những yêu cầu về tài nguyên
Các thiết bị ngoại vi có kết nối mạng và các công cụ trình duyệt
Tên phần mềm Phiên bản Loại
Google Chrome ≥ 40.0 Trình duyệt web
Microsoft Edge ≥ 88.0 Trình duyệt web
Hoạt động Công cụ Nhà cung cấp Phiên bản
Quản lý Test Case Microsoft
Thiết bị ngoại vi có kết nối mạng Internet để có thể truy cập vào trang web thương mại điện tử https://tlcn-frontend.vercel.app/ bằng trình duyệt.
Chiến lược kiểm thử
Liệt kê tất cả các vấn đề liên quan phát sinh trong quá trình thực thi kiểm thử.
Điều kiện chấp nhận
Passed tất cả các testcases đã được định nghĩa
Hệ thống chạy ổn định trên các trình duyệt web khác nhau ( Firefox, Microsoft Edge và Google Chrome phiên bản mới nhất).
Defect Tracking
Mức độ nghiêm trọng Đặc tả lỗi
- Không thể đăng ký tài khoản
- Không thể xem được trang chủ
- Không xem được thông tin chi tiết sản phẩm
- Không hiển thị thông tin người dùng
- Không thể thêm danh mục
- Không thể thêm thương hiệu
- Không thể thêm sản phẩm
- Không thể thay đổi thông tin người dùng
- Không thể đưa sản phẩm vào giỏ hàng
- Không thể tiến hành thanh toán
- Sai thông tin thanh toán
- Hiển thị sai thông tin hoạt động của người dùng
- Hiển thị sai thông tin sản phẩm
- Hiển thị không đầy đủ thông tin người dùng
- Sai số lượng sản phẩm khi đưa vào giỏ hàng
- Sai thuộc tính sản phẩm trong giỏ hàng
- Sai thông tin giỏ hàng khi thanh toán
- Sai thông tin sản phẩm khi thực hiện thêm
- Sai thông tin danh mục khi thực hiện thêm
- Sai thông tin thương hiệu khi thêm Low
- Các chức năng chạy không ổn định
- Tiến trình xử lí chậm hơn mong đợi
- Các lỗi giao diện ít ảnh hưởng đến người dùng
4.6.2 Quy trình xử lí lỗi
Ghi nhận lại các lỗi được tìm thấy trong quá trình kiểm thử
Viết báo cáo lỗi tìm thấy để developer sửa lỗi
TRIỂN KHAI CHƯƠNG TRÌNH
Triển khai website
UC: Quản lý người dùng
Quản lý thông tin của người dùng cũng như cho phép thêm xem sửa xoá người dùng
Hình 21 Trang quản lý người dùng
UC: Quản lý sản phẩm
Quản lý thông tin của sản phẩm cũng như cho phép thêm xem sửa xoá sản phẩm
Hình 22 Trang quản lý sản phẩm
UC: Quản lý đơn hàng
Giao diện quản lý đơn hàng của admin, cho phép xem chi tiết sản phẩm của người dùng đã đặt, hoặc xác nhận trạng thái cho đơn hàng
Hình 23 Trang quản lý đơn
UC: Đăng ký, đăng nhập, quên mật khẩu
Cho phép người dùng đăng ký tài khoản, đăng nhập và cấp lại mật khẩu khi bị quên
Hình 24 Trang quên mật khẩu
Hình 25 Trang người dùng
UC: Xem danh sách sản phẩm
Hình 26 Trang xem danh sách sp
Hình 27 Lọc sản phẩm
UC: Xem chi tiết sản phẩm
Hình 28 Trang chi tiết sản phẩm
Cho phép người dùng chọn sản phẩm muốn thanh toán, hoặc thêm giảm số lượng sản phẩm trước khi thanh toán
Hình 29 Trang giỏ hàng
Người dùng có thể thực hiện thanh toán cho sản phẩm đã chọn và thêm vào giỏ hàng bằng cách điền các thông tin cần thiết và chọn phương thức thanh toán phù hợp.
Hình 30 Trang thanh toán
Người dùng chọn phương thức thanh toán bằng VNPay
UC: Xem lịch sử và đánh giá đơn hàng
Hình 31 Trang lịch sử đơn hàng
Triển khai app
Hình 32 Màn hình shipper
UC: đăng nhập, đăng ký
Hình 33 Màn hình shipper đăng ký
UC: Quản lý thông tin cá nhân
Cho phép shipper hoặc admin có thể xem và chỉnh sửa thông tin cá nhân
Hình 34 Màn hình thông tin shipper
UC: Quản lý đơn hàng
Quản lý các trạng thái của đơn hàng
Hình 35 Màn hình quản lý đơn hàng
Hình 36 Màn hình lọc đơn hàng
Hình 37 Màn hình chi tiết đơn hàng
Hình 38 Màn hình xác nhận đơn hàng
Hình 39 Màn hình xem bảng đồ
Giao diện thống kê của shipper và admin, cho phép xem thống kê doanh thu, đơn hàng đã đặt của người dùng đã đặt
Hình 40 Màn hình thống kê
ƯU ĐIỂM, NHƯỢC ĐIỂM VÀ HƯỚNG PHÁT TRIỄN
Ưu điểm
Quá trình làm dự án:
Tiếp cận công nghệ mới thông qua việc nghiên cứu các hệ thống gợi ý và quy trình vận chuyển sản phẩm thực tế giúp chúng tôi tích lũy kiến thức và kinh nghiệm quý giá cho tương lai.
- Thực hành và nâng cao các kỹ năng lập trình của mình
Làm việc nhóm là yếu tố quan trọng trong phát triển ứng dụng, yêu cầu sự phối hợp chặt chẽ giữa các thành viên Quá trình này không chỉ giúp hoàn thiện sản phẩm mà còn rèn luyện kỹ năng làm việc nhóm cho từng cá nhân.
- Học hỏi lẫn nhau Quá trình phát triển ứng dụng là một cơ hội để chúng em học hỏi từ các thành viên trong nhóm
- Ứng dụng có tính năng đầy đủ, hoàn thảnh 100% các mục tiêu, chức năng đề ra
- Hệ thống gợi ý đề xuất được những sản phẩm góp phần làm tăng trãi nghiệm mua hàng cho người dùng
Việc tích hợp quy trình vận chuyển và ứng dụng shipper cho phép đội ngũ quản lý theo dõi và giao hàng dựa trên nguồn lực của cửa hàng, loại bỏ sự phụ thuộc vào các đơn vị vận chuyển bên ngoài.
Ứng dụng của chúng tôi được thiết kế với khả năng mở rộng cao, nhờ vào việc sử dụng các công nghệ linh hoạt như ReactJS và Spring Boot Điều này cho phép chúng tôi dễ dàng nâng cấp và mở rộng ứng dụng để đáp ứng nhu cầu ngày càng đa dạng của người dùng trong tương lai.
Nhược điểm
Mặc dù các chức năng đã được hoàn thiện, nhưng khi xem xét lại, các tính năng vẫn còn khá đơn giản và chưa thực sự khả thi trong thực tế.
- Trang web đang chưa có một phần quan trọng không thiếu của một hệ thống bán hàng của doanh nghiệp là hệ thống quản lý nhân sự
- Ngoài ra, trang web cũng cần phải nâng cao hệ thống gợi ý để góp phần làm cho quá trình mua hàng của người dùng được tốt hơn
- Dù đã được kiểm tra kỹ lưỡng, vẫn có thể có lỗi tồn tại trong ứng dụng.
Hướng phát triễn
Phần gợi ý sản phẩm hiện tại được xây dựng dựa trên mô hình Content-based filtering, nghĩa là hoàn toàn dựa vào nội dung và thông tin chi tiết của sản phẩm Trong tương lai, khi trang web có đủ người dùng và nhiều đánh giá sản phẩm hơn, cần nghiên cứu và áp dụng thêm các hệ thống gợi ý khác để nâng cao trải nghiệm người dùng.
Hệ thống vận chuyển sản phẩm hiện tại đã tương đối đầy đủ, nhưng vẫn cần được chi tiết hóa hơn để phù hợp với thực tế Đây là một hướng phát triển mà nhóm chúng tôi sẽ tập trung vào trong tương lai Bên cạnh đó, việc quản lý đội ngũ shipper cũng đòi hỏi nghiên cứu và xây dựng một hệ thống tìm đường đi ngắn nhất để tối ưu hóa quá trình giao hàng, điều này là rất quan trọng để nâng cao hiệu quả hoạt động.
Với thời gian và nguồn lực hạn chế, chúng tôi chưa thể phát triển phần quản lý nhân sự cho trang web Tuy nhiên, việc xây dựng hệ thống quản lý lương cho đội ngũ nhân viên bán hàng và shipper là rất quan trọng đối với sự phát triển của doanh nghiệp.