ระบบบัญชีรับ–จ่าย–แลกเปลี่ยนเงินบาท (THB) และ USDT สำหรับทีมงานภายใน ออกแบบสำหรับ มือถือเป็นหลัก (ติดตั้งเป็นแอปผ่าน "เพิ่มไปยังหน้าจอโฮม" ได้)
📊 ดูแผนภาพระบบแบบอินเทอร์แอกทีฟ: jbac-bank-architecture.html
| บทบาท | บัญชีตัวอย่าง | ทำอะไรได้ |
|---|---|---|
| เจ้าของ (OWNER) | admin@jbac.work |
ทุกอย่าง: อนุมัติ · เพิ่ม/ลบบัญชี · เพิ่ม/แก้ไข/ลบผู้ใช้ · รีเซ็ตรหัสและลายเส้น · ดู audit |
| การเงิน (FINANCE) | account@jbac.work |
สร้าง/ส่งอนุมัติรายการ · ขอกลับรายการ · เพิ่ม/ลบบัญชี · ออกรายงาน · แนบหลักฐาน |
| ผู้ตรวจสอบ (VIEWER) | audit@jbac.work |
อ่านภาพรวม/ประวัติ/รายงาน และ audit log — สร้างหรือแก้ไขไม่ได้ |
ระบบตรวจสิทธิ์ที่เซิร์ฟเวอร์ทุกคำขอ (ไม่ใช่แค่ซ่อนปุ่มในหน้าจอ)

▲ หน้าเข้าสู่ระบบ — กรอกอีเมลและรหัสผ่านเริ่มต้น

▲ ตั้งลายเส้น 9 จุด — วาดสองครั้งให้ตรงกัน
เมื่อตั้งรหัสผ่านและลายเส้นเสร็จ ระบบจะแสดงป๊อปอัปให้บันทึกแอปลงหน้าจอโฮม (แสดงครั้งเดียวต่อเครื่อง และไม่แสดงถ้าเปิดจากแอปที่ติดตั้งแล้ว)

▲ ป๊อปอัป "บันทึกแอปลงหน้าจอมือถือ" — บอกวิธีตามแพลตฟอร์ม พร้อมปุ่มคัดลอกลิงก์
เปิดป๊อปอัปนี้อีกครั้งได้ที่ ตั้งค่า → แอปบนมือถือ → บันทึกแอปลงหน้าจอโฮม
/login → กรอกอีเมล + รหัสผ่านเริ่มต้น admin@pass2026ระหว่างที่ยังไม่เปลี่ยนรหัส ระบบจะไม่ยอมให้เข้าใช้งานหน้าอื่น (เด้งกลับหน้าล็อกอิน)

▲ หน้าปลดล็อกด้วยลายเส้น พร้อมทางออกกรณีลืม

▲ แถบเมนูล่าง 5 ปุ่ม — ปุ่มที่ใช้งานอยู่ไฮไลต์สีฟ้า
| เมนู (มือถือ) | หน้า | ใช้ทำอะไร |
|---|---|---|
| หน้าหลัก | / |
ดูยอดคงเหลือ สรุปวันนี้ กราฟ 7 วัน รายการล่าสุด |
| ทำรายการ | /transactions/new |
บันทึกรับเงิน / แลกเงิน / จ่ายออก |
| รายงาน | /reports |
รายวัน · รายเดือน · รายปี |
| ผู้ใช้งาน | /members |
ดูสมาชิก (เจ้าของจัดการได้) |
| ตั้งค่า | /settings |
ข้อมูล workspace นโยบาย เซสชัน |
บนเดสก์ท็อปมีแถบด้านข้างเพิ่ม ประวัติ, รออนุมัติ, บัญชี และเมนู ☰ เปิดรายการทั้งหมด

▲ ภาพรวม: การ์ดยอดเงิน · ปุ่มลัด · สรุปรายวัน · กราฟ 7 วัน

▲ หน้าทำรายการ: การ์ดเลือกประเภท · ช่องจำนวนเงิน · ปุ่มบันทึกติดล่าง
เลือกประเภทจาก 3 การ์ด: รับเงิน (THB) · แลกเงิน THB→USDT · จ่ายออก (THB/USDT)
วันที่ทำรายการ (ปฏิทิน) · เลขอ้างอิง (ไม่บังคับ, ≤120 ตัวอักษร) · หมายเหตุ (≤2000) · หลักฐานแนบ
บัญชีรับเงิน · จำนวนเงิน (จำนวนเต็ม)
สกุลเงินที่จ่าย · บัญชีต้นทาง · ยอดจ่าย · ค่าธรรมเนียม ระบบแสดง ยอดตัดจากบัญชี = เงินต้น + ค่าธรรมเนียม ให้เห็นก่อนบันทึก
| ฟิลด์ | คำอธิบาย |
|---|---|
| บัญชีต้นทาง / ปลายทาง | ต้องเป็นคนละบัญชี |
| รูปแบบค่าธรรมเนียม | เพิ่มจากเงินแลก (จ่ายเพิ่ม) หรือ รวมอยู่ในยอดเงินบาท (หักจากยอด) |
| ยอดเงินบาทที่กรอก | ตามรูปแบบค่าธรรมเนียมที่เลือก |
| เรท (THB ต่อ 1 USDT) | ใส่ทศนิยมได้ (เช่น 33.50) |
| USDT สุทธิที่ได้รับจริง | ยืนยันจากหลักฐานจริง — กด "ใช้ค่าประมาณ" เพื่อเติมค่าคำนวณได้ |
| คู่ค้า | บังคับ |
สูตรที่ระบบใช้
รูปแบบ ADDITIONAL : เงินต้น = ยอดที่กรอก, ตัดบัญชี = เงินต้น + ค่าธรรมเนียม
รูปแบบ INCLUDED_IN_TOTAL: เงินต้น = ยอดที่กรอก − ค่าธรรมเนียม
ประมาณการ USDT = floor(เงินต้น ÷ เรท)
เรทจริง (implied) = เงินต้น ÷ (USDT สุทธิ + ค่าธรรมเนียม USDT)
ตัวอย่าง: แลก 300,000 บาท ค่าธรรมเนียม 500 เรท 33.50 (แบบเพิ่มค่าธรรมเนียม) → ตัดบัญชี 300,500 บาท, ได้ประมาณ 8,955 USDT (ปัดลง)

▲ คิวอนุมัติ: ตรวจรายละเอียดก่อนกดอนุมัติหรือตีกลับ

▲ รายงานรายเดือน: เลือกเดือน · สรุป 4 ตัวเลข · คงเหลือสิ้นเดือน
| แท็บ | เนื้อหา |
|---|---|
| รายเดือน (ค่าเริ่มต้น) | เลือกปี + 12 ปุ่มเดือน · สรุป 4 ช่อง (รับเข้า THB / แลกเป็น USDT / จ่ายออก THB / จ่ายออก USDT) · ยอดคงเหลือสิ้นเดือน · ตารางรายวัน |
| รายวัน | เลือกวันที่ → ยอดยกมา/รับ/จ่าย/ยกไป ต่อบัญชี + ยอดรวมต่อสกุล |
| รายปี | เคลื่อนไหวสุทธิ 12 เดือน แยกสกุลเงิน |
รายงานอ่านจาก รายการที่บันทึกแล้วเท่านั้น และอ้างอิง ledger เดียวกันกับหน้าภาพรวม

▲ หน้าบัญชี: เพิ่มเลขบัญชีและดูลยอดรายบัญชี
KBANK •••• 4821) · ยอดยกมา (จำนวนเต็ม) · วันที่ยอดยกมา
▲ หน้าผู้ใช้งาน: สรุปตามบทบาท · การ์ดสมาชิก · ปุ่มจัดการ
เฉพาะ เจ้าของ จัดการได้ (คนอื่นเห็นแบบอ่านอย่างเดียว)
admin@pass2026)
ผู้ใช้ใหม่จะถูกบังคับเปลี่ยนรหัสและตั้งลายเส้นในการเข้าครั้งแรก| กฎ | ผลกับผู้ใช้ |
|---|---|
| เงินเป็น จำนวนเต็ม (ไม่ใส่ทศนิยม) | กรอกทศนิยมจะถูกปฏิเสธ — เรทเป็นข้อยกเว้น ใส่ทศนิยมได้ |
| ต้องมีผู้อนุมัติที่ไม่ใช่ผู้สร้าง | อนุมัติเองไม่ได้ |
| ห้ามยอดติดลบทุกวัน | บันทึกย้อนหลังที่ทำให้ยอดติดลบจะถูกปฏิเสธ |
| ledger แก้ไขย้อนหลังไม่ได้ | ต้อง "กลับรายการ" (reversal) แทน |
| งวดที่ปิดแล้วลงย้อนหลังไม่ได้ | ระบบแจ้งว่างวดปิด |
| หลักฐาน ≤ 5 MB, รูป/PDF | ไฟล์อื่นถูกปฏิเสธ |
| ผิดลายเส้น 3 ครั้ง | กลับไปล็อกอินด้วยอีเมล |
คำสั่งที่ใช้บ่อย
npm run dev # พัฒนา
npm run build && npm start
npm run check # type-check + unit + integration
npm run check:http # ทดสอบ HTTP กับเซิร์ฟเวอร์ที่รันอยู่
Endpoint หลัก (/api/v1): auth/login, auth/pattern, auth/pattern-login,
auth/change-password, bootstrap, transactions, members, accounts,
attachments, reports, audit, health
ข้อมูลตัวอย่างที่ติดตั้งมาพร้อมระบบ
| รายการ | ค่า |
|---|---|
| บัญชี THB | กระเป๋าหลัก 250,000 · บัญชีสำรอง 120,000 |
| แลกไปแล้ว | 300,000 THB → 8,955.22388059 USDT (เรท 33.50) |
| ยอดคงเหลือตัวอย่าง | THB 524,350 · USDT 6,954 |
เอกสารนี้สรุปจากโค้ดจริงในรีโป (API, ledger, RBAC, หน้าจอ) ณ วันที่ปรับปรุงล่าสุด
ภาพทั้งหมดจับจากแอปจริง (มือถือ 390×844, DPR 2) แล้ววาดลูกศรชี้ด้วยสคริปต์
# ต้องมี dev server รันอยู่ที่ http://127.0.0.1:3000
python scripts/shoot-manual.py
ไฟล์ภาพอยู่ใน docs/shots/ (annotated) และ docs/shots/raw/ (ภาพดิบ)