ฐานข้อมูลลูกค้าอัปโหลด
ภาพรวม
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