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

Trong bối cảnh kinh tế phát triển, số lượng các cửa hàng bán lẻ xuất hiện ngày càng nhiều trên thị trường. Tuy nhiên, phần lớn các đơn vị kinh doanh quy mô vừa và nhỏ vẫn duy trì phương thức quản lý bán hàng truyền thống thông qua sổ sách và ghi chép thủ công. Phương thức này bộc lộ nhiều hạn chế như tiêu tốn thời gian, dễ gây sai sót và khó khăn trong việc kiểm soát dòng tiền, tồn kho cũng như dữ liệu khách hàng. Sự phổ biến của các thiết bị di động thông minh đã mở ra nhu cầu chuyển đổi số cho công tác quản lý bán hàng, đặt ra yêu cầu xây dựng một giải pháp phần mềm vừa có thể vận hành trên trình duyệt web, vừa hoạt động tối ưu trên thiết bị di động.

Đồ án tốt nghiệp chuyên ngành Kỹ thuật phần mềm / Công nghệ thông tin của sinh viên Hồ Kim Tiền và Trương Phạm Lý Hương tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (khóa 2020 – 2024), dưới sự hướng dẫn của ThS. Nguyễn Đức Khoan, tập trung giải quyết bài toán trên thông qua đề tài: "Building a website and mobile application to manage sales" (Xây dựng website và ứng dụng di động quản lý bán hàng).

Nhiệm vụ nghiên cứu của đồ án được xác định cụ thể theo hai phần:

  1. Nhiệm vụ lý thuyết: Nghiên cứu các nền tảng và công nghệ phát triển phần mềm gồm Spring Boot, ReactJS, React Native, JSON Web Token (JWT), Redis và hệ quản trị cơ sở dữ liệu MySQL.
  2. Nhiệm vụ thực hành:
    • Sử dụng Spring Boot để xây dựng hệ thống Backend và viết hệ thống RESTful API cho các phân hệ chức năng.
    • Sử dụng MySQL để lưu trữ toàn bộ dữ liệu người dùng và nghiệp vụ bán hàng.
    • Sử dụng ReactJS để thiết kế và xử lý giao diện website quản trị dành cho Quản trị viên (Admin).
    • Sử dụng React Native để thiết kế và xử lý giao diện ứng dụng di động cho toàn bộ các đối tượng người dùng trong hệ thống.

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

  • Đối tượng nghiên cứu: Quy trình quản lý bán hàng, quản lý kho hàng, quản lý khách hàng, tích điểm thưởng, hóa đơn và báo cáo doanh thu trong mô hình kinh doanh bán lẻ; các kỹ thuật phát triển ứng dụng di động đa nền tảng và dịch vụ web hướng API.
  • Phạm vi không gian và thời gian: Đề tài được thực hiện từ tháng 03/2024 đến tháng 06/2024 (ngày giao đề tài: 03/04/2024, nộp báo cáo: 15/06/2024) phục vụ việc nghiệm thu khóa luận tốt nghiệp kỹ sư/cử nhân CNTT.

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

Đồ án kết hợp nghiên cứu lý thuyết công nghệ phần mềm với phương pháp khảo sát ứng dụng thực tế và phân tích thiết kế hệ thống theo hướng đối tượng:

  • Khảo sát và đánh giá sản phẩm tương đương: Nhóm tác giả tiến hành khảo sát và phân tích chức năng, ưu nhược điểm của 4 ứng dụng bán hàng đang hoạt động trên thị trường:

    • App "Quản Lý Bán Hàng": Có đầy đủ tính năng tìm kiếm, bố cục rõ ràng nhưng giao diện chưa tối ưu không gian và chứa nhiều quảng cáo.
    • App "KiotViet Bán Hàng": Hỗ trợ quét mã vạch, in hóa đơn, giao diện mượt mà nhưng chưa tối ưu quản lý khách hàng và phân chia bố cục chưa rõ ràng.
    • App "sshop – Sổ bán hàng": Hỗ trợ đa ngôn ngữ, phân tích hiệu suất nhưng phụ thuộc hoàn toàn vào kết nối mạng, giao diện còn che khuất một số vùng hiển thị.
    • App "AFaDa – Quản Lý Bán Hàng": Giao diện trực quan, quản lý đơn hàng tốt nhưng phụ thuộc hạ tầng mạng internet.
  • Khung công nghệ và nền tảng:

    • Spring Boot (Java): Kiến trúc phân lớp (Layered Architecture) gồm Controller (tiếp nhận HTTP Request), Service (xử lý logic nghiệp vụ) và JPA Model (ánh xạ dữ liệu quan hệ với cơ sở dữ liệu).
    • ReactJS & React Native (JavaScript): Xây dựng giao diện dựa trên kiến trúc thành phần (Component-based), sử dụng JSX, Virtual DOM, quản lý trạng thái tập trung với Redux và xử lý bất đồng bộ (side-effects) thông qua Redux-saga.
    • Cơ sở dữ liệu & Caching: MySQL đóng vai trò RDBMS lưu trữ dữ liệu có cấu trúc; Redis đóng vai trò in-memory data store phục vụ bộ nhớ đệm (caching), tăng tốc độ truy xuất.
    • Bảo mật & Xác thực: Sử dụng JSON Web Token (JWT) để xác thực và phân quyền truy cập API giữa client và server.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình Client-Server phân tán, tách biệt hoàn toàn giữa tầng hiển thị và tầng dịch vụ thông qua RESTful API.

1. Kiến trúc phân quyền và tác tử (Actors)

Hệ thống xác định 4 nhóm tác tử chính với các quyền hạn cụ thể:

Tác tử (Actor) Nền tảng Quyền hạn và Chức năng chính
Guest (Khách) Mobile Đăng ký tài khoản, đăng nhập hệ thống, đăng nhập bằng tài khoản Google, khôi phục mật khẩu qua email.
Buyer (Người mua) Mobile Quản lý thông tin cá nhân, xem và lọc lịch sử hóa đơn, xem điểm tích lũy tại các cửa hàng, hiển thị mã QR cá nhân để tích điểm, nhận thông báo mua hàng, đăng ký nâng cấp thành Store Owner (dùng thử 30 ngày).
Store Owner (Chủ cửa hàng) Mobile Cấu hình cửa hàng; quản lý sản phẩm và sản phẩm nhập (thêm, sửa, xóa, lọc); quản lý hóa đơn và xử lý đổi/trả hàng; quét mã vạch sản phẩm để bán hàng; quản lý sổ nhập/xuất kho; quản lý khách hàng; quản lý mã giảm giá (coupon); xem báo cáo thống kê (lợi nhuận, doanh thu, tồn kho); xem và mua gói dịch vụ gia hạn tài khoản.
Admin (Quản trị viên) Website & Mobile Xem bảng điều khiển thống kê (số tài khoản, cửa hàng, giao dịch mới trong ngày); quản lý tài khoản (khóa/mở khóa); quản lý và xuất dữ liệu giao dịch/tài khoản/cửa hàng ra tệp Excel; quản lý các gói cước dịch vụ; gửi thông báo hệ thống (tài khoản sắp hết hạn, cảnh báo hàng hết hạn); bật/tắt chế độ bảo trì hệ thống.

2. Thiết kế logic và tương tác (Sequence Diagrams)

Đồ án xây dựng chi tiết các biểu đồ tuần tự cho các luồng nghiệp vụ trọng yếu:

  • Đăng nhập qua Google (Login with Google): Xác thực token qua Google OAuth2 và đồng bộ với hệ thống người dùng.
  • Mua và gia hạn gói dịch vụ (Purchase & Extend Service): Xử lý giao dịch nâng cấp tài khoản chủ cửa hàng, tính toán chu kỳ gia hạn sau thời gian dùng thử 30 ngày.
  • Bán hàng và xuất hóa đơn (Sell & Export Receipt): Nhận dữ liệu quét mã sản phẩm, kiểm tra tồn kho, áp dụng mã giảm giá/tích điểm qua QR của khách hàng, cập nhật sổ kho và tạo biên lai.
  • Hệ thống thông báo (Notification): Kích hoạt thông báo tự động cho người mua khi giao dịch hoàn tất, gửi cảnh báo sản phẩm sắp hết hạn đến chủ cửa hàng.
  • Báo cáo thống kê (View Report): Tổng hợp dữ liệu theo bộ lọc thời gian để hiển thị biểu đồ doanh thu, thống kê lợi nhuận theo sản phẩm và trạng thái kho hàng.

3. Quy trình đóng gói và triển khai (Deployment)

  • Tầng Server: Đóng gói mã nguồn backend bằng Gradle, triển khai lên nền tảng đám mây SAP thông qua Cloud Foundry.
  • Tầng Cơ sở dữ liệu & Cấu hình: Quản lý tham số kết nối, khóa bí mật JWT và cấu hình môi trường thông qua tệp biến môi trường .env.
  • Tầng Ứng dụng di động: Đóng gói và phát hành ứng dụng React Native cho môi trường di động.

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

Chapter 1: Application and technology review

Chương này tập trung vào hai nội dung chính: đánh giá các phần mềm hiện có và trình bày nền tảng công nghệ áp dụng. Nhóm tác giả phân tích các ưu điểm và hạn chế của bốn ứng dụng di động thực tế tại Việt Nam ("Quản Lý Bán Hàng", "KiotViet Bán Hàng", "sshop", "AFaDa"). Từ đó, chương tài liệu thiết lập luận điểm về sự cần thiết của một ứng dụng di động kết hợp web quản trị vừa có khả năng quản lý kho, vừa hỗ trợ tích điểm khách hàng qua mã QR. Phần thứ hai của chương làm rõ lý thuyết về Spring Boot (kiến trúc MVC phân lớp, embedded Tomcat, JPA), ReactJS (Virtual DOM, JSX, Redux-saga), React Native (cơ chế cross-platform), MySQL (hệ quản trị cơ sở dữ liệu quan hệ) và Redis (lưu trữ in-memory).

Chapter 2: Project specification

Chương 2 trình bày toàn bộ thông số kỹ thuật và yêu cầu của dự án. Nội dung bao gồm việc phân rã yêu cầu chức năng cho 4 nhóm tác tử (Guest, Buyer, Store Owner, Admin) cùng các yêu cầu phi chức năng. Tác giả xây dựng sơ đồ Use case tổng quát và chi tiết cho 59 use case khác nhau, kèm theo bảng mô tả chi tiết từng use case (Sign up, Login, Recover password, Sell, Scan QR, Manage import/export book, v.v.). Mỗi use case được định nghĩa rõ ràng về tác tử, mục tiêu, điều kiện tiên quyết (Preconditions), sự kiện kích hoạt (Triggers), kịch bản chính (Main success scenario) và các trường hợp ngoại lệ (Exceptions).

Chapter 3: System design

Chương 3 đi sâu vào thiết kế kỹ thuật của hệ thống. Nội dung bao gồm:

  • Sơ đồ thực thể liên kết (Entity Relationship Diagram - ERD): Mô hình hóa cấu trúc bảng dữ liệu trong MySQL để lưu trữ tài khoản, cửa hàng, sản phẩm, phiếu nhập kho, phiếu xuất kho, hóa đơn bán hàng, khách hàng, điểm tích lũy và gói dịch vụ.
  • Biểu đồ tuần tự (Sequence Diagrams): Mô tả chi tiết 16 luồng tương tác giữa các lớp đối tượng đối với các chức năng như đăng nhập Google, mua dịch vụ, xuất hóa đơn, lọc báo cáo, lọc coupon, khóa tài khoản, tải hình ảnh, nhập kho.
  • Thiết kế giao diện (User Interfaces Design): Mô tả thiết kế và luồng giao diện cho hơn 70 màn hình bao gồm các dashboard của Buyer, Store Owner, Admin trên mobile và hệ thống trang quản trị web trên ReactJS.

Chapter 4: Validation and deployment

Chương 4 mô tả công tác kiểm thử chất lượng và quy trình triển khai phần mềm:

  • Thiết kế kịch bản kiểm thử (Test Case Design): Xây dựng bảng kiểm thử chi tiết theo từng tác tử (Admin test cases, Store owner test cases, Buyer test cases, Guest test cases) nhằm xác thực tính chính xác của các luồng nghiệp vụ.
  • Quy trình triển khai: Trình bày các bước đóng gói backend Spring Boot sử dụng công cụ Gradle, triển khai dịch vụ lên hạ tầng SAP thông qua Cloud Foundry, thiết lập cấu hình tệp .env và đóng gói ứng dụng di động React Native.

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

1. Kết quả kỹ thuật đạt được

Đồ án đã hoàn thành đầy đủ các mục tiêu đề ra theo kế hoạch thực hiện từ 14/03/2024 đến 20/06/2024:

  • Xây dựng hoàn chỉnh hệ thống Backend bằng Spring Boot, cung cấp các REST API cho toàn bộ các module: xác thực, quản lý kho, bán hàng, tích điểm, báo cáo và quản trị.
  • Thiết kế và lập trình ứng dụng di động đa nền tảng bằng React Native, phục vụ trải nghiệm người dùng cho Khách vãng lai, Người mua hàng và Chủ cửa hàng.
  • Xây dựng giao diện Web Dashboard bằng ReactJS dành riêng cho Quản trị viên hệ thống để theo dõi các chỉ số giao dịch, tài khoản và trạng thái bảo trì.
  • Tích hợp thành công cơ chế quét mã vạch phục vụ tra cứu/bán sản phẩm và quét mã QR định danh khách hàng để tích điểm mua hàng.
  • Xây dựng mô hình kinh doanh phần mềm dạng dịch vụ (SaaS): Cho phép tài khoản chủ cửa hàng dùng thử miễn phí 30 ngày, sau đó quản lý gia hạn theo các gói dịch vụ (Service Packages).

2. Đóng góp thực tiễn của đề tài

  • Cung cấp một giải pháp chuyển đổi số khả thi, chi phí thấp cho các cửa hàng bán lẻ truyền thống đang phụ thuộc vào sổ sách giấy tờ.
  • Giải quyết bài toán liên kết giữa chủ cửa hàng và người mua thông qua cơ chế tích điểm bằng mã QR cá nhân, khắc phục nhược điểm thiếu tính năng quản lý khách hàng ở một số ứng dụng hiện có trên thị trường.
  • Chuẩn hóa quy trình quản lý bán hàng từ khâu nhập kho, xuất kho, quét mã bán hàng tại quầy đến thống kê doanh thu và lợi nhuận tự động.

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

Dựa trên nội dung báo cáo và phạm vi thực hiện của đề tài, các hạn chế và hướng mở rộng được xác định gồm:

  • Hạn chế:
    • Ứng dụng phụ thuộc vào kết nối mạng internet để đồng bộ dữ liệu giữa thiết bị di động và máy chủ API (chưa có chế độ lưu trữ ngoại tuyến hoàn toàn khi mất mạng).
    • Quy mô triển khai và thử nghiệm hệ thống mới dừng lại ở phạm vi đồ án tốt nghiệp với các kịch bản kiểm thử chức năng theo ca sử dụng, chưa có số liệu đo lường tải diện rộng trong môi trường sản xuất thực tế.
  • Hướng phát triển tiếp theo:
    • Tối ưu hóa hiệu năng lưu trữ và xử lý của cơ sở dữ liệu MySQL và bộ nhớ đệm Redis khi quy mô bản ghi tăng trưởng lớn.
    • Mở rộng thêm các phương thức thanh toán trực tuyến qua cổng thanh toán điện tử thay vì chỉ ghi nhận hóa đơn bán hàng trực tiếp.
    • Hoàn thiện tính năng đồng bộ ngoại tuyến (offline sync) khi mạng gián đoạn để đảm bảo việc bán hàng không bị ngắt quãng.

Giá trị tham khảo

Báo cáo đồ án tốt nghiệp này mang lại giá trị tham khảo chuyên môn cho:

  • Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Là tài liệu tham khảo thực tế về cấu trúc đồ án tốt nghiệp ứng dụng, từ khâu khảo sát sản phẩm tương đương, phân tích yêu cầu (Use Case Specification), thiết kế hệ thống (ERD, Sequence Diagram) đến kiểm thử và đóng gói phần mềm.
  • Lập trình viên phát triển hệ thống quản lý bán hàng: Tham khảo mô hình kiến trúc kết hợp giữa Spring Boot (Backend API), ReactJS (Web Admin) và React Native (Mobile App), đặc biệt là logic xử lý mã vạch sản phẩm, tích điểm qua QR code và quản lý chu kỳ gói dịch vụ (SaaS).

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

1. Đồ án phân chia hệ thống thành những nhóm tác tử (actors) nào?
Hệ thống xác định 4 nhóm tác tử rõ ràng: Khách vãng lai (Guest), Người mua hàng (Buyer), Chủ cửa hàng (Store Owner) và Quản trị viên hệ thống (Admin).

2. Chính sách quản lý tài khoản dành cho Chủ cửa hàng (Store owner) được thiết lập như thế nào?
Khi người dùng đăng ký nâng cấp thành Chủ cửa hàng, hệ thống cấp quyền dùng thử miễn phí trong thời gian 30 ngày. Sau khi hết thời gian 30 ngày dùng thử, chủ cửa hàng phải mua các gói dịch vụ gia hạn (Service Packages) để tiếp tục sử dụng các chức năng quản lý bán hàng.

3. Công nghệ nào được sử dụng để xây dựng Backend, Web Admin và Mobile App trong đồ án?
Hệ thống sử dụng Java Spring Boot để viết REST API cho tầng Backend, MySQL và Redis để lưu trữ và đệm dữ liệu; sử dụng ReactJS kết hợp Redux/Redux-saga để phát triển website quản trị cho Admin; và sử dụng React Native để phát triển ứng dụng di động đa nền tảng cho người dùng.

4. Chủ cửa hàng có thể theo dõi những dạng báo cáo thống kê nào trên ứng dụng di động?
Chủ cửa hàng có thể xem 3 phân hệ báo cáo chính: Báo cáo lợi nhuận (Profit report - chi tiết theo sản phẩm/hóa đơn/ngày), Báo cáo doanh thu (Sale report - biểu đồ và bảng thống kê doanh thu theo thời gian) và Báo cáo kho hàng (Warehouse report - giá trị kho, cảnh báo hàng hết hạn, lịch sử nhập/xuất kho).

5. Backend của hệ thống được đóng gói và triển khai lên hạ tầng nào?
Theo tài liệu đồ án, mã nguồn máy chủ Backend được biên dịch và đóng gói bằng Gradle, sau đó được triển khai lên nền tảng đám mây SAP thông qua Cloud Foundry, sử dụng tệp .env để quản trị biến môi trường.

Kết luận

Đồ án tốt nghiệp "Building a website and mobile application to manage sales" của sinh viên Hồ Kim Tiền và Trương Phạm Lý Hương tại Trường Đại học Sư phạm Kỹ thuật TP.HCM đã hoàn thành đầy đủ các mục tiêu thiết kế và xây dựng một giải pháp quản lý bán hàng toàn diện. Hệ thống kết hợp đồng bộ giữa ứng dụng di động React Native cho người mua và chủ shop với trang web quản trị ReactJS cho quản trị viên, vận hành trên nền tảng backend Spring Boot và cơ sở dữ liệu MySQL/Redis. Đề tài không chỉ đáp ứng tốt yêu cầu học thuật của khóa luận tốt nghiệp kỹ sư CNTT mà còn đưa ra cấu trúc nghiệp vụ bán lẻ và tích điểm QR có tính ứng dụng thực tiễn cao.