cdp-edge 1.2.0 → 1.3.0

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.
Files changed (142) hide show
  1. package/README.md +153 -306
  2. package/bin/cdp-edge.js +71 -61
  3. package/contracts/agent-versions.json +682 -0
  4. package/contracts/api-versions.json +372 -368
  5. package/contracts/types.ts +81 -0
  6. package/dist/commands/analyze.js +52 -52
  7. package/dist/commands/infra.js +54 -54
  8. package/dist/commands/install.js +26 -3
  9. package/dist/commands/server.js +174 -174
  10. package/dist/commands/setup.js +332 -100
  11. package/dist/commands/validate.js +248 -84
  12. package/dist/index.js +12 -12
  13. package/dist/sdk/cdpTrack.js +2095 -0
  14. package/dist/sdk/cdpTrack.min.js +64 -0
  15. package/dist/sdk/install-snippet.html +10 -0
  16. package/docs/whatsapp-ctwa.md +5 -4
  17. package/extracted-skill/tracking-events-generator/INTEGRACAO-COMPLETA.md +89 -0
  18. package/extracted-skill/tracking-events-generator/MELHORIAS-IMPLEMENTADAS.md +101 -0
  19. package/extracted-skill/tracking-events-generator/advanced-matching.js +364 -364
  20. package/extracted-skill/tracking-events-generator/agents/ab-ltv-agent.md +196 -0
  21. package/extracted-skill/tracking-events-generator/agents/ab-testing-agent.md +1 -1
  22. package/extracted-skill/tracking-events-generator/agents/attribution-agent.md +41 -41
  23. package/extracted-skill/tracking-events-generator/agents/bidding-agent.md +347 -0
  24. package/extracted-skill/tracking-events-generator/agents/bing-agent.md +40 -50
  25. package/extracted-skill/tracking-events-generator/agents/browser-tracking.md +174 -74
  26. package/extracted-skill/tracking-events-generator/agents/code-guardian-agent.md +1 -1
  27. package/extracted-skill/tracking-events-generator/agents/compliance-agent.md +25 -5
  28. package/extracted-skill/tracking-events-generator/agents/dashboard-agent.md +10 -10
  29. package/extracted-skill/tracking-events-generator/agents/database-agent.md +43 -42
  30. package/extracted-skill/tracking-events-generator/agents/debug-agent.md +22 -22
  31. package/extracted-skill/tracking-events-generator/agents/devops-agent.md +232 -0
  32. package/extracted-skill/tracking-events-generator/agents/domain-setup-agent.md +23 -9
  33. package/extracted-skill/tracking-events-generator/agents/email-agent.md +28 -1
  34. package/extracted-skill/tracking-events-generator/agents/evo-crm-agent.md +244 -0
  35. package/extracted-skill/tracking-events-generator/agents/fingerprint-agent.md +206 -1
  36. package/extracted-skill/tracking-events-generator/agents/fraud-detection-agent.md +143 -0
  37. package/extracted-skill/tracking-events-generator/agents/google-agent.md +128 -2
  38. package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +191 -31
  39. package/extracted-skill/tracking-events-generator/agents/lead-scoring-agent.md +282 -0
  40. package/extracted-skill/tracking-events-generator/agents/linkedin-agent.md +145 -34
  41. package/extracted-skill/tracking-events-generator/agents/localization-agent.md +1 -1
  42. package/extracted-skill/tracking-events-generator/agents/ltv-predictor-agent.md +5 -5
  43. package/extracted-skill/tracking-events-generator/agents/master-feedback-loop.md +81 -21
  44. package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +428 -190
  45. package/extracted-skill/tracking-events-generator/agents/match-quality-agent.md +304 -0
  46. package/extracted-skill/tracking-events-generator/agents/memory-agent.json +25 -109
  47. package/extracted-skill/tracking-events-generator/agents/memory-agent.md +190 -15
  48. package/extracted-skill/tracking-events-generator/agents/meta-agent.md +10 -2
  49. package/extracted-skill/tracking-events-generator/agents/ml-clustering-agent.md +749 -0
  50. package/extracted-skill/tracking-events-generator/agents/page-analyzer.md +21 -4
  51. package/extracted-skill/tracking-events-generator/agents/performance-agent.md +41 -31
  52. package/extracted-skill/tracking-events-generator/agents/performance-optimization-agent.md +18 -8
  53. package/extracted-skill/tracking-events-generator/agents/pinterest-agent.md +14 -6
  54. package/extracted-skill/tracking-events-generator/agents/premium-tracking-intelligence-agent.md +7 -7
  55. package/extracted-skill/tracking-events-generator/agents/r2-setup-agent.md +16 -8
  56. package/extracted-skill/tracking-events-generator/agents/reddit-agent.md +15 -7
  57. package/extracted-skill/tracking-events-generator/agents/security-enterprise-agent.md +157 -48
  58. package/extracted-skill/tracking-events-generator/agents/server-tracking.md +35 -35
  59. package/extracted-skill/tracking-events-generator/agents/spotify-agent.md +15 -7
  60. package/extracted-skill/tracking-events-generator/agents/tiktok-agent.md +73 -2
  61. package/extracted-skill/tracking-events-generator/agents/tracking-plan-agent.md +104 -9
  62. package/extracted-skill/tracking-events-generator/agents/utm-agent.md +322 -0
  63. package/extracted-skill/tracking-events-generator/agents/validator-agent.md +13 -9
  64. package/extracted-skill/tracking-events-generator/agents/webhook-agent.md +112 -4
  65. package/extracted-skill/tracking-events-generator/agents/whatsapp-agent.md +58 -5
  66. package/extracted-skill/tracking-events-generator/agents/whatsapp-ctwa-setup-agent.md +26 -18
  67. package/extracted-skill/tracking-events-generator/agents/youtube-agent.md +152 -37
  68. package/extracted-skill/tracking-events-generator/anti-blocking.js +285 -285
  69. package/extracted-skill/tracking-events-generator/cdpTrack.js +642 -641
  70. package/extracted-skill/tracking-events-generator/contracts/api-versions.json +14 -10
  71. package/extracted-skill/tracking-events-generator/engagement-scoring.js +226 -226
  72. package/extracted-skill/tracking-events-generator/evals/evals.json +235 -235
  73. package/extracted-skill/tracking-events-generator/integration-test.js +497 -497
  74. package/extracted-skill/tracking-events-generator/knowledge-base.md +172 -0
  75. package/extracted-skill/tracking-events-generator/micro-events.js +992 -992
  76. package/extracted-skill/tracking-events-generator/models/lancamento-imobiliario.md +344 -0
  77. package/extracted-skill/tracking-events-generator/models/pinterest/conversions-api-template.js +144 -144
  78. package/extracted-skill/tracking-events-generator/models/pinterest/event-mappings.json +48 -48
  79. package/extracted-skill/tracking-events-generator/models/pinterest/tag-template.js +28 -28
  80. package/extracted-skill/tracking-events-generator/models/quiz-funnel.md +83 -19
  81. package/extracted-skill/tracking-events-generator/models/reddit/conversions-api-template.js +205 -205
  82. package/extracted-skill/tracking-events-generator/models/reddit/event-mappings.json +56 -56
  83. package/extracted-skill/tracking-events-generator/models/reddit/pixel-template.js +19 -19
  84. package/extracted-skill/tracking-events-generator/models/scenarios/behavior-engine.js +425 -425
  85. package/extracted-skill/tracking-events-generator/route-intent-capture.js +222 -0
  86. package/extracted-skill/tracking-events-generator/tracking.config.js +3 -3
  87. package/package.json +89 -75
  88. package/scripts/build-sdk.js +106 -0
  89. package/server-edge-tracker/.client.env.example +14 -0
  90. package/server-edge-tracker/INSTALAR.md +222 -23
  91. package/server-edge-tracker/SEGMENTATION-DOCS.md +513 -0
  92. package/server-edge-tracker/config/utm-mapping.json +64 -0
  93. package/server-edge-tracker/deploy-client.cjs +76 -0
  94. package/server-edge-tracker/index.ts +1230 -0
  95. package/server-edge-tracker/migrate-v7.sql +64 -0
  96. package/server-edge-tracker/modules/db.ts +710 -0
  97. package/server-edge-tracker/modules/dispatch/crm.ts +382 -0
  98. package/server-edge-tracker/modules/dispatch/ga4.ts +72 -0
  99. package/server-edge-tracker/modules/dispatch/meta.ts +143 -0
  100. package/server-edge-tracker/modules/dispatch/platforms.ts +255 -0
  101. package/server-edge-tracker/modules/dispatch/tiktok.ts +107 -0
  102. package/server-edge-tracker/modules/dispatch/whatsapp.ts +296 -0
  103. package/server-edge-tracker/modules/intelligence.ts +589 -0
  104. package/server-edge-tracker/modules/ml/bidding.ts +247 -0
  105. package/server-edge-tracker/modules/ml/fraud.ts +302 -0
  106. package/server-edge-tracker/modules/ml/logistic.ts +226 -0
  107. package/server-edge-tracker/modules/ml/ltv.ts +531 -0
  108. package/server-edge-tracker/modules/ml/matchquality.ts +232 -0
  109. package/server-edge-tracker/modules/ml/quiz.ts +343 -0
  110. package/server-edge-tracker/modules/ml/roas.ts +255 -0
  111. package/server-edge-tracker/modules/ml/segmentation.ts +407 -0
  112. package/server-edge-tracker/modules/nurture.ts +257 -0
  113. package/server-edge-tracker/modules/utils.ts +311 -0
  114. package/server-edge-tracker/modules/utm/utm-enricher.ts +231 -0
  115. package/server-edge-tracker/schema-ab-ltv.sql +97 -0
  116. package/server-edge-tracker/schema-bidding.sql +86 -0
  117. package/server-edge-tracker/schema-fraud.sql +90 -0
  118. package/server-edge-tracker/schema-indexes.sql +67 -0
  119. package/server-edge-tracker/schema-ltv-feedback.sql +11 -0
  120. package/server-edge-tracker/schema-quiz.sql +52 -0
  121. package/server-edge-tracker/schema-sales-engine.sql +113 -0
  122. package/server-edge-tracker/schema-segmentation.sql +219 -0
  123. package/server-edge-tracker/schema-utm.sql +82 -0
  124. package/server-edge-tracker/schema.sql +281 -265
  125. package/server-edge-tracker/types.ts +275 -0
  126. package/server-edge-tracker/wrangler.toml +140 -85
  127. package/templates/lancamento-imobiliario.md +344 -0
  128. package/templates/multi-step-checkout.md +3 -4
  129. package/templates/pinterest/conversions-api-template.js +144 -144
  130. package/templates/pinterest/event-mappings.json +48 -48
  131. package/templates/pinterest/tag-template.js +28 -28
  132. package/templates/quiz-funnel.md +83 -19
  133. package/templates/reddit/conversions-api-template.js +205 -205
  134. package/templates/reddit/event-mappings.json +56 -56
  135. package/templates/reddit/pixel-template.js +12 -39
  136. package/templates/scenarios/behavior-engine.js +45 -22
  137. package/docs/PixelBuilder-Documentacao-Completa (2).docx +0 -0
  138. package/docs/installation.md +0 -155
  139. package/docs/quick-start.md +0 -185
  140. package/extracted-skill/tracking-events-generator/agents/crm-integration-agent.md +0 -1419
  141. package/extracted-skill/tracking-events-generator/agents/intelligence-scheduling.md +0 -643
  142. package/server-edge-tracker/worker.js +0 -2574
@@ -0,0 +1,275 @@
1
+ /**
2
+ * CDP Edge — Server Types
3
+ * Tipos para o Cloudflare Worker e bindings
4
+ */
5
+
6
+ import { D1Database, KVNamespace, Queue, R2Bucket } from '@cloudflare/workers-types';
7
+
8
+ // ── Environment Bindings ─────────────────────────────────────────────────────
9
+ export interface Env {
10
+ // D1 Database
11
+ DB?: D1Database;
12
+
13
+ // KV Namespace
14
+ GEO_CACHE?: KVNamespace;
15
+
16
+ // R2 Bucket
17
+ AUDIT_LOGS?: R2Bucket;
18
+
19
+ // Workers AI
20
+ AI?: any;
21
+
22
+ // Rate Limiter
23
+ RATE_LIMITER?: any;
24
+
25
+ // Queue — Retry de eventos com falha de rede
26
+ RETRY_QUEUE?: Queue<QueueMessage>;
27
+
28
+ // Public Variables
29
+ META_PIXEL_ID?: string;
30
+ GA4_MEASUREMENT_ID?: string;
31
+ TIKTOK_PIXEL_ID?: string;
32
+ SITE_DOMAIN?: string;
33
+
34
+ // Secrets
35
+ META_ACCESS_TOKEN?: string;
36
+ GA4_API_SECRET?: string;
37
+ TIKTOK_ACCESS_TOKEN?: string;
38
+ WA_WEBHOOK_VERIFY_TOKEN?: string;
39
+ // WhatsApp Cloud API — nomes canônicos (Meta Cloud API v22.0)
40
+ WHATSAPP_ACCESS_TOKEN?: string; // canonical: Bearer token do System User
41
+ WHATSAPP_PHONE_NUMBER_ID?: string; // canonical: ID numérico do número no Meta Business
42
+ // WhatsApp Cloud API — nomes legados (backwards compat)
43
+ WA_ACCESS_TOKEN?: string;
44
+ WA_PHONE_ID?: string;
45
+ WA_NOTIFY_NUMBER?: string;
46
+ CALLMEBOT_PHONE?: string;
47
+ WEBHOOK_SECRET_TICTO?: string;
48
+ WEBHOOK_SECRET_HOTMART?: string;
49
+ WEBHOOK_SECRET_KIWIFY?: string;
50
+ META_TEST_CODE?: string;
51
+ META_AD_ACCOUNT_ID?: string;
52
+ META_AUDIENCE_ID?: string;
53
+ PINTEREST_ACCESS_TOKEN?: string;
54
+ PINTEREST_AD_ACCOUNT_ID?: string;
55
+ REDDIT_ACCESS_TOKEN?: string;
56
+ REDDIT_AD_ACCOUNT_ID?: string;
57
+ LINKEDIN_ACCESS_TOKEN?: string;
58
+ LINKEDIN_CONVERSION_ID?: string;
59
+ LINKEDIN_AD_ACCOUNT_ID?: string;
60
+ SPOTIFY_ACCESS_TOKEN?: string;
61
+ SPOTIFY_AD_ACCOUNT_ID?: string;
62
+
63
+ // Email and Notification
64
+ RESEND_API_KEY?: string;
65
+ RESEND_FROM_EMAIL?: string;
66
+ CALLMEBOT_APIKEY?: string;
67
+
68
+ // EVO CRM — OAuth2 client_credentials
69
+ EVO_CRM_BASE_URL?: string; // URL base do EVO CRM (ex: https://api-evocrm.suaempresa.com)
70
+ EVO_CRM_CLIENT_ID?: string; // OAuth client_id (Doorkeeper app)
71
+ EVO_CRM_CLIENT_SECRET?: string; // OAuth client_secret
72
+ EVO_CRM_INBOX_ID?: string; // ID do inbox onde as conversas serão criadas
73
+ EVO_CRM_DEFAULT_COUNTRY?: string; // Country dial code para phones locais (default "55" = Brasil)
74
+ EVO_CRM_LOCALE?: string; // Locale da nota interna: "pt-BR" | "en-US" | "es-ES" (default "pt-BR")
75
+ }
76
+
77
+ // ── Event Payload Types ───────────────────────────────────────────────────────
78
+ export interface TrackPayload {
79
+ eventName?: string;
80
+ eventId?: string;
81
+ event_id?: string;
82
+ userId?: string;
83
+ email?: string | null;
84
+ phone?: string | null;
85
+ firstName?: string | null;
86
+ lastName?: string | null;
87
+ city?: string | null;
88
+ state?: string | null;
89
+ zip?: string | null;
90
+ country?: string | null;
91
+ dob?: string | null;
92
+
93
+ // Identifiers
94
+ fbp?: string | null;
95
+ fbc?: string | null;
96
+ fbclid?: string | null;
97
+ ttp?: string | null;
98
+ gclid?: string | null;
99
+ wbraid?: string | null;
100
+ gbraid?: string | null;
101
+ ttclid?: string | null;
102
+ rclid?: string | null;
103
+ msclkid?: string | null;
104
+ li_fat_id?: string | null;
105
+ gaClientId?: string | null;
106
+ sessionId?: string | null;
107
+
108
+ // Parameters
109
+ value?: number | null;
110
+ currency?: string | null;
111
+ contentIds?: string[] | null;
112
+ contentName?: string | null;
113
+ contentType?: string | null;
114
+ pageUrl?: string | null;
115
+ orderId?: string | null;
116
+ productName?: string | null;
117
+
118
+ // Quantum Tracking Details
119
+ intent_score?: string | number | null;
120
+ intentScoreNum?: number | null;
121
+ intent_bucket?: string | null;
122
+ intent_penalized?: boolean;
123
+ metaSignal?: number | null;
124
+ metaSignalBucket?: string | null;
125
+ distanceBucket?: string | null;
126
+ distanceKm?: number | null;
127
+ funnel_stage?: string | null;
128
+ funnelDepth?: string | null;
129
+ funnelLevel?: string | null;
130
+ internalEvent?: string | null;
131
+ botScore?: number | null;
132
+
133
+ // Real Estate
134
+ property_lat?: string | number | null;
135
+ propertyLat?: string | number | null;
136
+ property_lng?: string | number | null;
137
+ propertyLng?: string | number | null;
138
+
139
+ // Engagement
140
+ engagementScore?: number | null;
141
+ intentionLevel?: string | null;
142
+ userScore?: number | null;
143
+ scrollScore?: number | null;
144
+ timeLevel?: string | null;
145
+
146
+ // UTM
147
+ utmSource?: string | null;
148
+ utmMedium?: string | null;
149
+ utmCampaign?: string | null;
150
+ utmContent?: string | null;
151
+ utmTerm?: string | null;
152
+ utmRestored?: boolean;
153
+
154
+ // LTV
155
+ ltvClass?: string | null;
156
+ ltvScore?: number | null;
157
+
158
+ // Additional fields
159
+ [key: string]: any;
160
+ }
161
+
162
+ export interface BehavioralData {
163
+ engagement_score?: number;
164
+ totalScore?: number;
165
+ intention_level?: string;
166
+ user_score?: number;
167
+ scroll_score?: number;
168
+ time_level?: string;
169
+ email?: string | null;
170
+ phone?: string | null;
171
+ first_name?: string | null;
172
+ firstName?: string | null;
173
+ last_name?: string | null;
174
+ lastName?: string | null;
175
+ city?: string | null;
176
+ state?: string | null;
177
+ zip?: string | null;
178
+ dob?: string | null;
179
+ }
180
+
181
+ // ── Webhook Types ─────────────────────────────────────────────────────────────
182
+ export interface HotmartWebhook {
183
+ data?: {
184
+ buyer?: {
185
+ email?: string;
186
+ phone?: string;
187
+ name?: string;
188
+ };
189
+ purchase?: {
190
+ status?: string;
191
+ transaction?: string;
192
+ price?: {
193
+ value?: number;
194
+ currency_value?: string;
195
+ };
196
+ };
197
+ product?: {
198
+ id?: string;
199
+ ucode?: string;
200
+ name?: string;
201
+ };
202
+ };
203
+ [key: string]: any;
204
+ }
205
+
206
+ export interface KiwifyWebhook {
207
+ order_status?: string;
208
+ order_id?: string;
209
+ order_value?: string;
210
+ Customer?: {
211
+ email?: string;
212
+ mobile?: string;
213
+ full_name?: string;
214
+ };
215
+ Product?: {
216
+ product_id?: string;
217
+ product_name?: string;
218
+ };
219
+ [key: string]: any;
220
+ }
221
+
222
+ export interface TictoWebhook {
223
+ status?: string;
224
+ customer?: {
225
+ email?: string;
226
+ phone?: string;
227
+ name?: string;
228
+ };
229
+ order?: {
230
+ hash?: string;
231
+ transaction_hash?: string;
232
+ id?: string;
233
+ paid_amount?: number;
234
+ total?: number;
235
+ amount?: number;
236
+ };
237
+ item?: {
238
+ product_id?: string;
239
+ product_name?: string;
240
+ };
241
+ tracking?: {
242
+ user_id?: string;
243
+ fbclid?: string;
244
+ utm_source?: string;
245
+ src?: string;
246
+ utm_medium?: string;
247
+ utm_campaign?: string;
248
+ utm_content?: string;
249
+ };
250
+ url_params?: {
251
+ user_id?: string;
252
+ fbclid?: string;
253
+ utm_source?: string;
254
+ src?: string;
255
+ utm_medium?: string;
256
+ utm_campaign?: string;
257
+ utm_content?: string;
258
+ };
259
+ [key: string]: any;
260
+ }
261
+
262
+ // ── Queue Message Types ───────────────────────────────────────────────────────
263
+ export interface QueueMessage {
264
+ eventType: string;
265
+ payload: TrackPayload;
266
+ platform: string;
267
+ attempt?: number;
268
+ }
269
+
270
+ // ── Promise Settled Result Helpers ─────────────────────────────────────────────
271
+ export interface PromiseResult<T> {
272
+ status: 'fulfilled' | 'rejected';
273
+ value?: T;
274
+ reason?: Error | string;
275
+ }
@@ -1,85 +1,140 @@
1
- name = "server-edge-tracker"
2
- main = "worker.js"
3
- compatibility_date = "2025-01-01"
4
- compatibility_flags = ["nodejs_compat"]
5
-
6
- # ── Variáveis públicas (não são segredos) ─────────────────────────────────────
7
- [vars]
8
- META_PIXEL_ID = "1583939052660159"
9
- GA4_MEASUREMENT_ID = "G-XXXXXXXXXX"
10
- TIKTOK_PIXEL_ID = "CXXXXXXXXXXXXXXX"
11
- SITE_DOMAIN = "server-edge-tracker.suporte-ed9.workers.dev"
12
-
13
- # ── Banco D1 ──────────────────────────────────────────────────────────────────
14
- # Após criar o banco com "wrangler d1 create cdp-edge-db",
15
- # substitua o database_id pelo ID retornado no terminal.
16
- [[d1_databases]]
17
- binding = "DB"
18
- database_name = "cdp-edge-db"
19
- database_id = "7867d38f-5fa8-4c17-b465-386211422c09"
20
-
21
- # ── Queues — Retry + Dead Letter Queue ───────────────────────────────────────
22
- # Produtor: worker envia eventos com falha para cdp-edge-retry
23
- # Consumidor: worker processa a fila e reaplica; falhas vão para cdp-edge-dlq
24
- # Criar com: wrangler queues create cdp-edge-retry
25
- # wrangler queues create cdp-edge-dlq
26
- [[queues.producers]]
27
- binding = "RETRY_QUEUE"
28
- queue = "cdp-edge-retry"
29
-
30
- [[queues.consumers]]
31
- queue = "cdp-edge-retry"
32
- max_batch_size = 10
33
- max_batch_timeout = 30
34
- max_retries = 3
35
- dead_letter_queue = "cdp-edge-dlq"
36
-
37
- # ── KV Namespace — Geo/Session Cache ─────────────────────────────────────────
38
- # Cache de geolocalização e sessões recentes (TTL: 1h por padrão)
39
- # Criar com: wrangler kv namespace create GEO_CACHE
40
- # wrangler kv namespace create GEO_CACHE --preview
41
- [[kv_namespaces]]
42
- binding = "GEO_CACHE"
43
- id = "821b6c1ccb4b475985439b801c1fdbe0"
44
- preview_id = "d2d9198f47e340ee905a8dc566b09e95"
45
-
46
- # ── R2 Bucket — Audit Logs ────────────────────────────────────────────────────
47
- # ⚠️ PENDENTE: Habilitar R2 no Cloudflare Dashboard antes de descomentar
48
- # Dashboard → R2 → Enable → depois: wrangler r2 bucket create cdp-edge-logs
49
- # [[r2_buckets]]
50
- # binding = "AUDIT_LOGS"
51
- # bucket_name = "cdp-edge-logs"
52
-
53
- # ── Cron Triggers — Intelligence Agent ───────────────────────────────────────
54
- # Semanal: domingo 02:00 UTC — check de versões de API + relatório diário
55
- # Mensal: 1º do mês 03:00 UTC — auditoria de taxa de erro + alertas críticos
56
- [triggers]
57
- crons = ["0 2 * * 7", "0 3 1 * *"]
58
-
59
- # ── Cloudflare Workers AI ─────────────────────────────────────────────────────
60
- # Habilita env.AI para LTV Prediction (Fase 4)
61
- # Plano gratuito inclui 10.000 neurônios/dia — suficiente para enrichment
62
- [ai]
63
- binding = "AI"
64
-
65
- # ── Secrets (NÃO ficam aqui — configurar via CLI) ─────────────────────────────
66
- # wrangler secret put META_ACCESS_TOKEN ← token Meta CAPI (obrigatório)
67
- # wrangler secret put GA4_API_SECRET ← secret GA4 Measurement Protocol (obrigatório)
68
- # wrangler secret put TIKTOK_ACCESS_TOKEN ← token TikTok Events API (opcional)
69
- # wrangler secret put META_TEST_CODE ← para testes (remover em produção)
70
- # wrangler secret put META_AD_ACCOUNT_ID ← ID da conta de anúncios Meta (act_XXXXXXXXX) — Customer Match
71
- # wrangler secret put META_AUDIENCE_ID ← ID da Custom Audience Meta — Customer Match automático
72
- # wrangler secret put WHATSAPP_TOKEN ← Token WhatsApp Cloud API (Meta Business Suite)
73
- # wrangler secret put WHATSAPP_PHONE_NUMBER_ID ← ID do número WhatsApp (Meta Business Suite → Phone Numbers)
74
- # wrangler secret put RESEND_API_KEY ← API Key do Resend (resend.com)
75
- # wrangler secret put RESEND_FROM_EMAIL ← Remetente verificado ex: "CDP Edge <noreply@seudominio.com.br>"
76
- # wrangler secret put WA_WEBHOOK_VERIFY_TOKEN ← Token de verificação do webhook WhatsApp (você define qualquer string segura)
77
- # wrangler secret put PINTEREST_ACCESS_TOKEN ← Bearer token Pinterest Conversions API
78
- # wrangler secret put PINTEREST_AD_ACCOUNT_ID ← ID da conta de anúncios Pinterest (ex: 549755813XXX)
79
- # wrangler secret put REDDIT_ACCESS_TOKEN ← Bearer token Reddit Conversions API
80
- # wrangler secret put REDDIT_AD_ACCOUNT_ID ← ID da conta de anúncios Reddit (ex: t2_XXXXXXX)
81
- # wrangler secret put LINKEDIN_ACCESS_TOKEN ← OAuth2 Bearer token LinkedIn Marketing API
82
- # wrangler secret put LINKEDIN_CONVERSION_ID ← ID da conversão LinkedIn (ex: 12345678)
83
- # wrangler secret put LINKEDIN_AD_ACCOUNT_ID ← ID da conta de anúncios LinkedIn
84
- # wrangler secret put SPOTIFY_ACCESS_TOKEN ← Bearer token Spotify Advertising API
85
- # wrangler secret put SPOTIFY_AD_ACCOUNT_ID ← ID da conta de anúncios Spotify Ads
1
+ name = "server-edge-tracker"
2
+ # Entry point: worker.js (monólito original, 100% compatível)
3
+ # Para usar a versão modular ES Modules: altere para main = "index.ts"
4
+ main = "index.ts"
5
+ compatibility_date = "2025-01-01"
6
+ compatibility_flags = ["nodejs_compat"]
7
+ workers_dev = true
8
+
9
+ # ── Worker Routes — same-domain tracking (imune a bloqueios) ─────────────────
10
+ # Substituir SEU_DOMINIO pelo domínio do cliente antes do deploy
11
+ # [[routes]]
12
+ # pattern = "SEU_DOMINIO/track*"
13
+ # zone_name = "SEU_DOMINIO"
14
+ #
15
+ # [[routes]]
16
+ # pattern = "*.SEU_DOMINIO/track*"
17
+ # zone_name = "SEU_DOMINIO"
18
+
19
+ # [[routes]]
20
+ # pattern = "SEU_DOMINIO/track*"
21
+ # zone_name = "SEU_DOMINIO"
22
+ #
23
+ # [[routes]]
24
+ # pattern = "*.SEU_DOMINIO/track*"
25
+ # zone_name = "SEU_DOMINIO"
26
+
27
+ # ── Variáveis públicas (não são segredos) ─────────────────────────────────────
28
+ [vars]
29
+ META_PIXEL_ID = ""
30
+ GA4_MEASUREMENT_ID = ""
31
+ TIKTOK_PIXEL_ID = ""
32
+ SITE_DOMAIN = "SEU_DOMINIO"
33
+
34
+ # ── Banco D1 ──────────────────────────────────────────────────────────────────
35
+ # Após criar o banco com "wrangler d1 create cdp-edge-db",
36
+ # substitua o database_id pelo ID retornado no terminal.
37
+ [[d1_databases]]
38
+ binding = "DB"
39
+ database_name = "cdp-edge-db"
40
+ database_id = "7867d38f-5fa8-4c17-b465-386211422c09"
41
+
42
+ # ── Queues — Retry + Dead Letter Queue ───────────────────────────────────────
43
+ # Produtor: worker envia eventos com falha para cdp-edge-retry
44
+ # Consumidor: worker processa a fila e reaplica; falhas vão para cdp-edge-dlq
45
+ # Criar com: wrangler queues create cdp-edge-retry
46
+ # wrangler queues create cdp-edge-dlq
47
+ [[queues.producers]]
48
+ binding = "RETRY_QUEUE"
49
+ queue = "cdp-edge-retry"
50
+
51
+ [[queues.consumers]]
52
+ queue = "cdp-edge-retry"
53
+ max_batch_size = 10
54
+ max_batch_timeout = 30
55
+ max_retries = 3
56
+ dead_letter_queue = "cdp-edge-dlq"
57
+
58
+ # ── KV Namespace — Geo/Session Cache ─────────────────────────────────────────
59
+ # Cache de geolocalização e sessões recentes (TTL: 1h por padrão)
60
+ # Criar com: wrangler kv namespace create GEO_CACHE
61
+ # wrangler kv namespace create GEO_CACHE --preview
62
+ [[kv_namespaces]]
63
+ binding = "GEO_CACHE"
64
+ id = "821b6c1ccb4b475985439b801c1fdbe0"
65
+ preview_id = "d2d9198f47e340ee905a8dc566b09e95"
66
+
67
+ # ── R2 Bucket Audit Logs ────────────────────────────────────────────────────
68
+ # Logs imutáveis por evento: logs/YYYY/MM/DD/{timestamp}_{eventName}.json
69
+ # Sem PII apenas userId, eventId, ltvClass, UTMs, geo
70
+ [[r2_buckets]]
71
+ binding = "AUDIT_LOGS"
72
+ bucket_name = "cdp-edge-logs"
73
+
74
+ # ── Cron Triggers Intelligence Agent ───────────────────────────────────────
75
+ # Semanal: domingo 02:00 UTC check de versões de API + relatório diário
76
+ # Mensal: 1º do mês 03:00 UTC auditoria de taxa de erro + alertas críticos
77
+ [triggers]
78
+ crons = ["0 2 * * 7", "0 3 1 * *"]
79
+
80
+ # ── Cloudflare Workers AI ─────────────────────────────────────────────────────
81
+ # Habilita env.AI para LTV Prediction (Fase 4)
82
+ # Plano gratuito inclui 10.000 neurônios/dia suficiente para enrichment
83
+ [ai]
84
+ binding = "AI"
85
+
86
+ # ── Rate Limiting — proteção do /track contra abuso de cota ──────────────────
87
+ # Bloqueia na borda ANTES de qualquer processamento do Worker
88
+ # Limite: 60 requisições por minuto por IP (generoso para usuário real)
89
+ # Requer Workers Paid plan ($5/mês) — remover bloco se usar plano free
90
+ [[unsafe.bindings]]
91
+ name = "RATE_LIMITER"
92
+ type = "ratelimit"
93
+ namespace_id = "1001"
94
+
95
+ [unsafe.bindings.simple]
96
+ limit = 60
97
+ period = 60
98
+
99
+ # ── Observabilidade — Logs + Traces persistidos no painel Cloudflare ─────────
100
+ [observability]
101
+ enabled = false
102
+ head_sampling_rate = 1
103
+
104
+ [observability.logs]
105
+ enabled = true
106
+ head_sampling_rate = 1
107
+ persist = true
108
+ invocation_logs = true
109
+
110
+ [observability.traces]
111
+ enabled = false
112
+ persist = true
113
+ head_sampling_rate = 1
114
+
115
+ # ── Secrets (NÃO ficam aqui — configurar via CLI) ─────────────────────────────
116
+ # wrangler secret put META_ACCESS_TOKEN ← token Meta CAPI (obrigatório)
117
+ # wrangler secret put GA4_API_SECRET ← secret GA4 Measurement Protocol (obrigatório)
118
+ # wrangler secret put TIKTOK_ACCESS_TOKEN ← token TikTok Events API (opcional)
119
+ # wrangler secret put META_TEST_CODE ← só para testes (remover em produção)
120
+ # wrangler secret put META_AD_ACCOUNT_ID ← ID da conta de anúncios Meta (act_XXXXXXXXX) — Customer Match
121
+ # wrangler secret put META_AUDIENCE_ID ← ID da Custom Audience Meta — Customer Match automático
122
+ # wrangler secret put WHATSAPP_TOKEN ← Token WhatsApp Cloud API (Meta Business Suite)
123
+ # wrangler secret put WHATSAPP_PHONE_NUMBER_ID ← ID do número WhatsApp (Meta Business Suite → Phone Numbers)
124
+ # wrangler secret put RESEND_API_KEY ← API Key do Resend (resend.com)
125
+ # wrangler secret put RESEND_FROM_EMAIL ← Remetente verificado ex: "CDP Edge <noreply@seudominio.com.br>"
126
+ # wrangler secret put WA_WEBHOOK_VERIFY_TOKEN ← Token de verificação do webhook WhatsApp (você define — qualquer string segura)
127
+ # wrangler secret put WEBHOOK_SECRET_TICTO ← HMAC-SHA256 Ticto
128
+ # wrangler secret put PINTEREST_ACCESS_TOKEN ← Bearer token Pinterest Conversions API
129
+ # wrangler secret put PINTEREST_AD_ACCOUNT_ID ← ID da conta de anúncios Pinterest (ex: 549755813XXX)
130
+ # wrangler secret put REDDIT_ACCESS_TOKEN ← Bearer token Reddit Conversions API
131
+ # wrangler secret put REDDIT_AD_ACCOUNT_ID ← ID da conta de anúncios Reddit (ex: t2_XXXXXXX)
132
+ # wrangler secret put LINKEDIN_ACCESS_TOKEN ← OAuth2 Bearer token LinkedIn Marketing API
133
+ # wrangler secret put LINKEDIN_CONVERSION_ID ← ID da conversão LinkedIn (ex: 12345678)
134
+ # wrangler secret put LINKEDIN_AD_ACCOUNT_ID ← ID da conta de anúncios LinkedIn
135
+ # wrangler secret put SPOTIFY_ACCESS_TOKEN ← Bearer token Spotify Advertising API
136
+ # wrangler secret put SPOTIFY_AD_ACCOUNT_ID ← ID da conta de anúncios Spotify Ads
137
+ # wrangler secret put EVO_CRM_BASE_URL ← URL base do EVO CRM (ex: https://api-evocrm.suaempresa.com)
138
+ # wrangler secret put EVO_CRM_CLIENT_ID ← OAuth client_id (Doorkeeper app no CRM)
139
+ # wrangler secret put EVO_CRM_CLIENT_SECRET ← OAuth client_secret
140
+ # wrangler secret put EVO_CRM_INBOX_ID ← ID do inbox onde as conversas serão criadas