@cnv-vn/track 0.3.0-beta.12 → 0.3.0-beta.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -668,8 +668,9 @@ interface PanelShapes {
668
668
  * | 'project-suspended' | 'network'`: reject ngay lời gọi `loginWithZalo(...)`
669
669
  * (trước khi có {@link ZaloQrLoginSession}) — lỗi thiết lập phiên, không có
670
670
  * `session`/`session.result` nào để bắt.
671
- * - `'expired' | 'denied' | 'cancelled'`: reject {@link ZaloQrLoginSession.result}
672
- * — xảy ra SAU khi đã có `session` (QR đã hiển thị), khi chờ kết quả quét.
671
+ * - `'expired' | 'denied' | 'cancelled' | 'agent-registration-required' | 'login-blocked'`:
672
+ * reject {@link ZaloQrLoginSession.result} — xảy ra SAU khi đã có `session` (QR đã hiển
673
+ * thị), khi chờ kết quả quét.
673
674
  *
674
675
  * Bọc `try/catch` quanh CẢ hai điểm `await` (xem ví dụ ở `loginWithZalo` JSDoc)
675
676
  * để không bỏ sót nhóm đầu.
@@ -678,34 +679,30 @@ interface PanelShapes {
678
679
  * theo HTTP status server trả về (401/403) — đây là lỗi CẤU HÌNH (project key
679
680
  * gõ sai/thiếu, hoặc project bị khoá), KHÔNG PHẢI lỗi mạng/CORS thật. Trước đây
680
681
  * cả 2 nhóm bị gộp chung `'network'`, khiến integrator debug sai hướng.
682
+ *
683
+ * `'agent-registration-required'`: khách đã quét QR và xác thực Zalo XONG, nhưng shop bật
684
+ * plugin đăng ký đại lý (`apps.agent-registration`) và khách chưa đăng ký / chưa được shop
685
+ * duyệt làm đại lý. Khác `'denied'` (khách tự bấm "Từ chối" trong Mini App) ở chỗ khách không
686
+ * làm gì sai và bấm "Thử lại" cũng vô nghĩa: việc cần làm là mở Mini App của shop để đăng ký
687
+ * đại lý trước. `'login-blocked'` là ca shop chặn vì lý do khác (backend gửi mã lạ) — dùng câu
688
+ * thông báo chung, vẫn cho thử lại.
681
689
  */
682
- type ZaloQrLoginErrorReason = 'not-initialized' | 'disabled' | 'consent-required' | 'invalid-project-key' | 'project-suspended' | 'network' | 'expired' | 'denied' | 'cancelled';
690
+ type ZaloQrLoginErrorReason = 'not-initialized' | 'disabled' | 'consent-required' | 'invalid-project-key' | 'project-suspended' | 'network' | 'expired' | 'denied' | 'cancelled' | 'agent-registration-required' | 'login-blocked';
683
691
  /** Tuỳ chọn cho `loginWithZalo()`. */
684
692
  interface ZaloQrLoginOptions {
685
693
  /** Ưu tiên SSE (mặc định `true`); `false` ⇒ chỉ dùng poll ngay từ đầu. */
686
694
  preferSse?: boolean;
687
695
  /** Khoảng poll fallback (ms). Mặc định 2000. */
688
696
  pollIntervalMs?: number;
689
- /**
690
- * Mặc định `true` — quét thành công thì SDK **tự chọn** giữa `identify()`/`alias()`, integrator
691
- * không cần tự nghĩ về ca "site đã có tài khoản riêng":
692
- * - Chưa từng `identify()` trước đó → Zalo QR là cách đăng nhập chính → `identify(String(contactId), {...})`.
693
- * - Đã có `userId` từ trước (site tự `identify()` sau login thường của họ) → **không ghi đè** —
694
- * `alias(String(contactId), userId cũ)` để backend biết 2 ID là cùng một người, `userId`
695
- * hiện tại giữ nguyên, lịch sử tracking không bị "nhảy" giữa chừng.
696
- *
697
- * Đặt `false` để tắt hẳn cả 2 nhánh trên, tự quyết định 100% bằng `result.contactId` — xem
698
- * "autoIdentify: false" trong docs.
699
- */
700
- autoIdentify?: boolean;
701
697
  }
702
698
  /**
703
699
  * Kết quả khi người dùng quét QR và xác thực Zalo thành công.
704
700
  *
705
701
  * KHÔNG có `phone` — số điện thoại thật KHÔNG được trả về client (cùng lý do đã bỏ
706
702
  * `apiToken`/`loginToken`: PII/credential lộ ra bất kỳ script nào chạy chung trang hoặc
707
- * ai mở DevTools). `contactId` là định danh dùng để `identify()` — nếu cần số điện thoại
708
- * cho nghiệp vụ, tự tra cứu ở backend của bạn bằng `contactId` (đã xác thực thật).
703
+ * ai mở DevTools). `contactId` là định danh khách trong CDP, server đã nối với anonymousId
704
+ * của phiên; host KHÔNG cần gọi identify(). Nếu cần số điện thoại cho nghiệp vụ, tự tra cứu
705
+ * ở backend của bạn bằng `contactId` (đã xác thực thật).
709
706
  */
710
707
  interface ZaloQrLoginResult {
711
708
  contactId?: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cnv-vn/track",
3
- "version": "0.3.0-beta.12",
3
+ "version": "0.3.0-beta.15",
4
4
  "description": "CNV Tracking SDK — lightweight, async-first web analytics tracker (<30KB gzipped).",
5
5
  "keywords": [
6
6
  "analytics",