กลุ่มเป้าหมาย (Audience)
ภาพรวม
Domain นี้มี 2 ตาราง คือ audience ซึ่งเก็บนิยามกลุ่มเป้าหมายที่สร้างจากการอัปโหลด CSV หรือจาก
เงื่อนไข filter พร้อมตั้งค่า auto-refresh และ audience_member_log ซึ่งบันทึกประวัติการเพิ่ม/ลบ
สมาชิกออกจากกลุ่ม เพื่อตรวจสอบย้อนหลังว่าใครเข้าออกกลุ่มเมื่อไรและด้วยสาเหตุใด
ตาราง audience
| Column | Type | Nullable | Default | คำอธิบาย |
|---|---|---|---|---|
id | SERIAL (INTEGER) | NO | nextval(...) | รหัสอ้างอิงหลักของกลุ่มเป้าหมาย |
title | TEXT | NO | - | ชื่อกลุ่มเป้าหมาย |
description | TEXT | YES | '' | คำอธิบายกลุ่มเป้าหมาย |
data_source | "AudiencesDataSource" | NO | - | ที่มาของรายชื่อ: csv (อัปโหลดไฟล์) หรือ filter (สร้างจากเงื่อนไข) |
details | TEXT | NO | - | รายละเอียดของกลุ่ม เช่น ชื่อไฟล์ต้นทางหรือสรุปเงื่อนไข |
info | JSONB | YES | - | ข้อมูลประกอบเพิ่มเติมของกลุ่ม เช่น สถิติหรือ metadata การประมวลผล |
slug | TEXT | YES | - | slug สำหรับอ้างอิงกลุ่มแบบอ่านง่าย |
filter_info | JSONB | YES | - | เงื่อนไข filter ที่ใช้คัดเลือกสมาชิก (ใช้เมื่อ data_source = filter) |
organization_id | INTEGER | NO | - | รหัสองค์กรเจ้าของข้อมูล |
line_oa_id | INTEGER | NO | - | รหัส LINE OA เจ้าของกลุ่มเป้าหมาย |
api_client_id | INTEGER | YES | - | รหัส API client ที่สร้างกลุ่มนี้ (กรณีสร้างผ่าน API) |
api_key_id | INTEGER | YES | - | รหัส API key ที่ใช้สร้างกลุ่มนี้ |
auto_refresh_enabled | BOOLEAN | NO | false | เปิด/ปิดการรีเฟรชสมาชิกกลุ่มอัตโนมัติ |
last_refresh_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่รีเฟรชสมาชิกล่าสุด |
refresh_status | VARCHAR(20) | NO | 'idle' | สถานะการรีเฟรชปัจจุบัน เช่น idle, processing |
status | "CommonStatus" | NO | - | สถานะของกลุ่มเป้าหมาย (active, inactive, processing, ...) |
created_by | INTEGER | NO | - | รหัสผู้ใช้ที่สร้างรายการ |
updated_by | INTEGER | YES | - | รหัสผู้ใช้ที่แก้ไขล่าสุด |
created_date | TIMESTAMPTZ(3) | NO | now() | วันเวลาที่สร้างรายการ |
updated_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่แก้ไขล่าสุด (อัปเดตอัตโนมัติ) |
deleted_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่ลบแบบ soft delete (NULL = ยังไม่ถูกลบ) |
ตาราง audience_member_log
| Column | Type | Nullable | Default | คำอธิบาย |
|---|---|---|---|---|
id | SERIAL (INTEGER) | NO | nextval(...) | รหัสอ้างอิงหลักของ log |
audience_id | INTEGER | NO | - | รหัสกลุ่มเป้าหมายที่เกิดเหตุการณ์ (FK ไป audience.id) |
line_user_id | VARCHAR(255) | NO | - | LINE user ID ของสมาชิกที่ถูกเพิ่มหรือถูกลบ |
action | "AudienceMemberAction" | NO | - | ประเภทเหตุการณ์: add (เพิ่มเข้ากลุ่ม) หรือ remove (ออกจากกลุ่ม) |
trigger_type | "AudienceMemberTriggerType" | NO | - | ที่มาของการเปลี่ยนแปลง: auto_refresh, manual หรือ api |
created_date | TIMESTAMPTZ(3) | NO | now() | วันเวลาที่เกิดเหตุการณ์ |
organization_id | INTEGER | NO | - | รหัสองค์กรเจ้าของข้อมูล |
line_oa_id | INTEGER | NO | - | รหัส LINE OA ที่เกี่ยวข้อง |
หมายเหตุ
audience_member_log.audience_idเป็น FK ไปยังaudience.id- ตาราง
audienceถูกอ้างอิงโดยcampaign.audience_id,rich_menu.audience_idและrich_menu_archive.audience_idสำหรับกำหนดผู้รับข้อความหรือผู้เห็น rich menu - Index ของ
audience:line_oa_id,deleted_date - Index ของ
audience_member_log:audience_id,created_date(เรียงจากมากไปน้อย),action,line_oa_id— ออกแบบมาให้ query ประวัติล่าสุดของกลุ่มได้เร็ว audience_member_logไม่มีคอลัมน์ soft delete เพราะเป็น append-only log