CHƯƠNG 1: TỐNG QUAN VỀ ĐỀ TÀI 1. LÍ DO CHỌN ĐỀ TÀI Hiện nay, xã hội đang trong giai đoạn phát triển với tốc độ chóng mặt kèm theo đó là nhu cầu tiêu dùng của người dân ngày càng tăng, đặc biệt là mua hàng thông qua hình thức online. Theo khảo sát tại thị trường Việt Nam năm 2022, 70% dân cư thành thị sử dụng dịch vụ thương mại điện tử để mua sắm, trong đó nổi bật nhất là ngành hàng thời trang. Nắm được tính cấp thiết đó, nhóm quyết định chọn đề tài Thiết kế và xây dựng hệ thống quản lý kinh doanh cho doanh nghiệp thời trang.
Với đề tài này, nhóm giải quyết được nhu cầu của người dùng trong việc tìm và mua các sản phẩm thời trang thông qua internet, xử lý nó một cách dễ dàng và vô cùng tiện lợi. Đồng thời qua đây, người dùng cũng có thể nắm được các chính sách, thông tin của cửa hàng một cách nhanh chóng, tất cả hướng tới mục tiêu mang lại trải nghiệm tốt nhất cho người dùng. Về phía các doanh nghiệp và nhãn hàng, nhóm có thể cung cấp nền tảng để các chủ thể có thể dễ dàng quản lý cửa hàng của mình, đưa các sản phẩm và chính sách tiếp cận đến khách hàng, giúp tối ưu hóa quá trình mua sắm và tăng doanh thu, tăng trải nghiệm tốt cho khách hàng của mình. ĐỐI TƯỢNG NGHIÊN CỨU - Khách hàng: Là người sử dụng hệ thống, có nhu cầu muốn tìm hiểu về các sản phẩm của cửa hàng và đặt hàng thông qua website của hệ thống.
- Quản trị viên: Là người quản trị hệ thống, có nhu cầu quản lý các thông tin về cửa hàng và khách hàng của hệ thống. PHẠM VI NGHIÊN CỨU Đối với đề tài Thiết kế và xây dựng hệ thống quản lý kinh doanh cho doanh nghiệp thời trang, phạm vi nghiên cứu tập trung vào các doanh nghiệp, tổ chức hoặc cá nhân muốn tạo website bán hàng cho riêng mình và các cá nhân có nhu cầu tìm kiếm cửa hàng, mua hàng thông qua website. KẾT QUẢ DỰ KIẾN Hệ thống được xây dựng gồm 2 website với các mục đích chính: Một website là admin-site sẽ giúp các chủ doanh nghiệp có thể quản lý sản phẩm, quản lý người dùng, quản lý danh mục, quản lý đơn hàng và doanh thu cửa hàng của mình một cách dễ dàng, từ đó có các chính sách phù hợp để cải thiện, giúp thu hút khách hàng và tăng hiệu suất cửa hàng. Website còn lại là user-site được xây dựng nhằm mục đích quảng bá và bán hàng thông qua internet, giúp người dùng có thể dễ dàng tiếp cận với các sản phẩm của doanh nghiệp, tìm kiếm, lựa chọn và mua sắm thời trang phù hợp với bản thân một cách nhanh chóng, tiện lợi.
BẢNG PHÂN CÔNG CÔNG VIỆC Bảng 1. Bảng phân công công việc STT Thành viên Công việc Tiến độ Đóng góp 1 Mai Thanh Nhã - Viết báo cáo Hoàn thành tốt 33% - Vẽ Use case diagram, đặc tả use case - Thiết kế CSDL - Lập trình Backend, xây dựng API cho hệ thống - Kiểm thử phần mềm 2 Phạm Phi Anh - Tổng hợp nội dung và xây Hoàn thành tốt 33% dựng hệ thống khuyến nghị - Đặc tả use case - Lập trình Frontend - Kiểm thử phần mềm 3 Nguyễn Hữu Đăng - Xây dựng hệ thống khuyến Hoàn thành tốt 33% nghị - Đặc tả use case - Lập trình Frontend - Kiểm thử phần mềm - Định hướng phát triển hệ thống 3 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ SỬ DỤNG 2. KIẾN TRÚC HỆ THỐNG Hình 1. Kiến trúc hệ thống Hệ thống sử dụng kiến trúc gồm 3 thành phần chính: - Front-end: Tầng sử dụng API và hiển thị giao diện - Back-end: Tầng kết nối database và xử lý nghiệp vụ để phản hồi dữ liệu cho Front-end - Database: Tầng lưu trữ dữ liệu của hệ thống.
Sau khi người dùng thực hiện yêu cầu thông qua giao diện, phía Front-end sẽ gửi request đến tầng back-end, lúc này phía back-end sẽ nhận, phân tích các yêu cầu và dữ liệu để thực hiện xử lý nghiệp vụ (kết nối với cơ sở dữ liệu) và gửi response về cho front-end. CÔNG NGHỆ BACK-END 2. Khái niệm Spring Boot Spring Boot là một extention phát triển bởi ngôn ngữ Java, nằm trong Spring Framework. Nó giúp lược bỏ các công đoạn cấu hình phức tạp để lập trình viên có thể tạo dự án nhanh chóng và tập trung vào việc phát triển business cho ứng dụng.
Spring Boot được hỗ trợ trên nhiều IDE như Eclipse, VSCode, IntelliJ,… 4 2. Đặc điểm của Spring Boot Spring Boot giúp đơn giản hóa quá trình tạo Project, để sử dụng người dùng chỉ cần dùng Spring Initialỉz, sau đó có thể mở source code và code. Để chạy Spring Boot, người dùng có thể chạy ngay trong IDE hoặc build thành file JAR. Spring Boot được tích hợp nhiều thư viện có sẵn, do đó người dùng có thể thuận tiện trong quá trình tìm hiểu và code.
Cấu trúc của Spring Boot rất chặt chẽ, giúp người đọc dễ hình dung và hiểu cách hoạt động. Khái niệm Spring Data JPA Spring Data là một extention của Spring Framework, nó cung cấp mô hình nhất quán giúp việc cài đặt data access layers trở nên tối ưu hơn. Spring Data JPA là một module trong Spring Data, dùng để quản lý các dữ liệu quan hệ trong ứng dụng. JPA tuân theo cấu trúc ORM, cung cấp Entity Manager để xử lý query trên các object thông qua database.
Đặc điểm của Spring Data JPA Cú pháp truy vấn dữ liệu của Spring Data JPA rất đơn giản, gọn gàng. Dữ liệu trong JPA được biểu thị bằng các Object và Class và sử dụng POJO để biểu diễn. Là Repository mạnh mẽ, dễ dàng tích hợp và sử dụng trên các ứng dụng Spring Boot với namespace tùy ý. Sự khác biệt giữa JPA và Hibernate Có một số điểm khác biệt nổi bật giữa JPA và Hibernate như sau: - JPA sử dụng Entity Manager trong khi Hibernate sử dụng Session.
- Hibernate là nhà cung cấp JPA. - Package định nghĩa: javax.hibernate - JPA sử dụng JPQL trong khi Hibernate sử dụng HQL - Chỉ có Hibernate cung cấp class implementation 5 2. CÔNG NGHỆ FRONT-END 2. Khái niệm ReactJS ReactJS là một opensource của Java Script, được phát triển từ năm 2011 bởi Facebook Nguyên lý hoạt động của ReactJS là dựa trên các components, lập trình viên xây dựng giao diện dựa trên các file JSX để tạo ra các DOM ảo và render ra thành UI.
Đặc điểm nổi bật Render dữ liệu được thực hiện cả trên server và client. ReactJS giúp việc tối ưu và hiển thị UI trở nên nhanh chóng, mượt mà, có khả năng tái sử dụng và mở rộng. Giúp tạo ra các ứng dụng một cách nhanh chóng, hiệu quả. Thành phần của ReactJS ReactJS gồm 2 thành phần chính là Redux và Virtual DOM: - Redux giúp quản lý trạng thái của state.
- Virtual DOM là một abstraction của DOM, giúp cải thiện hiệu suất cho React. CƠ SỞ DỮ LIỆU MYSQL 2. Khái niệm Database Cơ sở dữ liệu và một tập hợp các dữ liệu các cùng cấu trúc, database là nơi lưu trữ cơ sở dữ liệu. Dữ liệu được lưu ở database dưới dạng các bảng, mỗi bảng có các trường là các đặc điểm của đối tượng lưu trữ.
Cơ sở dữ liệu quan hệ là gì Cơ sở dữ liệu quan hệ là cơ sở dữ liệu dựa trên mô hình quan hệ. Các bảng được liên kết thông qua Relationship. 6 Cở sở dữ liệu quan hệ giúp đảm bảo sự dư thừa dữ liệu không đáng có nhưng vẫn đảm bảo tính nhất quán. Giới thiệu về MySQL MySQL là hệ thống quản trị cơ sở dữ liệu opensource, hoạt động dựa theo mô hình Client-Server.
MySQL quản lý dự liệu thông qua schema, mỗi schema chứa nhiều bảng và có liên kết với nhau thông qua relationship. MySQL nổi bật bởi việc dễ sử dụng, tính bảo mật cao, đa tính năng và khả năng mở rộng dễ dàng, mạnh mẽ. POSTMAN Postman là công cụ phổ biến hiện nay để test API, đặc biệt là các API theo cấu trúc REST. Đặc điểm nổi bật của Postman là có thể hỗ trợ tất cả các phương thức HTTP method như GET, POST, PUT, DELETE và khả năng lưu trữ dữ liệu để lập trình viên các thể dễ dàng sử dụng trong quá trình test API.
Việc cài đặt và sử dụng Postman cũng rất nhanh chóng. Đồng thời lập trình viên có thể chia sẻ Postman với các cộng sự của mình, giúp việc quản lý API trở nên tiện lợi và dễ dàng. FLASK Flask là một micro web framework sử dụng Python, được sử dụng để xây dựng các ứng dụng web đơn giản và có thể mở rộng. Do đó, nhóm dùng Flask để viết các API sử dụng ngôn ngữ Python cho các chức năng như tìm kiếm sản phẩm bằng hình ảnh, khuyến nghị sản phẩm thông qua danh sách yêu thích.
JSON WEB TOKEN JWT là tiêu chuẩn mở được dùng để đảm bảo an toàn khi truyền tin theo mô hình Client-Server. Các thông tin của JWT được định dạng JSON, được đảm bảo tính bảo mật thông qua chữ ký điện tử (Private Key và Public Key) với các thuật toán như HMAC,. JWT gồm 3 thành phần chính - Header: cho biết loại mã token và thuật toán sử dụng mã hóa. - Payload: chứa các thuộc tính xác định cần mã hóa - Signature: chữ ký điện tử để xác định thông tin không bị thay đổi trong quá trình truyền tin.
Lợi ích: - JWT giúp đảm bảo tính bảo mật cho hệ thống sử dụng. - JWT được sử dụng rất rộng rãi, phổ biến. - JWT nhỏ gọn và dễ dàng xử lý. ELASTIC-SEARCH Elasticsearch là công cụ tìm kiếm và phân tích được xây dựng dựa trên Apache Lucene.
Là công cụ được sử dụng rộng rãi bởi độ hiệu quả cao, có hỗ trợ dữ liệu JSON. Elasticsearch được sử dụng ở các công ty lớn như Wikimedia, Facebook, Github, Quora,… Cách hoạt động của Elasticsearch: Hình 2. Cách hoạt động của Elasticsearch 8 Về ưu điểm: - Tìm kiếm nhanh chóng, hiệu quả, mạnh mẽ. - Đi kèm với khả năng phân tích - Có khả năng mở rộng theo chiều ngang - Hỗ trợ trên nhiều ngôn ngữ như Java, Python, Ruby,… 2.
Định nghĩa CNNS Convolutional Neural Network (CNNs - Mạng nơ-ron tích chập) là mô hình Deep Learning phổ biến và tiên tiến nhất hiện nay. Đa phần được sử dụng để xây dựng các hệ thống nhận diện bởi độ chính xác mang lại rất cao. Convolutional là gì Convolutional là một dạng Kernel trên ma trận. Các Convolutional layer có các Kernel (Sliding windows) khác nhau đã được học để lấy ra các thông tin chính xác nhất mà không cần chọn feature.
Filter là ma trận được mã hóa với mỗi điểm ảnh có giá trị 0 hoặc 1. Khi nhân Kernel với Filter sẽ thu được Convoled feature. Cấu trúc mạng CNN 2.