§1 Bức tranh tổng thể
Web Khách hiển thị data đến từ 3 nguồn:
SOURCE 01
14 bot tự động
Chạy 24/7 ở server — refresh đa số data Facebook quan trọng (trạng thái TKQC, bill, chi tiêu, BM info, alert thẻ…).
SOURCE 02
Extension Chrome
Chạy trên trình duyệt user — bổ sung data theo phiên FB live (cookie, EAAG, EAAB, billing hub…).
SOURCE 03
Thủ công
User bấm "Đồng bộ" khi muốn data tươi NGAY, không đợi bot / extension.
Key insight: User KHÔNG cài extension vẫn có data tươi nhờ bot. Extension là kênh bổ sung chứ không phải duy nhất.
§2 Cách đọc tên các nguồn
Glossary các thuật ngữ về nguồn dữ liệu xuất hiện trong toàn bộ tài liệu.
| Tên nguồn | Nghĩa là gì |
|---|---|
| Bot tự động | Service chạy server-side, đập vào FB rồi ghi vào DB chung. Web Khách đọc từ DB là thấy. |
| Token hệ thống BM | Token cấp ở Business Manager. Không cần cookie, không cần proxy. |
| Token OAuth | Token user xin qua OAuth (hiện tại chưa xin được). |
| Token user EAAG / EAAB | Token trích từ HTML Facebook. Bắt buộc cookie + proxy của VIA. |
| Cookie phiên Facebook | Cookie c_user, xs, datr… Bắt buộc proxy. Dùng cho thẻ BM, billing. |
| Extension Chrome | Extension trên trình duyệt user, chạy nền đẩy data lên server. |
| DB nội bộ (Supabase + ClickHouse) | Data đã được bot / extension / user sync về từ trước. |
§3 Tổng kết theo cách hiểu thực tế
6 nguyên tắc cốt lõi cần nắm trước khi đọc tiếp.
1
Data FB quan trọng được bot auto-refresh chu kỳ 5 giây → 12 giờ tuỳ loại. Không phải thủ công.
2
Bot cào activity log (3h) là trung tâm — 3 bot khác phụ thuộc vào nó: sync campaign, check bill, heat-score đều dùng output của bot này.
3
Bot thông báo (5s) là đầu ra cuối — mọi bot khác đẩy vào
notification_queue, bot này lo gửi đi (web bell + Telegram).
4
Mặc định chạy 10 bot. 3 bot tắt (admin bật khi cần) + 2 bot Topup cần admin bật riêng vì kết nối hệ thống ngoài.
5
Bill và thẻ BM cứng credential:
- ▸Bill TKQC: PHẢI cookie VIA + token user.
- ▸Thẻ BM (Billing Hub): PHẢI cookie + dtsg.
6
Cookie hết hạn → không tự fallback sang token cho operation đòi cookie.
§4 Trạng thái mặc định 14 bot
✓
Bật mặc định (10 bot)
Chạy ngay khi service khởi động
Thông báo
Check status TKQC
Check bill
Cào activity
Heat-score
Sync campaign
Check chi tiêu
Cảnh báo thẻ hết hạn
Sync BM gắn sao — info
Sync BM gắn sao — limit
⚙
Tắt mặc định (3 bot)
Admin bật khi cần
Reset limit chi tiêu
Backfill chi tiêu
Test bill
🔌
Cần admin bật riêng (2 bot)
Kết nối Topup ngoài
Auto share TKQC
Auto gỡ TKQC
§5 Lịch chạy 14 bot tự động
Chia theo chu kỳ chạy. Ký hiệu: ⚙ = tắt mặc định, 🔌 = cần admin bật riêng (kết nối ngoài), 🔵 = bot trung tâm.
Nhóm LIÊN TỤC (giây / phút) — cập nhật tức thì
| # | Bot | Mỗi | Việc làm |
|---|---|---|---|
| 01 | Thông báo | 5 s | Quét notification_queue, đẩy lên chuông web + Telegram + NolimitHub. 1h/lần dọn rác noti cũ. |
| 02 | Auto gỡ TKQC 🔌 | 10 s | Check Topup có đơn cần gỡ → unshare từng cặp (TKQC, BM). Tối đa 20 đơn/lần. |
| 03 | Auto share TKQC 🔌 | 30 s | Check Topup có đơn cần share → chia kho TKQC chưa share, share từng cái, báo lại Topup. |
Nhóm theo GIỜ — cập nhật từ Facebook
| # | Bot | Mỗi | Việc làm |
|---|---|---|---|
| 04 | Check trạng thái TKQC | 1 h | Gọi FB Graph /me/adaccounts qua mọi token sống. TKQC đổi status (active→disabled) → ghi history + notify. |
| 05 | Check hoá đơn (bill) | 1 h | Đọc ClickHouse activity 10 ngày → bill chưa fetch → dùng cookie VIA gọi GraphQL BillingHub lấy chi tiết bill. Bill FB không trả → notify "FB nợ bill". |
| 06 | Reset limit chi tiêu ⚙ | 2 h | TKQC die còn cap → confirm FB → set spend_cap=0, đợi 8s, set 0.01 USD / 1 VND. |
| 07 | Cào activity log 🔵 | 3 h | Gọi /act_X/activities cho TKQC eligible từ checkpoint → bulk insert ClickHouse. Là nguồn cho bot #05, #08, #09. |
| 08 | Heat-score (điểm nóng) | 3 h | Đếm ngày chi tiêu 30 ngày qua → tính điểm: starred +10, BM die −3, ≥20 ngày active +5… → ghi heat_score để hiển thị badge. |
| 09 | Sync campaign/adset/ad | ~3 h | (sau bot #07 ~1h) Poll checkpoint mỗi 15p. Khi bot activity vừa chạy xong + flush 1h → query CH lấy TKQC có thay đổi structure → gọi FB lấy chi tiết campaign/adset/ad → UPSERT Postgres. |
| 10 | Check chi tiêu | 6 h | Gọi FB Insights, overlap 3 ngày để chống stale, ghi đủ mỗi ngày kể cả spend=0 vào ClickHouse. |
Nhóm NỬA NGÀY — việc ít gấp
| # | Bot | Mỗi | Việc làm |
|---|---|---|---|
| 11 | Cảnh báo thẻ hết hạn | 12 h | Quét fb_payment_instruments, thẻ ≤30 ngày hết hạn → push notify (dedup 24h). |
| 12 | Sync BM gắn sao — info | 12 h | Batch 20 BM/lần, gọi FB Graph cào: name, status, verification, profile. Service này chạy 2 loop song song với bot #13. |
| 13 | Sync BM gắn sao — limit | 9 h + 14 h | 9h sáng + 14h chiều VN. Tick 5 phút, check giờ VN. Đúng slot → gọi BillingHub bằng cookie VIA cào ad_account_limit (không có trong Graph API). |
Nhóm NGÀY / 1-LẦN — công cụ vận hành
| # | Bot | Mỗi | Việc làm |
|---|---|---|---|
| 14 | Backfill chi tiêu ⚙ | 24 h | Lấp lỗ trống lịch sử mà bot #10 (chỉ overlap 3 ngày) không phát hiện ra. |
| — | Test bill ⚙ | 1 lần | Debug 1 TKQC cụ thể khi nghi bill có vấn đề. Chạy xong dừng luôn. |
§6 Hai trục chính
🔵
Trục SỰ KIỆN
Bot #07 — Cào activity
Là nguồn sự kiện trung tâm. 3 bot phụ thuộc trực tiếp:
- → Bot #05 check bill
- → Bot #09 sync campaign
- → Gián tiếp: #08 heat-score
📤
Trục ĐẦU RA
Bot #01 — Thông báo
Là đầu ra cuối của hệ thống.
- → Mọi bot khác push vào
notification_queue - → Bot #01 lo gửi đi: web bell, Telegram, NolimitHub
§7 Chi tiết theo thanh toolbar bên trái
Mỗi mục dưới đây tương ứng với 1 mục trên sidebar khách. Cột "Auto" = bot / extension nào tự refresh và mỗi bao lâu. Cột "Thủ công" = có nút "Đồng bộ" trên trang đó không.
🏠 Trang chủ
| Trang | Nguồn | Auto refresh | Thủ công |
|---|---|---|---|
| Onboarding home (chào mừng, link nhanh) | DB nội bộ | — | — |
📊 Dashboard
| Trang | Nguồn data | Auto refresh | Thủ công |
|---|---|---|---|
| Dashboard VIA | DB (status VIA, cookie / token status) | Extension (alarm 15p) cập nhật cookie / EAAG / EAAB | ✅ "Đồng bộ" trên từng VIA |
| Dashboard BM | DB (info, verification, status) | Bot #12 (BM gắn sao) 12h • Extension cho BM thường (alarm CHECK_BM) |
✅ "Đồng bộ" từng BM |
| Dashboard ADS | DB (TKQC: status, balance, spend, threshold) | Bot #04 status 1h • Bot #10 spend 6h • Bot #08 heat 3h • Extension (SYNC_ADS_DETAIL) 30–60p |
✅ "Đồng bộ" / "Check Ads" |
| Dashboard Hoá đơn | DB + ClickHouse | Bot #05 bill 1h • Bot #11 cảnh báo thẻ 12h | — (data từ bot) |
📦 Tài sản
Quản lý VIA
DB · Extension · Đồng bộ thủ công
Nguồn data
DB (danh sách VIA, cookie / token status, proxy)
Auto refresh
Extension đẩy cookie / EAAG / EAAB khi user import / refresh
Thủ công
✅ "Đồng bộ" 1 VIA → OAuth → fallback EAAG → EAAB. Chặn nếu sync < 15p trước.
Quản lý BM
Bot #12 · Extension · Rate-limit 30s
Nguồn data
DB (BM info, verification, ad accounts liên kết)
Auto refresh
Bot #12 cho BM gắn sao (12h) • Extension cho BM thường (alarm
CHECK_BM)Thủ công
✅ "Đồng bộ" 1 BM (token hệ thống BM → OAuth → EAAB → EAAG). Rate-limit 30s.
Quản lý ADS (TKQC)
5 bot + Extension
Nguồn data
DB (TKQC info, status, spend, limit, bill)
Auto refresh
Bot #04 status 1h • Bot #10 spend 6h • Bot #05 bill 1h • Bot #07 activity 3h • Bot #08 heat 3h • Extension
SYNC_ADS_DETAIL 30–60p
Thủ công
✅ "Đồng bộ", "Check basic / advanced", "Check bill" (EAAG / EAAB bắt buộc), "Sync linked BMs"
Quản lý Campaign
Bot #09 + Bot #10
Nguồn data
DB Postgres (campaign / adset / ad info) + ClickHouse (insights, spend daily)
Auto refresh
Bot #09 sync campaign ~3h (sau bot #07) • Bot #10 spend 6h
Thủ công
✅ "Đồng bộ" (trong flow sync VIA) • Bulk create / pause / rename / toggle
💰 Tài chính
Warning: Bill và thẻ BM cứng credential. Bill TKQC PHẢI cookie VIA + token user. Thẻ BM (Billing Hub) PHẢI cookie + dtsg.
| Trang | Nguồn data | Auto refresh | Thủ công |
|---|---|---|---|
| Quản lý thẻ | DB (thẻ FB của BM + thẻ tự nhập + map giữa 2 loại) | Thẻ FB: extension đẩy khi user mở Billing Hub • Cảnh báo hết hạn: Bot #11 (12h) | ✅ "Đồng bộ thẻ BM" (cookie + dtsg bắt buộc) • CRUD thẻ thủ công • "+ Add" map thẻ tay với thẻ FB |
| Hoá đơn | DB (bill từ FB Billing) + ClickHouse activity | Bot #05 (1h) — cookie VIA gọi GraphQL BillingHub | ✅ "Check bill" 1 TKQC (EAAG / EAAB bắt buộc) |
| Đối soát chi tiêu | DB + ClickHouse aggregate | — (đọc data có sẵn) | — (chỉ filter / xem) |
🔗 Kết nối
| Trang | Nguồn data | Auto refresh | Thủ công |
|---|---|---|---|
| Cài đặt Extension | DB extension_releases |
— | Tải về / Update khi có version mới (chấm đỏ nhắc) |
| Proxy | DB | — KHÔNG có bot auto-check | ✅ "Check" proxy sống / chết (gọi ifconfig.io + facebook.com qua proxy) |
| Mail đã lưu | ClickHouse mails (IMAP đẩy qua extension) |
Extension đẩy khi user cần lấy code | — (chỉ xem / filter) |
🆘 Hỗ trợ
| Trang | Nguồn data | Auto refresh | Thủ công |
|---|---|---|---|
| Chat hỗ trợ | Bridge admin (server-to-server) | Poll 5 giây khi mở chat / 25 giây khi đóng | ✅ Gửi tin |
| Báo lỗi của bạn | Hub admin (admin.nolimitadsmanager.com) |
Polling chi tiết bug 15 giây • Webhook admin → Khach khi admin tạo ticket | ✅ Gửi báo lỗi mới • Comment trao đổi |
🔔 Bell thông báo (góc phải header)
| Loại | Nguồn | Mỗi |
|---|---|---|
| Bell notification | Bot #01 quét notification_queue (5s) + Supabase Realtime |
~5 s |
| Welcome / Version / API key hết hạn | Side-effect khi FE fetch bell | Khi user mở dashboard |
| Push FCM mobile | Postgres trigger pg_net |
Event-driven |
| Telegram | Bot #01 (hoặc trigger pg_net) |
Event-driven |
§8 Chức năng admin (sidebar khác — chỉ admin thấy)
🛡 Tổng quan / Hệ thống / Audit / Risk / Quản lý
| Trang | Nguồn | Mỗi |
|---|---|---|
| Chrome remote / Servers | DB + WebSocket | Real-time |
| Mail Service | ClickHouse mails + cấu hình IMAP | Mở trang |
| Login Events | DB | Mở trang |
| Audit log / Asset logs | DB + ClickHouse | Mở trang (rate-limit 30s) |
| Changelog | lib/changelog.ts | — |
| Risk (13 báo cáo) | DB + ClickHouse | Mở trang |
| Members | DB | Mở trang |
| Notifications (CRUD channel, telegram config) | DB | Mở trang |
| API Keys | DB | Mở trang |
| Settings workspace | DB | Mở trang |
Risk — 13 báo cáo:
protect rules
clipboard radar
staff monitor
client BM
no backup
VIA hotmail
disabled limit
starred in dead BM
funded bills on starred
+ 4 báo cáo khác
§9 Khác (không nằm trong sidebar)
| Chức năng | Nguồn | Mỗi |
|---|---|---|
| 2FA TOTP (lấy mã trên popup VIA) | Decrypt secret VIA từ DB | Khi user click |
| Mail recovery code (extension popup VIA) | IMAP server (qua extension) | Khi user cần |
| Get password FB (popup VIA) | Decrypt từ DB | Khi user click |
| Trash management | DB | Thủ công (KHÔNG auto-purge) |
| Transfer ownership workspace | Email + DB | Thủ công |
| VIA transfer requests | DB | Thủ công |
| Topup share / gỡ TKQC tự động | Bot #02 + Bot #03 (cần admin bật riêng) | 10s / 30s |