Appearance
Facebook Dataset And Broadcast — Business Rules
Tổng quan
Domain này quản lý marketing dataset kết nối với Facebook/Messenger:
- cấu hình dataset/page/token
- history event gửi
- broadcast audience
- detail recipient của từng đợt broadcast
- public/info surface theo order
Đây không phải CMS content thuần, mà là operational marketing integration.
Scope nghiệp vụ
| Nhóm | Vai trò | Surface chính |
|---|---|---|
| Dataset config | Cấu hình page, dataset, token, type | FacebookDataset, FacebookDatasetCreate |
| History | Theo dõi event/history đã gửi | FacebookDatasetHistoryTable |
| Broadcast | Tạo/gửi/dừng broadcast | FacebookDatasetBroadcastTable, popup send/detail |
| Public info | Xem item info ngoài shell CMS | FacebookDatasetInfo |
Luồng chính
text
Ops cấu hình dataset FB
-> chọn page / dataset / token
-> pull customer/order context
-> tạo hoặc chạy broadcast
-> backend gửi dataset event / message
-> history ghi lại success/fail/fbtrace/content
-> ops xem recipient-level detail hoặc dừng broadcastQuy tắc nghiệp vụ
| Mã | Quy tắc |
|---|---|
| BR-CFB-001 | Dataset domain có 3 lớp rõ: config (dataset_fb_config), history (dataset_fb_history) và broadcast (dataset_fb_broadcast). |
| BR-CFB-002 | Dataset flow không chỉ log message marketing; nó còn gắn order/customer context để phục vụ confirm-order/broadcast workflows. |
| BR-CFB-003 | Một số action dataset được mở cho cả anonymous/customer ngoài user, cho thấy domain này có public-facing entrypoint chứ không chỉ admin ops. |
| BR-CFB-004 | FacebookDatasetInfo là surface public tách khỏi /cms/*; đây là điểm chia boundary giữa admin marketing shell và landing/info runtime. |
Boundary
| Boundary | Ghi chú |
|---|---|
ecommerce | Dataset actions như datasetOrderConfirm, datasetConfirmOrderNotification, datasetStopBroadcast chạy ở ecommerce-api |
restful-api / external FB | Delivery cuối cùng đi qua integration vendor ngoài Hasura CRUD |
crm/user | History và broadcast luôn chạm customer/user identity |
Rủi ro / Findings
| Mức | Finding |
|---|---|
| P1 | FacebookDatasetInfo không lấy route.params.id mà parse thủ công từ route.path, làm path parsing kém robust hơn mức cần thiết. |
| P1 | Dataset surface nằm trong CMS nav nhưng execution model thật lại nghiêng nhiều về integration/action flow của ecommerce hơn là CRUD content. |
| P2 | Có cả surface public (isPublic) lẫn admin route cùng family, nên nếu không đọc route config rất dễ bỏ sót nhánh runtime public. |