Shopping Cart
เจาะลึกระบบจัดการตะกร้าสินค้าแบบอะตอมมิก ที่เชื่อมโยงระหว่าง Framework ต่างชนิด (Astro & React) ผ่านระบบ Global Event และการเก็บสถานะแบบ Persistent
Cart Architecture Modules
6 Complex State Modules1. Nanostores Persistent State
ระบบจัดการสถานะสินค้าในตะกร้าแบบถาวร
Local Persistence
ใช้ persistentAtom จาก Nanostores เพื่อเก็บข้อมูลไว้ใน Local Storage ทำให้ข้อมูลไม่หายเมื่อรีเฟรชหรือปิดเบราว์เซอร์
Atomic Updates
ใช้โครงสร้างข้อมูลแบบอะตอมมิกช่วยให้ทุกส่วนของเว็บไซต์ที่เรียกใช้ตะกร้าได้รับข้อมูลล่าสุดในทันที
Automatic Sync
ระบบ Encode/Decode ข้อมูลเป็น JSON อัตโนมัติเมื่อมีการเปลี่ยนแปลงค่าใน Store
2. Dynamic Pricing & Totals
ระบบคำนวณราคาสุทธิและหน่วย Bitcoin
Multi-Currency Calculation
คำนวณราคารวมในหน่วยบาท (THB) และแปลงเป็นหน่วยซาโตชิ (Sats) แบบเรียลไทม์
Quantity Logic
ระบบรวมจำนวนสินค้าแบบแยกตาม SKU เพื่อแสดงราคารวมที่ถูกต้องในแต่ละรายการ
Sats Conversion
ใช้อัลกอริทึมพื้นฐานในการประเมินมูลค่าบิตคอยน์เบื้องต้นเพื่อให้ผู้ใช้เห็นความคุ้มค่า
3. Global Event Bridge
ระบบสื่อสารระหว่าง Astro และ React
cart-updated Event
ส่งสัญญาณ CustomEvent ไปทั่วเว็บเมื่อมีการเพิ่มหรือลบสินค้า เพื่ออัปเดต Badge บน Navbar
toggle-cart Signal
ระบบรับ-ส่งคำสั่งเปิด/ปิดลิ้นชักตะกร้าข้าม Component (เช่น จากหน้า Product Detail ไปที่ CartDrawer)
Bubbling System
ใช้หลักการ Event Bubbling เพื่อให้ Element ชั้นบนสามารถดักฟังและสั่งงานตะกร้าได้จากทุกจุด
4. Interactive Cart Drawer
อินเทอร์เฟซลิ้นชักตะกร้าสินค้าแบบพรีเมียม
Sliding Panel
ดีไซน์แผงเลื่อนด้านข้างที่ประหยัดพื้นที่และไม่รบกวนการเลือกชมสินค้าในหน้าหลัก
Micro-Interactions
ปุ่มบวก-ลบจำนวนสินค้าและการลบรายการที่ทำงานได้ทันทีโดยไม่ต้องโหลดหน้าใหม่
Empty State UI
การแสดงผลที่สวยงามเมื่อไม่มีสินค้าในตะกร้า พร้อมปุ่มนำทางกลับไปที่หน้า Shop
5. Checkout Vortex Pipeline
ขั้นตอนการส่งต่อข้อมูลสู่ระบบชำระเงิน
Data Integrity
การแพ็กข้อมูลสินค้าทั้งหมด (ID, Name, Price, Qty) เตรียมพร้อมสำหรับการคำนวณในหน้าใบกำกับภาษี
Zero-Data Strategy
ระบบล้างข้อมูลในตะกร้า (cart.clear) เฉพาะเมื่อการสั่งซื้อได้รับการยืนยันหรือเข้าสู่สถานะจ่ายเงินแล้ว
Secure Handover
การไหลของข้อมูลที่เน้นความสอดคล้องระหว่างหน้า Cart และหน้าชำระเงินเพื่อป้องกันราคาคลาดเคลื่อน
6. Real-time Stock Sync
ระบบตรวจสอบความถูกต้องของสินค้า
Instant Validation
ระบบตรวจสอบสต็อกล่าสุดจากฐานข้อมูลทันทีเมื่อเปิดตะกร้า (Trigger Verification)
Auto-Adjustment
หากสินค้าในสต็อกเหลือน้อยกว่าจำนวนในตะกร้า ระบบจะปรับลดให้อัตโนมัติพร้อมแจ้งเตือนผู้ใช้
Expired Item Removal
ระบบลบสินค้าที่ถูกนำออกจากร้านค้า (De-listed) ออกจากตะกร้าโดยอัตโนมัติ
# Cart State Philosophy
Single Source of Truth
ทุก Component ไม่ว่าจะอยู่บนหน้าไหนก็ตาม จะต้องเรียกดูข้อมูลจาก `cartItems` เดียวกันเสมอ เพื่อป้องกันความสับสนของราคาสินค้าหรือจำนวนสต็อกที่อาจเกิดขึ้นจากการแยกตัวแปรสถานะ
Event-Driven Architecture
การใช้ Custom Events ช่วยลดภาระของ Main Framework (Astro) ในการคุมทุกการกระทำ โดยอนุญาตให้เกาะกลุ่มการอัปเดต (Batch Updates) ทำงานในฝั่ง Client-side ได้อย่างสมบูรณ์และรวดเร็ว