นิยาม Attribute และตัวแปรระบบ
ภาพรวม
Domain นี้มี 2 ตาราง คือ attribute_master ซึ่งเก็บ "นิยาม" (schema) ของ custom attribute ที่แต่ละ
LINE OA กำหนดไว้ใช้กับ LINE user และ system_attribute ซึ่งเก็บตัวแปรระบบแบบ key-value ระดับ
OA/องค์กร (เช่นค่าคงที่หรือ config ที่นำไปใช้ใน merge tag หรือเงื่อนไขต่างๆ)
ทั้งสองตารางแยกข้อมูลตาม line_oa_id + organization_id และใช้ soft delete ผ่าน deleted_date
ตาราง attribute_master
| Column | Type | Nullable | Default | คำอธิบาย |
|---|---|---|---|---|
id | SERIAL (INTEGER) | NO | nextval(...) | รหัสอ้างอิงหลักของชุดนิยาม attribute |
line_oa_id | INTEGER | NO | - | รหัส LINE OA เจ้าของชุดนิยามนี้ (FK ไป line_oa.id) |
organization_id | INTEGER | NO | - | รหัสองค์กรเจ้าของข้อมูล |
name | VARCHAR(255) | NO | - | ชื่อชุดนิยาม attribute |
description | TEXT | YES | - | คำอธิบายเพิ่มเติมของชุดนิยาม |
schema | JSONB | NO | {"version": "1.0", "attributes": []} | โครงสร้างนิยาม attribute ทั้งหมด (เวอร์ชัน + รายการ attribute พร้อม type และตัวเลือก) |
status | VARCHAR(20) | NO | 'active' | สถานะการใช้งานของชุดนิยาม |
created_by | INTEGER | YES | - | รหัสผู้ใช้ที่สร้างรายการ |
updated_by | INTEGER | YES | - | รหัสผู้ใช้ที่แก้ไขล่าสุด |
created_date | TIMESTAMPTZ(3) | NO | now() | วันเวลาที่สร้างรายการ |
updated_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่แก้ไขล่าสุด |
deleted_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่ลบแบบ soft delete (NULL = ยังไม่ถูกลบ) |
ตาราง system_attribute
| Column | Type | Nullable | Default | คำอธิบาย |
|---|---|---|---|---|
id | SERIAL (INTEGER) | NO | nextval(...) | รหัสอ้างอิงหลักของตัวแปรระบบ |
line_oa_id | INTEGER | NO | - | รหัส LINE OA ที่ตัวแปรนี้สังกัด |
organization_id | INTEGER | NO | - | รหัสองค์กรเจ้าของข้อมูล |
key | VARCHAR(255) | NO | - | ชื่อคีย์ของตัวแปรระบบ (unique ต่อ OA + องค์กร) |
value | TEXT | NO | '' | ค่าของตัวแปร เก็บเป็นข้อความเสมอ แล้วตีความตาม data_type |
data_type | VARCHAR(20) | NO | 'string' | ชนิดข้อมูลของค่าที่เก็บ เช่น string, number, boolean |
expires_at | TIMESTAMPTZ | YES | - | วันเวลาหมดอายุของค่า (NULL = ไม่หมดอายุ) |
description | VARCHAR(500) | YES | - | คำอธิบายว่าตัวแปรนี้ใช้ทำอะไร |
created_by | INTEGER | YES | - | รหัสผู้ใช้ที่สร้างรายการ |
updated_by | INTEGER | YES | - | รหัสผู้ใช้ที่แก้ไขล่าสุด |
created_date | TIMESTAMP(3) | YES | now() | วันเวลาที่สร้างรายการ |
updated_date | TIMESTAMP(3) | YES | now() | วันเวลาที่แก้ไขล่าสุด |
deleted_date | TIMESTAMP(3) | YES | - | วันเวลาที่ลบแบบ soft delete |
หมายเหตุ
attribute_master.line_oa_idเป็น FK ไปยังline_oa.idแบบON DELETE CASCADE— เมื่อลบ LINE OA ชุดนิยาม attribute จะถูกลบตามattribute_masterมี unique constraint บน (line_oa_id,organization_id,name) จึงตั้งชื่อ ชุดนิยามซ้ำภายใน OA + องค์กรเดียวกันไม่ได้system_attributeมี unique constraintuq_system_attribute_oa_org_keyบน (line_oa_id,organization_id,key) และ indexidx_system_attr_oaบน (line_oa_id,organization_id)- คอลัมน์วันเวลาของ
system_attributeไม่ได้ระบุ timezone ใน schema จึงเป็นTIMESTAMP(3)ต่างจากattribute_masterที่เป็นTIMESTAMPTZ(3)