คู่มือการใช้งาน
Database Schema & Live Data Explorer
-
-
-
-
-
-
-
Live Sample Data LIVE
ตัวอย่างข้อมูลจริงจาก Firebase (กดโหลดข้อมูลเพื่อแสดง)
ตัวอย่าง User Document
กดปุ่ม "โหลด" หรือ "โหลดข้อมูล Live" เพื่อดูตัวอย่าง
ตัวอย่าง Job Document
กดปุ่ม "โหลด" เพื่อดูตัวอย่าง
ตัวอย่าง Approval Document
กดปุ่ม "โหลด" เพื่อดูตัวอย่าง
ตัวอย่าง Share Document
Data Sync & Schema ใหม่!
ระบบ Sync ข้อมูลอัตโนมัติ และโครงสร้างข้อมูล
การทำงานของระบบ Auto-Sync
1. บันทึกงาน
หรือจ่ายค่าแรง
2. Auto Calculate
คำนวณ summary
3. อัพเดท Realtime
เว็บ + LINE ตรงกัน
Data Flow
บันทึกงาน / จ่ายค่าแรง
│
▼
updateUserSummariesForTeam()
│
▼
┌───────────────────────────────┐
│ คำนวณจาก jobs collection │
│ - wage, adjustments │
│ - paid/pending status │
└───────────────────────────────┘
│
▼
┌───────────────────────────────┐
│ อัพเดท users/{odooId} │
│ - financialSummary │
│ - jobSummary │
└───────────────────────────────┘
│
▼
Firestore Realtime Listener
│
├──► หน้าเว็บแสดงข้อมูลใหม่
│
└──► LINE Bot อ่านข้อมูลใหม่
เหตุการณ์ที่ Trigger Auto-Sync
saveJobOnly()
บันทึกงาน → อัพเดท user ใน team
markAsPaid()
จ่ายค่าแรง → อัพเดท balance
syncUserLineData()
กดปุ่ม Sync → อัพเดททุกคน + earnings
Users Collection
users/{odooId} - ข้อมูลพนักงาน
financialSummary (Auto-Synced)
Realtimebalance
เงินสะสม (ที่จ่ายแล้ว)
ตัวอย่าง: 110095.98
pendingPayment
รอรับเงิน
ตัวอย่าง: 24500
totalEarned
รวมทั้งหมด (balance + pending)
totalWage
รวมค่าแรง (ไม่รวมปรับ)
totalAdjustments
รวมปรับเงิน (บวก/ลบ)
lastCalculatedAt
คำนวณล่าสุดเมื่อ (ISO)
jobSummary (Auto-Synced)
RealtimetotalJobs
งานทั้งหมด
activeJobs
งานปัจจุบัน
completedJobs
งานเสร็จแล้ว
unpaidJobs
งานรอจ่ายเงิน
todayJobs
งานวันนี้
upcomingJobs
งานที่จะมาใน 7 วัน
ข้อมูลพื้นฐาน
userid
รหัสพนักงาน (LDB001)
odooUserId
Odoo User ID (number)
displayName
ชื่อที่แสดง
nickname
ชื่อเล่น
firstName
ชื่อจริง
lastName
นามสกุล
citizenId
เลขบัตร 13 หลัก
phone
เบอร์โทร
email
อีเมล
lineUserId
LINE User ID
รูปโปรไฟล์
ระบบจะดึงรูปจาก field ตามลำดับความสำคัญ:
profilePic
รูปโปรไฟล์หลัก
ลำดับที่ 1
photoURL
รูปจาก Google Auth
ลำดับที่ 2
photoUrl
รูป URL ทั่วไป
ลำดับที่ 3
avatar
รูป Avatar
ลำดับที่ 4
imageUrl
รูปทั่วไป
ลำดับที่ 5
profilePicture
รูปโปรไฟล์ (alt)
ลำดับที่ 6
ข้อมูลบัญชีธนาคาร (bankAccount object)
bankAccount เป็น object ที่มี fields ดังนี้:
bankAccount.bank
ชื่อธนาคาร
เช่น: "KBANK", "SCB", "BBL"
bankAccount.number
เลขบัญชี
เช่น: "123-4-56789-0"
bankAccount.name
ชื่อบัญชี
เช่น: "นายสมชาย ใจดี"
โลโก้ธนาคาร (bank-logos collection)
โลโก้ธนาคารเก็บใน collection: bank-logos
KBANK
SCB
BBL
KTB
BAY
TTB
GSB
BAAC
Document Structure:
// bank-logos/{BANK_CODE}
{
logoUrl: "https://cloudinary.com/..."
}
หมายเหตุ: การดึงข้อมูลธนาคารต้องใช้ user.bankAccount.bank, user.bankAccount.number, user.bankAccount.name (ไม่ใช่ user.bankName หรือ user.bankAccount โดยตรง)
Jobs Collection
jobs/{jobId} - ข้อมูลงาน
Earnings Collection ใหม่!
earnings/{odooId} - สรุปรายได้
LINE LIFF Apps
หน้าเว็บในแอป LINE สำหรับ Freelancer
LINE Auto-Reply Variables
ตัวแปรที่ใช้ใน Template
Settings Collection
การตั้งค่าระบบ
Approvals Collection ใหม่!
approvals/{id} - ระบบอนุมัติจ่ายเงิน
Custom Labels Collection
customLabels/{id} - ป้ายกำกับรายการกำหนดเอง
Followers Collection
followers/{lineUserId} - ผู้ติดตาม LINE OA