สมอง BC

คลังความรู้ / ระบบงานในชุด BC

#systems#pos#overview#retail#offline-first

ระบบ POS ขายหน้าร้าน (BC Ai POS)

POS คือระบบขายหน้าร้านของ BC Ai Account: แคชเชียร์ยิงบาร์โค้ดหรือเลือกสินค้า รับเงิน ออกใบเสร็จ และบิลขายจะถูกส่งเข้าระบบบัญชีและสต็อกอัตโนมัติ จุดเด่นคือ ขายต่อได้แม้อินเทอร์เน็ตหลุด เพราะแอปเก็บสินค้า สมาชิก โปรโมชั่น และบิลไว้ในเครื่อง แล้วค่อยซิงก์ (ที่เก็บข้อมูลในเครื่อง POS ออฟไลน์ ObjectBox และ SharedPreferences (sys-pos-offline-storage))

ระบบนี้ประกอบด้วยอะไร

ส่วน ที่อยู่ในโค้ด หน้าที่ บันทึก
แอปแคชเชียร์ (Flutter) frontend/pos (แพ็กเกจ pos 1.0.0+1) จอขาย ชำระเงิน ใบเสร็จ กะ ซิงก์ ทำงานออฟไลน์ หน้านี้และ sys-pos-*
เปลือกเว็บ /pos frontend/src/app/pos/page.tsx ตรวจล็อกอิน/ฐานข้อมูล แล้วฝังแอปแคชเชียร์ (Flutter Web) ใน iframe พร้อมแถบสลับไปหน้าตั้งค่า พื้นที่ทำงาน POS จอขายแคชเชียร์ (PosDemoWorkspace, เส้นทาง /pos)
หน้าตั้งค่า POS บนเว็บ หน้าจอตั้งค่าและควบคุม POS กำหนดค่าเริ่มต้น เครื่อง POS โปรโมชั่น ออกรหัสเชื่อมเครื่อง ตั้งค่าและควบคุมระบบขายหน้าร้าน POS (PosSetupAndControlScreen) จอประมวลผลระบบและ POS (System Process Workbench & POS Setup)
พร็อกซี API ของเว็บ frontend/src/app/api/pos/[...path]/route.ts รับ /api/pos/* จากแอป แล้วส่งต่อไปหลังบ้าน /api/v1/pos/* การเชื่อมเครื่อง POS ด้วยรหัสเชื่อมเครื่อง ไม่มีหน้าล็อกอิน (sys-pos-device-pairing)
หลังบ้าน (Go) backend/internal/adapter/inbound/http/pos, backend/internal/application/process/pos_sync.go รับบิล ดึง-ส่งส่วนต่าง กู้คืน รูปใบเสร็จ ลงบัญชี/สต็อก API จุดขาย POS (POS endpoints /api/v1/pos) POS Sync API: เครื่อง POS เชื่อมกับ Account (POS device sync) POS รับบิลขายจากเครื่องแคชเชียร์ กล่องรับบิล/ประมวลผล/ยกเลิก/ตัดสต็อกเป็นชุด (POS Bill Inbox) POS ซิงก์ข้อมูลเครื่องแคชเชียร์ ผูกเครื่อง/ดึงส่วนต่าง/กู้คืน/รูปภาพ (POS Device Sync) POS ตั้งค่าร้าน/เครื่อง/โปรโมชัน และกะขาย รับ-ส่งเงิน (POS Config and Shift)

เส้นทางหลังบ้านแบ่งสองกลุ่ม: กลุ่มที่เครื่อง POS เรียก (ดึงข้อมูล กู้คืน ส่งบิล ส่งรูป) และกลุ่มที่ผู้ใช้เว็บเรียก (ข้อมูลตั้งต้น บันทึกค่า รายชื่อเครื่อง ผูกเครื่อง ประมวลผลบิลค้างซ้ำ) ส่วนรับ-ส่งเงินกะและรูปสินค้ารับได้ทั้งสองแบบ (router.go:329-345)

เปิดใช้อย่างไร

  1. บนเว็บ: ไปที่ /pos ระบบพาไปล็อกอินและเลือกฐานข้อมูลก่อน จากนั้นแสดงจอแคชเชียร์ (page.tsx:11-15) แอปเว็บเชื่อมระบบด้วยเซสชันที่ล็อกอินอยู่ ไม่ต้องวางรหัสเครื่อง
  2. บน Windows: เรียกไฟล์ frontend/pos/run-pos-windows.bat หรือ run-pos.ps1 ซึ่งเปิด pos.exe จากโฟลเดอร์ build แบบ Release ถ้าไม่มีใช้แบบ Debug (run-pos-windows.bat:4-8, run-pos.ps1:2-5) ต้องสร้าง (build) แอปไว้ก่อน
  3. บนมือถือ: โปรเจกต์มีโฟลเดอร์ Android และ iOS แอปปรับสีแถบระบบเมื่อรันบนสองแพลตฟอร์มนี้ (main.dart:13-21)
  4. แอป Windows/มือถือไม่มีหน้าล็อกอิน ต้องวาง "รหัสเชื่อมเครื่อง" ที่ผู้ดูแลออกให้ และกรอกที่อยู่เว็บ BC Ai Account (การเชื่อมเครื่อง POS ด้วยรหัสเชื่อมเครื่อง ไม่มีหน้าล็อกอิน (sys-pos-device-pairing), ค่าเครื่อง POS ที่ซิงก์มา และการตั้งค่าในเครื่อง (sys-pos-app-config))

วงจรการขายหนึ่งบิล

  1. ยิงบาร์โค้ด/ค้นหา/แตะสินค้า → ใส่ตะกร้า ระบบคำนวณราคาตามระดับราคาและสมาชิก และโปรโมชั่น (ขั้นตอนขายสินค้าที่จอแคชเชียร์ ตั้งแต่ยิงบาร์โค้ดถึงปิดบิล (sys-pos-sale-flow), ระบบคำนวณโปรโมชั่นในแอป POS 10 ประเภท (sys-pos-promotion-engine))
  2. ชำระเงิน: เงินสด พร้อมเพย์ QR โอน หรือบัตร (การชำระเงินที่จอ POS: เงินสด พร้อมเพย์ QR โอน บัตร (sys-pos-payment-types))
  3. แอปออกเลขที่บิลในเครื่อง เก็บบิลลงคิว แล้วแสดงใบเสร็จ (ใบเสร็จ POS การพิมพ์ซ้ำ และการอัปโหลดรูปสลิป (sys-pos-receipt-printing))
  4. ซิงก์ส่งบิลขึ้นเซิร์ฟเวอร์ตามลำดับ ส่งซ้ำได้โดยไม่เกิดบิลซ้ำ (การซิงก์ฝั่งแอป POS ส่งบิลขึ้น ดึงข้อมูลลง และลองใหม่ (sys-pos-sync-client))
  5. หลังบ้านรับบิล ตัดสต็อกและลงบัญชี (POS รับบิลขายจากเครื่องแคชเชียร์ กล่องรับบิล/ประมวลผล/ยกเลิก/ตัดสต็อกเป็นชุด (POS Bill Inbox), บิลขาย POS เข้าบัญชีและตัดสต็อกอย่างไร)
  6. ต้นกะ/ท้ายกะ บันทึกรับเงินทอนและนำส่งเงิน ดูประวัติ พิมพ์ซ้ำ และยกเลิกบิล (กะแคชเชียร์ รับ-ส่งเงิน ยกเลิกบิล และกู้คืนข้อมูลเครื่อง POS (sys-pos-shift-cash))

แผนที่บันทึกของระบบ POS

ฝั่งแอปแคชเชียร์ (หมวดนี้)

ฝั่งเว็บและหลังบ้าน (บันทึกเดิม): พื้นที่ทำงาน POS จอขายแคชเชียร์ (PosDemoWorkspace, เส้นทาง /pos) · ตั้งค่าและควบคุมระบบขายหน้าร้าน POS (PosSetupAndControlScreen) · จอประมวลผลระบบและ POS (System Process Workbench & POS Setup) · API จุดขาย POS (POS endpoints /api/v1/pos) · POS Sync API: เครื่อง POS เชื่อมกับ Account (POS device sync) · POS รับบิลขายจากเครื่องแคชเชียร์ กล่องรับบิล/ประมวลผล/ยกเลิก/ตัดสต็อกเป็นชุด (POS Bill Inbox) · POS ตั้งค่าร้าน/เครื่อง/โปรโมชัน และกะขาย รับ-ส่งเงิน (POS Config and Shift) · POS ซิงก์ข้อมูลเครื่องแคชเชียร์ ผูกเครื่อง/ดึงส่วนต่าง/กู้คืน/รูปภาพ (POS Device Sync) · บิลขาย POS เข้าบัญชีและตัดสต็อกอย่างไร ภาพรวมกว้าง: สารบัญหน้าจอทั้งหมดของ BC Ai Account (ต้นไม้เมนู → หน้าจอ → โน้ต) · โครงหน้าเว็บและการนำทาง (App shell & routing) · ภาพรวมแค็ตตาล็อก API (API overview — วงจรคำขอ middleware รูปแบบ response และดัชนี)

ตอบเร็วเรื่องที่ถามบ่อย

ที่มาในโค้ด