Bối cảnh và nhu cầu thực tế
Chương trình khách hàng thân thiết là những chiến lược tiếp thị có cấu trúc nhằm khuyến khích khách hàng quay lại mua sắm hoặc sử dụng dịch vụ của các doanh nghiệp liên kết.
Một số ưu đãi có thể bao gồm :
- Quyền được ưu tiên mua sắm vào các sản phẩm mới, phiên bản giới hạn
- Giảm giá bổ sung hoặc đôi khi là hàng hóa miễn phí
Trong lĩnh vực Marketing, đặc biệt là trong các ngành như ngân hàng, giải trí, khách sạn, bán lẻ và du lịch, thẻ khách hàng thân thiết, thẻ phần thưởng, thẻ tích điểm và thẻ câu lạc bộ đóng vai trò quan trọng Những thẻ này, có thể là thẻ nhựa, thẻ tương tự thẻ tín dụng, thẻ ghi nợ hoặc thẻ kỹ thuật số, xác định người dùng là thành viên của chương trình khách hàng thân thiết Thẻ khách hàng thân thiết, cả phiên bản vật lý và kỹ thuật số, liên quan mật thiết đến việc xây dựng lòng trung thành của khách hàng.
Khi xuất trình thẻ này, người mua thường được hưởng giảm giá cho giao dịch hiện tại hoặc tích lũy điểm để sử dụng cho các giao dịch trong tương lai.
Trong những năm gần đây, nhiều doanh nghiệp đã chuyển sang xu hướng di động bằng cách phát triển các ứng dụng thẻ khách hàng thân thiết Điều này không chỉ giúp người dùng dễ dàng quản lý thẻ mà còn giảm thiểu tình trạng mất thẻ Việc tích hợp thẻ vào ứng dụng cũng giải quyết vấn đề quản lý khi người tiêu dùng sở hữu quá nhiều thẻ khách hàng thân thiết.
Chi phí để doanh nghiệp có được một khách hàng mới cao gấp 5-25 lần so với việc bán cho khách hàng hiện tại Hơn nữa, khách hàng cũ chi tiêu nhiều hơn 67% so với khách hàng mới Tóm lại, lòng trung thành của khách hàng thực sự rất quan trọng.
4 được đền đáp - và các chương trình khách hàng thân thiết cuối cùng tự trả tiền cho chính họ [1]
Mục tiêu
Mục tiêu của đề tài là nghiên cứu hệ thống Open Loyalty nhằm phát triển một chương trình Khách hàng Trung thành, giúp doanh nghiệp dễ dàng kết nối với khách hàng và nâng cao lòng trung thành đối với thương hiệu Đồ án sẽ tập trung vào việc phân tích nghiệp vụ và giải quyết các vấn đề liên quan đến việc xây dựng hệ thống này.
- Tìm hiểu hệ thống Customer Loyalty Program và tầm quan trọng đối với doanh nghiệp
- Tìm hiểu về hệ thống Open Loyalty
- Phân tích nghiệp vụ mô hình hoá hệ thống
- Xây dựng hệ thống Loyalty cho doanh nghiệp bán đồ điện tử trên nền tảng website và mobile.
Nội dung đồ án
Chương 2: Tổng quan về Customer Loyalty Program
Chương 3: Tổng quan về hệ thống Open Loyalty
Chương 4: Phân tích thiết kế hệ thống
Chương 5: Tìm hiểu công nghệ
Chương 7: Kết luận và hướng phát triển
2 TỔNG QUAN VỀ CUSTOMER LOYALTY PROGRAM
Customer Loyalty Program là gì?
Customer Loyalty là sự trung thành của khách hàng đối với sản phẩm hoặc dịch vụ của doanh nghiệp, thể hiện qua hành vi và thái độ của họ Bản chất của Customer Loyalty là khách hàng ưu tiên lựa chọn sản phẩm của bạn thay vì sản phẩm của đối thủ.
Chương trình khách hàng trung thành (Customer Loyalty Program) hay còn gọi là chương trình khách hàng (Customer Program) là tập hợp các quyền lợi, ưu đãi và khuyến mãi mà doanh nghiệp cung cấp cho khách hàng Mục tiêu của chương trình này là khuyến khích khách hàng tiếp tục gắn bó và tạo ra giá trị lâu dài cho công ty.
Ưu nhược điểm của Customer Loyalty Program
Lợi ích của việc xây dựng cơ sở khách hàng trung thành:
- Giữ chân khách hàng tốt hơn, đảm bảo phần lợi nhuận nhất định từ tệp khách hàng trung thành
- Tăng số lượt giới thiệu khách hàng, tạo ra gấp đôi doanh số thay vì tốn chi phí cho quảng cáo
- Giảm chi phí ít hơn 3-10 lần so với tìm kiếm khách hàng mới
- 88% khách hàng tin tưởng, đánh giá trực tuyến
- Khách hàng trung thành có khả năng mua hàng nhiều hơn gấp 5 lần, khả năng dùng thử nhiều hơn gấp 7 lần và giới thiệu bạn bè hơn 4 lần [2]
Tất nhiên, Customer Loyalty Program cũng có những khuyết điểm sau:
- Tỷ lệ thất bại cao
- Tốn nhiều thời gian, nhân lực, tiền bạc vào thứ không đem lại lợi nhuận thấy rõ
- Customer program không phải là một marketing campaign (chiến dịch quảng cáo) Thay vào đó, bạn phải duy trì chương trình khách hàng của mình thường
Cập nhật chế độ khen thưởng mới là một cách hiệu quả để giữ chân khách hàng, đồng thời cũng là cơ hội để doanh nghiệp thử nghiệm các tính năng và sản phẩm mới.
Liên hệ thực tiễn
Starbucks Rewards
Starbucks Rewards cho phép khách hàng tích điểm (sao) mỗi khi chi tiêu tại Starbucks, với tỷ lệ 1 sao cho mỗi 40.000đ Chương trình này bao gồm hai loại thẻ: thẻ xanh và thẻ vàng, mỗi loại mang lại những ưu đãi riêng Ngoài ra, Starbucks cũng phát triển ứng dụng di động giúp khách hàng dễ dàng quản lý tài khoản và cập nhật thông tin về các chương trình ưu đãi dành cho khách hàng thân thiết.
Việc sử dụng ứng dụng di động để triển khai chương trình khách hàng thân thiết đang trở nên phổ biến, giúp doanh nghiệp thu thập và tập trung dữ liệu giao dịch của khách hàng một cách hiệu quả Phương thức này không chỉ tiết kiệm thời gian cho cả doanh nghiệp và khách hàng, mà còn cho phép khách hàng dễ dàng đặt hàng và thanh toán mà không cần trải qua các bước phức tạp Đồng thời, doanh nghiệp có thể dễ dàng nắm bắt hành vi và sở thích của khách hàng, từ đó cung cấp dịch vụ phù hợp hơn.
Amazon Prime
Amazon Prime là chương trình thành viên cao cấp của Amazon, mang đến nhiều lợi ích cho người mua thường xuyên với mức phí 119 USD mỗi năm Một trong những ưu đãi nổi bật của Amazon Prime là dịch vụ vận chuyển miễn phí trong vòng 2 ngày cho nhiều loại sản phẩm.
Mặc dù Amazon Prime không phải là chương trình khách hàng thân thiết miễn phí, nhưng nó vẫn mang lại giá trị vượt trội cho những người mua sắm thường xuyên, giúp khách hàng cảm nhận rõ lợi ích từ việc tham gia.
Mặc dù chương trình Prime của Amazon gây thiệt hại khoảng 1-2 tỷ đô la mỗi năm, công ty vẫn tìm cách tạo ra lợi nhuận bằng cách tăng tần suất giao dịch mua sắm.
Một thành viên của chương trình Prime chi trung bình khoảng 1.500 đô la mỗi năm, trong khi các thành viên không phải Prime chỉ chi khoảng 625 đô la.
3 TỔNG QUAN VỀ HỆ THỐNG OPEN LOYALTY
Giới thiệu về Open Loyalty
Open Loyalty là nền tảng mã nguồn mở cho chương trình Khách Hàng Thân Thiết, nổi bật với khả năng tùy chỉnh cao và linh hoạt trong việc triển khai Đây là một trong những giải pháp hàng đầu trong lĩnh vực Bán lẻ và Tài chính, giúp doanh nghiệp kết nối và giữ chân khách hàng thông qua các chương trình khuyến mãi hấp dẫn dành cho khách hàng thân thiết.
Open Loyalty đang được tin cậy và sử dụng bởi những đối tác lớn như Prudential, Aldo, Warbabank…
Tại sao lại chọn mã nguồn mở Open Loyalty?
Nhóm quyết định chọn lựa Open Loyalty vì những ưu điểm sau:
- 100% có thể tùy chỉnh: Có thể sử dụng Open Loyalty như một framework, dễ dàng thay đổi mọi thứ và thêm các tùy chỉnh của riêng mình
Tài liệu rõ ràng và mô hình phát triển đã được chứng minh, cùng với công nghệ hiện đại, tạo ra trải nghiệm tuyệt vời cho developer Điều này giúp dễ dàng cung cấp các giải pháp đo lường lòng trung thành một cách hiệu quả.
Open Loyalty cung cấp giải pháp mở rộng hiệu quả nhờ nền tảng công nghệ tiên tiến và kiến trúc hệ thống được thiết kế tỉ mỉ, cho phép xử lý các chương trình khách hàng thân thiết ở mọi quy mô, bao gồm cả các chương trình lớn với tần suất tương tác cao.
Với Open Loyalty, người dùng hoàn toàn sở hữu và kiểm soát dữ liệu trong chương trình khách hàng thân thiết, từ đó xây dựng một nền tảng dữ liệu khách hàng hiệu quả và đáng tin cậy.
Open Loyalty cho phép tích hợp dễ dàng vào bất kỳ cơ sở hạ tầng CNTT nào nhờ vào kiến trúc headless và API mạnh mẽ, giúp triển khai chương trình khách hàng thân thiết mà không cần thay đổi nhiều hệ thống.
Các tính năng đặc trưng của framework
Sử dụng sức mạnh thực sự của dữ liệu đa kênh
Xây dựng hồ sơ khách hàng thân thiết nhất quán giúp có cái nhìn tổng quát về hành vi và sở thích của khách hàng Bằng cách khớp dữ liệu trực tuyến và ngoại tuyến, bạn có thể tạo ra một hồ sơ hoàn chỉnh Sử dụng các thông tin như số điện thoại di động, email, số thẻ khách hàng thân thiết hoặc bất kỳ mã nhận dạng nào khác để kết nối dữ liệu từ nhiều nguồn khác nhau.
Phân khúc khách hàng dựa trên lịch sử mua sắm, chất lượng hồ sơ và các sự kiện tùy chỉnh giúp nắm bắt hành vi của khách hàng Bạn có thể sử dụng phân đoạn tĩnh hoặc động để nhắm mục tiêu hiệu quả cho các chiến dịch khách hàng thân thiết của mình.
Sử dụng theo dõi đa kênh để thu thập dữ liệu từ mọi loại giao dịch, bao gồm thương mại điện tử và cửa hàng bán lẻ Hợp nhất các hoạt động mua sắm từ một hoặc nhiều nhà bán lẻ hoặc thương hiệu để tối ưu hóa quy trình mua hàng.
Đặt ra các quy tắc để kiếm điểm
Áp dụng quy tắc Kiếm tiền từ giao dịch để xác định số điểm có thể thu được từ các chi tiết giao dịch Kết hợp các quy tắc với thời gian, phân đoạn, vị trí và nhiều yếu tố khác Bạn có thể làm việc với các quy tắc đã được xác định trước hoặc điều chỉnh quy tắc theo chiến lược khách hàng thân thiết của mình.
Thưởng cho khách hàng dựa trên hành vi của họ bằng cách khuyến khích các hành động cụ thể như giới thiệu khách hàng mới, đăng ký bản tin và thực hiện giao dịch đầu tiên Hệ thống này cho phép bạn tính điểm cho bất kỳ sự kiện tùy chỉnh nào mà bạn mong muốn, từ đó tạo động lực cho khách hàng tham gia tích cực hơn.
Xác định số lượng quy tắc để kiếm tiền không giới hạn và phát triển nhiều chiến thuật khác nhau nhằm thu hút thành viên Soạn thảo một ma trận quy tắc có thể đơn giản hoặc phức tạp Đồng thời, hãy cho phép khách hàng tích điểm hoặc nhận phần thưởng để khuyến khích lòng trung thành của họ.
Sử dụng các Cấp và Bậc để thu hút khách hàng
Xây dựng hồ sơ khách hàng thân thiết đồng nhất giúp có cái nhìn tổng quát về khách hàng Kết hợp dữ liệu trực tuyến và ngoại tuyến trong một hồ sơ duy nhất, sử dụng điện thoại di động, email, số thẻ khách hàng thân thiết hoặc bất kỳ mã nhận dạng nào khác để liên kết dữ liệu từ nhiều nguồn khác nhau.
Phân khúc khách hàng dựa trên lịch sử mua hàng, chất lượng hồ sơ và các sự kiện tùy chỉnh giúp thể hiện hành vi của khách hàng Bạn có thể sử dụng phân đoạn tĩnh hoặc động để nhắm mục tiêu hiệu quả cho các chiến dịch khách hàng thân thiết của mình.
Sử dụng theo dõi đa kênh để tối ưu hóa dữ liệu từ các giao dịch thương mại điện tử và cửa hàng bán lẻ Hợp nhất các hoạt động mua hàng từ nhiều người bán hoặc thương hiệu khác nhau để nâng cao hiệu quả kinh doanh.
Quản lý phần thưởng, mã khuyến mãi và lợi ích
Xác định và quản lý các loại phần thưởng như phiếu giảm giá, mã giá trị, phần thưởng vật chất, ưu đãi đặc biệt và hoàn tiền Đặt ra các giới hạn phù hợp với chiến dịch của bạn, chẳng hạn như quy định rằng mỗi khách hàng chỉ được sử dụng một phiếu giảm giá một lần.
Với tính năng nhắm mục tiêu phần thưởng nâng cao, bạn có thể tùy chỉnh quyền truy cập và thời gian đổi thưởng cho từng đối tượng cụ thể Lợi ích này có thể được áp dụng cho khách hàng dựa trên Cấp độ, Phân đoạn hoặc POS nhất định.
Phần thưởng trong Chiến dịch phần thưởng có thể được mua bằng điểm hoặc đổi ngay lập tức khi đạt các điều kiện cụ thể Bạn có khả năng thiết lập quy tắc đổi quà khác nhau cho từng Phân đoạn hoặc Cấp độ.
Quản lý các chương trình khách hàng thân thiết của nhiều người thuê với nhiều người bán
Sử dụng các tính năng khách hàng trung thành trong nhiều hợp đồng thuê nhà để xác định và quản lý các chương trình thưởng cho nhiều cửa hàng hoặc thương hiệu.
Sử dụng dữ liệu để thực hiện phân đoạn đa kênh bằng cách thu thập và xử lý thông tin giao dịch từ các điểm bán hàng trực tuyến và ngoại tuyến Mọi tương tác đều có thể được liên kết với hồ sơ của khách hàng, giúp tối ưu hóa trải nghiệm người dùng.
Trong phần mềm khách hàng thân thiết, có nhiều vai trò người dùng khác nhau, mỗi vai trò sẽ có quyền hạn riêng biệt Việc xác định quyền duyệt, sửa đổi hoặc thêm dữ liệu vào chương trình là rất quan trọng để đảm bảo tính bảo mật và hiệu quả trong quản lý thông tin khách hàng.
4 PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Bảng yêu cầu nghiệp vụ
Danh sách người dùng
1 Admin Quản lý hệ thống customer loyalty program
2 Seller Nhân viên của cửa hàng có quyền sử dụng máy POS
3 Customer Khách hàng của cửa hàng sử dụng ứng dụng tích điểm trên thiết bị di động
Bảng 4-1: Danh sách người dùng
Danh sách yêu cầu
STT Tên use case Đặc tả use case Phân quyền
- Tạo tài khoản mới Admin
- Xem thông tin tài khoản
- Cập nhật thông tin tài khoản
- Đăng kí tài khoản trên ứng dụng Customer
- Cập nhật thông tin khách hàng, kích hoạt/vô hiệu hoá tài khoản khách hàng
- Tìm kiếm khách hàng theo tên, số điện thoại, mã
Xem danh sách khách hàng bao gồm các thông tin quan trọng như tên, số điện thoại, email, giới tính, ngày sinh, thời gian tạo tài khoản, số lượng đơn hàng, tổng số tiền chi trả, cấp độ hiện tại, thời gian mua hàng cuối cùng và trạng thái tài khoản.
- Thêm mới/chỉnh sửa merchant bằng cách nhập những thông tin cần thiết
- Kích hoạt/vô hiệu hoá merchant
- Xem danh sách merchant với các thông tin: tên, số điện thoại, email, tên POS, vị trí, trạng thái merchant
- Thêm mới/chỉnh sửa POS bằng cách nhập những thông tin cần thiết
- Xem danh sách POS với các thông tin: tên, mô tả, vị trí, tổng số tiền thu vào, tổng số giao dịch
Quản lý điều kiện tích điểm
- Thêm/sửa điều kiện tích điểm/Đổi điểm thưởng
- Kích hoạt/vô hiệu hoá điều kiện Admin
- Xem danh sách điều kiện Seller
- Kích hoạt/vô hiệu hoá level Admin
- Xem danh sách level Seller
Quản lý khuyến mãi (reward campaign)
- Thêm/sửa các điều kiện khuyến mãi
- Kích hoạt/vô hiệu hoá khuyến mãi Admin
- Xem danh sách các khuyến mãi hiện hành Seller
8 Tiện ích Đặt lịch bảo trì
- Gửi yêu cầu đặt lịch bảo trì bằng cách điền các thông tin cần thiết Customer
- Xem danh sách các yêu cầu
- Duyệt các yêu cầu bảo trì
- Xác nhận hoàn tất bảo trì
Hỗ trợ bảo hành, đổi trả
- Gửi yêu cầu hỗ trợ bảo hành, đổi trả bằng cách điền các thông tin cần thiết
- Xem danh sách các yêu cầu
- Duyệt các yêu cầu bảo hành, đổi trả
- Xác nhận hoàn tất bảo hành, đổi trả
Hỗ trợ kỹ thuật trực tuyến
- Gửi yêu cầu hỗ trợ kĩ thuật trực tuyến Customer
- Xem danh sách các yêu cầu hỗ trợ
- Phản hồi các yêu cầu hỗ trợ trực tuyến
- Sử dụng ứng dụng để tìm kiếm các cửa hàng gần nhất Customer
9 Tích điểm/Đổi điểm thưởng
- Tích điểm cho khách hàng với mỗi hoá đơn
- Thực hiện trừ điểm khi khách hàng yêu cầu đổi điểm lấy khuyến mãi
Bảng 4-2: Danh sách yêu cầu
Đặc tả use case
Use case tổng quát
Hình 4-1: Sơ đồ use case tổng quát
Đặc tả use case
4.2.2.1 Đặc tả chức năng “Quản lý lịch bảo trì” Đặt lịch bảo trì
Tên Usecase Đặt lịch bảo trì
Mô tả Cho phép customer đặt lịch bảo trì
Người thực hiện Customer Điều kiện trước xử lý Đăng nhập thành công
Sau xử lý 1 Đặt lịch thành công: Thông báo đặt lịch thành công và cập nhật thông tin lịch bảo trì vào màn hình lịch bảo trì
2 Đặt lịch thất bại: Thông báo “Kiểm tra lại thông tin”
Các bước thực hiện 1 Người dùng chọn Đặt lịch bảo trì
2 Nhập đầy đủ thông tin bảo trì
3 Hệ thống thông báo đặt lịch thành công
Dòng sự kiện chính 1 Hệ thống hiển thị màn hình đặt lịch bảo trì
2 Người dùng nhập đầy đủ thông tin bảo trì
Dòng sự kiện khác 1 Hệ thống kiểm tra thông tin đặt lịch
2 Hệ thống xác nhận kết quả đặt lịch
Yêu cầu đặc biệt Không
Bảng 4-3: Đặc tả chức năng “Đặt lịch bảo trì”
4.2.2.2 Đặc tả chức năng “Hỗ trợ trực tuyến”
Tên Usecase Hỗ trợ trực tuyến
Mô tả Hệ thống tư vấn hỗ trợ trực tuyến giữa customer và admin
Người thực hiện Admin và Customer Điều kiện trước xử lý Đăng nhập thành công
Sau xử lý Gửi tin nhắn thành công
Các bước thực hiện 1 Người dùng chọn Hỗ trợ trực tuyến
2 Nhập thông tin chat và nhấn Gửi
Dòng sự kiện chính 1 Hệ thống hiển thị cuộc trò chuyện trên màn hình chat
2.Người dùng nhập thông tin chat 3.Nhấn vào Gửi
Dòng sự kiện khác Không
Yêu cầu đặc biệt Không
Bảng 4-4: Đặc tả chức năng "Hỗ trợ trực tuyến"
4.2.2.3 Đặc tả chức năng “Quản lý khách hàng”
Tên Usecase Thêm khách hàng
Mô tả Cho phép thêm khách hàng vào hệ thống
Người thực hiện Admin Điều kiện trước xử lý Đăng nhập thành công vào hệ thống với tài khoản admin
Sau xử lý 1 Thêm thành công: Thêm khách hàng vào danh sách và thông báo thành công
2 Thêm thất bại: Thông báo “Thông tin nhập vào chưa chính xác”
Các bước thực hiện 1 Admin đăng nhập vào hệ thống
2 Nhập các trường thông tin khách hàng
3 Hệ thống thông báo thêm khách hàng thành công
Dòng sự kiện chính 1 Admin đăng nhập thành công
2 Chọn tab "Customer", chọn "All customer"
3 Tại màn hình All customer, nhấp vào "Add customer"
4 Hệ thống hiển thị màn hình nhập thông tin khách hàng
5 Admin nhập thông tin khách hàng
Dòng sự kiện khác 1 Hệ thống kiểm tra tài khoản
2 Hệ thống kiểm tra thông tin nhập vào và thông báo thêm
20 thất bại nếu có sai sót
Yêu cầu đặc biệt Người dùng phải là Admin
Bảng 4-5: Đặc tả chức năng "Thêm khách hàng"
Chỉnh sửa thông tin khách hàng
Tên Usecase Chỉnh sửa thông tin khách hàng
Mô tả Cho phép chỉnh sửa thông tin khách hàng trong hệ thống
Người thực hiện Admin Điều kiện trước xử lý Đăng nhập thành công vào hệ thống với tài khoản admin
Sau xử lý 1 Chỉnh sửa thành công: Cập nhật thông tin khách hàng vào danh sách và thông báo thành công
2 Chỉnh sửa thất bại: Thông báo “Thông tin nhập vào chưa chính xác”
Các bước thực hiện 1 Admin đăng nhập vào hệ thống
2 Chọn tab "Customer", chọn "All customer"
3 Chỉnh sửa các trường thông tin khách hàng
4 Hệ thống thông báo cập nhật thông tin khách hàng thành công
Dòng sự kiện chính 1 Admin đăng nhập thành công
2 Chọn tab "Customer", chọn "All customer"
3 Hệ thống hiển thị màn hình danh sách khách hàng
4 Admin chỉnh sửa thông tin khách hàng
Dòng sự kiện khác 1 Hệ thống kiểm tra tài khoản
2 Hệ thống kiểm tra thông tin nhập vào và thông báo cập nhật thông tin khách hàng thất bại nếu có sai sót
Yêu cầu đặc biệt Người dùng phải là Admin
Bảng 4-6: Đặc tả chức năng "Chỉnh sửa khách hàng"
4.2.2.4 Đặc tả chức năng “Tích điểm/Đổi điểm thưởng”
Tên Usecase Tích điểm
Mô tả Hệ thống tích điểm cho khách hàng thông qua các giao dịch được nhập vào
Người thực hiện Admin/Seller Điều kiện trước xử lý Đăng nhập thành công vào hệ thống với tài khoản admin/seller
Sau xử lý 1 Tích điểm thành công: Cập nhật thêm điểm cho khách hàng
2 Tích điểm thất bại: Thông báo “Thông tin nhập vào chưa chính xác”
Các bước thực hiện 1 Admin/seller đăng nhập vào hệ thống
2 Chọn tab "Transaction", chọn "All transaction"
4 Nhập vào thông tin transaction và customer
5 Hệ thống thông báo tích điểm cho khách hàng thành công
Dòng sự kiện chính 1 Admin/Seller đăng nhập thành công
2 Chọn tab " Transaction ", chọn "All transaction"
3 Hệ thống hiển thị màn hình danh sách khách hàng cùng với list các transaction
4 Admin/Seller nhập thông tin transaction và customer
Dòng sự kiện khác 1 Hệ thống kiểm tra tài khoản
2 Hệ thống kiểm tra thông tin nhập vào và thông báo tích điểm cho khách hàng thất bại nếu có sai sót
Yêu cầu đặc biệt Người dùng phải là Admin/Seller
Bảng 4-7: Đặc tả chức năng “Tích điểm” Đổi điểm thưởng
Tên Usecase Đổi điểm thưởng
Mô tả Cho phép khách hàng đổi điểm thưởng để lấy quà trên ứng dụng
23 Điều kiện trước xử lý Đăng nhập thành công vào ứng dụng
Sau xử lý Đổi điểm thành công: Cập nhật trừ điểm cho khách hàng và phần thưởng khách hàng vừa đổi
Các bước thực hiện 1 Customer đăng nhập vào ứng dụng
2 Chọn tab "Đổi điểm thưởng”
3 Chọn “Đổi điểm” với phần thưởng muốn đổi
4 Hệ thống thông báo đổi điểm thành công
Dòng sự kiện chính 1 Customer đăng nhập thành công
2 Chọn tab "Đổi điểm thưởng"
3 Chọn “Đổi điểm” với phần thưởng muốn đổi
4 Nhấn vào nút "Xác nhận"
Dòng sự kiện khác 1 Hệ thống kiểm tra tài khoản
2 Hệ thống kiểm tra điểm hiện tại của người dùng
Yêu cầu đặc biệt Người dùng phải có đủ điều kiện đổi điểm
Bảng 4-8: Đặc tả chức năng “Đổi điểm thưởng”
Phân rã chức năng
Hình 4-2: Sơ đồ phân rã chức năng
Sequence diagram
Sequence diagram Đặt lịch bảo hành
Hình 4-3: Sequence diagram “Đặt lịch bảo hành”
Sequence diagram Hỗ trợ trực tuyến
Hình 4-4: Sequence diagram “Hỗ trợ trực tuyến”
Sequence diagram Tìm kiếm cửa hàng
Hình 4-5: Sequence diagram “Tìm kiếm cửa hàng”
Sequence diagram Đổi điểm thưởng
Hình 4-6: Sequence diagram “Đổi điểm thưởng”
Symfony
Tổng quan về Symfony
Symfony là một framework mã nguồn mở được phát triển bằng ngôn ngữ PHP5, giúp xây dựng ứng dụng web theo yêu cầu Với sự hỗ trợ từ một cộng đồng lập trình viên đông đảo, Symfony đảm bảo khả năng phát triển linh hoạt, tự do và tiết kiệm chi phí cho các dự án.
Tại sao chọn Symfony?
- Nhanh chóng, chú trọng vào hiệu suất Để so sánh, Symfony là framework PHP nhanh nhất
- Tính linh hoạt không giới hạn
Symfony là một framework mã nguồn mở được phát hành dưới giấy phép MIT, cho phép phát triển cả ứng dụng mã nguồn mở lẫn ứng dụng độc quyền mà không bị ràng buộc.
- Ổn định và bền vững
- Cộng đồng hỗ trợ lớn trên Slack với hơn 15,000 người
Postgresql
Tổng quan về Postgresql
PostgreSQL is an advanced open-source object-relational database management system designed for general-purpose use.
PostgreSQL là một phần mềm mã nguồn mở miễn phí Mã nguồn của phần mềm khả dụng theo license của PostgreSQL, một license nguồn mở tự do
PostgreSQL nổi bật với tính ổn định cao, giúp giảm thiểu công tác bảo trì Điều này đồng nghĩa với việc phát triển ứng dụng dựa trên PostgreSQL sẽ có chi phí sở hữu thấp hơn so với các hệ thống quản trị dữ liệu khác.
Tại sao chọn Postgresql
PostgreSQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở, miễn phí, với tính năng đa dạng hỗ trợ các nhà phát triển xây dựng ứng dụng và giúp các quản trị viên bảo vệ dữ liệu toàn vẹn Hệ thống này cung cấp môi trường chịu lỗi tốt, cho phép quản lý dữ liệu hiệu quả, bất kể kích thước tập dữ liệu lớn hay nhỏ, đồng thời có khả năng mở rộng tuyệt vời.
PostgreSQL tuân theo tiêu chuẩn SQL nhưng không mâu thuẫn với các tính năng truyền thống hay có thể dẫn đến các quyết định kiến trúc gây hại
Elasticsearch
Tổng quan về Elasticsearch
Elasticsearch là một công cụ tìm kiếm mạnh mẽ được xây dựng trên nền tảng Apache Lucene, cung cấp khả năng tìm kiếm phân tán với giao diện web HTTP hỗ trợ dữ liệu JSON.
Các công ty lớn đang sử dụng: Wikimedia, Adobe Systems, Facebook, Quora, SoundCloud, GitHub, Netflix… [6]
Tại sao chọn Elasticsearch
Tại sao phải dùng ES trong khi tìm kiếm văn bản có thể sử dụng câu lệnh LIKE SQL cũng được?
Khi tìm kiếm với truy vấn LIKE “%one%”, kết quả trả về sẽ bao gồm tất cả các từ có chứa "one", ví dụ như "phone", "zone", "money", "alone", dẫn đến một danh sách kết quả không mong muốn.
Khi tìm kiếm bằng Elasticsearch (ES), nếu bạn gõ từ "one", chỉ có kết quả "one" được trả về Ngoài ra, truy vấn LIKE không hỗ trợ tìm kiếm các từ có dấu Ví dụ, với từ khóa có dấu như "có", nếu sử dụng truy vấn LIKE, bạn chỉ có thể gõ từ mà không có dấu.
Công nghệ Elasticsearch (ES) vượt trội hơn về hiệu suất so với các phương pháp tìm kiếm truyền thống, đặc biệt khi sử dụng truy vấn LIKE Trong khi LIKE tìm kiếm toàn văn bản mà không sử dụng chỉ mục, dẫn đến thời gian tìm kiếm lâu hơn khi dữ liệu lớn, thì ES lại tối ưu hóa quy trình bằng cách "đánh index" cho các trường dữ liệu được chọn, giúp tăng tốc độ truy vấn và cải thiện hiệu quả tìm kiếm.
Flutter
Tổng quan về Flutter
Flutter là một bộ SDK đa nền tảng cho phép phát triển ứng dụng trên cả iOS và Android Nó cung cấp khả năng tương thích với framework UI của hai hệ điều hành này mà không cần biên dịch trực tiếp với các ứng dụng native.
Tại sao chọn Flutter
Phát triển ứng dụng nhanh chóng với tính năng hot reload cho phép thử nghiệm và xây dựng giao diện người dùng dễ dàng Bạn có thể thêm tính năng và sửa lỗi nhanh hơn mà không làm mất trạng thái trên emulator, simulator và thiết bị iOS cũng như Android.
Giao diện người dùng hấp dẫn và sinh động: Đáp ứng nhu cầu của người dùng với các widget đẹp mắt theo phong cách Material Design và Cupertino (iOS), cùng với các API chuyển động phong phú, trải nghiệm cuộn tự nhiên mượt mà và khả năng tự nhận thức nền tảng.
Truy cập các tính năng và SDK native giúp ứng dụng của bạn trở nên sống động hơn thông qua API của nền tảng, SDK của bên thứ ba và mã native Bạn có thể tái sử dụng mã Java, Swift và ObjC hiện có, đồng thời tiếp cận các tính năng và SDK native trên cả iOS và Android.
AngularJS
Tổng quan về AngularJS
Đây là một mã nguồn mở, 1 framwork cho các ứng dụng web Được phát triển từ năm
2009, hiện tại được duy trì bởi google và đã ra mắt phiên bản 2.0
AngularJS là một framework mạnh mẽ cho ứng dụng web động, cho phép sử dụng HTML như ngôn ngữ mẫu và mở rộng cú pháp của nó để diễn đạt rõ ràng các thành phần ứng dụng Hai tính năng cốt lõi của AngularJS là Data binding và Dependency injection, giúp giảm thiểu lượng code cần viết Framework này hoạt động trên tất cả các trình duyệt, trở thành sự lựa chọn lý tưởng cho bất kỳ công nghệ Server nào.
Tại sao chọn AngularJS
- Cung cấp khả năng tạo ra các Single Page Aplication dễ dàng
- Cung cấp khả năng 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 tái sử dụng component
- Giúp lập trình viên viết code ít hơn với nhiều chức năng hơn
- Chạy được trên các loại trình duyệt, trên cả PC lẫn mobile.
Sơ đồ công nghệ
Hình 5-1: Sơ đồ công nghệ
Các Design Pattern áp dụng
Domain Driven Design (DDD)
Domain model là phương pháp giúp chúng ta nhận thức về thế giới thực và các vấn đề mà phần mềm cần giải quyết, đồng thời thiết kế kiến trúc hệ thống ở mức độ tổng thể thay vì chỉ ở mức độ lớp như trong MVC hay các mẫu thiết kế khác Ứng dụng được phân chia thành 4 lớp khác nhau.
Lớp Giao Diện Người Dùng (User Interface Layer) có vai trò quan trọng trong việc hiển thị thông tin một cách trực quan cho người dùng và chuyển đổi các lệnh của người dùng Các sự kiện xảy ra trên giao diện, như việc nhấn nút trên các điều khiển đầu vào, sẽ được dịch thành các lệnh để xử lý ở các tầng bên dưới.
Tầng ứng dụng (Application Layer) được thiết kế mỏng với ít logic xử lý, chủ yếu để phối hợp các hoạt động của ứng dụng mà không chứa logic kinh doanh Tầng này không lưu trữ trạng thái của các đối tượng kinh doanh, mà chỉ ghi lại tiến trình của các tác vụ trong ứng dụng Có thể so sánh tầng này với các Controller trong mô hình MVC, nơi chỉ đảm nhiệm việc chuyển tiếp các tác vụ đến các phần cần xử lý.
The Domain Layer serves as the core of a business software application, housing the states of Business Objects It is responsible for defining business operations, while the persistence of these Business Objects and their states is managed by the underlying Infrastructure layer Unlike traditional models that organize code by views and controllers, this architecture structures the source code according to the names of the business operations, emphasizing the importance of the Domain Layer in the overall design.
The Infrastructure Layer serves as a foundational component by providing supporting libraries for other layers It facilitates communication between these layers and offers essential functions, such as the persistence of Business Objects within the Domain layer.
Command Query Responsibility Segregation (CQRS)
Similar to CQRS, the CQS (Command Query Separation) pattern was introduced by Bertrand Meyer in his book "Object-Oriented Software Construction." CQRS is regarded as an extension of CQS, with CQS applicable at the class or component level, while CQRS operates at the bounded context level.
CQS yêu cầu phân tách các phương thức để thực hiện truy vấn và ghi cho một mô hình: phương thức truy vấn không được phép thay đổi trạng thái, trong khi phương thức lệnh có thể thay đổi trạng thái nhưng không trả về giá trị.
CQRS là một mô hình phân tách rõ ràng giữa yêu cầu Query và yêu cầu Command Yêu cầu Query chỉ trả về dữ liệu mà không làm thay đổi trạng thái của hệ thống, trong khi yêu cầu Command có khả năng thay đổi trạng thái nhưng không trả về dữ liệu Sự khác biệt chính trong mô hình CQRS là tất cả các đối tượng được phân chia thành hai loại: một loại dành cho Query và một loại dành cho Command.
Event Sourcing
Mô hình Event Sourcing (ES) là một phương pháp thiết kế trong đó trạng thái của đối tượng được lưu trữ dưới dạng chuỗi các sự kiện thay đổi, khác biệt với các mô hình truyền thống chỉ lưu trạng thái cuối cùng của đối tượng.
When an object is modified, a corresponding versioned event is created to store the changes These events are stored in an append-only format within a structure known as an event store Storing these change events provides several benefits.
- Lưu trữ được lịch sử thay đổi của các đối tượng
Khi các sự kiện được gửi đến các hệ thống khác, những hệ thống này có khả năng tạo ra trạng thái cuối cùng chính xác của đối tượng gốc, điều này giúp dễ dàng tích hợp với các hệ thống khác.
Dựa trên các event được published đi có thể xây dựng phần lưu trữ riêng cho read side, để tối ưu cho tốc độ truy xuất dữ liệu [10]
BloC
Bloc is a library for state management in Flutter applications, standing for Business Logic Component It takes 'Events' as input and outputs 'States', and is built on the RxDart framework.
Chúng ta có thể chia Flutter application architecture thành 3 lớp sau:
The View Layer is responsible for rendering itself based on one or more states of the bloc It also handles user input events and the application's lifecycle events.
- Bloc: Có nhiệm vụ nhận event từ lớp biểu diễn và trả về state mới Hoạt động như một cầu nối giữa lớp data và lớp presentation
Data Layer có vai trò quan trọng trong việc cung cấp dữ liệu từ nhiều nguồn khác nhau Data Provider chịu trách nhiệm cung cấp dữ liệu, trong khi repository hoạt động như một trình đóng gói cho một hoặc nhiều Data Providers.
Ứng dụng website dành cho Admin
Thuận lợi
Framework Open Loyalty là một hệ thống mã nguồn mở về Loyalty với đầy đủ các tính năng chính, giúp nhóm hiểu rõ nghiệp vụ của hệ thống Customer Loyalty Program trong thực tế Nhờ đó, nhóm có thể nhanh chóng nắm bắt khái niệm và phát triển các tính năng riêng, phù hợp với doanh nghiệp bán hàng điện tử, từ đó tăng cường sự gắn kết giữa người dùng và doanh nghiệp.
Các thành viên trong nhóm đều có kinh nghiệm làm việc với ngôn ngữ lập trình web và mobile, đồng thời đã từng làm việc với mô hình client-server, giúp họ dễ dàng tổ chức mã nguồn và hiểu các cú pháp của PHP và Javascript.
Khó khăn
Bước đầu cài đặt môi trường khá khó khăn và gặp rất nhiều lỗi, do nhóm chưa có kinh nghiệm với Docker và framework Symfony
The framework employs various design patterns such as Domain-Driven Design (DDD), Command Query Separation (CQS), and Event Sourcing, which can make understanding the code challenging at first due to its complex organization.
Tài liệu của Open Loyalty hạn chế, chủ yếu chỉ cung cấp hướng dẫn về cách tùy chỉnh framework cơ bản Do đó, nhóm cần tự nghiên cứu framework và các Design Pattern để tổ chức mã nguồn một cách hợp lý và tuân thủ các tiêu chuẩn của Open Loyalty.
Do những hạn chế về thời gian và các yếu tố chủ quan, kết quả ứng dụng chưa hoàn toàn đáp ứng được kỳ vọng của nhóm Tuy nhiên, ứng dụng vẫn hoạt động ổn định và đã bổ sung thêm 2 tính năng hỗ trợ cho khách hàng của doanh nghiệp bán hàng điện tử.
Hai tính năng này hỗ trợ cho cả trang admin và ứng dụng di động mà nhóm tự xây dựng
Nhóm đang lên kế hoạch phát triển ứng dụng lên phiên bản mới hoàn thiện hơn, với sự đầu tư kỹ lưỡng về thời gian và công sức, nhằm nâng cao chất lượng và tính năng của sản phẩm.
7.4 Hướng phát triển Ở phiên bản sau, nhóm sẽ thêm 2 tính năng mới đã được đề cập trong phần nghiệp vụ, đó là:
- Hỗ trợ bảo hành/đổi trả
- Tìm kiếm cửa hàng gần nhất
Ngoài ra, nhóm sẽ đầu tư hơn về mặt UI/UX, nâng cao và cải thiện trải nghiệm người dùng
Hệ thống hiện tại hỗ trợ hai ngôn ngữ là Tiếng Anh và Tiếng Ba Lan, và trong phiên bản cập nhật tới, nhóm sẽ mở rộng thêm ngôn ngữ Tiếng Việt.
[1] [Online] Available: https://hocvien.haravan.com/blogs/loyalty- marketing/loyalty-program-tai-sao-phai-xay-dung-khach-hang-than-thiet
[2] [Online] Available: https://blog.urbox.vn/chuong-trinh-khach-hang-than- thiet-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-hieu- ve-co-so-du-lieu-ma-nguon-mo-tien-tien-nhat-the-gioi-
[6] [Online] Available: https://topdev.vn/blog/elasticsearch-la-gi/
[7] [Online] Available: https://viblo.asia/p/angularjs-toan-tap-phan-1-angularjs- la-gi-MgNvWYZEeYx
[8] [Online] Available: https://viblo.asia/p/gioi-thieu-design-pattern-domain- driven-design-ddd-Qbq5Q423lD8
[9] [Online] Available: https://labs.septeni-technology.jp/technote/tong-quan-ve- kien-truc-cqrs/
[10] [Online] Available: https://edwardthienhoang.wordpress.com/2018/01/26/xay-dung-he-thong- ecommerce-voi-ddd-va- cqrs/#:~:text=M%C3%B4%20h%C3%ACnh%20Event%20Sourcing%20%E2