ติดตามที่มาของเพื่อน
ภาพรวม
Friend Track ตอบคำถามว่า "เพื่อนคนนี้มาจากช่องทางไหน" โดยให้แอดมินสร้างลิงก์หรือ QR เฉพาะแคมเปญขึ้นมา เมื่อผู้ใช้กดเพิ่มเพื่อนผ่านลิงก์นั้น ระบบจะบันทึกเหตุการณ์ และสามารถเขียนค่าที่มาลงเป็น attribute ของเพื่อนคนนั้นได้ทันที
นอกจากนี้ยังรองรับ ref id ย่อย เช่น รหัสพนักงาน รหัสสาขา หรือรหัสสื่อ ซึ่งอัปโหลดเป็นชุดล่วงหน้าได้ ทำให้แยกยอดได้ละเอียดกว่าระดับแคมเปญ
โครงสร้างข้อมูลหลัก
friend_track_campaign (model FriendTrackCampaign)
name,description,token(unique — ใช้ประกอบลิงก์เพิ่มเพื่อน) และstatus(string, defaultactive)attribute_configJSONB — ระบุว่าจะเขียนค่าใดลง attribute ของผู้ใช้เมื่อมาจากแคมเปญนี้ref_attribute_key— คีย์ attribute ที่ใช้เก็บ ref idref_upload_statusJSONB — สถานะการอัปโหลดชุด ref- FK
line_oa_id→line_oa.idและorganization_id→organization.idทั้งคู่เป็นON DELETE Restrict
มีความสัมพันธ์ 1 : N กับ friend_track_event, friend_track_ref และ content_page
เนื่องจากหน้าคอนเทนต์สามารถแนบปุ่มชวนเพิ่มเพื่อนของแคมเปญนี้ได้
friend_track_event (model FriendTrackEvent)
บันทึกเหตุการณ์ที่เกิดขึ้นจริง
campaign_idFK (ON DELETE CASCADE),line_user_id,event_type- snapshot โปรไฟล์ ณ เวลานั้น ได้แก่
display_nameและpicture_url ref_id— ref ย่อยที่ติดมากับลิงก์- index บน
(campaign_id),(line_user_id, line_oa_id)และ(event_type, campaign_id)
friend_track_ref (model FriendTrackRef)
ทะเบียน ref ที่อนุญาตให้ใช้ได้ unique (campaign_id, ref_id) และ FK ไปยัง
friend_track_campaign แบบ ON DELETE CASCADE
Trigger
friend_track_event_insert_notify (AFTER INSERT) เรียก
notify_friend_track_event_insert() เพื่อยิง pg_notify('friend_track_event_inserted', ...)
หมายเหตุเชิงประวัติ — trigger ตัวนี้เคยหายไปจากฐานข้อมูล กล่าวคือมีเพียงฟังก์ชัน
แต่ไม่มีตัว trigger ทำให้ช่องสัญญาณนี้เงียบสนิท และได้รับการแก้ไขเมื่อ 24 กรกฎาคม 2026
ใน manual-sql/5.sql
ไฟล์ที่เกี่ยวข้อง
prisma/schema.prisma:1388— modelFriendTrackCampaignprisma/schema.prisma:1418— modelFriendTrackEventprisma/schema.prisma:1439— modelFriendTrackRefmanual-sql/5.sql— ฟังก์ชันและ trigger พร้อมคอมเมนต์อธิบายบั๊กที่แก้schema-dumps/2026-07-24/schema.sql:1869,:1912,:1950
จุดเชื่อมต่อกับ Service อื่น
- webhook-go — รับ follow event ที่มี ref ติดมา แล้ว insert
friend_track_event - worker-go — listen ช่อง
friend_track_event_insertedเพื่อเขียน attribute ตามattribute_configจัดผู้ใช้เข้ากลุ่ม audience และจุด workflow - cms-api-go — สร้างแคมเปญ อัปโหลดชุด ref และดูรายงานยอดตามช่องทาง
ผ่านโมดูล
friend-track - client-api-go — หน้าคอนเทนต์ที่มีปุ่มเพิ่มเพื่อนของแคมเปญ
โดเมนที่เกี่ยวข้อง: เพื่อน LINE, Attribute Master, หน้าคอนเทนต์, Event Outbox