Skip to main content

การติดตามผล (Tracking)

ภาพรวม

Domain นี้มี 3 ตาราง คือ tracking_log (log เหตุการณ์การอ่าน/คลิก/ส่ง ที่เกิดจาก content ทุกชนิด), tracking_token (token ของลิงก์ย่อที่ใช้ redirect พร้อมปลายทางจริง) และ tracking_line_users (ตารางจับคู่ tracking key กับ LINE user ที่เคยกดลิงก์นั้น)

ตาราง tracking_log

ColumnTypeNullableDefaultคำอธิบาย
idUUIDNOgen_random_uuid()รหัสอ้างอิงหลักของ log
redirect_idTEXTYES-รหัสอ้างอิงของการ redirect ที่ทำให้เกิด log นี้
tokenTEXTYES-token ของลิงก์ที่ถูกกด (ตรงกับ tracking_token.token)
organization_idINTEGERNO-รหัสองค์กรเจ้าของข้อมูล (FK ไป organization.id)
line_oa_idINTEGERNO-รหัส LINE OA ที่เกิดเหตุการณ์ (FK ไป line_oa.id)
line_uidTEXTYES-LINE user ID ของผู้ทำเหตุการณ์ (NULL เมื่อระบุตัวตนไม่ได้)
service"TrackingService"NOredirectช่องทางที่จับเหตุการณ์: webhook หรือ redirect
action_type"ActionType"NOreadประเภทการกระทำ: read, click, send
type"TrackingType"NOassetชนิดของสิ่งที่ถูกติดตาม: message, uri, asset, postback
content_type"ContentType"YES-ชนิด content ต้นทาง: rich_menu, campaign, auto_response, trigger_rule, lead_generation
campaign_idINTEGERYES-รหัสแคมเปญต้นทาง (FK ไป campaign.id)
rich_menu_idINTEGERYES-รหัส rich menu ต้นทาง (FK ไป rich_menu.id)
rich_menu_action_indexINTEGERYES-ลำดับพื้นที่กดบน rich menu ที่ถูกกด
rich_message_idINTEGERYES-รหัสข้อความต้นทาง
rich_message_indexTEXTYES-ตำแหน่ง/ส่วนของข้อความที่ถูกกด
auto_response_idINTEGERYES-รหัสกฎตอบกลับอัตโนมัติต้นทาง
trigger_rule_idINTEGERYES-รหัส trigger rule ต้นทาง
tracking_labelTEXTYES-ป้ายกำกับที่ผู้ใช้ตั้งไว้เพื่อจัดกลุ่มสถิติ
titleTEXTNO-ชื่อของสิ่งที่ถูกติดตาม ณ เวลาเกิดเหตุการณ์
short_urlTEXTYES-ลิงก์ย่อที่ผู้ใช้กด
original_urlTEXTYES-URL ปลายทางจริงที่ถูก redirect ไป
raw_dataJSONBYES-ข้อมูลดิบของเหตุการณ์ เช่น payload webhook หรือ header ของ request
created_dateTIMESTAMPTZ(3)NOnow()วันเวลาที่เกิดเหตุการณ์
rich_menu_archive_idINTEGERYES-รหัส rich menu ที่เก็บถาวรต้นทาง (FK ไป rich_menu_archive.id)

ตาราง tracking_token

ColumnTypeNullableDefaultคำอธิบาย
idUUIDNOgen_random_uuid()รหัสอ้างอิงหลักของ token
tokenTEXTNO-ค่า token ที่ใช้ในลิงก์ย่อ (unique ทั้งตาราง)
content_type"ContentType"NO-ชนิด content ที่ token นี้ผูกอยู่
content_idINTEGERNO-รหัส content ที่ token นี้ผูกอยู่ ตีความตาม content_type
action_indexINTEGERNO-ลำดับ action/พื้นที่กดภายใน content นั้น
destination_urlTEXTNO-URL ปลายทางจริงที่จะ redirect ไป
tracking_labelTEXTYES-ป้ายกำกับสำหรับจัดกลุ่มสถิติ
organization_idINTEGERNO-รหัสองค์กรเจ้าของข้อมูล
line_oa_idINTEGERNO-รหัส LINE OA เจ้าของ token (FK ไป line_oa.id)
line_oa_hashTEXTNO-ค่า hash ของ LINE OA ที่ใช้ประกอบเป็น URL ย่อ
metadataJSONBYES-ข้อมูลประกอบเพิ่มเติมของ token
status"CommonStatus"NOactiveสถานะของ token (active, inactive, expired, ...)
created_dateTIMESTAMPTZ(3)NOnow()วันเวลาที่สร้าง token
created_byINTEGERNO0รหัสผู้ใช้ที่สร้างรายการ
updated_dateTIMESTAMPTZ(3)YES-วันเวลาที่แก้ไขล่าสุด (อัปเดตอัตโนมัติ)
updated_byINTEGERYES0รหัสผู้ใช้ที่แก้ไขล่าสุด
deleted_dateTIMESTAMPTZ(3)YES-วันเวลาที่ลบแบบ soft delete
expires_atTIMESTAMPTZ(3)YES-วันเวลาหมดอายุของ token (NULL = ไม่หมดอายุ)

ตาราง tracking_line_users

ColumnTypeNullableDefaultคำอธิบาย
idUUIDNOgen_random_uuid()รหัสอ้างอิงหลักของรายการ
tracking_keyTEXTNO-คีย์ติดตามที่ผู้ใช้คนนี้เคยกด
line_user_idTEXTNO-LINE user ID ของผู้กด
content_type"ContentType"NO-ชนิด content ที่คีย์ติดตามนี้สังกัด
content_idINTEGERNO-รหัส content ที่คีย์ติดตามนี้สังกัด
organization_idINTEGERNO-รหัสองค์กรเจ้าของข้อมูล
line_oa_idINTEGERNO-รหัส LINE OA ที่เกี่ยวข้อง
created_atTIMESTAMPTZ(6)NOnow()วันเวลาที่บันทึกครั้งแรก
updated_atTIMESTAMPTZ(6)NOnow()วันเวลาที่อัปเดตล่าสุด (อัปเดตอัตโนมัติ)

หมายเหตุ

  • FK ของ tracking_log: organization_id ไป organization.id, line_oa_id ไป line_oa.id, campaign_id ไป campaign.id, rich_menu_id ไป rich_menu.id, rich_menu_archive_id ไป rich_menu_archive.id และ (line_uid, line_oa_id, organization_id) ไปยัง line_user (user_id, line_oa_id, organization_id) แบบ composite key
  • tracking_token.token มี unique constraint; tracking_line_users มี unique constraint uk_tracking_key_line_user_id บน (tracking_key, line_user_id) — ผู้ใช้ 1 คนต่อ 1 tracking key จะมีได้แถวเดียว
  • tracking_log มี index รวม 6 ชุด ครอบคลุมการ query ตามผู้ใช้, ตามแคมเปญ, ตาม rich menu, ตามช่องทาง/ชนิด และตามการคลิกรายส่วนของข้อความ — ทุกชุดมี created_date หรือ key คัดกรองนำหน้า
  • tracking_log ไม่มีคอลัมน์ soft delete เพราะเป็น append-only log
  • tracking_line_users ใช้ความละเอียดเวลา 6 หลัก (TIMESTAMPTZ(6)) ต่างจากอีก 2 ตารางที่ใช้ TIMESTAMPTZ(3)