Skip to main content

ฐานข้อมูลลูกค้าอัปโหลด

ภาพรวม

Domain นี้เป็นชุดตารางสำหรับเก็บ ตารางข้อมูลลูกค้าที่อัปโหลดเข้ามาในรูป CSV แล้วเก็บไว้ในฐานข้อมูลโดยตรง จุดประสงค์คือใช้เป็น "แหล่งอ้างอิง" ตอนผู้ใช้กรอกฟอร์ม เช่น เมื่อผู้ใช้กรอกเลขบัตรประชาชนหรือเบอร์โทรศัพท์ ระบบจะไปค้นในตารางนี้เพื่อดึงข้อมูลที่เหลือมาเติมให้อัตโนมัติ ซึ่งเรียกว่า profile mapping

ตารางทั้งชุดสร้างด้วย manual SQL จึงไม่ปรากฏใน schema.prisma และผูกเข้ากับ form builder ผ่านคอลัมน์ form_builder.profile_mapping JSONB

โครงสร้างข้อมูลหลัก

customer_database

เก็บเมทาดาทาของชุดข้อมูลที่อัปโหลดหนึ่งชุด ประกอบด้วย line_oa_id, name, description, คอลัมน์ columns JSONB ที่นิยามโครงสร้างคอลัมน์ของ CSV, ตัวนับ row_count, status และ audit columns มาตรฐาน (created_by / created_at / updated_by / updated_at)

customer_database_row

เก็บข้อมูลรายแถว โดยอ้างกลับด้วย database_id (FK ไปยัง customer_database.id แบบ ON DELETE CASCADE) และเก็บทั้งแถวเป็น JSON object ในคอลัมน์ data JSONB

การค้นหาถูกรองรับด้วย index บน (database_id) และ GIN index แบบ jsonb_path_ops บนคอลัมน์ data ทำให้ค้นหาค่าภายในแถวได้รวดเร็ว

form_builder.profile_mapping

คอลัมน์ JSONB บนตาราง form builder ที่กำหนดต่อฟอร์มว่าจะใช้ database ชุดใด ใช้คีย์อะไรในการค้นหา และจะนำผลลัพธ์ไปเติมลงฟิลด์ใดบ้าง รวมถึงคีย์ย่อย otp สำหรับเลือกฟิลด์ที่ต้องผ่านการยืนยัน OTP

ไฟล์ที่เกี่ยวข้อง

  • manual-sql/6.customer_database.sql — สร้างทั้งสองตารางและเพิ่มคอลัมน์ form_builder.profile_mapping (ระบุว่า apply ขึ้น preprod เมื่อวันที่ 2026-07-02)
  • schema-dumps/2026-07-24/schema.sql:1611 และ :1650

จุดเชื่อมต่อกับ Service อื่น

  • cms-api-go — ให้บริการโมดูล customer-database (ลงทะเบียนไว้ใน seed-data/01.system_module.sql) ครอบคลุมการอัปโหลด CSV, ดูตัวอย่างข้อมูล และตั้งค่า mapping ในหน้า form builder
  • client-api-go — ตอนผู้ใช้กรอกฟอร์ม จะ lookup แถวจากตารางนี้เพื่อเติมข้อมูลโปรไฟล์ให้อัตโนมัติ
  • เชื่อมโดยตรงกับ ฟอร์ม และผลลัพธ์สุดท้ายจะถูกบันทึกลง line_user.custom_attribute ใน เพื่อน LINE