@cnv-vn/track 0.3.0-beta.1 → 0.3.0-beta.11
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.
- package/README.md +16 -16
- package/dist/cnv-track.esm.js +2 -2
- package/dist/cnv-track.min.js +2 -2
- package/dist/cnv-track.umd.cjs +2 -2
- package/dist/types/index.d.ts +54 -9
- package/package.json +1 -1
package/dist/types/index.d.ts
CHANGED
|
@@ -97,6 +97,31 @@ interface ContextCampaign {
|
|
|
97
97
|
*/
|
|
98
98
|
clickIds?: Record<string, string>;
|
|
99
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Nguồn đưa khách tới lần ĐẦU TIÊN, đính vào `context` của event `page` (xem
|
|
102
|
+
* `core/attribution.ts` và `attachFirstTouch` ở `core/runtime.ts` để biết vì sao là `page`). Đây cũng đúng shape của `attribution` trong thân
|
|
103
|
+
* `POST /js/v1/zalo-qr/session` — một hình dạng dùng cho cả hai đường là cố ý: chỉ cần một chỗ ánh xạ
|
|
104
|
+
* (`toAttributionWire`), nên chỉ có một chỗ có thể ánh xạ sai.
|
|
105
|
+
*
|
|
106
|
+
* Vì sao tên field là `utm_*` chứ không theo Segment Spec như {@link ContextCampaign}: đích đến là
|
|
107
|
+
* `ContactEntity.source_info` của CDP, nơi các field tên đúng là `utm_source`/`utm_medium`/…, và cột
|
|
108
|
+
* `utm_*` trong ClickHouse. Giữ nguyên tên đích thì không hop nào phải dịch — chính chỗ dịch
|
|
109
|
+
* `campaign.name` → `utm_name` đang làm mất `utm_campaign` ở luồng event của tracking-api.
|
|
110
|
+
*/
|
|
111
|
+
interface ContextFirstTouch {
|
|
112
|
+
utm_source?: string;
|
|
113
|
+
utm_medium?: string;
|
|
114
|
+
utm_campaign?: string;
|
|
115
|
+
utm_term?: string;
|
|
116
|
+
utm_content?: string;
|
|
117
|
+
utm_id?: string;
|
|
118
|
+
/** `fbclid`/`gclid`/… — vắng mặt khi `allowAdTracking: false`. */
|
|
119
|
+
click_ids?: Record<string, string>;
|
|
120
|
+
referrer?: string;
|
|
121
|
+
landing_page?: string;
|
|
122
|
+
/** epoch-ms lúc GHI nguồn (không phải lúc gửi event) — phân biệt nguồn vừa chớm với nguồn 2 năm trước. */
|
|
123
|
+
first_seen_at?: number;
|
|
124
|
+
}
|
|
100
125
|
interface ContextLibrary {
|
|
101
126
|
/** Always `@cnv/track`. */
|
|
102
127
|
name: string;
|
|
@@ -118,6 +143,16 @@ interface PayloadContext {
|
|
|
118
143
|
userAgent?: string;
|
|
119
144
|
library?: ContextLibrary;
|
|
120
145
|
campaign?: ContextCampaign;
|
|
146
|
+
/**
|
|
147
|
+
* CNV extension — nguồn first-touch, CHỈ đính vào event `page`.
|
|
148
|
+
*
|
|
149
|
+
* `campaign` ở trên là UTM của CHÍNH event này (mất ngay ở pageview thứ hai); `firstTouch` là nguồn
|
|
150
|
+
* ban đầu của cả khách, sống qua nhiều phiên và qua nhiều ngày.
|
|
151
|
+
*
|
|
152
|
+
* Vì sao là `page` chứ không phải `identify`/`track`: xem `attachFirstTouch` trong `core/runtime.ts`
|
|
153
|
+
* — collector bỏ hẳn `identify`, còn `track` tên mới bị allowlist drop im lặng.
|
|
154
|
+
*/
|
|
155
|
+
firstTouch?: ContextFirstTouch;
|
|
121
156
|
/**
|
|
122
157
|
* Pre-consent flag. Gateway may downgrade storage or skip forwarding to
|
|
123
158
|
* marketing destinations when `marketing === false`.
|
|
@@ -573,7 +608,7 @@ interface PanelRemoteConfig {
|
|
|
573
608
|
colors?: PanelColors;
|
|
574
609
|
shapes?: PanelShapes;
|
|
575
610
|
wallpaper?: 'NONE' | 'WAVES' | 'CUBES' | 'FUN' | 'GEOMETRIC' | 'CROSS_HATCHING';
|
|
576
|
-
/** `true` ⇒ bỏ chân panel "Cung cấp bởi CNV
|
|
611
|
+
/** `true` ⇒ bỏ chân panel "Cung cấp bởi CNV CDP". Thiếu/`false` = vẫn hiện (mặc định). */
|
|
577
612
|
hideBranding?: boolean;
|
|
578
613
|
}
|
|
579
614
|
interface PanelHeaderCopy {
|
|
@@ -681,18 +716,28 @@ interface ZaloQrLoginResult {
|
|
|
681
716
|
/** Điểm kinh nghiệm/tích luỹ hiện tại (nếu có). */
|
|
682
717
|
xp?: number;
|
|
683
718
|
/**
|
|
684
|
-
* JWT HẸP QUYỀN, sống
|
|
685
|
-
*
|
|
686
|
-
*
|
|
687
|
-
*
|
|
688
|
-
*
|
|
689
|
-
*
|
|
690
|
-
*
|
|
691
|
-
*
|
|
719
|
+
* JWT HẸP QUYỀN, sống 30 PHÚT — dùng để gọi nhóm `{endpoint}/panel/*` (khôi phục Member sau F5,
|
|
720
|
+
* điểm/ưu đãi/đổi điểm), KHÁC HẲN apiToken/loginToken thật (đã bị chặn không trả về client — xem
|
|
721
|
+
* javadoc trên). An toàn hơn hẳn token thật vì: hẹp quyền, sống rất ngắn, và khoá ký riêng theo
|
|
722
|
+
* từng project — lộ token này chỉ lộ đúng tên/hạng/điểm của 1 khách, không dùng được ở bất kỳ API
|
|
723
|
+
* nào khác trong hệ sinh thái CNV.
|
|
724
|
+
*
|
|
725
|
+
* 30 phút KHÔNG có nghĩa khách phải quét lại QR mỗi 30 phút: `panel.ts` tự gia hạn trước hạn qua
|
|
726
|
+
* `POST {endpoint}/panel/session/refresh`, và cả chuỗi gia hạn có trần 24h kể từ lúc quét QR.
|
|
727
|
+
* Integrator dùng `loginWithZalo()` trực tiếp (không qua Panel) muốn hành vi "nhớ đăng nhập"
|
|
728
|
+
* giống vậy thì phải TỰ gia hạn — token này để yên là chết sau 30 phút.
|
|
692
729
|
*/
|
|
693
730
|
panelSessionToken?: string;
|
|
694
731
|
/** Epoch-ms hết hạn của {@link panelSessionToken} — so `Date.now() > panelSessionExp` không cần decode JWT. */
|
|
695
732
|
panelSessionExp?: number;
|
|
733
|
+
/**
|
|
734
|
+
* Thời lượng còn sống của {@link panelSessionToken}, tính bằng ms kể từ lúc server phát.
|
|
735
|
+
*
|
|
736
|
+
* Dùng field này thay cho {@link panelSessionExp} bất cứ khi nào có: mốc tuyệt đối chỉ đúng nếu
|
|
737
|
+
* đồng hồ máy khách đúng, còn thời lượng thì cùng hệ quy chiếu với `Date.now()` của chính máy đó —
|
|
738
|
+
* quan trọng vì TTL chỉ 30 phút, máy lệch giờ nửa tiếng là tự đăng xuất ngay khi vừa đăng nhập.
|
|
739
|
+
*/
|
|
740
|
+
panelSessionExpiresInMs?: number;
|
|
696
741
|
}
|
|
697
742
|
/**
|
|
698
743
|
* Phiên QR-login đang chờ người dùng quét. SDK KHÔNG tự vẽ QR — host page tự
|