chore: remove legacy specification documents and internal rules file

This commit is contained in:
2026-07-27 18:28:46 +07:00
parent 4534e4ecb8
commit 911d5be3b2
151 changed files with 26567 additions and 7922 deletions

View File

@@ -0,0 +1,78 @@
---
card_id: "marketing/ab_testing"
title: "Thử nghiệm A/Bn (A/Bn Testing)"
domain: "marketing"
related_cards:
- "marketing/marketing_campaign"
- "marketing/marketing_message"
tags: ["marketing", "AB testing", "content", "targeting", "optimization"]
---
# Thử nghiệm A/Bn (A/Bn Testing)
## Mô tả ngắn
A/Bn Testing là chức năng dùng để đánh giá và tối ưu hóa các chiến dịch tiếp thị. Bằng cách so sánh nhiều biến thể (A, B, ..., n) của nội dung tin nhắn hoặc của tập khách hàng mục tiêu, hệ thống giúp người dùng xác định phương án mang lại tương tác và hiệu quả cao nhất.
## Thuật ngữ liên quan
- **A/Bn Testing**: Thử nghiệm nhiều hơn hai biến thể cùng một lúc (A, B, C, D...).
- **Content Marketing Testing**: Thử nghiệm các nội dung (Message Template) khác nhau trên cùng một tập khách hàng mục tiêu.
- **Target Customer Testing**: Thử nghiệm cùng một nội dung trên các tập khách hàng mục tiêu (OMR Criteria) khác nhau.
## Cấu trúc dữ liệu (Data Schema)
*Cấu hình thử nghiệm A/Bn chia làm hai loại: Nội dung (Content) và Khách hàng (Targeting).*
### Thông tin chung (Chung cho cả hai loại)
| Field Name | Description | Constraints / Rules |
|---|---|---|
| Campaign ID | Mã định danh duy nhất của chiến dịch thử nghiệm | Không chứa ký tự đặc biệt. |
| Message Channel | Kênh gửi tin nhắn (SMS, Email, Push Notification) | Bắt buộc chọn 1. |
| Effective Date From / To | Thời gian hiệu lực của chiến dịch thử nghiệm | Bắt buộc. |
| Run Schedule | Lịch chạy chiến dịch (One time, Daily, Weekly, Monthly, Annually) | Bắt buộc chọn và cấu hình chi tiết giống Marketing Campaign (OMR). |
### Cấu hình Content Marketing Testing
| Field Name | Description | Constraints / Rules |
|---|---|---|
| OMR Criteria | Điều kiện lọc danh sách khách hàng mục tiêu (Target Customer) chung | Chỉ có 1 tập khách hàng duy nhất cho tất cả biến thể. |
| Variant A, B, ... n | Các biến thể nội dung tin nhắn (Message Template) | Bắt buộc có ít nhất 2 biến thể. Tên mỗi biến thể phải là duy nhất. |
### Cấu hình Target Customer Testing
| Field Name | Description | Constraints / Rules |
|---|---|---|
| Variant A, B, ... n | Các biến thể tập khách hàng mục tiêu (OMR Criteria) khác nhau | Bắt buộc có ít nhất 2 biến thể. Cùng sử dụng chung 1 nội dung tin nhắn. |
## Cách hoạt động (How It Works)
- **Kích hoạt Batch Job**: Hệ thống (ABn Job) chạy định kỳ để quét các chiến dịch A/Bn đang trong thời gian hiệu lực và có lịch chạy (Run Schedule) khớp với ngày hiện tại.
- **Xử lý Content Testing**:
- Hệ thống lấy ra tập khách hàng mục tiêu chung dựa trên cấu hình *OMR Criteria*.
- Chia tập khách hàng này thành các nhóm nhỏ và gửi các *Variant Nội dung* (Message Template) khác nhau cho từng nhóm.
- Phối hợp với đối tác thứ ba (Third-party) để thu thập dữ liệu về Tỷ lệ mở (Open Rate), Tỷ lệ click (Click-through Rate) của từng biến thể nội dung, từ đó lập báo cáo so sánh.
- **Xử lý Target Customer Testing**:
- Hệ thống áp dụng từng cấu hình *Variant Tập khách hàng* (Criteria A, B, n...) để lấy ra các danh sách khách hàng khác nhau.
- Sau khi batch job chạy xong, người dùng có thể xem kết quả quy mô và đặc điểm (số lượng, giới tính...) của từng tập khách hàng thu được để đánh giá điều kiện lọc nào tiếp cận đúng đối tượng hơn.
## Mối quan hệ với modules khác
- **Marketing Campaign**: Cả hai tính năng đều sử dụng chung cách cấu hình điều kiện lọc khách hàng (OMR Criteria) và cấu hình lịch chạy (Run Schedule).
- **Marketing Message**: Các nội dung tin nhắn (Message Template) đã tạo trước đó sẽ được sử dụng để làm các biến thể (Variant) trong loại thử nghiệm Content Marketing.
## Ví dụ thực tế
**1. Thử nghiệm Nội dung (Content Testing):**
- Mục tiêu: Xem thông điệp nào thu hút khách hàng nữ click vào link hơn.
- Cấu hình: Target chung là "Khách hàng Nữ, độ tuổi 20-30".
- Biến thể A: Gửi mẫu tin SMS "Giảm 50% thời trang nữ cuối tuần, [Link]".
- Biến thể B: Gửi mẫu tin SMS "Freeship cho đơn hàng từ 200k, [Link]".
Hệ thống gửi ngẫu nhiên cho tập mục tiêu và theo dõi SMS nào có tỷ lệ click link cao hơn.
**2. Thử nghiệm Tập khách hàng (Targeting Testing):**
- Mục tiêu: Xem nhóm khách hàng nào có quy mô lớn hơn với cùng một điều kiện chi tiêu.
- Biến thể A: OMR Criteria là "Khách hàng chi tiêu > 5 triệu VÀ ở Hà Nội".
- Biến thể B: OMR Criteria là "Khách hàng chi tiêu > 5 triệu VÀ ở TP.HCM".
Sau khi chạy thử nghiệm, người dùng xem báo cáo sẽ biết Variant nào trả về danh sách khách hàng nhiều hơn.

View File

@@ -0,0 +1,75 @@
---
card_id: "marketing/audience_filter"
title: "Bộ lọc đối tượng (Audience Filter: Blacklist & Whitelist)"
domain: "marketing"
related_cards:
- "marketing/marketing_campaign"
- "marketing/frequency_capping"
tags: ["blacklist", "whitelist", "filter", "audience", "exclude"]
---
# Bộ lọc đối tượng (Audience Filter: Blacklist & Whitelist)
## Mô tả ngắn
Audience Filter là module quản lý các danh sách khách hàng đặc biệt để can thiệp vào luồng gửi thông điệp của hệ thống Marketing. Nó bao gồm **Blacklist** (Danh sách đen: chặn khách hàng nhận mọi thông điệp, thường dùng cho khách hàng fraud) và **Whitelist** (Danh sách trắng: loại trừ khách hàng khỏi các quy tắc Frequency Capping, đảm bảo họ luôn nhận được thông điệp mà không bị giới hạn số lượng).
## Thuật ngữ liên quan
- **Blacklist**: Danh sách khách hàng bị chặn (block) không nhận thông báo khuyến mãi/chiến dịch marketing.
- **Whitelist**: Danh sách khách hàng được ưu tiên, loại trừ khỏi quy tắc Frequency Capping mặc định.
- **CIF (Customer Information File) number**: Mã định danh khách hàng trên hệ thống OLS (Core System), dùng để thêm khách hàng vào danh sách.
- **Frequency Capping**: Quy tắc giới hạn tần suất gửi tin nhắn marketing.
## Cấu trúc dữ liệu (Data Schema)
Cấu trúc dữ liệu của Blacklist và Whitelist là tương tự nhau.
### Thông tin chung
| Field Name | Description | Constraints / Rules |
|---|---|---|
| ID | Mã định danh danh sách (Blacklist/Whitelist Identifier) | Tự sinh, String (10). |
| Name List | Tên của danh sách (Blacklist/Whitelist) | Required. String (50). |
| Description | Mô tả chi tiết mục đích của danh sách | Optional. String (200). |
| Input Type | Phương thức nhập liệu danh sách khách hàng | Enum: "Input from screen" hoặc "Upload file". |
### Quản lý danh sách khách hàng (Customer List)
| Field Name | Description | Constraints / Rules |
|---|---|---|
| Customer List (Dropdown) | Chọn trực tiếp khách hàng theo mã CIF (nếu Input Type = "Input from screen") | Multi-select. Phải nhập ít nhất 4 ký tự của CIF để tìm kiếm nhằm đảm bảo hiệu năng. |
| Upload file | Tải lên file danh sách khách hàng (nếu Input Type = "Upload file") | Cho phép định dạng CSV, xls, xlsx. Dung lượng ≤ 50MB. |
## Cách hoạt động (How It Works)
### Quản lý danh sách
1. **Tạo danh sách**: Người dùng (có quyền tương ứng) tạo một Blacklist hoặc Whitelist mới.
2. **Thêm khách hàng**: Có hai cách để đưa khách hàng vào danh sách:
- **Nhập thủ công (Input from screen)**: Tìm kiếm và chọn mã CIF của khách hàng từ hệ thống OLS.
- **Tải file (Upload file)**: Tải lên một file (.csv, .xls, .xlsx) chứa danh sách khách hàng. Hệ thống sẽ validate định dạng và dung lượng file (tối đa 50MB). Nếu có lỗi, hệ thống báo lỗi và yêu cầu tải lại file khác. Trạng thái xử lý file được hiển thị rõ ràng.
3. **Phê duyệt**: Sau khi tạo, danh sách cần được review và approve (phê duyệt) tương tự như các màn hình cấu hình khác trong hệ thống.
4. **Truy xuất & Tải xuống**: Người dùng có thể xem trước danh sách trên màn hình hoặc tải file danh sách về (hệ thống sẽ sinh file CSV cho danh sách nhập thủ công, hoặc trả về file gốc nếu danh sách được tạo qua upload).
### Ứng dụng trong chiến dịch Marketing
- **Blacklist**: Khi một chiến dịch Marketing chuẩn bị gửi thông điệp, hệ thống sẽ đối chiếu với Blacklist (nếu được áp dụng). Bất kỳ khách hàng nào nằm trong Blacklist sẽ tự động bị loại khỏi tập đối tượng mục tiêu, thông điệp sẽ không được gửi đi.
- **Whitelist**: Theo mặc định, tập khách hàng trong Whitelist sẽ được bypass (bỏ qua) mọi quy tắc giới hạn của **Frequency Capping**. Nếu một giới hạn tần suất cụ thể (Cap rules) nào đó VẪN MUỐN áp dụng lên Whitelist, người dùng cần chỉ định rõ Whitelist đó trong cấu hình Cap rules. Điều này hữu ích để gửi tin liên tục cho các mục đích testing, hoặc cho tập khách hàng VIP.
## Mối quan hệ với modules khác
- **Marketing Campaign**: Cấu hình chiến dịch cần kiểm tra đối chiếu danh sách Blacklist để chặn thông điệp đối với các tập khách hàng rủi ro.
- **Frequency Capping**: Whitelist có liên kết trực tiếp với Frequency Capping, cho phép cấu hình một số khách hàng vượt qua quy tắc giới hạn tần suất gửi tin.
## Ví dụ thực tế
**Tạo danh sách chặn (Blacklist)**:
- Ngân hàng phát hiện 500 khách hàng có hành vi trục lợi khuyến mãi (fraud).
- User tạo một Blacklist tên "Fraud_Customer_Q3", chọn `Input Type = Upload file` và tải lên file `.xlsx` chứa 500 số CIF.
- Sau khi được approve, hệ thống lưu danh sách này. Các chiến dịch Marketing sau đó sẽ không bao giờ gửi SMS/Email tới 500 người này.
**Tạo danh sách ưu tiên (Whitelist)**:
- Đội ngũ UAT cần test luồng gửi Email cho một campaign mới.
- User tạo một Whitelist tên "UAT_Testers", chọn `Input Type = Input from screen` và nhập 5 mã CIF của các nhân viên test.
- Khi test, dù chiến dịch có quy định "Mỗi user chỉ nhận 1 email/ngày", các testers vẫn có thể nhận nhiều email thử nghiệm liên tiếp do được bypass quy định Frequency Capping.

View File

@@ -0,0 +1,76 @@
---
card_id: "marketing/frequency_capping"
title: "Giới hạn Tần suất (Frequency Capping)"
domain: "marketing"
related_cards:
- "marketing/marketing_campaign"
- "marketing/marketing_message"
- "targeting/segmentation"
tags: ["marketing", "capping", "limit", "notification", "spam"]
---
# Giới hạn Tần suất (Frequency Capping)
## Mô tả ngắn
Frequency Capping là cấu hình giới hạn số lượng tin nhắn tối đa được phép gửi đến một khách hàng thông qua một kênh liên lạc cụ thể (SMS, Email, Push Notification) trong một khoảng thời gian nhất định. Mục đích là để bảo vệ trải nghiệm khách hàng, tránh tình trạng spam và tối ưu hóa chi phí gửi tin nhắn của hệ thống OneMarketing.
## Thuật ngữ liên quan
- **Notification Channel**: Kênh gửi thông báo (SMS, Email, Push Notifications).
- **Capping Period**: Chu kỳ giới hạn (Daily, Weekly, Monthly).
- **Whitelist**: Danh sách khách hàng ngoại lệ, được phép bỏ qua các quy tắc giới hạn tần suất chung.
## Cấu trúc dữ liệu (Data Schema)
### Thông tin giới hạn chung
| Field Name | Description | Constraints / Rules |
|---|---|---|
| Frequency Cap Id | Mã định danh cấu hình giới hạn tần suất | Bắt buộc. |
| Notification Channel | Kênh thông báo áp dụng giới hạn (SMS, Email, Push Notifications) | Bắt buộc. Chỉ được có 1 cấu hình hiệu lực cho 1 kênh tại 1 thời điểm. |
| Effective Date From / To | Thời gian cấu hình có hiệu lực | Bắt buộc. |
| Description | Mô tả cấu hình | Không bắt buộc. |
### Cấu hình chu kỳ (Period Units)
*Một cấu hình có thể bao gồm nhiều chu kỳ (Period Unit) khác nhau.*
| Field Name | Description | Constraints / Rules |
|---|---|---|
| Capping Period | Chu kỳ áp dụng giới hạn: Daily (Hàng ngày), Weekly (Hàng tuần), Monthly (Hàng tháng) | Bắt buộc. Không được cấu hình trùng chu kỳ trong cùng 1 channel. |
| Maximum number | Số lượng tin nhắn tối đa được phép gửi cho 1 khách hàng trong chu kỳ | Bắt buộc. Lớn hơn 0. |
### Danh sách ngoại lệ (Whitelist)
| Field Name | Description | Constraints / Rules |
|---|---|---|
| Include Whitelist | Cờ đánh dấu có áp dụng ngoại lệ cho tệp khách hàng đặc biệt hay không | Mặc định OFF. |
| Customer list | Danh sách khách hàng đặc biệt được bỏ qua giới hạn tần suất (nhận được nhiều tin nhắn hơn bình thường) | Bắt buộc nếu Include Whitelist = ON. Lookup từ hệ thống phân tập (Segmentation). |
## Cách hoạt động (How It Works)
- **Cấu hình**: Quản trị viên thiết lập số lượng thông báo tối đa cho từng kênh (VD: SMS tối đa 1 tin/ngày, 3 tin/tuần). Các cấu hình này được áp dụng chung cho tất cả chiến dịch Marketing (OMR) trên toàn hệ thống.
- **Theo dõi**: Hệ thống tự động theo dõi (track) số lượng tin nhắn mà mỗi khách hàng đã nhận được trên từng kênh và trên từng chu kỳ (ngày, tuần, tháng).
- **Kiểm tra trước khi gửi**: Khi một chiến dịch Marketing (`marketing/marketing_campaign`) chuẩn bị gửi tin nhắn cho khách hàng:
- Hệ thống kiểm tra số lượng tin đã gửi trong kỳ so với giới hạn cấu hình.
- Nếu đã đạt hoặc vượt ngưỡng giới hạn (Maximum number) → tin nhắn sẽ KHÔNG được gửi đi cho khách hàng đó.
- Nếu chưa đạt ngưỡng → tin nhắn được gửi và hệ thống cộng dồn bộ đếm.
- **Ngoại lệ (Whitelist)**: Nếu khách hàng nằm trong "Customer list" của Whitelist, hệ thống sẽ bỏ qua kiểm tra giới hạn và cho phép gửi tin bình thường, đảm bảo các tin nhắn quan trọng đến được nhóm khách VIP hoặc nhóm nội bộ.
## Mối quan hệ với modules khác
- **Marketing Campaign (OMR)**: OMR là nơi phát sinh yêu cầu gửi tin nhắn, Frequency Capping đóng vai trò như một màng lọc cuối cùng chặn tin nhắn nếu vi phạm giới hạn.
- **Marketing Message**: Nội dung được gửi đi qua các kênh (SMS/Email/Push), chịu sự kiểm soát của Frequency Capping.
- **Segmentation**: Nguồn cung cấp danh sách khách hàng để cấu hình vào mục Whitelist (Customer list).
## Ví dụ thực tế
**Tránh spam SMS hàng ngày:**
- Cấu hình Kênh = SMS.
- Period Unit 1: Daily = Tối đa 2 tin/ngày.
- Period Unit 2: Weekly = Tối đa 5 tin/tuần.
Nếu một khách hàng đã nhận 2 SMS quảng cáo vào buổi sáng, thì bất kỳ chiến dịch Marketing nào định gửi thêm SMS thứ 3 trong ngày hôm đó cho họ sẽ bị hệ thống tự động chặn lại.
**Ngoại lệ cho nhân viên (Whitelist):**
- Trong lúc testing, team marketing cấu hình Include Whitelist = ON và chọn danh sách "Nhân viên nội bộ". Dù giới hạn là 1 tin/ngày, các nhân viên trong danh sách này vẫn có thể nhận 10 tin/ngày để kiểm thử tính năng gửi tin của OMR mà không bị chặn.

View File

@@ -0,0 +1,84 @@
---
card_id: "marketing/marketing_campaign"
title: "Yêu cầu Tiếp thị (OneMarketing Request - OMR)"
domain: "marketing"
related_cards:
- "marketing/marketing_message"
- "marketing/frequency_capping"
- "campaign/campaign_rule"
- "campaign/transaction_codes"
tags: ["marketing", "campaign", "OMR", "notification", "schedule", "trigger"]
detail_refs:
- "marketing/omr_execution_flow"
---
# Yêu cầu Tiếp thị (OneMarketing Request - OMR)
## Mô tả ngắn
OneMarketing Request (OMR) là chức năng lọc và chọn danh sách khách hàng mục tiêu thỏa mãn các điều kiện tiếp thị. OMR cho phép gửi thông báo (Notification) tự động hoặc kích hoạt quy tắc chiến dịch thưởng (Trigger Campaign Rule) dựa trên lịch trình cài đặt sẵn hoặc khi có sự kiện hệ thống phát sinh.
## Thuật ngữ liên quan
- **OMR (OneMarketing Request)**: Yêu cầu tiếp thị, chứa điều kiện lọc khách hàng và hành động thực thi.
- **Notification**: Chức năng gửi tin nhắn/thông báo đến khách hàng.
- **Trigger Campaign Rule (TCR)**: Chức năng tự động kích hoạt Rule thưởng (cộng/trừ/đổi điểm) cho khách hàng.
- **Run Schedule**: Lịch trình tự động chạy OMR (một lần, hàng ngày, hàng tuần, hàng tháng, hàng năm).
## Cấu trúc dữ liệu (Data Schema)
### Thông tin chung (General Information)
| Field Name | Description | Constraints / Rules |
|---|---|---|
| Request ID | Mã định danh duy nhất của OMR | Không chứa ký tự đặc biệt. |
| Description | Mô tả chi tiết OMR | Bắt buộc. |
| Effective Date From/To | Khoảng thời gian OMR có hiệu lực | Bắt buộc. |
| Marketing Function | Hành động: Notification (gửi tin) hoặc Trigger Campaign Rule (chạy Rule thưởng) | Bắt buộc chọn 1. |
### Cài đặt Lịch & Nội dung (Run Schedule & Message Content)
| Field Name | Description | Constraints / Rules |
|---|---|---|
| Trigger method | Phương thức kích hoạt: Schedule (theo lịch) hoặc Event trigger (theo sự kiện) | Bắt buộc. |
| Run Schedule | Lịch chạy: One time, Daily, Weekly, Monthly, Annually | Cần thiết nếu chọn Schedule. |
| Business Event | Sự kiện kích hoạt OMR (VD: đăng nhập, xem số dư) | Cần thiết nếu chọn Event trigger. |
| Message template | Mẫu tin nhắn gửi cho khách hàng | Bắt buộc nếu Marketing Function = Notification. |
| OLS Transaction Code | Mã giao dịch kích hoạt hệ thống thưởng | Bắt buộc nếu Marketing Function = Trigger Campaign Rule. |
### Điều kiện mục tiêu (Targeting)
| Field Name | Description | Constraints / Rules |
|---|---|---|
| Targeting Method | Phương pháp chọn mục tiêu: OMR Criteria (cấu hình điều kiện) hoặc Upload file | Bắt buộc. |
| OMR Criteria | Các điều kiện (AND/OR) để lọc khách hàng, hỗ trợ loại trừ (NOT) | Áp dụng khi chọn OMR Criteria. |
| Upload file | File danh sách khách hàng mục tiêu có sẵn | Áp dụng khi chọn Upload file. |
## Cách hoạt động (How It Works)
- **Kích hoạt theo lịch (Schedule)**: Hệ thống chạy OMR Batch Job định kỳ. Job này tìm các OMR đang trong thời gian hiệu lực và có lịch chạy trùng với ngày/giờ hiện tại.
- **Kích hoạt theo sự kiện (Event trigger)**: Khi một sự kiện nghiệp vụ xảy ra (VD: qua API hoặc Frontend event), hệ thống gọi Backend kiểm tra xem có OMR nào gắn với sự kiện này không để kích hoạt lập tức.
- **Xử lý Hành động (Marketing Function)**:
- Nếu chức năng là **Notification**: OMR lấy danh sách khách hàng từ phần *Targeting* và gửi *Message template* đến họ. Quá trình gửi sẽ dừng lại nếu chạm ngưỡng giới hạn cấu hình trong Frequency Capping.
- Nếu chức năng là **Trigger Campaign Rule**: OMR gọi hệ thống Rule, tạo một giao dịch giả lập với *OLS Transaction Code* đã chọn để kích hoạt tính toán thưởng (cộng/trừ điểm/cashback) cho tập khách hàng mục tiêu.
## Mối quan hệ với modules khác
- **Marketing Message**: OMR sử dụng Message để làm mẫu nội dung gửi cho khách hàng khi chức năng là Notification.
- **Frequency Capping**: Cấu hình giới hạn tần suất gửi tin, giúp OMR biết khi nào phải dừng gửi thông báo để tránh spam khách hàng.
- **Campaign Rule**: Nếu chức năng là Trigger Campaign Rule, OMR sẽ đóng vai trò như một nguồn phát sinh giao dịch để kích hoạt các Rule tính thưởng.
- **Transaction Codes**: OMR cần truyền một Transaction Code cụ thể để hệ thống Loyalty nhận diện và đánh giá đúng Campaign Rule tương ứng.
## Ví dụ thực tế
**1. Gửi SMS chúc mừng sinh nhật:**
- **General**: Function = Notification.
- **Schedule**: Trigger = Schedule, Daily vào lúc 8:00 sáng.
- **Message**: Template "Chúc mừng sinh nhật khách hàng".
- **Targeting**: OMR Criteria chọn điều kiện "Khách hàng có sinh nhật trong hôm nay".
**2. Tặng 100 điểm thưởng nhân dịp Tết:**
- **General**: Function = Trigger Campaign Rule.
- **Schedule**: Trigger = Schedule, One time vào ngày mùng 1 Tết.
- **TC**: OLS Transaction Code = "TET_BONUS".
- **Targeting**: Upload file danh sách 10.000 khách hàng thân thiết. Khi chạy, hệ thống sẽ trigger TC "TET_BONUS" cho 10.000 khách hàng này để cộng điểm (theo Rule đã cấu hình bên Loyalty).

View File

@@ -0,0 +1,74 @@
---
card_id: "marketing/marketing_message"
title: "Mẫu thông báo (Marketing Message)"
domain: "marketing"
related_cards:
- "campaign/campaign_rule"
- "catalogue/item_master"
tags: ["Message", "SMS", "Email", "Push Notification", "OMR-type"]
---
# Mẫu thông báo (Marketing Message)
## Mô tả ngắn
Marketing Message là module quản lý và định nghĩa các thông báo gửi đến khách hàng mục tiêu qua nhiều kênh giao tiếp (Channels) khác nhau như SMS, Email, và Push Notification. Hệ thống hỗ trợ tạo thông báo từ nội dung chữ thuần (text) hoặc HTML template, kết hợp các tham số động (message parameters) để cá nhân hoá nội dung.
## Thuật ngữ liên quan
- **Channel**: Kênh giao tiếp, ví dụ: SMS, Email, Push Notification.
- **Richer Push / Carousel Push**: Các định dạng thông báo Push trên ứng dụng có hỗ trợ đính kèm một ảnh (Richer) hoặc nhiều ảnh vuốt ngang (Carousel).
- **Message Parameter**: Tham số động có thể kéo/thả vào nội dung (VD: Tên khách hàng, Số dư điểm) để cá nhân hóa khi gửi.
## Cấu trúc dữ liệu (Data Schema)
### 1. SMS Message
| Field | Description | Type |
| --- | --- | --- |
| Message ID / Description | Mã định danh duy nhất và mô tả thông báo. | Character |
| SMS Type | Loại SMS: Promotion/Marketing hoặc Transaction. | Drop-down |
| Effective Date (From-To) | Thời gian hiệu lực của mẫu thông báo. | Date |
| SMS Brand Name | Tên hiển thị người gửi SMS (Sender). | Drop-down |
| Message | Nội dung Unicode, không hỗ trợ hình ảnh/đính kèm. Cho phép chèn Message Parameters. | Character |
| Send Sample | Nút test thông báo qua SĐT thực tế. | Button |
### 2. Email Message
| Field | Description | Type |
| --- | --- | --- |
| Email Type | Loại Email: Promotion/Marketing hoặc Transaction. | Drop-down |
| Use type | Chọn cách tạo: Viết trực tiếp (Use message) hoặc Upload HTML (Upload template). | Checkbox |
| Sender Name / From email | Tên hiển thị người gửi và Email gốc đã cấu hình. | Character |
| Subject / Preview Text | Tiêu đề Email và văn bản Preheader (hiển thị tóm tắt trên hộp thư). | Character |
| Message / Upload file | Nội dung soạn thảo HTML hoặc file HTML được upload. | Character/File |
### 3. Push Notification
| Field | Description | Type |
| --- | --- | --- |
| Notification Type | Loại Push: Promotion/Marketing hoặc Transaction. | Drop-down |
| Message Title | Tiêu đề chính hiển thị trên thông báo. | Character |
| Image type | Tùy chọn ảnh: Single (Không ảnh), Richer (1 ảnh), Carousel (Nhiều ảnh). | Drop-down |
| Upload Image / Link URL | Hình ảnh đính kèm và đường link điều hướng khi click. | File/Character |
| Send Sample | Nút gửi test bằng cách nhập số CIF để xác định thiết bị nhận. | Button |
## Cách hoạt động (How It Works)
- **Cá nhân hóa nội dung:** Người dùng soạn thông báo có thể kéo thả các Message Parameters (như `{{CustomerName}}`) vào nội dung. Khi gửi, hệ thống thay thế tham số bằng thông tin thật của khách hàng.
- **Kiểm thử thông báo (Send Sample):** Hỗ trợ test hiển thị trước khi áp dụng:
- *SMS*: Nhập số điện thoại.
- *Email*: Nhập địa chỉ Email.
- *Push*: Nhập CIF Number để hệ thống dò Registration Token của thiết bị.
- **Upload Template:** Với kênh Email, người dùng có thể upload file thiết kế dạng HTML có sẵn và chỉnh sửa trực tiếp. Với kênh Push, hỗ trợ đính kèm hình ảnh và URL điều hướng.
## Mối quan hệ với modules khác
- **Campaign Rule**: Các rule kịch bản chiến dịch (`campaign/campaign_rule`) sử dụng mẫu thông báo này để gửi tự động cho khách hàng khi họ thoả điều kiện thưởng.
- **Item Master**: Mẫu thông báo cũng có thể được dùng trong luồng đổi quà (`catalogue/item_master`) để gửi xác nhận đổi quà thành công.
## Ví dụ thực tế
**Tạo mẫu Email thông báo đổi điểm:**
1. Marketer tạo Message mới chọn kênh **Email**, loại **Transaction**.
2. Thiết lập Sender là `CSKH Loyalty`, Subject là `Xác nhận đổi quà thành công`.
3. Trong nội dung, nhập: `Chào {{Customer_Name}}, bạn đã đổi thành công {{Item_Name}}. Số dư hiện tại là {{Pool_Balance}} điểm.`
4. Chọn **Send Sample**, nhập email của chính mình để test. Hệ thống gửi email preview về hộp thư.
5. Sau khi lưu, mẫu này được gắn vào Item Master hoặc Campaign Rule để tự động kích hoạt.