1. Trang chủ
  2. » Cao đẳng - Đại học

TÌM HIỂU OPEN LOYALTY và xây DỰNG ỨNG DỤNG

50 17 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO: ĐỒ ÁN ĐỀ TÀI: TÌM HIỂU OPEN LOYALTY VÀ XÂY DỰNG ỨNG DỤNG Giảng viên hướng dẫn: ThS Nguyễn Công Hoan Thành viên nhóm: Bùi Xuân Nhã 17520834 Nguyễn Thị Kim Phương 17520927 LỜI CẢM ƠN Chúng em xin gửi lời cám ơn sâu sắc đến thầy Nguyễn Công Hoan người đã trực tiếp hướng dẫn chúng em, tạo nhiều điều kiện thuận lợi, góp ý kiến mặt chuyên môn luận văn nhờ đó mà chúng em có thể hoàn thành luận văn thời gian cho phép Chúng xin gửi lời cám ơn đến cha mẹ gia đình người thân đã nuôi dưỡng, động viên, tạo điều kiện thuận lợi cho chúng Đồng thời, chúng em xin cám ơn chân thành đến quý thầy cô Khoa bạn bè gần xa đã quan tâm theo sát chúng em tạo cho chúng em nguồn động lực để hoàn thành luận văn Trong trình thực luận văn có gì sai sót, kính mong nhận chỉ bảo quý thầy cô MỤC LỤC MỞ ĐẦU 1.1 Bối cảnh nhu cầu thực tế 1.2 Mục tiêu 1.3 Nội dung đồ án TỔNG QUAN VỀ CUSTOMER LOYALTY PROGRAM 2.1 Customer Loyalty Program gì? 2.2 Ưu nhược điểm Customer Loyalty Program 2.3 Liên hệ thực tiễn 2.3.1 Starbucks Rewards 2.3.2 Amazon Prime TỔNG QUAN VỀ HỆ THỐNG OPEN LOYALTY 3.1 Giới thiệu Open Loyalty 3.2 Tại lại chọn mã nguồn mở Open Loyalty? 3.3 Các tính đặc trưng framework 3.3.1 Sử dụng sức mạnh thực liệu đa kênh 3.3.2 Đặt quy tắc để kiếm điểm 3.3.3 Sử dụng Cấp Bậc để thu hút khách hàng 10 3.3.4 Quản lý phần thưởng, mã khuyến lợi ích 10 3.3.5 Quản lý chương trình khách hàng thân thiết nhiều người thuê với nhiều người bán 11 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 12 4.1 4.1.1 Danh sách người dùng 12 4.1.2 Danh sách yêu cầu 12 4.2 Bảng yêu cầu nghiệp vụ 12 Đặc tả use case 16 4.2.1 Use case tổng quát 16 4.2.2 Đặc tả use case 17 4.2.2.1 Đặc tả chức “Quản lý lịch bảo trì” 17 4.2.2.2 Đặc tả chức “Hỗ trợ trực tuyến” 18 4.2.2.3 Đặc tả chức “Quản lý khách hàng” 19 4.2.2.4 Đặc tả chức “Tích điểm/Đổi điểm thưởng” 21 4.3 Phân rã chức 24 4.4 Sequence diagram 25 4.4.1 Sequence diagram Đặt lịch bảo hành 25 4.4.2 Sequence diagram Hỗ trợ trực tuyến 26 4.4.3 Sequence diagram Tìm kiếm cửa hàng 27 4.4.4 Sequence diagram Đổi điểm thưởng 28 TÌM HIỂU CƠNG NGHỆ 29 5.1 Symfony 29 5.1.1 Tổng quan Symfony 29 5.1.2 Tại chọn Symfony? 29 5.2 Postgresql 30 5.2.1 Tổng quan Postgresql 30 5.2.2 5.3 Tổng quan Elasticsearch 31 5.3.2 Tại chọn Elasticsearch 31 Flutter 32 5.4.1 Tổng quan Flutter 32 5.4.2 Tại chọn Flutter 32 5.5 Elasticsearch 31 5.3.1 5.4 Tại chọn Postgresql 30 AngularJS 33 5.5.1 Tổng quan AngularJS 33 5.5.2 Tại chọn AngularJS 33 5.6 Sơ đồ công nghệ 34 5.7 Các Design Pattern áp dụng 35 5.7.1 Domain Driven Design (DDD) 35 5.7.2 Command Query Responsibility Segregation (CQRS) 36 5.7.3 Event Sourcing 36 5.7.4 BloC 37 SẢN PHẨM 38 6.1 Ứng dụng di động dành cho Customer 38 6.2 Ứng dụng website dành cho Admin 38 KẾT LUẬN 39 7.1 Thuận lợi 39 7.2 Khó khăn 39 7.3 Kết đạt 39 7.4 Hướng phát triển 40 TÀI LIỆU THAM KHẢO 41 DANH MỤC HÌNH Hình 4-1: Sơ đồ use case tổng quát 16 Hình 4-2: Sơ đồ phân rã chức 24 Hình 4-3: Sequence diagram “Đặt lịch bảo hành” 25 Hình 4-4: Sequence diagram “Hỗ trợ trực tuyến” 26 Hình 4-5: Sequence diagram “Tìm kiếm cửa hàng” 27 Hình 4-6: Sequence diagram “Đổi điểm thưởng” 28 Hình 5-1: Sơ đồ cơng nghệ 34 DANH MỤC BẢNG Bảng 4-1: Danh sách người dùng 12 Bảng 4-2: Danh sách yêu cầu 15 Bảng 4-5: Đặc tả chức “Đặt lịch bảo trì” 17 Bảng 4-6: Đặc tả chức "Hỗ trợ trực tuyến" 18 Bảng 4-7: Đặc tả chức "Thêm khách hàng" 20 Bảng 4-8: Đặc tả chức "Chỉnh sửa khách hàng" 21 Bảng 4-9: Đặc tả chức “Tích điểm” 22 Bảng 4-10: Đặc tả chức “Đổi điểm thưởng” 23 TÓM TẮT ĐỒ ÁN Chương trình khách hàng thân thiết, hay cịn gọi chương trình tích điểm, chiến lược tiếp thị thiết kế để khuyến khích khách hàng tiếp tục mua sắm sử dụng dịch vụ doanh nghiệp lâu dài Ngày nay, chương trình bao gồm hầu hết loại hình thương mại, loại có tính chương trình phần thưởng khác nhau, bao gồm ngân hàng, giải trí, khách sạn, bán lẻ du lịch Hầu hết chương trình khách hàng thân thiết ban đầu cung cấp cho khách hàng số loại thẻ để khách hàng tích điểm vào hệ thống thực mua hàng dịch vụ họ Ngày nay, với có mặt ứng dụng tích điểm điện thoại, thay sử dụng thẻ vật lý để theo dõi mua hàng, việc theo dõi điểm thưởng thực thiết bị di động khách hàng Từ nghiên cứu đề tài trên, nhóm đã tìm hiểu hệ thống Open Loyalty - hệ thống mã nguồn mở Loyalty cho doanh nghiệp hàng đầu Qua đó, nhóm đã xây dựng hệ thống Loyalty Customer Program với đầy đủ tính chính hệ thống tích điểm có, tích hợp thêm vài tính tiện ích phù hợp với hệ thống doanh nghiệp bán hàng điện tử như: Đặt lịch bảo trì, Hỗ trợ trực tuyến, Tìm kiếm cửa hàng giúp khách hàng dễ dàng tương tác với doanh nghiệp, tăng hài lòng khách hàng với thương hiệu hết tăng doanh thu cho doanh nghiệp Đồ án sử dụng công nghệ phù hợp với quy mô doanh nghiệp xây dựng hệ thống database với Postgresql hệ thống Elasticsearch đóng vai trò Read Model hỗ trợ truy vấn nhanh với quy mô liệu lớn Xây dựng hệ thống API với Symfony framework PHP vô mạnh mẽ Ứng dụng di động sử dụng Flutter với thư viện hỗ trợ phong phú Ngoài ra, đồ án áp dụng vài Design Pattern Domain Driven Design, CQRS kết hợp với Event Sourcing, hỗ trợ việc bảo trì phát triển mở rộng hệ thống sau dễ dàng mà không làm ảnh hưởng đến tính khác 4.4.4 Sequence diagram Đổi điểm thưởng Hình 4-6: Sequence diagram “Đổi điểm thưởng” 28 TÌM HIỂU CƠNG NGHỆ 5.1 Symfony 5.1.1 Tổng quan Symfony Symfony framework Open Source viết ngơn ngữ lập trình PHP5 Symfony giúp phát triển ứng dụng web thiết kế theo yêu cầu Một cộng đồng rộng lớn lập trình viên đảm bảo khả phát triển, tính linh động, tự tiết kiệm chi phí cho dự án phát triển với Symfony 5.1.2 Tại chọn Symfony? - Nhanh chóng, trọng vào hiệu suất Để so sánh, Symfony framework PHP nhanh - Tính linh hoạt không giới hạn - Symfony phân phối theo giấy phép MIT Mã nguồn mở, không áp đặt ràng buộc cho phép phát triển Mã nguồn mở ứng dụng độc quyền - Có thể mở rộng - Ổn định bền vững - Cộng đồng hỗ trợ lớn Slack với 15,000 người 29 5.2 Postgresql 5.2.1 Tổng quan Postgresql PostgreSQL hệ thống quản trị sở liệu quan hệ-đối tượng (object-relational database management system) có mục đích chung, hệ thống sở liệu mã nguồn mở tiên tiến PostgreSQL phần mềm mã nguồn mở miễn phí Mã nguồn phần mềm khả dụng theo license PostgreSQL, license nguồn mở tự PostgreSQL không yêu cầu nhiều công tác bảo trì có tính ổn định cao Do đó, bạn phát triển ứng dụng dựa PostgreSQL, chi phí sở hữu thấp so với hệ thống quản trị liệu khác [5] 5.2.2 Tại chọn Postgresql PostgreSQL sở hữu hệ tính đa dạng giúp hỗ trợ nhà phát triển xây dựng app, nhà quản trị bảo vệ toàn vẹn liệu, tạo môi trường chịu lỗi faulttolerant giúp bạn quản lý liệu tập liệu lớn hay nhỏ Bên cạnh hệ thống nguồn mở miễn phí, PostgreSQL có khả mở rộng tuyệt vời PostgreSQL tuân theo tiêu chuẩn SQL không mâu thuẫn với tính truyền thống hay dẫn đến định kiến trúc gây hại 30 5.3 Elasticsearch 5.3.1 Tổng quan Elasticsearch Elasticsearch gì? – cơng cụ tìm kiếm dựa tảng Apache Lucene Nó cung cấp máy tìm kiếm dạng phân tán, có đầy đủ cơng cụ với giao diện web HTTP có hỗ trợ liệu JSON Các công ty lớn sử dụng: Wikimedia, Adobe Systems, Facebook, Quora, SoundCloud, GitHub, Netflix… [6] 5.3.2 Tại chọn Elasticsearch Tại phải dùng ES tìm kiếm văn sử dụng câu lệnh LIKE SQL được? Nếu search truy vấn LIKE “%one%” thì kết chỉ cần chứa “one” Ví dụ: “phone”, “zone”, “money”, “alone” … nói chung list kết không mong muốn Còn search ES thì gõ “one” chỉ có “one” trả mà Truy vấn LIKE truy vấn từ có dấu Ví dụ: từ khố có dấu “có”, truy vấn LIKE chỉ gõ “co” thì khơng trả xác kết Về Perfomance ES tốt hơn, truy vấn LIKE tìm kiếm đơn tồn văn không sử dụng index, nghĩa tập liệu lớn tìm kiếm lâu, ES lại “đánh index” cho trường chọn để tìm kiếm 31 5.4 Flutter 5.4.1 Tổng quan Flutter Là SDK đa tảng, ứng dụng Flutter hoạt động iOS Android Nó thủ thuật khôn khéo để tương thích với framework UI hai hệ điều hành Các ứng dụng không biên dịch trực tiếp với ứng dụng native Android iOS 5.4.2 Tại chọn Flutter Phát triển ứng dụng nhanh chóng: Tính hot reload giúp bạn nhanh chóng dễ dàng thử nghiệm, xây dựng giao diện người dùng, thêm tính sửa lỗi nhanh Trải nghiệm tải lại lần thứ hai, mà không làm trạng thái, emulator, simulator device cho iOS Android UI đẹp biểu cảm: Thỏa mãn người dùng bạn với widget built-in đẹp mắt theo Material Design Cupertino (iOS-flavor), API chuyển động phong phú, scroll tự nhiên mượt mà tự nhận thức tảng Truy cập tính SDK native: Làm cho ứng dụng bạn trở nên sống động với API platform, SDK bên thứ ba native code Nó cho phép bạn sử dụng lại mã Java, Swift ObjC truy cập tính SDK native iOS Android 32 5.5 AngularJS 5.5.1 Tổng quan AngularJS Đây mã nguồn mở, framwork cho ứng dụng web Được phát triển từ năm 2009, trì google đã mắt phiên 2.0 AngularJS framework có cấu trúc cho ứng dụng web động Nó cho phép bạn sử dụng HTML ngôn ngữ mẫu cho phép bạn mở rộng cú pháp HTML để diễn đạt thành phần ứng dụng bạn cách rõ ràng súc tích Hai tính cốt lõi: Data binding Dependency injection AngularJS loại bỏ phần lớn code mà bạn thường phải viết Nó xảy tất trình duyệt, làm cho trở thành đối tác lý tưởng công nghệ Server [7] 5.5.2 Tại chọn AngularJS - Cung cấp khả tạo Single Page Aplication dễ dàng - Cung cấp khả data binding tới HTML, khiến cho người dùng cảm giác linh hoạt, thân thiện - Dễ dàng Unit test - Dễ dàng tái sử dụng component - Giúp lập trình viên viết code ít với nhiều chức - Chạy loại trình duyệt, PC lẫn mobile 33 5.6 Sơ đồ cơng nghệ Hình 5-1: Sơ đồ cơng nghệ 34 5.7 Các Design Pattern áp dụng 5.7.1 Domain Driven Design (DDD) Domain model cách hiểu biết giới thực vấn đề mà phần mềm cần giải quyết, cách thiết kế kiến trúc mức độ hệ thống mức độ class MVC hay design pattern khác Trong đó ứng dụng chia thành layer sau: - User Interface Layer: làm nhiệm vụ biểu diễn thông tin trực quan cho user dịch user command ( chúng ta có thể hiểu event xảy giao diện trigger ( nhấn nút UI input control ) dịch thành command xử lý tầng - Application Layer: Tầng thiết kế mỏng ( thin ) với logic xử lý chỉ để làm nhiệm vụ coordinate Activity Application khơng chứa Business Logic, khơng chứa state Business Object mà chỉ chứa state Application Task Progress Chúng ta hình dung phần gần giống với Controller mơ hình MVC chỉ làm nhiệm vụ forward task đến nơi cần xử lý - Domain Layer: Đây trái tim ứng dụng ( Business Software ), state Business Object nằm Việc lưu trữ ( persistence ) Business Object state nó chuyển giao cho tầng Infrastructure Trái tim mô hình phần Domain Layer, nghiệp vụ mô tả đây, cấu trúc source code tổ chức theo tên nghiệp vụ không để kiểu view, controller truyền thống - Infrastructure Layer: Đóng vai trò cung cấp thư viện ( supporting libraries )cho tầng khác Nó cung cấp chế giao tiếp ( communication ) Layer với nhau, cung cấp chức khác lưu trữ ( persistence ) Business Object tầng Domain [8] 35 5.7.2 Command Query Responsibility Segregation (CQRS) Tương tự với CQRS pattern CQS (Command Query Separation) giới thiệu Bertrand Meyer Object Oriented Software Construction CQRS coi mở rộng CQS Có thể coi CQS thể mức class component level CQRS thể bounded context level CQS yêu cầu tách biệt method cho việc query writing cho model: Query không thay đổi state, Command thay đổi state không trả giá trị CQRS có ý tưởng tương tự rõ ràng Một Query request tách biệt với Command request Một Query trả data mà không thay đổi state system, Command thay đổi system không trả data Sự khác biệt mơ hình CQRS, tất object chia thành object: object cho Query object cho Command [9] 5.7.3 Event Sourcing Mơ hình Event Sourcing — ES, mơ hình thiết kế mà trạng thái object lưu trữ dạng chuỗi kiện thay đổi Nó khác với mơ hình thiết kế thơng thường, mà chỉ lưu trữ trạng thái cuối object Khi object bị thay đổi, tương ứng với versioned event lưu trữ liệu thay đổi object Các event lưu trữ dạng appending only vào cấu trúc table gọi event store Việc lưu trữ event thay đổi giúp mang lại lợi ích: - Lưu trữ lịch sử thay đổi đối tượng - Nếu event gửi tới hệ thống khác, hệ thống đó có thể sinh trạng thái cuối xác đốc tượng gốc Do đó dễ dàng tích hợp với hệ thống khác 36 Dựa event published xây dựng phần lưu trữ riêng cho read side, để tối ưu cho tốc độ truy xuất liệu [10] 5.7.4 BloC Bloc lib để quản lý state cho Flutter application B.L.o.C nghĩa Business Logic Component Nhận 'Event' input trả output 'State' Bloc xây dựng dựa RxDart Chúng ta chia Flutter application architecture thành lớp sau: - Biển diễn View Layer: Có nhiệm vụ render dựa nhiều state bloc Nó xử lý kiện input user lifecycle event application - Bloc: Có nhiệm vụ nhận event từ lớp biểu diễn trả state Hoạt động cầu nối lớp data lớp presentation - Data Layer: Có nhiệm vụ cung cấp data từ nguồn Data Provider cung cấp data tho repository trình đóng gói nhiều data providers 37 SẢN PHẨM 6.1 Ứng dụng di động dành cho Customer 6.2 Ứng dụng website dành cho Admin 38 KẾT LUẬN 7.1 Thuận lợi Framework Open Loyalty hệ thống mã nguồn mở Loyalty, gồm đầy đủ tính chính, vậy, tìm hiểu framework, nhóm đã học hỏi nhiều nghiệp vụ hệ thống Customer Loyalty Program thực tế, khái quát nghiệp vụ hệ thống cách nhanh chóng Bên cạnh đó, nhóm có thể tập trung phát triển tính riêng mình, phù hợp với doanh nghiệp bán hàng điện tử, mang lại gắn kết người dùng doanh nghiệp Các thành viên nhóm đã có kinh nghiệm làm việc với ngơn ngữ lập trình web mobile, đã làm việc với mơ hình client-server trước đó, nên việc tổ chức code với đọc hiểu cú pháp PHP Javascript dễ dàng 7.2 Khó khăn Bước đầu cài đặt môi trường khó khăn gặp nhiều lỗi, nhóm chưa có kinh nghiệm với Docker framework Symfony Framework sử dụng nhiều Design Pattern: DDD, CQSR, Event Sourcing nên việc đọc hiểu code khó khăn ngày đầu cách tổ chức code phức tạp Tài liệu Open Loyalty không nhiều, chủ yếu chỉ tập trung hướng dẫn cách customize framework đơn giản, vậy, nhóm phải tự nghiên cứu framework Design Pattern để tổ chức code cho hợp lý, đúng với chuẩn Open Loyalty 7.3 Kết đạt Do giới hạn mặt thời gian nhiều lí chủ quan khác mà kết ứng dụng vẫn chưa đạt hết mong đợi nhóm Tuy ứng dụng hoạt động ổn định thêm tính hỗ trợ cho khách hàng doanh nghiệp bán hàng điện tử là: 39 - Đặt lịch bảo trì - Hỗ trợ trực tuyến Hai tính hỗ trợ cho trang admin ứng dụng di động mà nhóm tự xây dựng Nhóm có dự định phát triển ứng dụng lên phiên hoàn thiện (được đề cập hướng phát triển) đầu tư kĩ lưỡng mặt thời gian công sức 7.4 Hướng phát triển Ở phiên sau, nhóm thêm tính đã đề cập phần nghiệp vụ, đó là: - Hỗ trợ bảo hành/đổi trả Tìm kiếm cửa hàng gần Ngồi ra, nhóm đầu tư mặt UI/UX, nâng cao cải thiện trải nghiệm người dùng Hiện hệ thống có ngôn ngữ Tiếng Anh Tiếng Ba Lan, nhóm mở rộng thêm ngôn ngữ Tiếng Việt cho hệ thống phiên cập nhật sau 40 TÀI LIỆU THAM KHẢO [1] [Online] Available: https://hocvien.haravan.com/blogs/loyaltymarketing/loyalty-program-tai-sao-phai-xay-dung-khach-hang-than-thiet [2] [Online] Available: https://blog.urbox.vn/chuong-trinh-khach-hang-thanthiet-doanh-nghiep/ [3] [Online] Available: https://crmviet.vn/customer-loyalty/ [4] [Online] Available: https://www.openloyalty.io/ [5] [Online] Available: https://bizflycloud.vn/tin-tuc/postgresql-la-gi-tim-hieuve-co-so-du-lieu-ma-nguon-mo-tien-tien-nhat-the-gioi20180919175924611.htm [6] [Online] Available: https://topdev.vn/blog/elasticsearch-la-gi/ [7] [Online] Available: https://viblo.asia/p/angularjs-toan-tap-phan-1-angularjsla-gi-MgNvWYZEeYx [8] [Online] Available: https://viblo.asia/p/gioi-thieu-design-pattern-domaindriven-design-ddd-Qbq5Q423lD8 [9] [Online] Available: https://labs.septeni-technology.jp/technote/tong-quan-vekien-truc-cqrs/ [10] [Online] Available: https://edwardthienhoang.wordpress.com/2018/01/26/xay-dung-he-thongecommerce-voi-ddd-vacqrs/#:~:text=M%C3%B4%20h%C3%ACnh%20Event%20Sourcing%20%E2 41 %80%94%20ES,li%E1%BB%87u%20thay%20%C4%91%E1%BB%95i%20 c%E1%BB%A7a%20object 42 ... phân tích nghiệp vụ xây dựng hệ thống trên, đồ án tập trung giải vấn đề sau: - Tìm hiểu hệ thống Customer Loyalty Program tầm quan trọng doanh nghiệp - Tìm hiểu hệ thống Open Loyalty - Phân tích... VỀ HỆ THỐNG OPEN LOYALTY 3.1 Giới thiệu Open Loyalty Open Loyalty mã nguồn mở cung cấp tảng Customer Loyalty Program với độ tuỳ chỉnh cao linh hoạt mở rộng, triển khai hệ thống Open Loyalty tảng... 6.1 Ứng dụng di động dành cho Customer 6.2 Ứng dụng website dành cho Admin 38 KẾT LUẬN 7.1 Thuận lợi Framework Open Loyalty hệ thống mã nguồn mở Loyalty, gồm đầy đủ tính chính, vậy, tìm hiểu

Ngày đăng: 05/09/2021, 20:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w