--- card_id: "customer/attribute_counter" title: "Thuộc tính và Bộ đếm (Attribute & Counter)" domain: "customer" related_cards: - "customer/customer_overview" - "customer/account" - "customer/card" - "campaign/campaign_rule" tags: ["attribute", "counter", "bucket", "entity level"] --- # Thuộc tính và Bộ đếm (Attribute & Counter) ## Mô tả ngắn Attribute (Thuộc tính) và Counter (Bộ đếm) là các trường thông tin mở rộng được gắn vào các thực thể cốt lõi (Khách hàng, Tài khoản, Thẻ). - **Attribute** thường lưu trữ các giá trị tĩnh hoặc bán tĩnh có thời hạn (ví dụ: phân khúc, sở thích) được cập nhật qua batch hoặc cấu hình. - **Counter** lưu trữ các giá trị tích lũy động (ví dụ: tổng chi tiêu tháng) được cập nhật liên tục thông qua giao dịch, chia thành các khoảng thời gian (Bucket). ## Thuật ngữ liên quan - **Entity Level**: Cấp độ thực thể được gắn dữ liệu (Customer [CU], Account [PA], Card [CA]). - **Entity ID**: Mã định danh tương ứng với cấp độ (CIF cho CU, Account Number cho PA, Card Number cho CA). - **Counter Bucket**: Khoảng thời gian cụ thể của một bộ đếm (Ví dụ: Bucket tháng 10, Bucket tháng 11). ## Cấu trúc dữ liệu (Data Schema) Dữ liệu được chia thành 2 phần riêng biệt, đều xoay quanh trục "Entity Level". ### 1. Thuộc tính thực thể (Attribute Value) Dữ liệu lưu tại bảng `ATTRIBUTE_VALUE`. - **Attribute Group / ID / Name**: Nhóm, mã và tên của thuộc tính. - **Entity & Entity ID**: Cấp độ (Customer/Account/Card) và mã định danh tương ứng (CSN, ASN, PSN). - **Account Type**: Loại tài khoản (chỉ áp dụng nếu Entity là Account). - **Attribute Value**: Giá trị của thuộc tính. - **Effective Date From / To**: Khoảng thời gian giá trị thuộc tính này có hiệu lực. - **Campaign Information**: Nếu thuộc tính được tham chiếu trong một Campaign Rule (làm tiêu chí hoặc công thức), hệ thống sẽ hiển thị Campaign ID, Campaign Name, Rule Name và thời gian hiệu lực của Rule đó. ### 2. Bộ đếm thực thể (Counter Value) Dữ liệu lưu tại bảng `Campaign_Counter`, được cập nhật thông qua quá trình xử lý giao dịch. - **Counter & What to count**: Mã bộ đếm và tiêu chí được đếm (ví dụ: đếm số tiền, đếm số lần giao dịch). - **Entity & Entity ID**: Cấp độ và mã định danh thực thể. - **Counter Value**: Giá trị tích lũy hiện tại của bộ đếm. - **Bucket Number & Period**: Số thứ tự bucket, kèm theo Ngày bắt đầu (Start Date) và Ngày kết thúc (End Date) của bucket. - **Counter State**: Trạng thái bộ đếm (A: Awarded, C: New). - **Transaction Details**: Thông tin giao dịch gần nhất làm thay đổi bộ đếm (Reference No, Post Date, Giá trị cập nhật, Ngày cập nhật, Updated by). ## Cách hoạt động (How It Works) - **Cập nhật dữ liệu**: - Attribute thường được cập nhật hàng loạt (batch process) hoặc thông qua giao diện bảo trì (Maintenance batch). - Counter được cập nhật chủ yếu thông qua các giao dịch kích hoạt Campaign Rule. - **Tính thời điểm (Effective/Bucket)**: - Cả hai đều có tính "thời điểm". Attribute dùng khái niệm **Effective Date** để xác định giá trị hợp lệ hiện tại. - Counter dùng **Bucket** để lưu trữ giá trị lũy kế theo từng chu kỳ (ví dụ: đếm theo ngày, tuần, tháng). Hệ thống so sánh ngày xử lý (processing date) với kỳ của bucket/effective date để hiển thị bản ghi "hiện hành" (Active). - **View-only**: Màn hình này cung cấp góc nhìn tổng hợp ở cấp độ Khách hàng (Customer Profile) để xem toàn bộ Attribute/Counter của CIF đó cũng như các Account/Card trực thuộc. Không cho phép thao tác cập nhật trực tiếp tại đây. ## Mối quan hệ với modules khác - **Customer / Account / Card**: Đóng vai trò là thực thể chủ quản (Entity) để gắn Attribute và Counter. - **Campaign Rule**: Counter là công cụ cốt lõi để theo dõi điều kiện thưởng của Campaign Rule (ví dụ: "Chi tiêu đạt 10 triệu"). Attribute cũng có thể được dùng làm điều kiện lọc (Criteria) trong Rule. - **Transaction**: Mỗi giao dịch đều có khả năng cập nhật giá trị của một hoặc nhiều Counter Bucket. ## Ví dụ thực tế Khách hàng A (CIF: 123) có: - **Attribute**: "Hạng thành viên" = "GOLD" (Entity: Customer, ID: 123, Hiệu lực: 01/01/2026 - 31/12/2026). - **Counter**: Tham gia chương trình "Tiêu dùng tháng 10". Hệ thống tạo "Counter: Tổng chi tiêu", Bucket: 01/10/2026 - 31/10/2026. Sau 2 lần quẹt thẻ, "Counter Value" cập nhật thành 5,000,000 VNĐ. Record hiển thị rõ giao dịch gần nhất (Reference No: TXN889) đã cộng thêm 1,000,000 VNĐ vào bộ đếm này.