--- card_id: "campaign/reward_campaign" title: "Chiến dịch Thưởng (Reward Campaign)" domain: "campaign" related_cards: - "campaign/campaign_rule" - "customer/pool_balance" - "campaign/cep_request" tags: ["campaign", "award", "accumulate", "counter", "redemption"] --- # Chiến dịch Thưởng (Reward Campaign) ## Mô tả ngắn Chiến dịch Thưởng (Reward Campaign) là thực thể cốt lõi định nghĩa các chương trình ưu đãi, cấp điểm thưởng hoặc hoàn tiền cho khách hàng. Mỗi chiến dịch có thể chứa nhiều Quy tắc (Campaign Rules). Tùy vào cách cấu hình, chiến dịch có thể hoạt động theo cơ chế cấp thưởng ngay lập tức trên từng giao dịch, hoặc tích lũy tổng chi tiêu qua một bộ đếm (Counter) để xét thưởng vào cuối kỳ. ## Thuật ngữ liên quan - **Base / Tactical Campaign**: Base là chiến dịch nền tảng áp dụng rộng rãi và lâu dài; Tactical là chiến dịch ngắn hạn với mục tiêu cụ thể (ví dụ: đẩy mạnh chi tiêu ngoại tệ tháng này). - **Counter (Bộ đếm)**: Thực thể lưu trữ cộng dồn các chỉ số (tổng chi tiêu, số lượng giao dịch, tổng điểm) của một khách hàng trong một khoảng thời gian (Period). - **Auto-redemption**: Cơ chế tự động đổi phần thưởng vừa cấp (VD: dặm bay) để chuyển trực tiếp sang hệ thống đối tác bên ngoài mà khách hàng không cần tự thao tác. ## Cấu trúc dữ liệu (Data Schema) Thực thể Chiến dịch (Campaign) chỉ lưu trữ các thông tin định danh và mục tiêu cấp cao, trong khi logic kinh doanh chi tiết được đẩy xuống các Campaign Rules. ### 1. Định danh và Phân loại - **Campaign ID / Name**: Mã và tên định danh chiến dịch. - **Campaign Type**: Loại chiến dịch (Base hoặc Tactical). - **Campaign Period**: Không được nhập tay ở cấp độ Campaign, mà được hệ thống **tính toán động (derived)**: Start Date bằng ngày bắt đầu sớm nhất của Rule, và End Date bằng ngày kết thúc muộn nhất của Rule trong chiến dịch đó. ### 2. Mục tiêu (Target Metrics) - **Target Active Customer Count**: Số lượng khách hàng dự kiến tham gia. - **Target Average Transaction Value**: Mục tiêu tổng giá trị chi tiêu cần đạt. *(Các chỉ số này dùng để so sánh với kết quả thực tế trên Dashboard Insight).* ### 3. Bộ đếm (Counter Definition) Counter là một phần cấu trúc quan trọng hỗ trợ Campaign, bao gồm: - **Entity**: Cấp độ đếm (Customer, Account, Card, Store, v.v.). - **Entity Counted**: Chỉ số cần đếm: GA (Gross Amount), NA (Nett Amount), PT (Points), TX (Transactions), QT (Quantity). - **Period Unit & Length**: Đơn vị tính chu kỳ (Day, Week, Month, Quarter) và độ dài. (VD: 1 Month). - **FSD (First Start Date) & BED (Bucket End Date)**: Ngày bắt đầu của chu kỳ đếm đầu tiên, và ngày chốt sổ của chu kỳ. Hệ thống tự động xoay vòng BED cho các chu kỳ tiếp theo. - **Reset Value / Keep Remainder**: Mức giá trị để reset bộ đếm, và có giữ lại phần dư hay không (modulus). ## Phân loại Cơ chế Cấp thưởng (Campaign Mechanics) ### 1. Award on Every Transaction (Cấp thưởng tức thời) - Áp dụng cho các chiến dịch có rule đơn giản (VD: mua 100K tặng 10 điểm). - **Luồng xử lý**: Giao dịch (từ Core, POS hoặc qua CEP) chạy vào hệ thống -> Quét Campaign Rule -> Tính toán theo công thức -> Trích điểm từ Reward Pool và cộng trực tiếp vào Pool Balance của khách hàng ngay tại thời điểm xử lý (Real-time hoặc Batch). ### 2. Accumulate Then Award (Tích lũy rồi cấp thưởng) - Áp dụng khi phần thưởng phụ thuộc vào tổng mức độ hoàn thành trong một kỳ (VD: chi tiêu tổng > 1,000$ trong tháng mới được thưởng 20%). - **Luồng xử lý**: - Giao dịch phát sinh -> Quét Campaign Rule 1 -> Cộng dồn giá trị vào **Counter** tương ứng. - Đến ngày chốt kỳ (BED) -> Quét Campaign Rule 2 -> Lấy tổng giá trị trong Counter ra làm Input -> Tính toán công thức -> Cấp thưởng. ## Cơ chế Trừ điểm (Bucket Deduction Sequence) Mặc dù quy tắc cấp thưởng được định nghĩa ở Campaign, hệ thống có một quy chuẩn cố định về việc trừ điểm khi khách hàng sử dụng (Redeem) như sau: 1. **Ưu tiên Expiry Date**: Các Buckets có ngày hết hạn sớm nhất (Earliest Expiry Date) sẽ bị trừ trước (FIFO). 2. **Ưu tiên Account Type**: Nếu có nhiều buckets cùng ngày hết hạn, hệ thống sẽ dựa vào mức độ ưu tiên của Account Type được cấu hình để trừ. 3. Không tự động trừ vào các buckets đã hết hạn (Expired), trừ phi có sự can thiệp thủ công từ Supervisor qua màn hình Admin (Operations Adjustment). ## Mối quan hệ với modules khác - **Campaign Rule**: Campaign là "vỏ" chứa nhiều Rule. Rule mới quyết định công thức tính điểm và giới hạn. - **Pool Balance / LAB**: Kết quả của Campaign là sinh ra các giao dịch (Awards) làm tăng số dư trong Pool của khách. - **CEP (Complex Event Processing)**: Sinh ra các giao dịch ảo kích hoạt Campaign (VD: Khách hàng sinh nhật). ## Ví dụ thực tế Tạo chiến dịch "Kích cầu chi tiêu Hè" (Tactical): - Mục tiêu khách hàng (Target): 10,000 khách. - Cơ chế **Accumulate Then Award**: Khách chi tiêu thẻ Visa > 50,000,000 VND trong 1 tháng sẽ được tặng 5,000 điểm. - Hệ thống thiết lập 1 **Counter** (Entity Counted = Nett Amount, Period Unit = Month, Length = 1). - Rule 1: Cộng dồn mọi giao dịch mua sắm thẻ Visa vào Counter. - Rule 2 (kích hoạt cuối tháng): Nếu Counter.Balance > 50,000,000 -> Award 5,000 điểm.