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
@@ -46,6 +46,7 @@ const BehaviorEngine = {
46
46
 
47
47
  // 0.1 A/B Testing (Mode 1 - Edge Sync)
48
48
  setupABTesting() {
49
+ // Busca variante no Cookie ou URL (Modo 1)
49
50
  const getCookie = (name) => {
50
51
  const value = `; ${document.cookie}`;
51
52
  const parts = value.split(`; ${name}=`);
@@ -54,9 +55,10 @@ const BehaviorEngine = {
54
55
 
55
56
  const urlParams = new URLSearchParams(window.location.search);
56
57
  this.state.abVariant = urlParams.get('cdp_variant') || getCookie('cdp_ab_variant') || 'original';
57
-
58
+
58
59
  console.log(`[CDP Edge] A/B Variant Detected: ${this.state.abVariant}`);
59
-
60
+
61
+ // Intercepta o cdpTrack.track para injetar a variante globalmente
60
62
  const originalTrack = cdpTrack.track;
61
63
  cdpTrack.track = (eventName, eventParams = {}) => {
62
64
  const enrichedParams = {
@@ -77,6 +79,7 @@ const BehaviorEngine = {
77
79
  this.state.userScore = Math.min(100, Math.max(0, this.state.userScore + points));
78
80
  console.log(`[CDP Edge] Score Update: +${points} (${reason}) | Total: ${this.state.userScore}`);
79
81
 
82
+ // Gatilhos de Plataforma
80
83
  if (this.state.userScore >= this.config.scoreThresholds.highIntent && !this.state.firedScoreEvents.has('highIntent')) {
81
84
  this.state.firedScoreEvents.add('highIntent');
82
85
  cdpTrack.track('High_Intent_Lead', { score: this.state.userScore, meta_intensity: 'high' });
@@ -91,18 +94,20 @@ const BehaviorEngine = {
91
94
  document.addEventListener('click', (e) => {
92
95
  const now = Date.now();
93
96
  this.state.clickHistory.push(now);
97
+
98
+ // Limpa histórico antigo
94
99
  this.state.clickHistory = this.state.clickHistory.filter(t => now - t < this.config.rageClickTime);
95
-
100
+
96
101
  if (this.state.clickHistory.length >= this.config.rageClickThreshold) {
97
102
  cdpTrack.track('rage_click', {
98
103
  element_id: e.target.id || '',
99
104
  element_class: e.target.className || '',
100
105
  x: e.pageX,
101
106
  y: e.pageY,
102
- meta_intensity: 'low'
107
+ meta_intensity: 'low' // Envia sinal leve para Meta
103
108
  });
104
109
  this.addScore(-10, 'rage_click');
105
- this.state.clickHistory = [];
110
+ this.state.clickHistory = []; // Reseta após detecção
106
111
  }
107
112
  });
108
113
  },
@@ -111,17 +116,17 @@ const BehaviorEngine = {
111
116
  setupScroll() {
112
117
  const markers = [25, 50, 75, 90];
113
118
  const fired = new Set();
114
-
119
+
115
120
  window.addEventListener('scroll', () => {
116
121
  const scrollPct = Math.round((window.scrollY / (document.documentElement.scrollHeight - window.innerHeight)) * 100);
117
-
122
+
118
123
  markers.forEach(m => {
119
124
  if (scrollPct >= m && !fired.has(m)) {
120
125
  fired.add(m);
121
126
  this.addScore(m === 25 ? 5 : (m === 50 ? 5 : 10), `scroll_${m}%`);
122
127
  cdpTrack.track('scroll_depth', {
123
128
  percent: m,
124
- meta_intensity: m >= 50 ? 'medium' : 'low'
129
+ meta_intensity: m >= 50 ? 'medium' : 'low' // Envia como sinal mais forte após 50%
125
130
  });
126
131
  }
127
132
  });
@@ -131,7 +136,7 @@ const BehaviorEngine = {
131
136
  // 2. Tab Visibility (VSL Focus)
132
137
  setupVisibility() {
133
138
  document.addEventListener('visibilitychange', () => {
134
- const status = document.visibilityState;
139
+ const status = document.visibilityState; // 'visible' ou 'hidden'
135
140
  cdpTrack.track('tab_visibility_change', {
136
141
  status: status,
137
142
  time_since_start: Math.floor((Date.now() - this.state.startTime) / 1000),
@@ -143,6 +148,8 @@ const BehaviorEngine = {
143
148
  // 3. Click Heatmap (D1 Only)
144
149
  setupHeatmap() {
145
150
  document.addEventListener('click', (e) => {
151
+ // Enviamos apenas para o servidor/D1 para não poluir o pixel do cliente
152
+ // sendServerEvent é o método interno que pula o despacho para Meta/TikTok
146
153
  if (typeof cdpTrack.sendServerEvent === 'function') {
147
154
  cdpTrack.sendServerEvent('click_heatmap', null, {
148
155
  x: e.pageX,
@@ -177,18 +184,24 @@ const BehaviorEngine = {
177
184
  const isVimeo = src.includes('vimeo.com/video');
178
185
 
179
186
  if (isYT || isVimeo) {
187
+ // Observer de progresso (via postMessage para evitar dependência de SDK pesado)
180
188
  window.addEventListener('message', (event) => {
181
189
  try {
182
190
  const data = typeof event.data === 'string' ? JSON.parse(event.data) : event.data;
191
+
192
+ // Lógica YouTube
183
193
  if (isYT && data.event === 'infoDelivery' && data.info && data.info.currentTime) {
184
194
  this.handleVideoProgress(iframe, data.info.currentTime, data.info.duration, fired, 'YouTube');
185
195
  }
196
+
197
+ // Lógica Vimeo
186
198
  if (isVimeo && data.event === 'timeupdate') {
187
199
  this.handleVideoProgress(iframe, data.data.seconds, data.data.duration, fired, 'Vimeo');
188
200
  }
189
201
  } catch (e) { /* ignore non-json messages */ }
190
202
  });
191
-
203
+
204
+ // Ativa o JS API se for YouTube
192
205
  if (isYT && !src.includes('enablejsapi=1')) {
193
206
  const url = new URL(src);
194
207
  url.searchParams.set('enablejsapi', '1');
@@ -244,9 +257,10 @@ const BehaviorEngine = {
244
257
 
245
258
  // 6.1 Form Abandonment — saiu da página após interagir com formulário sem submeter
246
259
  setupFormAbandonment() {
247
- const formInteracted = new Set();
260
+ const formInteracted = new Set(); // campos que receberam foco
248
261
  let formSubmitted = false;
249
262
 
263
+ // Marcar campo como interagido no focus
250
264
  document.addEventListener('focusin', (e) => {
251
265
  const el = e.target;
252
266
  if (el.tagName === 'INPUT' || el.tagName === 'TEXTAREA' || el.tagName === 'SELECT') {
@@ -255,10 +269,12 @@ const BehaviorEngine = {
255
269
  }
256
270
  }, true);
257
271
 
272
+ // Marcar submit realizado (qualquer formulário)
258
273
  document.addEventListener('submit', () => {
259
274
  formSubmitted = true;
260
275
  }, true);
261
276
 
277
+ // Detectar abandono via visibilitychange (tab hidden / fechando)
262
278
  document.addEventListener('visibilitychange', () => {
263
279
  if (document.visibilityState === 'hidden' && formInteracted.size > 0 && !formSubmitted) {
264
280
  this.addScore(-5, 'form_abandonment');
@@ -271,8 +287,10 @@ const BehaviorEngine = {
271
287
  }
272
288
  });
273
289
 
290
+ // Fallback: beforeunload
274
291
  window.addEventListener('beforeunload', () => {
275
292
  if (formInteracted.size > 0 && !formSubmitted) {
293
+ // Usar sendBeacon para garantir entrega mesmo na saída
276
294
  if (navigator.sendBeacon && typeof cdpTrack !== 'undefined') {
277
295
  const data = JSON.stringify({
278
296
  eventName: 'form_abandonment',
@@ -289,26 +307,31 @@ const BehaviorEngine = {
289
307
 
290
308
  // 6.2 Exit Intent — mouse saindo pelo topo da viewport
291
309
  setupExitIntent() {
292
- let exitFired = false;
310
+ let exitFired = false; // disparar apenas uma vez por sessão
293
311
 
294
312
  document.addEventListener('mousemove', (e) => {
313
+ // Threshold: mouse a menos de 20px do topo da viewport
295
314
  if (e.clientY < 20 && !exitFired) {
296
315
  exitFired = true;
297
- this.addScore(15, 'exit_intent');
316
+ this.addScore(15, 'exit_intent'); // sinal positivo: ainda está aqui
298
317
  cdpTrack.track('exit_intent', {
299
318
  mouse_y: e.clientY,
300
319
  time_on_page: Math.floor((Date.now() - this.state.startTime) / 1000),
301
320
  user_score: this.state.userScore,
302
- meta_intensity: 'high',
321
+ meta_intensity: 'high', // Alta intenção — usuário está prestes a sair
303
322
  });
323
+
324
+ // Resetar após 30s para redetectar se usuário continuar
304
325
  setTimeout(() => { exitFired = false; }, 30000);
305
326
  }
306
327
  }, { passive: true });
307
328
 
329
+ // Mobile: detectar via visibilitychange (sem mouse)
308
330
  let mobileExitFired = false;
309
331
  document.addEventListener('visibilitychange', () => {
310
332
  if (document.visibilityState === 'hidden' && !mobileExitFired) {
311
333
  const timeOnPage = Math.floor((Date.now() - this.state.startTime) / 1000);
334
+ // Só dispara se usuário ficou tempo suficiente (não é bounce imediato)
312
335
  if (timeOnPage > 5) {
313
336
  mobileExitFired = true;
314
337
  cdpTrack.track('exit_intent_mobile', {
@@ -327,9 +350,9 @@ const BehaviorEngine = {
327
350
  const selectedText = window.getSelection().toString();
328
351
  if (selectedText.length > 0) {
329
352
  this.addScore(20, 'text_copy');
330
- cdpTrack.track('content_copy', {
353
+ cdpTrack.track('content_copy', {
331
354
  text_length: selectedText.length,
332
- meta_intensity: 'medium'
355
+ meta_intensity: 'medium'
333
356
  });
334
357
  }
335
358
  });
@@ -342,16 +365,16 @@ const BehaviorEngine = {
342
365
  if (link && link.href) {
343
366
  const url = link.href;
344
367
  const isExternal = !url.includes(window.location.hostname);
345
- const isWhitelisted = url.includes('wa.me') ||
346
- url.includes('hotmart.com') ||
347
- url.includes('kiwify.com') ||
368
+ const isWhitelisted = url.includes('wa.me') ||
369
+ url.includes('hotmart.com') ||
370
+ url.includes('kiwify.com') ||
348
371
  url.includes('checkout');
349
-
372
+
350
373
  if (isExternal && isWhitelisted) {
351
374
  this.addScore(100, 'outbound_conversion_intent');
352
- cdpTrack.track('outbound_click', {
375
+ cdpTrack.track('outbound_click', {
353
376
  destination: url,
354
- meta_intensity: 'high'
377
+ meta_intensity: 'high'
355
378
  });
356
379
  }
357
380
  }
@@ -1,155 +0,0 @@
1
- # CDP Edge — Instalação em Projetos de Clientes
2
-
3
- Como integrar o CDP Edge em qualquer projeto para que Claude Code, VS Code, Cursor e outras IDEs com IA o reconheçam automaticamente.
4
-
5
- ---
6
-
7
- ## Estrutura recomendada
8
-
9
- ```
10
- meu-projeto-cliente/ ← abrir esta pasta no Claude Code / VS Code
11
- ├── CLAUDE.md ← ⭐ faz o Claude Code ativar o CDP Edge automaticamente
12
- ├── .cursorrules ← (opcional) para Cursor IDE
13
- ├── cdp-edge/ ← CDP Edge instalado aqui
14
- │ ├── extracted-skill/
15
- │ ├── server-edge-tracker/
16
- │ ├── templates/
17
- │ └── docs/
18
- ├── src/ ← código do projeto do cliente
19
- └── ...
20
- ```
21
-
22
- ---
23
-
24
- ## Passo 1 — Instalar o CDP Edge na pasta do projeto
25
-
26
- ```bash
27
- # Dentro da pasta do projeto do cliente:
28
- cd meu-projeto-cliente
29
-
30
- # Opção A — clonar o CDP Edge como subpasta
31
- git clone https://github.com/ricardosoli777/CDP-Edge-Premium cdp-edge
32
-
33
- # Opção B — copiar manualmente
34
- # Copiar a pasta CDP-Edge inteira e renomear para cdp-edge/
35
- ```
36
-
37
- ---
38
-
39
- ## Passo 2 — Criar o CLAUDE.md na raiz do projeto
40
-
41
- Copiar o template de ativação:
42
-
43
- ```bash
44
- cp cdp-edge/templates/install/CLAUDE.md ./CLAUDE.md
45
- ```
46
-
47
- Editar o `CLAUDE.md` e substituir `[NOME DO PROJETO]` pelo nome real do projeto.
48
-
49
- **Por que isso funciona:**
50
- O Claude Code lê o `CLAUDE.md` da raiz do diretório aberto automaticamente. Quando encontra a instrução de leitura do `master-orchestrator.md`, ativa o sistema imediatamente na abertura da sessão.
51
-
52
- ---
53
-
54
- ## Passo 3 — Abrir o projeto no Claude Code
55
-
56
- ```bash
57
- # Na pasta do projeto (não dentro do cdp-edge):
58
- claude .
59
- ```
60
-
61
- O Claude Code vai:
62
- 1. Ler o `CLAUDE.md` da raiz
63
- 2. Encontrar a instrução de ativação do CDP Edge
64
- 3. Carregar o `master-orchestrator.md`
65
- 4. Exibir a mensagem de boas-vindas automaticamente
66
-
67
- ---
68
-
69
- ## Para VS Code com extensão Claude
70
-
71
- O mesmo mecanismo funciona. O `CLAUDE.md` é lido pela extensão Claude Code no VS Code quando você abre a pasta do projeto.
72
-
73
- ```bash
74
- code meu-projeto-cliente/
75
- ```
76
-
77
- ---
78
-
79
- ## Para Cursor IDE
80
-
81
- Criar adicionalmente um `.cursorrules` na raiz:
82
-
83
- ```bash
84
- cp cdp-edge/templates/install/CLAUDE.md .cursorrules
85
- ```
86
-
87
- O Cursor lê `.cursorrules` automaticamente e aplica as instruções ao agente AI.
88
-
89
- ---
90
-
91
- ## Para qualquer outra IDE com AI
92
-
93
- Qualquer IDE que suporte arquivos de instrução (`.aidioms`, `system-prompt.md`, etc.) pode usar o mesmo conteúdo do `CLAUDE.md` adaptado para o formato da IDE.
94
-
95
- ---
96
-
97
- ## Verificar se funcionou
98
-
99
- Ao abrir o projeto no Claude Code, você deve ver imediatamente:
100
-
101
- ```
102
- 👋 Olá! Bem-vindo ao CDP Edge — Quantum Tracking.
103
-
104
- Sou o seu Orquestrador de Rastreamento. Vou configurar toda a
105
- infraestrutura de tracking server-side para o seu projeto...
106
- ```
107
-
108
- Se não aparecer automaticamente, digitar:
109
-
110
- ```
111
- /cdp
112
- ```
113
-
114
- ou simplesmente:
115
-
116
- ```
117
- ative o master orchestrator do cdp edge
118
- ```
119
-
120
- ---
121
-
122
- ## Se o CDP Edge estiver em um caminho diferente
123
-
124
- Editar o `CLAUDE.md` na raiz e ajustar o path:
125
-
126
- ```markdown
127
- <!-- Padrão: -->
128
- Leia o arquivo: `cdp-edge/extracted-skill/tracking-events-generator/agents/master-orchestrator.md`
129
-
130
- <!-- Se instalado em outro lugar: -->
131
- Leia o arquivo: `ferramentas/cdp/extracted-skill/tracking-events-generator/agents/master-orchestrator.md`
132
- ```
133
-
134
- ---
135
-
136
- ## Estrutura de múltiplos projetos (workspace compartilhado)
137
-
138
- Se você trabalha com vários clientes e quer uma instalação única do CDP Edge:
139
-
140
- ```
141
- workspace/
142
- ├── cdp-edge/ ← instalação única compartilhada
143
- ├── cliente-1/
144
- │ ├── CLAUDE.md ← aponta para ../cdp-edge/...
145
- │ └── src/
146
- ├── cliente-2/
147
- │ ├── CLAUDE.md ← aponta para ../cdp-edge/...
148
- │ └── src/
149
- ```
150
-
151
- No `CLAUDE.md` de cada cliente, usar path relativo:
152
-
153
- ```markdown
154
- Leia o arquivo: `../cdp-edge/extracted-skill/tracking-events-generator/agents/master-orchestrator.md`
155
- ```
@@ -1,185 +0,0 @@
1
- # CDP Edge — Quick Start
2
- > Do zero ao primeiro evento em produção.
3
-
4
- ---
5
-
6
- ## Pré-requisitos
7
-
8
- | Ferramenta | Instalar |
9
- |---|---|
10
- | Node.js 18+ | nodejs.org |
11
- | Wrangler CLI | `npm install -g wrangler` |
12
- | Conta Cloudflare | cloudflare.com (plano gratuito suficiente) |
13
- | Conta Meta (Pixel + token CAPI) | business.facebook.com |
14
-
15
- ---
16
-
17
- ## 1. Autenticar no Cloudflare
18
-
19
- ```bash
20
- wrangler login
21
- ```
22
-
23
- ---
24
-
25
- ## 2. Criar o banco D1
26
-
27
- ```bash
28
- wrangler d1 create cdp-edge-db
29
- ```
30
-
31
- Copie o `database_id` retornado e cole no `wrangler.toml`:
32
-
33
- ```toml
34
- [[d1_databases]]
35
- binding = "DB"
36
- database_name = "cdp-edge-db"
37
- database_id = "COLE_O_ID_AQUI"
38
- ```
39
-
40
- ---
41
-
42
- ## 3. Aplicar o schema
43
-
44
- ```bash
45
- cd server-edge-tracker
46
-
47
- wrangler d1 execute cdp-edge-db --file=schema.sql --remote
48
- wrangler d1 execute cdp-edge-db --file=migrate-v2.sql --remote
49
- wrangler d1 execute cdp-edge-db --file=migrate-v3.sql --remote
50
- wrangler d1 execute cdp-edge-db --file=migrate-v4.sql --remote
51
- wrangler d1 execute cdp-edge-db --file=migrate-v5.sql --remote
52
- wrangler d1 execute cdp-edge-db --file=migrate-v6.sql --remote
53
- ```
54
-
55
- ---
56
-
57
- ## 4. Configurar secrets
58
-
59
- ```bash
60
- wrangler secret put META_ACCESS_TOKEN
61
- wrangler secret put GA4_API_SECRET
62
- wrangler secret put TIKTOK_ACCESS_TOKEN
63
- ```
64
-
65
- Para WhatsApp CTWA (opcional):
66
- ```bash
67
- wrangler secret put WA_WEBHOOK_VERIFY_TOKEN
68
- wrangler secret put WHATSAPP_TOKEN
69
- wrangler secret put WHATSAPP_PHONE_NUMBER_ID
70
- ```
71
-
72
- ---
73
-
74
- ## 5. Atualizar variáveis públicas no wrangler.toml
75
-
76
- ```toml
77
- [vars]
78
- META_PIXEL_ID = "SEU_PIXEL_ID"
79
- GA4_MEASUREMENT_ID = "G-XXXXXXXXXX"
80
- TIKTOK_PIXEL_ID = "CXXXXXXXXXXXXXXX"
81
- SITE_DOMAIN = "seudominio.com.br"
82
- ```
83
-
84
- ---
85
-
86
- ## 6. Deploy
87
-
88
- ```bash
89
- wrangler deploy
90
- ```
91
-
92
- O Worker ficará disponível em:
93
- ```
94
- https://server-edge-tracker.SEU-USUARIO.workers.dev
95
- ```
96
-
97
- ---
98
-
99
- ## 7. Testar o Worker
100
-
101
- ```bash
102
- # Health check
103
- curl https://server-edge-tracker.SEU-USUARIO.workers.dev/health
104
-
105
- # Evento de teste
106
- curl -X POST https://server-edge-tracker.SEU-USUARIO.workers.dev/track \
107
- -H "Content-Type: application/json" \
108
- -d '{
109
- "event": "PageView",
110
- "url": "https://seudominio.com.br/",
111
- "email": "teste@exemplo.com"
112
- }'
113
- ```
114
-
115
- Resposta esperada: `{"success":true}`
116
-
117
- ---
118
-
119
- ## 8. Instalar o SDK no site
120
-
121
- ```html
122
- <!-- No <head> de todas as páginas -->
123
- <script>
124
- window.CDP_CONFIG = {
125
- endpoint: 'https://server-edge-tracker.SEU-USUARIO.workers.dev/track',
126
- pixelId: 'SEU_PIXEL_ID'
127
- };
128
- </script>
129
- <script src="/js/cdpTrack.js" type="module" async></script>
130
- ```
131
-
132
- O SDK inicializa automaticamente e dispara `PageView` ao carregar.
133
-
134
- ---
135
-
136
- ## 9. Verificar no Meta Events Manager
137
-
138
- ```
139
- Meta Business Suite
140
- → Gerenciador de Eventos
141
- → Seu Pixel
142
- → Atividade de Teste
143
- → Filtrar por "Servidor"
144
- ```
145
-
146
- Você deve ver o `PageView` chegando com `action_source: website`.
147
-
148
- ---
149
-
150
- ## 10. (Opcional) Conectar domínio próprio
151
-
152
- Para máxima eficácia (cookie first-party no domínio do cliente):
153
-
154
- ```
155
- Cloudflare Dashboard → DNS → Add record
156
- Type: CNAME
157
- Name: track
158
- Target: server-edge-tracker.SEU-USUARIO.workers.dev
159
- Proxy: ✅ (nuvem laranja)
160
- ```
161
-
162
- Adicionar ao `wrangler.toml`:
163
- ```toml
164
- [[routes]]
165
- pattern = "track.seudominio.com.br/*"
166
- zone_name = "seudominio.com.br"
167
- ```
168
-
169
- ```bash
170
- wrangler deploy
171
- ```
172
-
173
- Ver detalhes: `agents/domain-setup-agent.md`
174
-
175
- ---
176
-
177
- ## Próximos passos
178
-
179
- | O que fazer | Onde está |
180
- |---|---|
181
- | Configurar WhatsApp CTWA | `agents/whatsapp-ctwa-setup-agent.md` |
182
- | Ativar R2 audit log | `agents/r2-setup-agent.md` |
183
- | Configurar gateways de pagamento | `agents/webhook-agent.md` |
184
- | Ver todos os eventos disponíveis | `docs/events-reference.md` |
185
- | Ver API do SDK browser | `docs/sdk-reference.md` |