Danh mục:
Tiếp nối series “Kiến trúc thương mại điện tử hiện đại”, với chủ đề “Thiết kế hệ thống Loyalty và Membership (tích điểm, hạng thành viên)” — đây là module giúp tăng tỷ lệ quay lại (retention), tăng LTV và xây dựng tập khách hàng trung thành.

1) Vì sao cần Loyalty & Membership?
- Chi phí giữ chân khách hàng rẻ hơn nhiều so với tìm khách mới
- Tăng giá trị vòng đời khách hàng (CLV / LTV)
- Tăng tần suất mua hàng, khuyến khích mua thêm để lên hạng cao hơn
- Cung cấp dữ liệu để cá nhân hóa marketing & ưu đãi
- Shopee, Tiki, Lazada… đều có hệ thống tích điểm và hạng thành viên như một phần cốt lõi để giữ chân khách.
2) Tổng quan kiến trúc
[Order Service]
↓
[Event Bus (:contentReference[oaicite:3]{index=3}/:contentReference[oaicite:4]{index=4})]
↓
[Loyalty Service] ←→ [Membership Service]
↓
[Point Ledger DB] + [Tier DB]
↓
[Reward API / Promotion Engine / CMS]
↓
[Web/App hiển thị điểm, hạng, phần thưởng]
- Tách Loyalty thành service riêng để scale độc lập.
- Giao tiếp event-driven với Order (nhận sự kiện mua hàng → cộng điểm).
- Membership Service quản lý cấp bậc/hạng dựa trên điểm tích lũy.
3) Cơ chế tích điểm
3.1 Nguyên tắc
- Tích điểm theo giá trị đơn hàng: earned_points = floor(order_amount / rate)
- Có thể cộng điểm bonus cho hành vi: review sản phẩm, mời bạn bè, tham gia campaign
3.2 Dữ liệu
point_transactiontxn_id, user_id, order_id, type (earn/redeem/expire/adjust), points, status, created_at
point_balanceuser_id, available_points, lifetime_points, updated_at
Dùng ledger-based design (ghi nhật ký giao dịch điểm) để dễ audit và rollback.
4) Cơ chế đổi điểm (Redeem)
- Cho phép dùng điểm để giảm giá đơn hàng (convert points → money)
- Đặt conversion rate: ví dụ 100 điểm = 10.000đKhi checkout:
- Lock số điểm user → apply giảm giá
- Khi thanh toán thành công mới trừ điểm
- Có thể hỗ trợ đổi điểm lấy voucher, quà tặng, miễn phí ship
5) Cơ chế hạng thành viên (Tier / Membership)

- Tính tổng chi tiêu hoặc điểm tích lũy trong chu kỳ (rolling 12 tháng)
- Cron job hoặc event-driven cập nhật tier định kỳ
- Lưu vào bảng membership_tier(user_id, tier, valid_until)
6) Tích hợp với hệ thống khác
- Promotion Engine: tạo campaign chỉ áp dụng cho tier nhất định
- Checkout: cho phép dùng điểm để giảm giá
- CMS: hiển thị banner cá nhân hóa theo tier
- Recommendation Engine: đề xuất sản phẩm phù hợp tier cao
- Analytics: đo retention, churn, LTV theo tier
7) Các vấn đề kỹ thuật cần lưu ý
- Concurrency: lock optimistic khi cộng/trừ điểm để tránh race condition
- Expiration: điểm có thể hết hạn → lưu expire_at từng giao dịch điểm
- Rollback: nếu đơn bị hủy → phát sự kiện OrderCancelled để trừ điểm lại
- Anti-fraud: giới hạn điểm kiếm được từ hành vi phi thương mại (spam review)
- Observability: log đủ các event điểm để điều tra tranh chấp
8) Hiển thị UX/UI
- Trang “Tài khoản của tôi” → hiển thị điểm hiện có + lịch sử giao dịch điểm
- Hiển thị tiến trình lên hạng (Bạn còn 300k để lên Gold)
- Thông báo tự động khi lên hạng mới hoặc sắp hết hạn điểm
- Gợi ý ưu đãi riêng cho từng tier
9) Kết luận
- Loyalty & Membership là trụ cột xây dựng khách hàng trung thành, giúp tăng doanh thu dài hạn và tạo lợi thế cạnh tranh.
- Loyalty: tích điểm → redeem → expire
- Membership: phân hạng → cá nhân hóa ưu đãi
- Cần thiết kế ledger chuẩn, event-driven, chống gian lận, dễ mở rộng
Gợi ý: bắt đầu đơn giản (chỉ tích điểm theo đơn hàng), sau đó bổ sung tier, redeem, campaign khi đã có lượng user lớn.