Tú Quyên Spa
Đặt lịch bằng Zalo Mini App, đồng bộ hai chiều với KiotViet POS.
- Năm
- 2026
- Khách hàng
- Tú Quyên Spa
- Vai trò
- Làm một mình
- Thời gian
- 3 tháng
Tính năng
Đồng bộ hai chiều với POS
Lịch đặt trong app hiện lên KiotViet; lễ tân sửa gì trên POS thì webhook đẩy ngược về.
Gói dịch vụ và voucher
Gói của khách, khuyến mãi và voucher được mô hình hoá đàng hoàng, nên app tính tiền một lịch hẹn giống hệt cách quầy tính.
Nhắc lịch có người đọc
ZNS rơi vào Zalo, nơi khách vốn đã ở đó, thay vì một tin SMS không ai mở.
Tổng quan
Đề bài
Tú Quyên Spa vốn đã chạy trên KiotViet — khách hàng, dịch vụ, hoá đơn, tồn kho đều nằm ở đó. Họ muốn đưa việc đặt lịch vào Zalo Mini App mà không bỏ cái POS nhân viên dùng cả ngày. Nghĩa là app không thể là nguồn sự thật; nó phải đồng ý với một nguồn khác.
Cách làm
Một backend Express + MongoDB + Redis đứng giữa Mini App và KiotViet, đồng bộ cả hai chiều. Lịch hẹn và đơn tạo trong app được đẩy sang KiotViet; lễ tân sửa gì trên POS thì webhook mang về và cập nhật lại app. Hai mươi model phủ hết nghiệp vụ — lịch hẹn, chi nhánh, gói khách hàng, hoá đơn, voucher, khuyến mãi, đánh giá.
Zalo OA nằm cạnh đó: follower được theo dõi, và ZNS mang xác nhận cùng nhắc lịch vào thẳng Zalo của khách, thay vì một tin SMS họ sẽ bỏ qua.
Chỗ khó
Đồng bộ hai chiều thực chất là bài toán giải quyết xung đột khoác áo truyền dữ liệu. Cả hai bên đều có thể sửa cùng một lịch hẹn, webhook đến không đúng thứ tự, và thỉnh thoảng KiotViet gửi lại một cái đã gửi. Mọi webhook đi vào đều được ghi log và xử lý idempotent, còn app thì không bao giờ coi bản sao của mình là chuẩn cho những gì POS sở hữu — nó hiển thị thứ nhận về, không phải thứ nó hy vọng đã xảy ra.
Stack
- React
- zmp-ui
- Express
- MongoDB
- Redis
- KiotViet API
- Zalo OA
- Zalo ZNS
- Docker