จัดการเพื่อน LINE (LINE User)
ภาพรวม
line_user คือฐานข้อมูลเพื่อน (follower) ของแต่ละ LINE OA และเป็นข้อมูลหลักที่ทุกอย่างวางอยู่บน
ไม่ว่าจะเป็น audience, campaign, report หรือ trigger ล้วน query จากตารางนี้ทั้งสิ้น
โมดูลนี้ให้เครื่องมือสำหรับค้นหาเพื่อน ดูรายละเอียดรายบุคคล ดู GA journey ของแต่ละคน sync follower จาก LINE นำเข้าเพื่อนจากไฟล์ CSV รวมถึงแก้ไข custom attribute และ profile รายบุคคล
Business Flow
การค้นหาและดูรายละเอียด
GET /api/line-users/searchค้นหาแบบแบ่งหน้าด้วยFilterGetLineUserDtoซึ่งรองรับการค้นด้วยชื่อ สถานะ follow tag และ custom attribute โดย scope ผลลัพธ์ตามlineOaIdใน CLSGET /api/line-users/:idดูรายละเอียดของเพื่อนคนเดียว ทั้ง profile, attribute และประวัติGET /api/line-users/:id/ga-journey?days=30ดึงเส้นทางการใช้งานที่ track ไว้จาก GA โดยมีค่าเริ่มต้นที่ 30 วัน ใช้ประกอบการวิเคราะห์พฤติกรรมรายบุคคล
การ sync จาก LINE
POST /api/line-users/sync-follower-usersสั่งดึงรายชื่อ follower ทั้งหมดจาก LINE โดย publish งานลงคิว RabbitMQline_sync_follower_userให้ worker ทำแบบ backgroundGET /api/line-users/last-synced-follower-users-statusให้ cms-web poll เพื่อตรวจสถานะของรอบ sync ล่าสุด
การนำเข้าจาก CSV
POST /api/line-users/import-all-friendsรับเป็น multipart/form-data สำหรับอัปโหลดไฟล์ CSV รายชื่อเพื่อน ไฟล์จะถูกเก็บลง object storage จากนั้นสร้างแถวในline_user_importและline_user_import_detailแล้ว publish ลงคิวline_import_csv_userให้ worker ประมวลผล- ผลการ import ดูย้อนหลังได้ที่
GET /api/report/import-history
การแก้ไขข้อมูลรายบุคคล
PUT /api/line-users/:id/custom-attributeแก้ค่า custom attribute โดย schema ของ attribute มาจากโมดูล attribute masterPUT /api/line-users/:id/profileแก้ profile ที่เก็บไว้ฝั่งระบบ
ไฟล์และฟังก์ชันหลัก
โค้ดอยู่ที่ internal/modules/lineuser/ ประกอบด้วย controller.go, service.go,
repository.go, csv.go, gajourney.go, lineoa.go, dto.go และ module.go
route ทั้งหมด register บน group authed.Group("/line-users")
| Method | Route | Handler | Policy (metadata) |
|---|---|---|---|
| GET | /api/line-users/search | svc.searchHandler | readAll line-user |
| GET | /api/line-users/last-synced-follower-users-status | svc.lastSyncedFollowerUsersStatusHandler | read line-user |
| GET | /api/line-users/:id | svc.getLineUserDetailHandler | read line-user |
| GET | /api/line-users/:id/ga-journey | svc.getGaJourneyHandler | read line-user |
| POST | /api/line-users/sync-follower-users | svc.syncFollowerUsersHandler | update line-user |
| POST | /api/line-users/import-all-friends | svc.importLineUsersHandler | create line-user |
| PUT | /api/line-users/:id/custom-attribute | svc.updateCustomAttributeHandler | update line-user |
| PUT | /api/line-users/:id/profile | svc.updateProfileHandler | update line-user |
ฟังก์ชันที่โมดูลอื่นเรียกใช้: service ของ lineuser ถูกโมดูล report เรียกใช้
เพื่อ reuse ตัว build query ชุดเดียวกัน
จุดเชื่อมต่อกับ Service อื่น
- Permission — policy metadata
PolicyModuleLineUserและเนื่องจากอยู่บน groupauthedจึงต้องมี token ที่มีlineOaIdแล้ว - ตารางที่เกี่ยวข้อง —
line_user,line_user_import,line_user_import_detail,tracking_line_users,attribute_master,line_oa - RabbitMQ — คิว
line_sync_follower_userและline_import_csv_user - Storage — อัปโหลดไฟล์ CSV ไปยัง MinIO/S3
- External — LINE Messaging API สำหรับดึง follower id และ profile รวมถึง Google Analytics สำหรับ GA journey
- ผู้บริโภคข้อมูลนี้ — การจัดการ audience, การจัดการแคมเปญ, รายงานรายชื่อเพื่อนทั้งหมด, การ mapping ข้อมูลนำเข้า และหน้า dashboard