องค์กรและแพ็กเกจการใช้งาน
ภาพรวม
Domain นี้มีตารางเดียวคือ organization ซึ่งเป็นหน่วยสูงสุดของการแบ่งข้อมูล (tenant) ทุกตารางหลัก
ในระบบจะอ้างถึง organization_id เพื่อแยกข้อมูลระหว่างลูกค้า โควตาการใช้งาน (plan/quota) ไม่ได้แยก
เป็นตารางต่างหาก แต่เก็บอยู่ในคอลัมน์ max_channel และ plan_limits (JSONB) ของตารางนี้เอง
ตาราง organization
| Column | Type | Nullable | Default | คำอธิบาย |
|---|---|---|---|---|
id | INTEGER | NOT NULL | nextval (serial) | Primary key ขององค์กร |
logo | TEXT | NULL | – | URL/path ของโลโก้องค์กร |
name | TEXT | NOT NULL | – | ชื่อองค์กร |
status | CommonStatus (enum) | NOT NULL | – | สถานะองค์กร (active, inactive, delete ฯลฯ) |
max_channel | INTEGER | NOT NULL | 5 | จำนวน LINE OA (channel) สูงสุดที่องค์กรนี้สร้างได้ |
created_date | TIMESTAMPTZ(3) | NOT NULL | CURRENT_TIMESTAMP | วันที่สร้าง |
created_by | INTEGER | NOT NULL | 0 | user id ของผู้สร้าง |
updated_date | TIMESTAMPTZ(3) | NULL | – | วันที่แก้ไขล่าสุด (Prisma @updatedAt) |
updated_by | INTEGER | NULL | 0 | user id ของผู้แก้ไขล่าสุด |
deleted_date | TIMESTAMPTZ(3) | NULL | – | วันที่ลบแบบ soft delete (NULL = ยังไม่ถูกลบ) |
plan_limits | JSONB | NULL | – | โควตาเฉพาะองค์กร (override ค่า default ของแพลตฟอร์ม) NULL = ใช้ค่า default |
หมายเหตุ
plan_limitsเป็นคอลัมน์ ไม่ใช่ตาราง — ถูกเพิ่มภายหลังผ่าน manual SQL (manual-sql/7.plan_limits.sql) ด้วยคำสั่งALTER TABLE organization ADD COLUMN IF NOT EXISTS plan_limits JSONBจึงไม่ปรากฏในschema.prisma- โครงสร้างของ
plan_limitsเป็น JSON object ที่มี key ดังนี้ (ตัวอย่างค่าขององค์กรแพลตฟอร์ม 1Moby ที่id = 1):{"maxSegments":-1,"maxActiveWorkflows":-1,"maxTemplates":-1,"maxAttributes":-1,"autoRefresh":true}โดยค่า-1หมายถึงไม่จำกัด (unlimited) ส่วนค่า default ของแพลตฟอร์มอยู่ในโค้ด cms-api ที่src/plan-limits/plan-limits.constant.ts - โควตาจำนวน channel ไม่ได้อยู่ใน
plan_limitsแต่ยังใช้คอลัมน์max_channelตามเดิม - มี index บน
deleted_dateเพื่อรองรับการ query แบบตัดรายการที่ถูก soft delete ออก - ตารางนี้ถูกอ้างถึงด้วย foreign key
organization_idจากตารางuser,line_oa,campaign,tracking_log,friend_track_campaignและorganization_module - ไม่มีตาราง
admin_planและadmin_audit_logอยู่ในระบบ — ตรวจสอบแล้วทั้งในschema.prisma, pg_dump ของ preprod และ manual SQL ทั้งหมด