chore: remove legacy specification documents and internal rules file
This commit is contained in:
46
docs/knowledge-refs/campaign/batch_rule_processing.md
Normal file
46
docs/knowledge-refs/campaign/batch_rule_processing.md
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
ref_id: "campaign/batch_rule_processing"
|
||||
parent_card: "campaign/cep_request, campaign/rep_rule"
|
||||
title: "Chi tiết Lịch trình chạy Batch cho CEP/REP (Batch Rule Processing Schedule)"
|
||||
domain: "campaign"
|
||||
ref_type: "process_detail"
|
||||
tags: ["batch", "schedule", "CEP", "REP", "extraction"]
|
||||
---
|
||||
|
||||
# Chi tiết Lịch trình chạy Batch cho CEP/REP (Batch Rule Processing Schedule)
|
||||
|
||||
## Thuộc về
|
||||
|
||||
campaign/cep_request và campaign/rep_rule — Các card mô tả quy tắc trích xuất tự động (CEP/REP). Reference này làm rõ chi tiết các tùy chọn cấu hình lịch chạy (Run Schedule) và cách hệ thống chọn đúng Bucket để trích xuất khi Batch Job được kích hoạt.
|
||||
|
||||
## Chi tiết
|
||||
|
||||
### Các tùy chọn cấu hình lịch chạy (Run Schedule)
|
||||
|
||||
Hệ thống cung cấp 5 loại lịch trình có thể cấu hình cho cả CEP và REP Batch Job:
|
||||
|
||||
| Loại lịch chạy | Thời điểm kích hoạt Batch Job |
|
||||
|---|---|
|
||||
| **Daily** | Chạy hàng ngày vào cuối ngày (End-of-day batch stream). |
|
||||
| **Monthly on Day N of Month** | Chạy vào ngày N cố định hàng tháng. |
|
||||
| **Statement Cycle Date** | Chạy vào ngày chốt sao kê (Statement Cycle) của từng tài khoản. |
|
||||
| **N Days after AOD** | Chạy vào thời điểm chính xác N ngày sau Ngày mở tài khoản (Account Opened Date). |
|
||||
| **Annually, on Day N of Month M** | Chạy mỗi năm một lần vào ngày N tháng M. |
|
||||
|
||||
*(Lưu ý: Trong mọi trường hợp, nếu lịch chạy rơi vào ngày hệ thống không chạy batch, job sẽ tự động lùi sang ngày chạy batch tiếp theo).*
|
||||
|
||||
### Ma trận Quyết định (Decision Matrix) trích xuất Bucket
|
||||
|
||||
Khi Batch Job chạy theo lịch đã định, hệ thống áp dụng ma trận dưới đây để chọn đúng Bucket (thường dùng cho CEP) để lấy giá trị:
|
||||
|
||||
| Bucket Cấu hình (Counter Bucket to Extract) | Điều kiện trích xuất thực tế |
|
||||
|---|---|
|
||||
| **Current Bucket** | Trích xuất Bucket có Ngày hết hạn (Expiry Date) sớm nhất lớn hơn Ngày xử lý hiện tại, VÀ trạng thái State = `C` (hoặc `NULL`). |
|
||||
| **Previous Bucket** | Trích xuất Bucket có Ngày hết hạn muộn nhất nhỏ hơn Ngày xử lý hiện tại, VÀ trạng thái State = `C` (hoặc `NULL`). |
|
||||
| **Period Before Last** | Trích xuất Bucket ngay trước Previous Bucket, VÀ trạng thái State = `C` (hoặc `NULL`). |
|
||||
|
||||
### Cập nhật Trạng thái (State Update) sau trích xuất
|
||||
|
||||
Để tránh trích xuất trùng lặp vào chu kỳ chạy kế tiếp, trạng thái của Bucket (`C`) phải được cập nhật:
|
||||
- Nếu Counter cấu hình `Update on aware`: Đổi State từ `C` sang `A` (Awarded) nếu giao dịch ảo tạo ra từ CEP Hit được một Campaign Rule.
|
||||
- Nếu Counter cấu hình `Update on extract`: Đổi State từ `C` sang `E` (Extracted) ngay sau khi trích xuất, bất kể có Hit Rule hay không.
|
||||
125
docs/knowledge-refs/campaign/criteria_operators.md
Normal file
125
docs/knowledge-refs/campaign/criteria_operators.md
Normal file
@@ -0,0 +1,125 @@
|
||||
---
|
||||
ref_id: "campaign/criteria_operators"
|
||||
parent_card: "campaign/campaign_rule"
|
||||
title: "Chi tiết Criteria Operators (Rule Criteria Operators)"
|
||||
domain: "campaign"
|
||||
ref_type: "enum_detail"
|
||||
tags: ["criteria", "operators", "query builder", "AND", "OR", "condition"]
|
||||
---
|
||||
|
||||
# Chi tiết Criteria Operators (Rule Criteria Operators)
|
||||
|
||||
## Thuộc về
|
||||
|
||||
campaign/campaign_rule — Card tóm tắt Criteria Operators thành 1 dòng: "Operators: String (Is in, Contains...), Number (Between, Greater...), Date (Fixed, Period...)". Reference này liệt kê TOÀN BỘ operators cho mỗi data type để model nhỏ trả lời chính xác.
|
||||
|
||||
## Chi tiết
|
||||
|
||||
### Operators theo Data Type
|
||||
|
||||
#### String / Lookup
|
||||
|
||||
| Operator | Mô tả | Ví dụ |
|
||||
|---|---|---|
|
||||
| Is in | Giá trị nằm trong danh sách | Customer Status Is in [Active, Inactive] |
|
||||
| Is not in | Giá trị KHÔNG nằm trong danh sách | MCC Is not in [5411, 5412] |
|
||||
| Contains | Chuỗi chứa text con | Customer Name Contains "Nguyễn" |
|
||||
| Equal to | Bằng chính xác | Account Type Equal to "Visa Platinum" |
|
||||
| Not equal to | Không bằng | Gender Not equal to "Male" |
|
||||
| Starts with | Bắt đầu bằng | Card No Starts with "4123" |
|
||||
| Ends with | Kết thúc bằng | Phone Ends with "999" |
|
||||
| Is null | Giá trị rỗng/null | Email Is null |
|
||||
| Is not null | Giá trị có dữ liệu | Email Is not null |
|
||||
|
||||
#### Number
|
||||
|
||||
| Operator | Mô tả | Ví dụ |
|
||||
|---|---|---|
|
||||
| Equal | Bằng | Transaction Count Equal 10 |
|
||||
| Not equal | Không bằng | Amount Not equal 0 |
|
||||
| Less than | Nhỏ hơn | Age Less than 18 |
|
||||
| Less than or equal | Nhỏ hơn hoặc bằng | Amount Less than or equal 500000 |
|
||||
| Greater than | Lớn hơn | Nett Amount Greater than 100000 |
|
||||
| Greater than or equal | Lớn hơn hoặc bằng | Counter Value >= 5000000 |
|
||||
| Between | Trong khoảng | Amount Between 100000 AND 500000 |
|
||||
| Is null | Giá trị rỗng | Income Is null |
|
||||
| Is not null | Giá trị có dữ liệu | Income Is not null |
|
||||
|
||||
#### Date
|
||||
|
||||
| Operator | Mô tả | Ví dụ |
|
||||
|---|---|---|
|
||||
| On or before | Vào ngày hoặc trước | Registration Date On or before 2024-01-01 |
|
||||
| On or after | Vào ngày hoặc sau | DOB On or after 1990-01-01 |
|
||||
| Fixed date | Đúng ngày cụ thể | Transaction Date Fixed date 2024-06-15 |
|
||||
| Between date range | Trong khoảng ngày | Transaction Date Between 2024-01-01 AND 2024-12-31 |
|
||||
| Between period from N | So sánh dynamic | Last Transaction Between period from 3 months ago |
|
||||
|
||||
**Ghi chú Date**: Một số Date operators hỗ trợ so sánh Day/Month bỏ qua Year (VD: DOB ngày 15/03 bất kể năm nào) — dùng cho criteria sinh nhật.
|
||||
|
||||
#### Day of Week
|
||||
|
||||
| Operator | Mô tả | Ví dụ |
|
||||
|---|---|---|
|
||||
| Is the day of week | Ngày trong tuần | Transaction Date Is the day of week [Monday, Friday] |
|
||||
|
||||
Giá trị: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.
|
||||
|
||||
#### Time
|
||||
|
||||
| Operator | Mô tả | Ví dụ |
|
||||
|---|---|---|
|
||||
| Is between | Trong khoảng thời gian | Transaction Time Is between 09:00 AND 17:00 |
|
||||
|
||||
Format: HH:mm (00:00 – 23:59).
|
||||
|
||||
#### Boolean
|
||||
|
||||
| Operator | Mô tả | Ví dụ |
|
||||
|---|---|---|
|
||||
| Is | True hoặc False | Is Primary Card Is True |
|
||||
|
||||
### Criteria Categories
|
||||
|
||||
Criteria được nhóm theo 6 danh mục:
|
||||
|
||||
| Category | Áp dụng cho | Ví dụ fields |
|
||||
|---|---|---|
|
||||
| Customer | Thông tin khách hàng | CIF, Customer Status, Gender, DOB, Income, Registration Date |
|
||||
| Account | Thông tin tài khoản | Account Type, Account Status, Account Open Date |
|
||||
| Transaction | Dữ liệu giao dịch | Nett Amount, Transaction Date, Transaction Time, Currency |
|
||||
| Attribute | Custom attributes | Bất kỳ attribute nào đã cấu hình (VD: Membership Tier) |
|
||||
| Counter | Giá trị Counter tích lũy | Counter Value, Counter Bucket (Current/Previous) |
|
||||
| Merchant | Thông tin merchant | Corporation, Chain, Store, MCC (Merchant Category Code) |
|
||||
|
||||
### Logic Grouping Rules
|
||||
|
||||
| Rule | Mô tả |
|
||||
|---|---|
|
||||
| AND / OR | Criteria trong cùng 1 group kết hợp bằng AND hoặc OR |
|
||||
| Multi-group | 1 Rule có thể có nhiều groups, nhưng logic GIỮA các groups phải nhất quán (tất cả AND hoặc tất cả OR) |
|
||||
| NOT toggle | Mỗi condition có thể bật NOT để đảo ngược (VD: NOT MCC Is in [5411]) |
|
||||
|
||||
## Ví dụ cụ thể
|
||||
|
||||
**Criteria phức tạp — "Thưởng 2x cho VIP ăn uống cuối tuần":**
|
||||
|
||||
```
|
||||
Group 1 (AND):
|
||||
- Customer: Membership Tier Equal to "VIP" ← Attribute operator
|
||||
- Transaction: Nett Amount Greater than 100000 ← Number operator
|
||||
|
||||
Group 2 (AND): ← Inter-group: AND
|
||||
- Merchant: MCC Is in [5411, 5412, 5441, 5499] ← String/Lookup operator
|
||||
- Transaction: Day of week Is [Saturday, Sunday] ← Day of week operator
|
||||
- Transaction: Time Is between 11:00 AND 22:00 ← Time operator
|
||||
```
|
||||
|
||||
Kết quả: Chỉ kích hoạt Rule khi khách VIP chi tiêu > 100K tại merchant ăn uống vào cuối tuần giờ 11h-22h.
|
||||
|
||||
**Criteria đơn giản — "Thưởng cho mọi giao dịch":**
|
||||
|
||||
```
|
||||
Group 1 (AND):
|
||||
- Transaction: Nett Amount Greater than 0 ← Chỉ cần amount > 0
|
||||
```
|
||||
40
docs/knowledge-refs/campaign/expiry_policies.md
Normal file
40
docs/knowledge-refs/campaign/expiry_policies.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
ref_id: "campaign/expiry_policies"
|
||||
parent_card: "campaign/pool_definition"
|
||||
title: "Chi tiết Chính sách Hết hạn (Expiry Policies)"
|
||||
domain: "campaign"
|
||||
ref_type: "enum_detail"
|
||||
tags: ["pool", "expiry", "bucket", "policy"]
|
||||
---
|
||||
|
||||
# Chi tiết Chính sách Hết hạn (Expiry Policies)
|
||||
|
||||
## Thuộc về
|
||||
|
||||
campaign/pool_definition — Card tóm tắt Expiry Policy là cách tính ngày hết hạn cho số dư nhưng THIẾU danh sách các chính sách cụ thể. Reference này bổ sung chi tiết các loại Expiry Policy áp dụng cho Pool để model hiểu rõ cách tính ngày.
|
||||
|
||||
## Chi tiết
|
||||
|
||||
### Danh sách Expiry Policy
|
||||
|
||||
| Giá trị | Tên | Cách hoạt động | Tham số đi kèm |
|
||||
|---|---|---|---|
|
||||
| N_MONTHS_FROM_EARNING | N Months from month of earning | Điểm kiếm được trong tháng 1 sẽ hết hạn vào cuối tháng 1+N. | Pool Expiry Policy Parameter N |
|
||||
| N_QUARTERS_FROM_EARNING | N Quarters from quarter of earning | Điểm kiếm được trong quý 1 sẽ hết hạn vào cuối quý 1+N. | Pool Expiry Policy Parameter N |
|
||||
| SEMI_ANNUAL | Semi-annual, mid- and end-year | Điểm kiếm được nửa đầu năm hết hạn vào cuối tháng 6 năm sau; nửa cuối năm hết hạn vào cuối tháng 12 năm sau. | Không |
|
||||
| N_YEARS_FROM_EARNING | N Years from year of earning | Điểm kiếm được trong năm 1 sẽ hết hạn vào cuối năm 1+N. | Pool Expiry Policy Parameter N |
|
||||
| ANNIVERSARY | Anniversary of membership | Điểm sẽ hết hạn vào mỗi ngày kỷ niệm đăng ký thành viên của khách hàng. | Không |
|
||||
| FIXED_DATE | Fixed Date | Điểm sẽ hết hạn vào đúng một ngày cụ thể được chỉ định. | Expiry Date |
|
||||
| NO_EXPIRY | No Expiry | Điểm kiếm được sẽ không bao giờ hết hạn (mặc định ngày hết hạn là 31-Dec-2999). | Không |
|
||||
|
||||
### Quy tắc chọn
|
||||
|
||||
- **eVoucher Pool**: Mặc định KHÔNG CÓ Expiry Policy (trường này inactive cho Evoucher pool).
|
||||
- **Fixed Date**: Nếu chọn chính sách này, bất kỳ Campaign Rule nào cập nhật (nạp điểm) vào Pool này không được phép có End Date muộn hơn Expiry Date đã chọn.
|
||||
|
||||
## Ví dụ cụ thể
|
||||
|
||||
- **N Months from month of earning**: Nếu `N = 3`, điểm thưởng nhận được trong tháng 1 sẽ hết hạn vào ngày cuối cùng của tháng 4.
|
||||
- **N Quarters from quarter of earning**: Nếu `N = 2`, điểm thưởng nhận được trong khoảng 1/1 đến 31/3 (Quý 1) sẽ hết hạn sau ngày 30/9 (cuối Quý 3).
|
||||
- **N Years from year of earning**: Nếu `N = 1`, điểm thưởng nhận được trong khoảng thời gian của năm 2015 sẽ hết hạn vào ngày 31/12/2016.
|
||||
- **Anniversary**: Khách hàng tham gia (đăng ký) vào ngày 15/02/2010. Điểm kiếm được trước ngày 15/02/2011 sẽ hết hạn vào đúng ngày 15/02/2011.
|
||||
45
docs/knowledge-refs/campaign/formula_calculation.md
Normal file
45
docs/knowledge-refs/campaign/formula_calculation.md
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
ref_id: "campaign/formula_calculation"
|
||||
parent_card: "campaign/campaign_rule"
|
||||
title: "Chi tiết Tính toán Công thức (Formula Calculation)"
|
||||
domain: "campaign"
|
||||
ref_type: "enum_detail"
|
||||
tags: ["formula", "calculation", "amount to use", "cap"]
|
||||
---
|
||||
|
||||
# Chi tiết Tính toán Công thức (Formula Calculation)
|
||||
|
||||
## Thuộc về
|
||||
|
||||
campaign/campaign_rule — Card đề cập đến phần tính toán công thức (Formula Amount to Use, Formula result is rounded, Award limit) nhưng THIẾU chi tiết các công thức cụ thể (F1, F4, F6, F7, F8...). Reference này nhằm bổ sung các công thức thưởng (Award/Redeem).
|
||||
|
||||
## Chi tiết
|
||||
|
||||
[SOURCE_NEEDED] Thông tin chi tiết về các loại Formula (F1, F4, F6, F7, F8...) hiện đang nằm trong tài liệu đính kèm (attached file) của FSD gốc và không có sẵn trong spec text markdown hiện tại. Cần bổ sung tài liệu đính kèm để định nghĩa chi tiết từng công thức.
|
||||
|
||||
### Nguồn lấy giá trị A (Amount to Use in Formula)
|
||||
|
||||
Biến `A` trong công thức tính toán có thể được lấy từ:
|
||||
|
||||
| Nguồn giá trị | Mô tả |
|
||||
|---|---|
|
||||
| **Numeric Attribute** | Lấy từ bất kỳ thuộc tính nào có kiểu dữ liệu là Số (Numeric Attribute). |
|
||||
| **Active Counter** | Lấy giá trị từ bộ đếm (Counter) đang hoạt động (bao gồm current/previous/before last bucket). |
|
||||
| **Code Management** | Các cấu hình mặc định (tra cứu từ bảng `Code_Management` với loại `amt-to-use-formula`). |
|
||||
|
||||
### Rounding (Làm tròn kết quả công thức)
|
||||
|
||||
| Option | Cách làm tròn |
|
||||
|---|---|
|
||||
| **Down** | Làm tròn xuống (ví dụ 1.9 -> 1). |
|
||||
| **To Nearest** | Làm tròn tới số nguyên gần nhất (ví dụ 1.5 -> 2, 1.4 -> 1). |
|
||||
| **Up** | Làm tròn lên (ví dụ 1.1 -> 2). |
|
||||
|
||||
### Giới hạn thưởng (Award Limit)
|
||||
|
||||
- **Cap A not more than**: Giới hạn biến số `A` trước khi đưa vào tính toán công thức (có thể giới hạn cứng hoặc giới hạn dựa trên 1 Counter - gọi là Cap-tracking Counter).
|
||||
- **Give At Least / No More Than**: Giới hạn tổng số lượng trả thưởng (Result) sau khi tính xong. `At Least` (Tặng tối thiểu) chỉ áp dụng cho 1 Campaign Rule. `No More Than` (Tặng tối đa) có thể giới hạn trên mỗi Campaign Rule hoặc liên kết với một Counter tổng.
|
||||
|
||||
## Ví dụ cụ thể
|
||||
|
||||
[SOURCE_NEEDED] Cần cung cấp ví dụ về cách áp dụng F1, F6, F7, F8 khi có đủ thông tin chi tiết về các công thức này.
|
||||
51
docs/knowledge-refs/campaign/velocity_control_detail.md
Normal file
51
docs/knowledge-refs/campaign/velocity_control_detail.md
Normal file
@@ -0,0 +1,51 @@
|
||||
---
|
||||
ref_id: "campaign/velocity_control_detail"
|
||||
parent_card: "campaign/pool_definition"
|
||||
title: "Chi tiết Thiết lập Giới hạn và Cảnh báo (Velocity Control)"
|
||||
domain: "campaign"
|
||||
ref_type: "edge_cases"
|
||||
tags: ["velocity control", "limit", "alert", "pool"]
|
||||
---
|
||||
|
||||
# Chi tiết Thiết lập Giới hạn và Cảnh báo (Velocity Control)
|
||||
|
||||
## Thuộc về
|
||||
|
||||
campaign/pool_definition — Card định nghĩa cấu trúc của Pool nhưng chưa đi sâu vào cơ chế chống gian lận và giới hạn. Reference này bổ sung chi tiết cấu hình Velocity Control để giới hạn số lượng giao dịch/điểm và kích hoạt cảnh báo tự động.
|
||||
|
||||
## Chi tiết
|
||||
|
||||
### Khái niệm Velocity Control
|
||||
|
||||
Velocity Control là cơ chế kiểm soát tần suất và dung lượng giao dịch trên một Quỹ thưởng (Pool) nhằm ngăn chặn việc phát sinh điểm bất thường (do lỗi cấu hình rule hoặc gian lận). Nếu số lượng vượt quá ngưỡng (Maximum), hệ thống sẽ từ chối giao dịch hoặc gửi thông báo cảnh báo (Alert).
|
||||
|
||||
### Cấu hình Giới hạn (Threshold Settings)
|
||||
|
||||
Để thiết lập Velocity Control, người dùng cần cấu hình các tham số sau:
|
||||
|
||||
| Tham số | Ý nghĩa | Lựa chọn / Giá trị |
|
||||
|---|---|---|
|
||||
| **Transaction Type** | Loại giao dịch nào sẽ bị kiểm soát. | Award (Cộng), Redeem (Đổi), Adjust (Điều chỉnh). |
|
||||
| **Maximum** | Ngưỡng giới hạn (số lượng điểm/vật phẩm). | Số thập phân. |
|
||||
| **Units** | Đơn vị tính toán cho Maximum. | `Per Pool units` (Tính theo tổng điểm Pool) hoặc `Per transaction` (Tính trên từng giao dịch đơn lẻ). |
|
||||
| **Per Period** | Khoảng thời gian chu kỳ để reset bộ đếm giới hạn. | Quarter, Month, Week, Day. |
|
||||
| **Per Entity 1 / 2** | (Tuỳ chọn) Giới hạn mức thực thể. | Entity 1: Customer, Account, Card.<br>Entity 2: Corporation, Chain, Store, Terminal. |
|
||||
|
||||
### Cảnh báo (Alert Flow)
|
||||
|
||||
Khi một giao dịch phát sinh khiến tổng số lượng trong chu kỳ (`Per Period`) vượt qua ngưỡng (`Maximum`), luồng cảnh báo sẽ được kích hoạt:
|
||||
|
||||
1. **Chặn hoặc Cảnh báo**: Giao dịch gây vượt ngưỡng sẽ bị gắn cờ (Flagged).
|
||||
2. **Alert Template**: Hệ thống lấy nội dung thông báo từ mẫu tin nhắn đã chọn trong cấu hình.
|
||||
3. **Alert Group**: Hệ thống tự động gửi email/tin nhắn thông báo đến nhóm người nhận (Recipient Group) đã được thiết lập để có biện pháp can thiệp (ví dụ: Security Team hoặc Admin OLS).
|
||||
|
||||
## Ví dụ cụ thể
|
||||
|
||||
- **Tình huống**: Ngân hàng muốn ngăn chặn việc một Khách hàng lạm dụng lỗ hổng để tích lũy quá nhiều điểm thưởng vào ví "Điểm Thường Niên" trong 1 ngày.
|
||||
- **Cấu hình**:
|
||||
- Transaction Type = `Award`
|
||||
- Maximum = `100,000`
|
||||
- Units = `Per Pool units`
|
||||
- Per Period = `Day`
|
||||
- Per Entity 1 = `Customer`
|
||||
- **Kết quả**: Bất kỳ khách hàng nào nhận được số điểm (Award) vượt mức 100,000 điểm trong một ngày sẽ kích hoạt Alert. Hệ thống gửi email cảnh báo ngay lập tức cho nhóm Admin OLS để kiểm tra log giao dịch của khách hàng đó.
|
||||
Reference in New Issue
Block a user