#table#sml#group#main-db#company-db
กลุ่มตาราง sml_*
ตารางที่ขึ้นต้น sml_ แบ่งเป็น 2 ที่อยู่ตามสถาปัตยกรรมหลายผู้เช่า (Tenant) — ดู backend/CONTEXT.md
- Main Database (ฐานตัวตนต่อ Tenant ชื่อรูปแบบ
smlerpmain<รหัส>): ผู้ใช้ รายชื่อบริษัท สิทธิ์ Google / MCP - Company Database (ฐานบริษัท): ตารางช่วยเหลือที่ผูกกับข้อมูลธุรกิจ (รูปเอกสาร รูปแบบบาร์โค้ด FastReport tooltip ฯลฯ)
ผู้ใช้ระดับ < 9 แตะ sml_user_list / sml_database_list* ผ่านเกตเวย์ไม่ได้ (query.go:63, 362) และ MCP gateway ห้ามอ่าน sml_user_list, sml_mcp_*, sml_google_account (mcp/gateway.go:30)
Main Database
sml_user_list— ผู้ใช้ล็อกอิน → sml_user_list — ผู้ใช้ล็อกอิน (Main Database ของ Tenant)sml_database_list— ทะเบียนบริษัท (ชี้ชื่อฐานบริษัทจริง) → sml_database_list — ทะเบียนบริษัท (Company registry)sml_database_list_user_and_group— สิทธิ์เข้าบริษัท → sml_database_list_user_and_group — สิทธิ์เข้าบริษัท (Access Grant)sml_database_group— กลุ่มฐานข้อมูล:group_code,group_name(พบเฉพาะสคีมาทดสอบ identity_schema.sql ไม่พบ SQL ในโค้ดแอป)sml_user_and_group— สมาชิกกลุ่ม:user_code,group_code; ใช้หากลุ่มของผู้ใช้เพื่อรวมสิทธิ์เมนู (postgres_repository.go:89) · legacysml_group_list— รายชื่อกลุ่ม (group_code; อ้างใน menu_permissions.go:20) · legacysml_permissions_user,sml_permissions_group— สิทธิ์เมนู:usercode,image_file(BYTEA — บล็อบสิทธิ์รายเมนู ถอดรหัสโดยmenu_rights.goและ OR รวมทุกเมนู),database_name(เพิ่มด้วย ALTER IF NOT EXISTS),roworder; แถวกลุ่มใช้usercodeเก็บรหัสกลุ่ม (postgres_repository.go:72-95) · legacy · ดู การตรวจสิทธิ์เมนูของ route process (Process route rights)sml_google_account,sml_google_workspace_db,sml_google_workspace_member→ sml_google_account / sml_google_workspace_db / sml_google_workspace_member — ล็อกอิน Google และ Workspace (โค้ดสร้างเอง)sml_mcp_access_tokens,sml_mcp_token_databases,sml_mcp_token_audit→ sml_mcp_access_tokens / sml_mcp_token_databases / sml_mcp_token_audit — โทเคน MCP แบบอ่านอย่างเดียว (โค้ดสร้างเอง)sml_audit_log— ไม่พบ DDL ในรีโป; โค้ดอ้างเพียงตัวตรวจสิทธิ์ batch: ถ้า SQL แตะsml_audit_logด้วยVALUES (1,/(2,/(3,จะเทียบเป็นสิทธิ์ เพิ่ม/แก้/ลบ (adapter/inbound/http/process/permission.go:191-) (ไม่ชัดจากโค้ดว่าคอลัมน์มีอะไร)
Company Database
sml_fastreport— นิยามรายงาน FastReport ของโปรแกรมเดิม: อ่านคอลัมน์report_type,menuid,menunameเพื่อทำเมนู "รายงานอื่นๆ/launcher" ของ IC (type 1), CB (type 6), AP/AR, GL/FA, SO/PO (report_menu_*.go) · legacysml_barcode_print_format— รูปแบบพิมพ์ป้ายบาร์โค้ด:code,name,formatdata(JSON ของเลย์เอาต์ป้าย),create_date_time_now; บันทึกโดยลบแล้วใส่ใหม่ในทรานแซกชัน (barcode.go:628-697) · legacy · ดู บาร์โค้ดสินค้า ส่วนลดบาร์โค้ด EAN13 และพิมพ์ป้าย (Barcode menus 2.1.7-2.1.17)sml_doc_images— รูปแนบเอกสาร:roworder,image_id(คีย์เอกสาร),guid_code,image_order,image_url,image_file(BYTEA),create_date_time_now; โค้ดสร้างเอง + ALTER IF NOT EXISTS (pos_config.go:275-287); DDL ในโค้ดระบุimage_idVARCHAR(128) แต่คอมเมนต์ doc_picture.go:37 เขียนว่าฐานเดิม varchar(50) (docPictureKeyLen) · ดู แนบรูปเอกสารและรูปสินค้า (Document & item pictures)sml_resource— ข้อความหลายภาษา:code,name_1…name_6; โค้ดสร้างเอง (pos_config.go:359) (ไม่ชัดจากโค้ดว่าใช้แสดงผลที่ใด)sml_tooltip— ข้อความช่วยเหลือ:code(VARCHAR(100) PK),name_1,name_2; โค้ดสร้างเอง (menu_permissions.go:58, 139); เมื่อ SQL ที่แอดมินส่งมาแตะตารางนี้ โค้ดจะเปลี่ยนเป้าหมายเป็นฐานบริษัท (resolveCompanyDB, admin/handler.go:658)
ใช้ร่วมกับระบบอื่น
ชุดตัวตน/สิทธิ์/บริษัทใช้ร่วมกับโปรแกรมเดิม (คอลัมน์ ignore_sync, is_lock_record เป็นของฝั่งนั้น); ฝั่งเว็บเพิ่มคอลัมน์ email, line_user_id, database_name เองด้วย ALTER IF NOT EXISTS
ลิงก์
กลุ่มตาราง erp_* — ข้อมูลตั้งค่า/ข้อมูลหลักของบริษัท · การตรวจสิทธิ์เมนูของ route process (Process route rights) · Google Login, Multi-Tenant PDPA และหน้าเลือกโมดูลหลัง Login (Google OAuth, Tenant Isolation, Home Hub)