Enalyn
Enalyn Internal · 2026
Pilot — Đóng gói
& Bàn giao Đối tác
Hướng dẫn triển khai hệ thống Enalyn AI Pilot
cho nhiều đối tác — từng bước, không skip
Cloudflare Stack
SePay + Resend
Google Sheets
01
Kiến trúc Multi-Partner
🏢 Partner A
aipilot.partner-a.com
Worker
🗝KV
🗄D1
🪣R2
📊 Google Sheet A · ✉️ Resend A · 💳 SePay A
🏢 Partner B
aipilot.partner-b.com
Worker
🗝KV
🗄D1
🪣R2
📊 Google Sheet B · ✉️ Resend B · 💳 SePay B
Mỗi đối tác hoàn toàn độc lập — riêng Worker, riêng DB, riêng bucket, riêng secrets. Không ảnh hưởng nhau.
02
Tài nguyên cần chuẩn bị
Cloudflare Worker
Xử lý đăng ký, webhook SePay, serve media
Free 100k req/ngày
🗄
D1 Database
Lưu leads vĩnh viễn, remarketing, báo cáo
Free 5GB
🗝
KV Namespace
Lưu tạm 7 ngày, check payment real-time
Free 100k reads
🪣
R2 Bucket
Video demo, media, hỗ trợ range request iOS
Free 10GB
✉️
Resend
Email đăng ký + xác nhận thanh toán HTML đẹp
Free 3k/tháng
📊
Google Sheet
CRM đơn giản, backup leads, dễ xem
Free
💳
SePay
Auto-detect chuyển khoản, trigger webhook
Free (≤50 GD/tháng)
💰
Tổng chi phí
Chỉ trả SePay — tất cả còn lại hoàn toàn miễn phí
Free (≤50 GD/tháng)
03
Checklist trước khi deploy
📋 Đối tác chuẩn bị
Tài khoản Cloudflare (cloudflare.com)
Domain đã trỏ vào Cloudflare (icon cam)
Tài khoản Resend + verify domain email
Tài khoản SePay + STK ngân hàng
Tài khoản Google (Sheet + Apps Script)
Cài Node.js ≥ 18 + wrangler CLI
🔑 Thu thập từ đối tác
Domain muốn dùng cho trang đăng ký
STK + tên chủ TK + ngân hàng nhận TT
Giá bán (VNĐ, đã bao gồm VAT 8%)
Email thương hiệu (gửi từ Resend)
Hotline / Zalo hỗ trợ khách hàng
Logo + tên thương hiệu (thay trong HTML)
04
Bảng cấu hình wrangler.toml
Biến Mẫu Enalyn Điền cho đối tác Loại
nameenalyn-pilot-workerPARTNER-pilot-workertoml
CUSTOM_DOMAINaipilot.enalyn.comaipilot.DOMAIN.comtoml
FROM_EMAILEnalyn <pilot@enalyn.com>BRAND <pilot@DOMAIN.com>vars
BANK_CODEMBMB / VCB / TCB ...vars
BANK_STK2967896868STK đối tácvars
AMOUNT1080000Giá bán (đã VAT 8%)vars
RESEND_API_KEYre_xxxxxre_xxxxx đối tácsecret
SEPAY_API_KEYEPOKNCC...key SePay đối tácsecret
APPS_SCRIPT_WEBHOOKhttps://script.google.com/...URL GAS đối tácsecret
05
10 bước deploy
1
Login Cloudflare
wrangler login
2
Sửa wrangler.toml
Thay name, domain, bank, amount
3
Tạo KV Namespace
wrangler kv namespace create
4
Tạo D1 Database
wrangler d1 create PARTNER-db
5
Chạy Schema SQL
wrangler d1 execute --file=schema.sql
6
Tạo R2 Bucket
wrangler r2 bucket create
7
Khai báo Secrets
wrangler secret put KEY
8
Deploy Apps Script
Copy GAS, sửa SHEET_ID, Web app
9
Deploy Worker
wrangler deploy
10
Cập nhật pilot.html
Thay WEBHOOK_URL + logo + brand
06
Luồng dữ liệu
📝
Form
pilot.html
Worker
/register
🗝
KV
lưu 7 ngày
+
🗄
D1
INSERT lead
+
📊
Sheet
Apps Script
+
✉️
Email
QR + CK
💳
SePay
detect CK
Worker
/sepay
🗝
KV
status=confirmed
+
🗄
D1
UPDATE paid
+
✉️
Email
xác nhận TT
💡 Frontend tự poll GET /check-payment?code=XXX mỗi 3 giây → khi KV trả về status=success → chuyển trang cảm ơn tự động
07
Quản lý Leads — SQL Queries
Leads mới nhất
SELECT * FROM leads
ORDER BY created_at DESC
LIMIT 50;
Đã thanh toán
SELECT name, email, phone, paid_at
FROM leads
WHERE payment_status = 'paid'
ORDER BY paid_at DESC;
Chưa thanh toán (remarketing)
SELECT name, email, phone, created_at
FROM leads
WHERE payment_status = 'pending'
ORDER BY created_at DESC;
Tổng doanh thu
SELECT
  COUNT(*) AS total_paid,
  SUM(paid_amount) AS revenue
FROM leads
WHERE payment_status = 'paid';
🌐 Admin API — nhanh hơn:
GET /admin/leads?secret=KEY
🖥 D1 Console — Cloudflare Dashboard:
Workers & Pages → D1 → Console
🔧 Confirm tay (bypass SePay):
POST /admin/confirm
08
Lưu ý khi scale nhiều đối tác
🔐
Secrets không được commit
Chỉ dùng wrangler secret put — không bao giờ để key trong .toml hay source code.
🏢
Account Cloudflare riêng
Mỗi đối tác nên có account Cloudflare riêng để tránh conflict naming KV, D1, R2 và bảo mật dữ liệu.
💳
SePay webhook URL riêng
Vào SePay Dashboard → cấu hình webhook URL đúng domain của từng đối tác: aipilot.DOMAIN.com/sepay
🌐
Domain phải qua Cloudflare
Domain phải proxy qua CF (icon cam 🟠) thì mới dùng custom_domain = true được. Nếu chưa, dùng *.workers.dev tạm.
🪣
R2 không cần public URL
Media được serve qua Worker route /media/* với Range request support — không cần bật public R2 bucket.
🔄
Cập nhật code dễ dàng
Khi Enalyn ra bản mới: git pull && wrangler deploy. Không cần tạo lại DB hay bucket — data giữ nguyên.
Ready to scale 🚀
Deploy · Bàn giao · Vận hành
📦
1 bộ code duy nhất
Chỉ thay config — không sửa logic. Deploy cho 10 đối tác không mất thêm thời gian dev.
Deploy trong ~30 phút
10 bước rõ ràng, mỗi bước có lệnh cụ thể. Người không biết code cũng follow được.
🛡️
Data độc lập hoàn toàn
Mỗi đối tác có DB riêng — leads, payment, media không bao giờ lẫn vào nhau.
📞 Hotline / Zalo: 0834 934 092 (Leon)  ·  ✉️ leon@enalyn.com
1 / 10