CHƯƠNG 1. Lý do chọn đề tài: Hiện nay, nhu cầu mua sắm trên các website trực tuyến của mọi người ngày một tăng nhanh. Các thương hiệu thời trang, cửa hàng đang dần đầu tư, tìm kiếm giải pháp triển khai hình thức bán hàng trực tuyến. Bên cạnh việc tìm kiếm các giải pháp đáp ứng các yêu cầu nghiệp vụ bán hàng cơ bản, một số đơn vị còn tìm kiếm các giải pháp nâng cao, hỗ trợ, tối ưu khả năng bán hàng của mình.
Mặc khác, nhận thấy sự phát triển cũng như sự ưa chuộng của người dùng đến các thuật toán gợi ý, AI hỗ trợ các hoạt động bán hàng, nhóm quyết định chọn đề tài “Shop quần áo online tích hợp hệ thống gợi ý sản phẩm” nhằm phát triển và đem đến một giải pháp giải quyết các bài toán tối ưu hiệu quả bán hàng còn tồn động. Ứng dụng cung cấp những tính năng tiện ích giúp tăng độ tiếp cận sản phẩm của khách hàng. Khi xem sản phẩm, khách hàng sẽ được gợi ý những sản phẩm tương tự nhằm tối đa hoá tỉ lệ mua hàng của khách hàng. Bên cạnh đó, nhân viên phía cửa hàng cũng có thể truy cập và thực hiện một số nghiệp vụ quản lý quá trình bán hàng như xem thống kê doanh thu, quản lý các sản phẩm đang bày bán… 1.
Mục đích nghiên cứu: 1. Khách quan: Đáp ứng nhu cầu của những người dùng về website thương mại điện tử tích hợp hệ thống gợi ý sản phẩm. Cung cấp một ứng dụng chạy trên nền tảng Web có thể giúp người dùng có thể tiếp cận đến những thông tin sản phẩm được bày bán trên website, gợi ý sản phẩm tương tự các sản phẩm khách hàng đã xem và đã mua. Hỗ trợ nhân viên phía doanh nghiệp cũng có thể quản lý việc kinh doanh, sản phẩm đang được bày bán, nhập kho sản phẩm mới, quản lý doanh thu… 9 1.
Chủ quan Nhóm đã luôn có sự tò mò và hứng thú đối với các công nghệ liên quan đến công nghệ Web, và hệ thống gợi ý sản phẩm. Thông qua đề tài và sự dẫn dắt của giáo viên hướng dẫn để mở mang hiểu biết, nghiên cứu và có được một cái nhìn tổng quan hơn, chuyên sâu hơn về các công nghệ và vấn đề trên. Bên cạnh đó, nhóm cho rằng đây là một cơ hội để có thể phát triển và áp dụng các kĩ năng đã học vào thực tế, tạo nên một thành phẩm từ 3 năm học đã qua. Đối tượng nghiên cứu: 1.
Các công nghệ nghiên cứu: - Đối với thiết kế hệ thống: ▫ Kết nối và trao đổi giữa client, API Gateway thông qua RESTful API ▫ Kết nối và trao đổi giữa API Gateway và các services thông qua NServiceBus - Đối với Database: PostgreSQL, SQL - Đối với Website ▫ Node.js ▫ ReactJS ▫ NPM - Đối với Backend: ▫ .NET ▫ NserviceBus ▫ Entity Framework Core ▫ ML .NET - Đối với Recommender System: Content-based Filtering ML ▫ Microsoft Recommenders ▫ C# và .NET - Đối với hệ thống dự báo doanh số: Content-based Filtering ML 10 ▫ Microsoft Recommenders ▫ C# và .NET - Khác ▫ Lưu trữ ảnh với Supabase storage ▫ Supabase 1. Đối tượng sử dụng đề tài hướng đến: Tất cả mọi người muốn mua sắm quần áo online trên các website thương mại điện tử, hoặc muốn tìm các sản phẩm tương tự. Quản trị viên phía doanh nghiệp muốn quản lý việc kinh doanh, quản lý các sản phẩm đang được bày bán, doanh thu của website, nhập kho sản phẩm mới. Phạm vi nghiên cứu: 1.
Phạm vi môi trường: Website trên máy tính cá nhân. Phạm vi chức năng: - Đối với Website ▫ Hệ thống cung cấp giao diện mua dành cho khách hàng tiện lợi, dễ sử dụng. ▫ Tích hợp hệ thống gợi ý sản phẩm nhằm quảng bá sản phẩm đến người dùng, tăng doanh thu. ▫ Hệ thống cung cấp giao diện quản lý giúp chủ cửa hàng theo dõi doanh số, quản lý hàng tồn kho.
▫ Hệ thống cung cấp giao diện đăng ký, đăng nhập giúp xác thực người dùng. ▫ Hệ thống cung cấp tính năng giỏ hàng hỗ trợ người mua đơn giản hóa quá trình mua hàng. - Đối với hệ thống gợi ý sản phẩm: 11 ▫ Hệ thống gợi ý những sản phẩm tương tự dựa trên những sản phẩm người dùng đã xem và đã mua. ▫ Hệ thống gợi ý sản phẩm theo từng cá nhân.
▫ Cung cấp thông tin cơ bản về sản phẩm. - Đối với hệ thống dự báo doanh số: ▫ Hệ thống gợi ý những sản phẩm tương tự dựa trên những sản phẩm người dùng đã xem và đã mua. ▫ Hệ thống gợi ý sản phẩm theo từng cá nhân. ▫ Cung cấp thông tin cơ bản về sản phẩm.
KIẾN THỨC NỀN TẢNG 2. Typescript: TypeScript là một dự án mã nguồn mở được phát triển bởi Microsoft, nó có thể được coi là một phiên bản nâng cao của Javascript bởi việc bổ sung tùy chọn kiểu tĩnh và lớp hướng đối tượng mà điều này không có ở Javascript. TypeScript có thể sử dụng để phát triển các ứng dụng chạy ở client-side (Angular2) và server-side (NodeJS). Tại sao nên sử dụng TypeScript? - Dễ phát triển dự án lớn: Với việc sử dụng các kỹ thuật mới nhất và lập trình hướng đối tượng nên TypeScript giúp chúng ta phát triển các dự án lớn một cách dễ dàng.
- Nhiều Framework lựa chọn: Hiện nay các Javascript Framework đã dần khuyến khích nên sử dụng TypeScript để phát triển, ví dụ như AngularJS 2. - Hỗ trợ các tính năng của Javascript phiên bản mới nhất: TypeScript luôn đảm bảo việc sử dụng đầy đủ các kỹ thuật mới nhất của Javascript, ví dụ như version hiện tại là ECMAScript 2015 (ES6). - Là mã nguồn mở: TypeScript là một mã nguồn mở nên bạn hoàn toàn có thể sử dụng mà không mất phí, bên cạnh đó còn được cộng đồng hỗ trợ. - TypeScript là Javscript: Bản chất của TypeScript là biên dịch tạo ra các đoạn mã javascript nên ban có thê chạy bất kì ở đâu miễn ở đó có hỗ trợ biên dịch Javascript.
Ngoài ra bạn có thể sử dụng trộn lẫn cú pháp của Javascript vào bên trong TypeScript, điều này giúp các lập trình viên tiếp cận TypeScript dễ dàng hơn.js: Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ. Đây là một nền tảng (platform) phát triển độc lập dựa trên V8 JavaScript engine. Đây là một trình thông dịch thực thi mã JavaScript cho phép tạo 13 các ứng dụng web như video clip và diễn đàn, đặc biệt có thể mở rộng nhanh chóng và dễ dàng cũng như thu hẹp phạm vi hoạt động của các trang mạng mạng xã hội. Đây được xem là một lợi thế khi NodeJS có thể hoạt động trên nhiều nền tảng hệ điều hành khác nhau, từ Windows, Linux đến OS X.
NodeJS cung cấp một thư viện phong phú dưới dạng các mô-đun Javascript khác nhau giúp đơn giản hóa việc lập trình và giảm thiểu thời gian cần thiết. Ý tưởng chính của Node js là sử dụng non – blocking, nhanh chóng định tuyến đầu vào/ đầu ra dữ liệu thông qua các tác vụ thời gian thực. Bởi vì Node js có khả năng mở rộng nhanh chóng và có thể xử lý một số lượng lớn các kết nối đồng thời với thông lượng cao. Hầu hết các ứng dụng web truyền thống sử dụng tài nguyên hệ thống không hiệu quả khi các yêu cầu tạo ra các luồng xử lý yêu cầu mới và tiêu tốn khá nhiều bộ nhớ hệ thống.
Vì vậy giải pháp mà NodeJS đưa ra chính là sử dụng luồng đơn có tên tiếng anh là Single – Threaded, đây là sự kết hợp non – blocking I/ O để thực hiện các yêu cầu, điều này cho phép nó hỗ trợ hàng chục hàng nghìn kết nối đồng thời. Ưu và nhược điểm của NodeJS • Ưu điểm: - IO hướng sự kiện không đồng bộ, cho phép xử lý nhiều yêu cầu đồng thời. - Sử dụng JavaScript – một ngôn ngữ lập trình dễ học. - Chia sẻ cùng code ở cả phía client và server.
- NPM (Node Package Manager) và module Node đang ngày càng phát triển mạnh mẽ. - Cộng đồng hỗ trợ tích cực. - Cho phép stream các file có kích thước lớn • Nhược điểm: - Không có khả năng mở rộng, vì vậy không thể tận dụng lợi thế mô hình đa lõi trong các phần cứng cấp server hiện nay. 14 - Khó thao tác với cơ sở dữ liệu quan hệ.
- Mỗi callback sẽ đi kèm với rất nhiều callback lồng nhau khác. - Cần có kiến thức tốt về JavaScript. - Không phù hợp với các tác vụ đòi hỏi nhiều CPU. ReactJS: React (ReactJs hay React.js) là 1 thư viện JavaScript mã nguồn mở được phát triển bởi đội ngũ kỹ sư đến từ Facebook; nó được giới thiệu vào năm 2011, cho đến nay là đã được hơn 10 năm.
Nguyên lý xây dựng của React dựa trên components (component-based approach), có thể tái sử dụng và phù hợp với ứng dụng 1 trang (Single Page Application – SPA). React giúp lập trình viên xây dựng giao diện người dùng dựa trên JSX (môt cú pháp mở rộng của JavaScript), tạo ra các DOM ảo (virtual DOM) để tối ưu việc render 1 trang web. ReactJs sau khi ra đời đã cho thấy sự phù hợp của nó trong việc phát triển các ứng dụng Web với nhiều chức năng được tích hợp. Nó đã tạo thành 1 xu thế, 1 hình mẫu phát triển website với nhiều chức năng, khả năng tương tác đa dạng với người dùng.
Hiện tại sau hơn 10 năm phát triển thì React vẫn đang chiếm vị trí số 1 trong các thư viện Front-end hiện tại.NET là một nền tảng nguồn mở để xây dựng các ứng dụng trên máy tính để bàn, web và thiết bị di động có thể chạy nguyên bản trên bất kỳ hệ điều hành nào.NET bao gồm các công cụ, thư viện và ngôn ngữ hỗ trợ phát triển phần mềm hiện đại, có quy mô linh hoạt và hiệu năng cao. Một cộng đồng nhà phát triển hoạt động tích cực trong việc duy trì và hỗ trợ nền tảng. Nói một cách dễ hiểu, nền tảng .NET là phần mềm có thể thực hiện những tác vụ sau: - Dịch mã ngôn ngữ lập trình .NET thành hướng dẫn mà thiết bị máy tính có thể xử lý. 15 - Cung cấp các tiện ích để phát triển phần mềm hiệu quả.
Ví dụ: nó có thể tìm thời gian hiện tại hoặc in văn bản trên màn hình. - Xác định một tập gồm các loại dữ liệu để lưu trữ thông tin như văn bản, số và ngày tháng trên máy tính.NET: - Dễ phát triển: Các nhà phát triển thích sử dụng .NET vì nền tảng này chứa nhiều công cụ giúp họ làm việc dễ dàng hơn.