🔄Luồng Vận Hành Hệ Thống
-
Bước 1: Khách đặt hàng trên WebsiteKhách hàng chọn bánh, điền thông tin và nhấn Xác Nhận Đặt Hàng. Trình duyệt gửi API POST request chứa thông tin giỏ hàng đến endpoint
/api/create-ordertrên Cloudflare. -
Bước 2: Xử lý và Ghi nhận đơn hàng (D1 Database & Google Sheets)API Workers ghi nhận đơn hàng vào cơ sở dữ liệu Cloudflare D1 ở trạng thái "Chờ xác nhận", đồng thời thực hiện trừ tồn kho sản phẩm trong D1. Tiếp theo, Worker gọi HTTP POST sang Google Apps Script (
doPost), ghi đơn hàng mới vào dòng cuối cùng của sheet Orders trên Google Sheets và trừ tồn kho ảo ở sheet Products. -
Bước 3: Admin quản lý trên Google SheetsAdmin mở Google Sheets để kiểm tra thông tin. Cột J (Trạng thái đơn hàng) có sẵn Dropdown để Admin chọn các trạng thái: Đã xác nhận, Đang giao, Đã giao, Đã hủy. Admin cũng có thể nhập mã vận đơn vào cột K. Dashboard sẽ hiển thị tổng quan KPI doanh thu, biểu đồ và cột "Đã bán" của từng sản phẩm.
-
Bước 4: Đồng bộ ngược về Web (Installable Trigger & Webhook)Khi Admin chỉnh sửa cột Trạng thái hoặc Mã vận đơn, Installable Trigger trong Apps Script kích hoạt hàm
onSheetEdit(e), gửi HTTP POST request về/api/webhookcủa Cloudflare Pages. Worker nhận dữ liệu và cập nhật ngay vào D1. -
Bước 5: Tự động xử lý Hoàn kho / Trừ kho khi Hủy đơn
Hủy đơn: Nếu Admin chuyển trạng thái thành "Đã hủy", hệ thống ở cả Google Sheet và cơ sở dữ liệu D1 sẽ tự động hoàn trả (cộng lại) số lượng sản phẩm của đơn hàng đó vào tồn kho thực tế.
Khôi phục: Nếu chuyển từ "Đã hủy" sang trạng thái khác, hệ thống sẽ trừ ngược lại tồn kho (bảo vệ bằng ràng buộc không cho phép tồn kho nhỏ hơn 0).
🌐Các API Endpoints & Nhiệm Vụ
| Endpoint | Phương thức | Nguồn xử lý | Nhiệm vụ chính |
|---|---|---|---|
/api/products |
GET | Cloudflare Worker | Lấy danh sách sản phẩm và số lượng tồn kho thời gian thực từ D1 hiển thị lên web. |
/api/create-order |
POST | Cloudflare Worker | Tạo đơn hàng, trừ kho D1, sau đó gửi đơn sang Google Sheets qua Apps Script. |
/api/track |
GET | Cloudflare Worker | Truy vấn lịch sử mua hàng theo SĐT từ database D1 (bao gồm trạng thái và mã vận đơn). |
/api/webhook |
POST | Cloudflare Worker | Nhận cập nhật trạng thái đơn/mã vận đơn từ Google Sheet để đồng bộ ngược về database D1. |
doPost(e) |
POST | Apps Script | Nhận thông tin đơn hàng mới gửi từ Cloudflare, append dòng mới vào sheet Orders. |
onSheetEdit(e) |
Trigger | Apps Script | Bắt sự kiện chỉnh sửa trên trang tính, gọi về /api/webhook của Cloudflare. |