Skip to main content

องค์กรและแพ็กเกจการใช้งาน

ภาพรวม

Domain นี้เก็บ ผู้เช่าระบบระดับบนสุด (tenant) คือ organization ซึ่งหมายถึงลูกค้า 1 รายที่สมัครใช้ LINE Management ข้อมูลทุกอย่างในระบบ ไม่ว่าจะเป็น LINE OA, ผู้ใช้ CMS, campaign หรือ audience จะแขวนอยู่ใต้องค์กรเสมอ คอลัมน์ organization_id จึงปรากฏอยู่แทบทุกตาราง เพื่อป้องกันข้อมูลรั่วไหลข้าม tenant

นอกจากตัวองค์กรเองแล้ว domain นี้ยังดูแล โควตาการใช้งาน (plan limits) ที่ platform admin (1Moby) กำหนดให้แต่ละองค์กร, แม่แบบแพ็กเกจ ที่นำไปใช้ซ้ำได้ และ audit log ของ platform admin

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

organization (Prisma model Organization)

ตารางหลักขององค์กร ประกอบด้วย id, name, logo, status (enum CommonStatus) พร้อมคอลัมน์ควบคุมโควตา

  • max_channel (default 5) — จำนวน LINE OA สูงสุดที่องค์กรสร้างได้
  • plan_limits JSONB — เพิ่มภายหลังด้วย manual SQL จึงไม่ปรากฏใน schema.prisma รูปแบบค่าเป็น {"maxSegments":-1,"maxActiveWorkflows":-1,"maxTemplates":-1,"maxAttributes":-1,"autoRefresh":true} โดย -1 หมายถึงไม่จำกัด และค่า NULL หมายถึงให้ใช้ค่า default ของแพลตฟอร์ม
  • audit columns มาตรฐาน created_date / created_by / updated_date / updated_by / deleted_date (soft delete)

ความสัมพันธ์เป็นแบบ 1 : N กับ line_oa, user, campaign, tracking_log และ friend_track_campaign

ตารางเสริมที่สร้างด้วย manual SQL

ตารางหน้าที่
admin_planแม่แบบแพ็กเกจที่ platform admin เลือกใช้กับองค์กรได้ เก็บ name, module_ids JSONB (โมดูลที่เปิด) และ caps JSONB (เพดานการใช้งาน)
admin_audit_logบันทึกทุกการกระทำของ platform admin ผ่าน actor, action, organization_id, detail JSONB และ created_at มี index (organization_id, created_at DESC) รองรับหน้า audit รายองค์กร
organization_moduleoverride ว่าองค์กรนี้เปิดใช้โมดูลใดบ้าง ด้วยคู่ (organization_id, module_id, actions) ทำงานคู่กับ system_role_module

การซ้อนชั้นของโควตา

ระดับ LINE OA มีคอลัมน์ plan_limits JSONB ของตัวเองด้วย (line_oa.plan_limits, default '{}') ตัวนับโควตาจะอ่านค่าของ channel ก่อน ถ้าไม่พบจึงถอยไปใช้ค่าขององค์กร และสุดท้ายจึงใช้ค่า default ของแพลตฟอร์ม

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

  • prisma/schema.prisma:192 — model Organization
  • manual-sql/7.plan_limits.sql — เพิ่มคอลัมน์ organization.plan_limits และตั้งค่าไม่จำกัดให้องค์กร id 1 (1Moby)
  • prisma/migrations/20260726180000_add_line_oa_plan_limits/migration.sql — คอลัมน์ line_oa.plan_limits
  • prisma/migrations/20260727090000_add_admin_audit_and_plan/migration.sql — ตาราง admin_audit_log และ admin_plan
  • seed-data/04.organization.sql — seed องค์กรแรก "1Moby" (id 1)
  • schema-dumps/2026-07-24/schema.sql:2384 — โครงสร้างจริงบน preprod
  • schema-dumps/2026-07-24/schema.sql:2423 — ตาราง organization_module

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

  • cms-api-go — อ่านและเขียนผ่านหน้า platform admin สำหรับ onboarding องค์กรใหม่ ตั้งค่า plan limits และเปิด/ปิดโมดูลรายองค์กร นอกจากนี้ยังใช้ plan_limits เป็น guard ตอนสร้าง audience, workflow, template และ attribute
  • ทุก service — ใช้ organization_id เป็น scope หลักในการ query เพื่อรักษา multi-tenant isolation
  • เชื่อมกับ LINE Official Account (1 องค์กรต่อหลาย channel จำกัดด้วย max_channel), ผู้ใช้งาน CMS และ บทบาทและสิทธิ์