คู่มืออ้างอิงระบบCHAPTER 01

การยืนยันตัวตนและการเข้าถึงระบบ

เอกสารอ้างอิงฉบับครบถ้วนของหน้าเข้าสู่ระบบ (LOGIN) และเส้นทางการเข้าถึงระบบทั้งหมด: ช่องทางยืนยันตัวตน 3 แบบ สเปกทุกองค์ประกอบหน้าจอ กฎการตรวจสอบความถูกต้อง (validation) สถานะฟอร์ม เส้นทางหลังล็อกอิน ข้อมูลที่เก็บในเครื่องผู้ใช้ ความปลอดภัย และบัญชีข้อผิดพลาด — ทุกหัวข้อพิสูจน์จากหน้าจอระบบจริงและซอร์สโค้ดโมดูล frontend

ปรับปรุง: กันยายน 2569พิสูจน์จากหน้าจอระบบจริง
แหล่งอ้างอิงของบทนี้
ข้อเท็จจริงเชิงเทคนิคในบทนี้ยืนยันจากซอร์สโค้ดโมดูล frontend ไฟล์หลักได้แก่ src/app/login-screen.tsx, src/app/api/auth/login/route.ts, src/app/api/auth/demo-login/route.ts, src/lib/holding-code.ts และ src/lib/i18n.ts — อ้างเป็นชื่อไฟล์เพื่อให้ตรวจสอบย้อนกลับได้

1.1ภาพรวมการยืนยันตัวตน

BC Ai Account เป็นระบบแบบเว็บแอปพลิเคชัน การยืนยันตัวตนทำที่หน้า https://account.bcaicloud.com/ ทั้งหมด โดยรองรับช่องทาง 3 แบบ:

ช่องทางกลไก (จากโค้ด)ปลายทางหลังสำเร็จ
รหัสผ่าน (หลัก)POST /api/auth/login → backend /login พร้อม username, password, holdingcode (ไม่บังคับ) — timeout 15 วินาทีมี holdingcode → /workspace ทันที; ไม่มี → /holding ให้เลือกกลุ่มกิจการก่อน
Googleปุ่ม Google Identity Services (popup) → POST /api/auth/google/verify ด้วย credential — ต้องตั้ง NEXT_PUBLIC_GOOGLE_CLIENT_ID ไม่เช่นนั้นปุ่มจะไม่แสดงเข้าสู่ /holding เพื่อเลือกกลุ่มกิจการเสมอ
DemoPOST /api/auth/demo-login → backend /demo-login; เปิด/ปิดที่ backend ด้วย BCAI_DEMO_LOGIN_ENABLEDเข้าสู่ /holding ของชุดข้อมูลสาธิต

ทั้งสามช่องทางได้รับ Bearer token + ตั้ง refresh token เป็น HttpOnly cookie (ผ่าน setRefreshTokenCookie) แล้วบันทึก session ฝั่ง client ด้วย setAuthSession ซึ่งจำ method ว่ามาจาก password / google / demo

ข้อสังเกตเชิงความปลอดภัย
ระบบเคยมีการเก็บรหัสผ่านใน localStorage (คีย์เก่า saved_password) แต่โค้ดปัจจุบัน ลบคีย์เก่าทิ้งทุกครั้งที่โหลดหน้า และไม่บันทึกรหัสผ่านอีกต่อไป — สิ่งที่คงอยู่ในเครื่องผู้ใช้มีเพียง ภาษา ชื่อผู้ใช้ (ถ้าติ๊กจำ) และรหัสกลุ่มกิจการ

1.2สเปกองค์ประกอบหน้าจอ (Screen Spec)

account.bcaicloud.com
หน้าเข้าสู่ระบบ BC Ai Account
หน้าเข้าสู่ระบบ — ซ้าย: brand panel (ข้อมูลระบบ+สถานะการเชื่อมต่อ) / ขวา: form panel (ฟอร์มล็อกอิน)

Brand Panel (ฝั่งซ้าย)

องค์ประกอบรายละเอียด
แถบป้าย (brand badge)โลโก้ประกาย + BC Ai Account + คำว่า “พื้นที่ทำงานปลอดภัย” (Secure Workspace)
หัวเรื่อง H1“เข้าสู่ระบบ” + คำโปรย “ระบบบัญชีและจัดการร้านค้าสำหรับทีมงานหน้าร้าน คลัง และบัญชี”
การ์ด 1 — เริ่มใช้งานครั้งแรกแนะนำผู้ที่ยังไม่มีรหัสกลุ่มกิจการให้ล็อกอินด้วย Google เพื่อสมัครและตั้งค่ากลุ่มกิจการ
การ์ด 2 — พื้นที่ทำงานปลอดภัยอธิบาย Multi Company: ผู้ใช้หนึ่งคนเลือกได้หลายบริษัทหลังเข้าสู่ระบบ
แถบสถานะระบบ (ล่างสุด)จุดสี + ข้อความผลทดสอบการเชื่อมต่อ — เขียว: “เชื่อมต่อ Server สำเร็จ”; hover เห็น Backend URL ที่ใช้จริง (title tooltip)

Form Panel (ฝั่งขวา)

องค์ประกอบพฤติกรรม (จากโค้ด)
ส่วนหัวการ์ดคำว่า “พื้นที่ทำงานปลอดภัย” + หัวข้อ “ลงชื่อเข้าใช้” + ปุ่มควบคุม: ฟอนต์ / ธีมสี / ธีมมืด / ภาษา / ลิงก์ตั้งค่า (/settings)
ส่วนที่ 1: ยืนยันตัวตนด้วยตัวตนดิจิทัลปุ่ม Google (GIS renderButton, popup mode) + ปุ่ม “ทดลองใช้ระบบ (Demo)” — ขณะรอรับผลมี spinner “กำลังเข้าสู่ระบบ”
เส้นคั่น“หรือเข้าสู่ระบบด้วยบัญชีภายนอก” (role=separator)
ส่วนที่ 2: รหัสกลุ่มกิจการและรหัสผ่านฟอร์มหลัก 3 ช่อง + ตัวเลือกจำชื่อผู้ใช้ + พื้นที่ข้อความผลลัพธ์ + ปุ่ม “เข้าสู่ระบบ” (ดูสเปกฟอร์มหัวข้อ 1.3)
หมายเหตุท้ายการ์ด“เริ่มใช้งานครั้งแรก” พร้อมขั้นตอน 1-2-3: ตั้งกลุ่มกิจการ → ล็อกอินด้วย Google → เข้าพื้นที่ทำงาน
ปุ่มลอย (ทั้งหน้า)Copy DOM (Alt+คลิก) สำหรับทีมสนับสนุน, และ “เมนูด่วน Ctrl+K”

1.3สเปกฟอร์มรหัสผ่านและกฎ Validation

account.bcaicloud.com
ฟอร์มล็อกอินที่กรอกข้อมูลตัวอย่างแล้ว
ฟอร์มที่กรอกครบ — แต่ละช่องมีไอคอนนำหน้า ปุ่มล้าง (×) เมื่อมีค่า และช่องรหัสผ่านมีปุ่มสลับแสดง/ซ่อนเพิ่ม
ช่องประเภท / autoCompleteกฎ (จากโค้ด)
รหัสกลุ่มกิจการtext / organizationPattern /^[a-z][a-z0-9]{2,29}$/: ตัวพิมพ์เล็ก a-z + ตัวเลข 0-9 ยาว 3–30 ตัว ขึ้นต้นด้วยตัวอักษร ห้าม _ และสัญลักษณ์อื่น — ระบบ normalize อัตโนมัติ(trim + เปลี่ยนเป็นตัวพิมพ์เล็กขณะพิมพ์) placeholder ตัวอย่าง bcdemo01
ชื่อผู้ใช้text / usernameรับได้ทั้งรหัสพนักงานหรืออีเมล — ต้องไม่ว่าง (trim ก่อนตรวจ)
รหัสผ่านpassword / current-passwordต้องไม่ว่าง; ปุ่มตาสลับแสดง/ซ่อน (showPassword)
จำชื่อผู้ใช้checkboxเมื่อติ๊ก: เก็บชื่อผู้ใช้ใน localStorage คีย์ saved_username; ไม่ติ๊ก: ลบคีย์ทิ้ง — ส่วนรหัสกลุ่มกิจการ (saved_holdingcode) ระบบจำให้เสมอเมื่อล็อกอินสำเร็จ

เงื่อนไขเปิดปุ่ม “เข้าสู่ระบบ” (canSubmit): Backend URL พร้อม + ชื่อผู้ใช้ไม่ว่าง + รหัสผ่านไม่ว่าง + ไม่อยู่ระหว่างโหลด — ทั้งนี้ รหัสกลุ่มกิจการไม่อยู่ในเงื่อนไข ผู้ใช้ล็อกอินโดยไม่กรอกก็ได้ ระบบจะพาไปหน้าเลือกกลุ่มกิจการ (/holding) ให้เลือกทีหลัง

ลำดับการตรวจสอบฝั่ง client (performLogin)

  1. 1
    Backend URL ว่าง → แจ้ง “กรอก Backend URL”
    กรณีหายาก เพราะ URL ถูกกำหนดอัตโนมัติจาก origin ของหน้า
  2. 2
    รหัสกลุ่มกิจการ normalize แล้วว่าง → แจ้งให้กรอก
    เกิดเมื่อกรอกมาแต่เหลือแต่ช่องว่าง/สัญลักษณ์
  3. 3
    รูปแบบรหัสกลุ่มกิจการไม่ผ่าน pattern → แจ้กข้อความกฎ a-z 0-9 ยาว 3-30
    ข้อความจริงจาก holding-code.ts
  4. 4
    ชื่อผู้ใช้ว่าง / รหัสผ่านว่าง → แจ้งตามช่อง
    ก่อนเรียก API
  5. 5
    เรียก POST /api/auth/login (timeout 15 วินาที)
    สำเร็จ: บันทึก session → ไป /workspace หรือ /holding; ผิดพลาด: แสดงข้อความจาก server ในพื้นที่ message
หมายเหตุ
ฝั่ง server (route ของ Next.js) ตรวจซ้ำชุดเดียวกันอีกครั้งก่อนส่งต่อ backend — การแก้ validation ใน devtools ฝั่ง client ไม่สามารถข้ามได้

1.4เส้นทางหลังล็อกอิน (Routing)

ระบบพาผู้ใช้ไปตามสายทาง 4 ขั้นตามวิธีล็อกอินและการมี holdingcode:

ขั้นเส้นทาง (URL)หน้าจอเงื่อนไขที่จะเจอ
1/หน้าเข้าสู่ระบบทุกกรณี — จุดเริ่มต้น
2/holdingเลือกกลุ่มกิจการล็อกอินด้วย Google/Demo เสมอ; หรือล็อกอินรหัสผ่านแบบไม่กรอกรหัสกลุ่มกิจการ
3/workspaceเลือกบริษัท (และเลือกสาขาต่อ)ล็อกอินรหัสผ่านพร้อมรหัสกลุ่มกิจการจะมาถึงที่นี่ทันที; หรือหลังเลือกกลุ่มกิจการจาก /holding
4/menuเมนูหลักหลังเลือกบริษัทและสาขาครบ
account.bcaicloud.com
หน้าเลือกกลุ่มกิจการ
/holding — รายการกลุ่มกิจการที่ผู้ใช้เข้าได้ พร้อมค้นหา ปุ่มจัดการผู้ดูแล แก้ไข และเพิ่มกลุ่มกิจการ (ขยายได้ในบทที่ 2)
account.bcaicloud.com
หน้าเลือกบริษัท
/workspace — แถบขั้นตอน 1 เข้าสู่ระบบ → 2 เลือกบริษัท → 3 เลือกสาขา → 4 เมนูหลัก (ภาพจากชุดข้อมูลสาธิต: 3 บริษัท)
account.bcaicloud.com
หน้าเลือกสาขา
หน้าเลือกสาขาภายในบริษัท — มีรหัสกิจงานกำกับ (00000 สำนักงานใหญ่ / 00001 สาขาลาดหลุมแก้ว) และปุ่มย้อน “เปลี่ยนบริษัท”
account.bcaicloud.com
หน้าเมนูหลัก
/menu — แถบบริบทแสดงกลุ่มกิจการ → [C01] บริษัท → [00000] สาขา ตลอดการใช้งาน พร้อมตัวนับเอกสารค้างรายโมดูล (ภาพจากชุดข้อมูลสาธิต)

1.5การแสดงผลหลายภาษา (i18n)

ระบบใช้หลัก Thai-First: ไฟล์ src/locales/th.json เป็นแหล่งความจริง ภาษาอื่นแปลจากไทย รวมรองรับ 12 ภาษา:

  • ภาษาไทย (th) — ค่าเริ่มต้น
  • English (en), 中文 (cn), 日本語 (ja), 한국어 (ko)
  • ພາສາລາວ (lo), မြန်မာဘာသာ (my), ភាសាខ្មែរ (km)
  • Tiếng Việt (vi), Bahasa Melayu (ms), Bahasa Indonesia (id), Filipino (fil)
account.bcaicloud.com
เมนูเลือกภาษา 12 ภาษา
ปุ่มเลือกภาษาบนการ์ดล็อกอิน — ภาษาปัจจุบันมีเครื่องหมายถูกกำกับ
account.bcaicloud.com
หน้าล็อกอินภาษาอังกฤษ
หลังสลับเป็น English — ปุ่ม Google อาจยังแสดงภาษาไทยตามบัญชี Google ของผู้ใช้ (เป็นวิดเจ็ตของ Google)

การเลือกภาษาเก็บใน localStorage (user_language) และซิงก์เป็น cookie เพื่อให้ backend ตอบข้อความ/แคตตาล็อกภาษาเดียวกัน ค่าที่ไม่รู้จักจะถูกทำให้เป็นภาษาไทย

1.6การทดสอบการเชื่อมต่อ Backend

หน้าล็อกอินทดสอบการเชื่อมต่อ backend อัตโนมัติ หลังโหลดหน้าประมาณ 0.35 วินาที ผ่าน POST /api/backend/check ผลลัพธ์แสดงที่แถบสถานะมุมล่างซ้าย:

  • สำเร็จ — จุดเขียว + “เชื่อมต่อ Server สำเร็จ”
  • ล้มเหลว — แบนเนอร์แดงด้านบนการ์ด: “เชื่อมต่อ Backend ไม่ได้” พร้อม URL ที่ใช้ และลิงก์ “ไปตั้งค่า →” พาไป /settings

Backend URL ปัจจุบันถูกอนุมานจาก origin ของหน้า (runtimeGoApiUrlForOrigin) ผู้ใช้ปกติไม่ต้องตั้งค่าเอง — การแก้ URL ทำที่ “ศูนย์ตั้งค่าระบบ” เท่านั้น

account.bcaicloud.com
หน้าศูนย์ตั้งค่าระบบ
/settings — แสดงสถานะ Backend/Setup และฟอร์ม Backend URL + รหัสผ่าน Setup (จัดการโดยผู้ดูแลระบบ)

1.7บัญชี Demo (ชุดข้อมูลสาธิต)

ปุ่ม “ทดลองใช้ระบบ (Demo)” เรียก /api/auth/demo-login ซึ่งขอ token จาก backend /demo-login — การเปิดใช้ถูกควบคุมด้วยตัวแปร BCAI_DEMO_LOGIN_ENABLED ฝั่ง backend ทำให้องค์กรที่ไม่ต้องการสามารถปิดได้

สถานการณ์ข้อความที่ผู้ใช้เห็น (จากโค้ด)
ปิด Demo / backend ไม่พร้อม“Demo ยังไม่พร้อมใช้งาน” (503)
เซิร์ฟเวอร์นั้นไม่มีบัญชี Demo“ระบบนี้ไม่ได้เปิดบัญชี Demo” (404)
เกินเวลา 15 วินาที“Server ไม่ตอบกลับทันเวลา” (504)
เชื่อมต่อไม่ได้“ไม่สามารถเชื่อมต่อ Server ได้”
ตอบกลับไม่ครบ token“Server ตอบกลับไม่ครบ” (502)

ชุดข้อมูลสาธิตที่พบในเซิร์ฟเวอร์สาธิต: กลุ่มกิจการ “รุ่งเรือง (สาธิต)” รหัส demo — ผู้ใช้ชื่อ demo บทบาท “เจ้าของ” เข้าถึง 3 บริษัท 4 สาขา: บริษัท รุ่งเรืองวัสดุก่อสร้าง จำกัด (C01), บริษัท หอมกรุ่น คอฟฟี่ แอนด์ เบเกอรี่ จำกัด (C02), ห้างหุ้นส่วนจำกัด รุ่งเรืองการค้า (C03)

ควรระวัง
บัญชี Demo เป็นบัญชีร่วม (shared) ทุกคนที่กดปุ่มเข้าชุดเดียวกัน — ห้ามใส่ข้อมูลจริงของกิจการ และอย่าใช้ฝึกข้อมูลที่เป็นความลับทางการค้า

1.8ข้อมูลที่เก็บในเครื่องผู้ใช้ (localStorage)

คีย์ความหมายพฤติกรรม
user_languageภาษาที่เลือกเขียนทุกครั้งที่เปลี่ยนภาษา
saved_usernameชื่อผู้ใช้เก็บเฉพาะเมื่อติ๊ก “จำชื่อผู้ใช้” ตอนล็อกอินสำเร็จ; ไม่ติ๊ก → ลบ
saved_holdingcodeรหัสกลุ่มกิจการเก็บเสมอเมื่อล็อกอินพร้อมรหัสกลุ่มกิจการ (ไม่ผูกกับ checkbox)
remember_usernameสถานะ checkbox“true”/“false”
saved_password, remember_password, backend_url, backend_url_history (คีย์เก่า)คีย์สมัยก่อนถูกลบทิ้งอัตโนมัติทุกครั้งที่โหลดหน้าล็อกอิน (ยุคล้าสมัย — ไม่ใช้แล้ว)

session หลังล็อกอิน (token, ชื่อผู้ใช้, method, โปรไฟล์, holdingcode) บริหารโดยโมดูล client-auth-session.ts ส่วน refresh token อยู่ใน HttpOnly cookie ซึ่ง JavaScript ของหน้าเว็บอ่านไม่ได้

1.9บัญชีข้อความผิดพลาด (Error Catalog)

ข้อความที่แสดงความหมาย / สาเหตุแนวทางจัดการ
กรุณากรอกชื่อผู้ใช้ช่องชื่อผู้ใช้ว่างกรอกให้ครบก่อนกดเข้าสู่ระบบ
กรุณากรอกรหัสผ่านช่องรหัสผ่านว่างกรอกให้ครบก่อนกดเข้าสู่ระบบ
holdingcode ต้องใช้ a-z และ 0-9 เท่านั้น ยาว 3-30 ตัว และขึ้นต้นด้วย a-z ห้ามใช้ _ หรือสัญลักษณ์รูปแบบรหัสกลุ่มกิจการไม่ผ่าน patternตรวจรหัส: ตัวพิมพ์เล็ก+ตัวเลข ขึ้นต้นตัวอักษร ยาว 3-30
รูปแบบรหัสกลุ่มกิจการไม่ถูกต้องกรอกรหัสมาแต่ normalize แล้วว่าง (เช่น มีแต่ช่องว่าง/สัญลักษณ์)ล้างช่องแล้วพิมพ์ใหม่
เข้าสู่ระบบไม่สำเร็จ (loginFailed)backend ตอบ “login failed / username or password is invalid” — ชื่อผู้ใช้หรือรหัสผ่านผิด, หรือผู้ใช้ไม่ได้เปิดใช้ตรวจรหัสกลุ่มกิจการ-ชื่อผู้ใช้-รหัสผ่าน; ถ้าถูกต้องแล้วให้ผู้ดูแลตรวจสถานะผู้ใช้/รีเซ็ตรหัสผ่าน
รูปแบบข้อมูลไม่ถูกต้อง (400)คำขอไป server ไม่ใช่ JSON ที่ถูกต้องรีเฟรชหน้า (F5) แล้วลองใหม่ — พบได้ยาก
Backend URL ไม่ถูกต้องBackend URL ที่อนุมาน/ตั้งไว้ใช้ไม่ได้เปิด /settings ตรวจ URL แล้วกด “ทดสอบ”
เชื่อมต่อ Backend ไม่ได้ (แบนเนอร์)ทดสอบการเชื่อมต่ออัตโนมัติล้มเหลวตรวจอินเทอร์เน็ต → F5 → ยังไม่หายให้ผู้ดูแลตรวจสถานะเซิร์ฟเวอร์
หมายเหตุ
ข้อความล้มเหลวจาก backend จะถูกแปลเป็นภาษาที่ผู้ใช้เลือก ยกเว้นข้อความสากล (login failed / username or password is invalid) จะแสดงเป็นคำว่า “เข้าสู่ระบบไม่สำเร็จ” แทน

1.10ความปลอดภัยและแนวปฏิบัติผู้ดูแล

  • ไม่เก็บรหัสผ่านบนเครื่องผู้ใช้ — โค้ดปัจจุบันลบคีย์ saved_password เดิมทิ้งทุกครั้งที่เปิดหน้าล็อกอิน
  • Refresh token เป็น HttpOnly cookie — ป้องกัน JavaScript อ่าน (ลดความเสี่ยง XSS)
  • Google Sign-In ใช้โหมด popup + ตรวจ credential ฝั่ง server (/api/auth/google/verify) ไม่เชื่อถือข้อมูลจาก client ตรง ๆ
  • ตรวจสอบซ้ำสองชั้น — client และ Next.js API route ตรวจ format ก่อนส่งต่อ backend เสมอ
  • มีชุดทดสอบความปลอดภัยเฉพาะหน้าจอlogin-screen.security.test.ts และ holding-screen.security.test.ts
  • สิ่งที่ผู้ดูแลควรสื่อสารกับทีม: ห้ามแชร์บัญชี, ใช้คอมร่วมให้ “ออกจากระบบ” ทุกครั้ง, และรหัสกลุ่มกิจการถือเป็นข้อมูลกึ่งเปิดเผย (ยังต้องมีชื่อผู้ใช้+รหัสผ่านจึงเข้าได้)
ข้อกำหนดเชิงบัญชี (แนวปฏิบัติ)
การควบคุมการเข้าถึงตามหน้าที่ (ผู้บันทึก/ผู้อนุมัติ) เป็นส่วนหนึ่งของการควบคุมภายในที่ดี ตามแนวคิด COSO ที่ผู้สอบบัญชีอ้างอิง — ผู้ดูแลควรตั้งสิทธิ์ผู้ใช้ให้ตรงหน้าที่จริง (ดูบทที่ 3 ผู้ใช้ บทบาท และสิทธิ์) และเก็บหลักฐานการมอบ-เพิกถอนสิทธิ์ไว้ตรวจสอบย้อนหลังได้

1.11มุมมองการใช้งานตามบทบาท

มุมมองผู้ดูแลระบบ
  • ควบคุมการเปิด/ปิด Demo ผ่านตัวแปร BCAI_DEMO_LOGIN_ENABLED ที่ backend — ปิดได้ถ้าไม่ต้องการให้พนักงานเข้าชุดข้อมูลสาธิต
  • จัดการ Google Login ผ่าน NEXT_PUBLIC_GOOGLE_CLIENT_ID — ถ้าไม่ได้ตั้งค่า ปุ่ม Google จะไม่ถูกวาดออกมา
  • ยืนยันตัวตนใช้ Bearer token + refresh token ใน HttpOnly cookie; session ผูกกับ Backend URL ปัจจุบันของหน้า
  • ศูนย์ตั้งค่าระบบ (/settings) เก็บ Backend URL และรหัสผ่าน Setup — เข้าถึงได้โดยไม่ต้องล็อกอิน ควรจำกัดให้เฉพาะผู้ดูแล
มุมมองนักบัญชี
  • การเลือก “กลุ่มกิจการ/บริษัท/สาขา” หลังล็อกอินคือการเลือกขอบเขตข้อมูลบัญชี — บันทึกผิดบริษัทแล้วต้องยกเลิกและลงใหม่ให้ถูกนิติบุคคล
  • โครงสร้างหลายบริษัทของระบบช่วยแยกบัญชีตามนิติบุคคล สอดคล้องการจัดทำงบการเงินรายนิติบุคคลตาม พ.ร.บ.การบัญชี พ.ศ. 2543
  • รหัสสาขา (เช่น 00000 สำนักงานใหญ่, 00001 สาขาลาดหลุมแก้ว) สัมพันธ์การแยกพื้นที่เสียภาษีสาขาตามประมวลรัษฎากร (ภ.พ.09) — ตั้งให้ตรงสาขาจดแจ้งจริง
  • ปุ่ม Demo เหมาะฝึกทีมบัญชีใหม่โดยไม่กระทบข้อมูลจริง
มุมมองผู้เชี่ยวชาญบัญชี
  • ออกแบบกลุ่มกิจการ = กลุ่มบริษัทเครือตาม TAS 1 (งบการเงินรวม) เมื่อมีความสัมพันธ์แม่-ลูก; ระบบรองรับหลายบริษัทในหนึ่งกลุ่ม
  • รหัสกลุ่มกิจการเปลี่ยนไม่ได้หลังสร้าง — ควรกำหนด naming convention ที่สอดคล้องโครงสร้างนิติบุคคลตั้งแต่ต้น
  • การแยกสาขาในระบบรองรับการจัดสรรรายได้/ค่าใช้จ่ายระหว่างสาขาเพื่องบภาษี ภ.ง.ด.50/51 ที่มีสาขา
  • สังเกตชุดข้อมูลสาธิต: กลุ่มเดียวมีทั้ง บจ. (C01, C02) และ หจ. (C03) — แนวทางตั้งกลุ่มเครือธุรกิจผสมได้จริง
มุมมองเจ้าของกิจการ
  • ตัวสร้างกลุ่มกิจการคือบัญชี Google แรกของกิจการ — ควรใช้อีเมลบริษัท ไม่ใช่อีเมลส่วนตัวที่คนเดียวถือไว้
  • รหัสกลุ่มกิจการคือ “ประตูแรก” ของการล็อกอินพนักงาน — หลุดไปถือว่าคนนอกรู้ชื่อ แต่ยังต้องมีชื่อผู้ใช้+รหัสผ่านจึงเข้าได้
  • ผู้เชียวชาญสามารถเพิ่มกลุ่มกิจการใหม่ได้เองจากหน้าเลือกกลุ่มกิจการ (ปุ่ม “เพิ่มกลุ่มกิจการ”) เช่น แยกกิจการใหม่ลองผิดลองถูก
มุมมองพนักงาน / ผู้ใช้ทั่วไป
  • ล็อกอินด้วยรหัสกลุ่มกิจการ+ชื่อผู้ใช้+รหัสผ่านคือวิธีประจำวัน — ระบบจำรหัสกลุ่มกิจการและ (ถ้าติ๊ก) ชื่อผู้ใช้ไว้ในเครื่อง
  • ระบบไม่เก็บรหัสผ่านในเครื่อง (localStorage) — ปลอดภัยแม้ใช้คอมร้านร่วมกัน แต่ควรกดออกจากระบบทุกครั้งที่เลิกงาน
  • ลืมรหัสผ่านติดต่อผู้ดูแลระบบของกิจการ — หน้าล็อกอินไม่มีปุ่มรีเซ็ตด้วยตนเอง