เมนูเว็บ (Menu Builder)
ภาพรวม
Domain นี้มีตารางเดียวคือ menu_builder เก็บนิยามเมนูเว็บ (web menu) ของแต่ละ LINE OA
โดยโครงสร้างเมนูทั้งหมดถูกเก็บเป็น JSONB ในคอลัมน์ config และเปิดให้เข้าถึงแบบสาธารณะ
ผ่าน public_token ตารางนี้ใช้ soft delete ผ่าน deleted_at
ตาราง menu_builder
| Column | Type | Nullable | Default | คำอธิบาย |
|---|---|---|---|---|
id | SERIAL | NO | nextval(...) | Primary key |
name | VARCHAR(255) | NO | - | ชื่อเมนู |
config | JSONB | NO | - | โครงสร้างและการตั้งค่าของเมนูทั้งหมด |
public_token | VARCHAR(255) | YES | - | โทเคนสำหรับเปิดเมนูแบบสาธารณะ (unique) |
line_oa_id | INTEGER | NO | - | LINE OA ที่เมนูนี้สังกัด (FK ไป line_oa.id) |
status | CommonStatus (ENUM) | NO | active | สถานะเมนู |
created_by | INTEGER | NO | - | ผู้สร้าง (user id) |
updated_by | INTEGER | YES | - | ผู้แก้ไขล่าสุด (user id) |
created_at | TIMESTAMPTZ(3) | NO | now() | วันเวลาที่สร้าง |
updated_at | TIMESTAMPTZ(3) | NO | now() | วันเวลาที่แก้ไขล่าสุด |
deleted_at | TIMESTAMPTZ(3) | YES | - | วันเวลาที่ลบ (soft delete) |
หมายเหตุ
line_oa_idเป็น FK ไปline_oa.id— เมนูทุกอันต้องผูกกับ LINE OA เสมอ (NOT NULL)public_tokenมี unique constraint และใช้เป็น key ในการเปิดหน้าเมนูจากลิงก์สาธารณะ- มี index บน
line_oa_id,statusและcreated_atเพื่อรองรับการ query รายการเมนู ของแต่ละ OA พร้อมกรองสถานะและเรียงตามวันที่สร้าง - การลบใช้ soft delete (
deleted_at) ควบคู่กับstatus— เรกคอร์ดจะยังคงอยู่ในตาราง