Flow: ตั้งค่าระบบหลังบ้าน — Super Admin → กิจการ → พนักงาน
กระบวนการก่อนร้าน/ลูกค้าจะใช้งานได้ : Super Admin สร้างกิจการ(บ้าน) + นายทุน, ตั้ง LINE OA (นอกระบบ), สร้างพนักงาน + กำหนดสิทธิ์/บ้าน อ้างอิงตาราง: 01-org-access.md วันที่: 16 มิ.ย. 2026
Actors & ลำดับชั้น
flowchart TD SA[SUPER_ADMIN<br/>สร้างบ้าน+พนักงาน · เข้าทุกบ้าน] -->|สร้าง| BIZ[กิจการ/บ้าน<br/>org.businesses] SA -->|สร้าง| ST[พนักงาน<br/>staff.users role=ADMIN] BIZ -->|มี| INV[นายทุน<br/>org.investors] ST -.กำหนดบ้าน.-> BIZ ADM[ADMIN<br/>ผู้ดูแลกิจการ] -->|ดูแล| BIZ ST -.role.-> ADM
| Actor | login | บทบาท |
|---|---|---|
| SUPER_ADMIN | เบอร์+รหัส | สร้างกิจการ, สร้างพนักงาน, เข้าได้ทุกบ้าน (seed/พิเศษ) |
| ADMIN | เบอร์+รหัส | ผู้ดูแลกิจการ — ต้องถูกกำหนดบ้าน + สิทธิ์ก่อน |
| INVESTOR (นายทุน) | เบอร์+รหัส+OTP | ดู dashboard ผลตอบแทน (AF) |
⚠️ Prerequisite นอกระบบ — สร้าง LINE OA (ผู้ดูแลทำเอง)
ก่อน/ระหว่างสร้างกิจการ ผู้ดูแลต้องไปตั้งค่าที่ LINE (นอกระบบ) แล้วนำค่ามากรอก:
| LINE OA | ใช้ทำอะไร | ค่าที่ต้องเอามากรอก (org.businesses) |
|---|---|---|
| OA ฝั่งร้านค้า | สื่อสาร/แจ้งเตือนร้าน | shop_line_messaging_token + facebook_link/facebook_qr_file_id |
| OA ฝั่งลูกค้า | LINE Login + แจ้งเตือนลูกค้า | line_oa_link, line_oa_qr_file_id, line_login_channel_id, line_login_channel_secret, customer_line_messaging_token |
ระบบไม่ได้สร้าง LINE OA ให้ — เก็บแค่ config (token/channel id/secret) ที่กรอกเข้ามา
ตั้งค่ารูปภาพ Portal หลัก (ระดับระบบ)
Super Admin ตั้งรูป หน้าปก + โลโก้ ของ Portal เข้าสู่ระบบ (หน้าก่อนเลือกบ้าน) — node 2442:426800
- หน้าปก 1440×1024 + โลโก้ 720×720 →
sys.portal_settings(singleton 1 row) ·cover_file_id/logo_file_id→sys.r2_file(public) - ต่างจากโลโก้/หน้าปก “ของกิจการ” (ระดับบ้าน) ที่อยู่ใน
org.businesses
Flow A — สร้างกิจการ (บ้าน) + นายทุน
flowchart TD A([Super Admin login]) --> B[หน้าเลือก/จัดการกิจการ] B --> C[กดเพิ่มกิจการใหม่] C --> D[กรอกข้อมูลกิจการ<br/>ชื่อ·โลโก้·VAT·ที่อยู่คืนเครื่อง] D --> E[กรอก config LINE/Facebook<br/>token·channel id·secret·QR] E --> F[เพิ่มนายทุน 0..n<br/>ชื่อ·อีเมล·เบอร์·เงินลงทุน·รหัสผ่าน] F --> G{ยืนยัน} G --> H[ระบบสร้าง:<br/>org.businesses + org.investors] H --> I([กิจการพร้อมใช้งาน])
| Step | ตาราง/คอลัมน์ | หมายเหตุ |
|---|---|---|
| ข้อมูลกิจการ + LINE config | org.businesses (node 2957:413689) | ชื่อบ้าน unique · ไม่ลบ/ไม่ปิด |
| นายทุน | org.investors (node 1858:309897) | ผูก 1 บ้าน · ลบถาวรได้ |
| โลโก้/QR | *_file_id → sys.r2_file (is_public=true) |
Flow B — สร้างพนักงาน + สิทธิ์ + เข้าบ้าน + เปิด/ปิด + login ครั้งแรก
flowchart TD A([Super Admin]) --> B[สร้างพนักงาน<br/>รูป·เบอร์·ชื่อ·รหัสผ่าน] B --> C[ระบบสร้าง staff.users<br/>role=ADMIN · must_change_password=true<br/>ยังไม่ผูกบ้าน/ไม่มีสิทธิ์] C --> D[กำหนดบ้านที่เข้าถึง] D --> E[(staff.user_businesses M:N)] C --> F[กำหนดสิทธิ์ feature] F --> G[(staff.user_permissions M:N)] C --> H[เปิด/ปิดใช้งาน → is_active] C --> I[ลบ soft → is_deleted] E --> J([พนักงานพร้อมใช้งาน]) G --> J J --> K[พนักงาน login ครั้งแรก] K --> L{must_change_password?} L -- true --> M[บังคับตั้งรหัสใหม่ → set false] L -- false --> N([เข้าใช้งานปกติ]) M --> N
| Step | ตาราง/คอลัมน์ | หมายเหตุ |
|---|---|---|
| สร้างพนักงาน | staff.users (node 1855:237840) | display_name, ไม่มี email, profile optional, must_change_password=true |
| กำหนดบ้าน (เข้าบ้าน) | staff.user_businesses (node 2581:364525) | เข้าได้หลายบ้าน · SUPER_ADMIN ทุกบ้าน |
| กำหนดสิทธิ์ | staff.user_permissions (node 592:115505) | per-user ทั้งระบบ |
| เปิด/ปิดใช้งาน | staff.users.is_active | |
| ลบ (เก็บข้อมูล) | staff.users.is_deleted | soft delete |
| ตั้งรหัสครั้งแรก | staff.users.must_change_password | true ตอนสร้าง → false หลังเปลี่ยน |
Flow — นายทุน (Investor) login & เปลี่ยนเบอร์/รหัส
flowchart TD A([นายทุน: กรอกเบอร์+รหัส]) --> B{is_phone_verified?} B -- false ครั้งแรก --> C[ยืนยัน OTP] C --> D[set is_phone_verified=true] D --> E([เข้าระบบ - dashboard]) B -- true --> E E --> F[เปลี่ยนเบอร์] --> G[OTP ยืนยันเบอร์ใหม่] --> H[เปลี่ยน + re-login] E --> I[เปลี่ยนรหัส] --> J[re-login]
- login ครั้งแรก → OTP (set
org.investors.is_phone_verified=true) · ครั้งถัดไปใช้ เบอร์+รหัส (ไม่ต้อง OTP) — node 1969:237499 - เปลี่ยนเบอร์ → OTP ยืนยันเบอร์ใหม่ → สำเร็จจึงเปลี่ยน → re-login · เปลี่ยนรหัส → re-login
- OTP = Redis (ephemeral) · re-login = invalidate session (app layer)
หมายเหตุสำคัญ (business logic)
- พนักงานสร้างเสร็จยังใช้ไม่ได้ทันที — ต้องกำหนด “บ้านที่เข้าถึง” + “สิทธิ์” แยกขั้นตอน (2 ฟอร์ม)
- login ครั้งแรก →
must_change_password=trueบังคับตั้งรหัสใหม่ก่อนใช้งาน - SUPER_ADMIN มาจาก seed/พิเศษ (ฟอร์มสร้างพนักงานไม่เลือก role → default ADMIN) [?]
- LINE OA สร้างนอกระบบ — ระบบเก็บแค่ token/channel config
- เปลี่ยนข้อมูล login (SH10-style) → บังคับ logout เข้าใหม่ (ฝั่ง staff/shop)