Skip to main content

ติดตามที่มาของเพื่อน

ภาพรวม

Domain นี้มี 3 ตาราง คือ friend_track_campaign (แคมเปญติดตามที่มาของการเพิ่มเพื่อน แต่ละแคมเปญ มี token เฉพาะสำหรับใส่ในลิงก์เชิญ), friend_track_event (เหตุการณ์ follow/unfollow ที่เกิดผ่าน แคมเปญนั้น) และ friend_track_ref (รายการรหัสอ้างอิงย่อย ref_id ที่แจกไว้ล่วงหน้าใต้แคมเปญเดียวกัน)

ตาราง friend_track_campaign

ColumnTypeNullableDefaultคำอธิบาย
idSERIAL (INTEGER)NOnextval(...)รหัสอ้างอิงหลักของแคมเปญติดตามเพื่อน
nameTEXTNO-ชื่อแคมเปญ
tokenTEXTNO-token ประจำแคมเปญที่ใช้ในลิงก์เชิญ (unique ทั้งตาราง)
descriptionTEXTYES-คำอธิบายแคมเปญ
statusTEXTNO'active'สถานะการใช้งานของแคมเปญ
attribute_configJSONBYES{}ค่าตั้งต้นของ attribute ที่จะติดให้ผู้ใช้ที่เข้ามาทางแคมเปญนี้
line_oa_idINTEGERNO-รหัส LINE OA เจ้าของแคมเปญ (FK ไป line_oa.id)
organization_idINTEGERNO-รหัสองค์กรเจ้าของข้อมูล (FK ไป organization.id)
created_byINTEGERNO0รหัสผู้ใช้ที่สร้างรายการ
created_dateTIMESTAMPTZ(3)NOnow()วันเวลาที่สร้างรายการ
updated_byINTEGERYES0รหัสผู้ใช้ที่แก้ไขล่าสุด
updated_dateTIMESTAMPTZ(3)YES-วันเวลาที่แก้ไขล่าสุด
deleted_dateTIMESTAMPTZ(3)YES-วันเวลาที่ลบแบบ soft delete
ref_attribute_keyVARCHAR(255)YES-ชื่อ attribute ที่จะใช้บันทึกค่า ref_id ลงในโปรไฟล์ผู้ใช้
ref_upload_statusJSONBYES-สถานะการอัปโหลดรายการ ref_id เข้าแคมเปญ (ความคืบหน้า/ผลลัพธ์)

ตาราง friend_track_event

ColumnTypeNullableDefaultคำอธิบาย
idSERIAL (INTEGER)NOnextval(...)รหัสอ้างอิงหลักของเหตุการณ์
campaign_idINTEGERNO-รหัสแคมเปญที่เหตุการณ์เกิดขึ้น (FK ไป friend_track_campaign.id)
line_user_idTEXTNO-LINE user ID ของผู้ที่เกิดเหตุการณ์
event_typeTEXTNO-ประเภทเหตุการณ์ เช่น follow หรือ unfollow
display_nameTEXTYES-ชื่อที่แสดงของผู้ใช้ ณ เวลาที่เกิดเหตุการณ์
picture_urlTEXTYES-URL รูปโปรไฟล์ของผู้ใช้ ณ เวลาที่เกิดเหตุการณ์
line_oa_idINTEGERNO-รหัส LINE OA ที่เกิดเหตุการณ์
organization_idINTEGERNO-รหัสองค์กรเจ้าของข้อมูล
created_dateTIMESTAMPTZ(3)NOnow()วันเวลาที่เกิดเหตุการณ์
ref_idVARCHAR(255)YES-รหัสอ้างอิงย่อยที่ติดมากับลิงก์ ใช้ระบุช่องทาง/ผู้แนะนำรายย่อย

ตาราง friend_track_ref

ColumnTypeNullableDefaultคำอธิบาย
idSERIAL (INTEGER)NOnextval(...)รหัสอ้างอิงหลักของรายการ ref
campaign_idINTEGERNO-รหัสแคมเปญที่ ref นี้สังกัด (FK ไป friend_track_campaign.id)
ref_idVARCHAR(255)NO-รหัสอ้างอิงย่อยที่แจกไว้ (unique ภายในแคมเปญเดียวกัน)
line_oa_idINTEGERNO-รหัส LINE OA เจ้าของข้อมูล
organization_idINTEGERNO-รหัสองค์กรเจ้าของข้อมูล
created_dateTIMESTAMPTZ(3)NOnow()วันเวลาที่สร้างรายการ

หมายเหตุ

  • friend_track_campaign มี FK ไป line_oa.id และ organization.id แบบ ON DELETE RESTRICT จึงลบ LINE OA หรือองค์กรที่ยังมีแคมเปญค้างอยู่ไม่ได้
  • friend_track_event.campaign_id และ friend_track_ref.campaign_id เป็น FK ไปยัง friend_track_campaign.id แบบ ON DELETE CASCADE — ลบแคมเปญแล้วเหตุการณ์และ ref จะถูกลบตาม
  • friend_track_campaign.token มี unique constraint ทั้งตาราง
  • friend_track_ref มี unique constraint บน (campaign_id, ref_id) — ref_id ห้ามซ้ำภายใน แคมเปญเดียวกัน แต่ต่างแคมเปญใช้ค่าเดียวกันได้
  • friend_track_campaign ยังถูกอ้างอิงจาก content_page เพื่อผูกหน้าเนื้อหาเข้ากับแคมเปญติดตามเพื่อน
  • Index: friend_track_campaign บน line_oa_id และ deleted_date; friend_track_event บน campaign_id, (line_user_id, line_oa_id) และ (event_type, campaign_id); friend_track_ref บน campaign_id
  • friend_track_event และ friend_track_ref ไม่มีคอลัมน์ soft delete