cdp-edge 1.21.0 → 1.21.1

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.
@@ -113,10 +113,21 @@ wrangler d1 execute cdp-edge-db --file=schema-ab-ltv.sql --remote
113
113
 
114
114
  # Fase 4: Fraud Detection
115
115
  wrangler d1 execute cdp-edge-db --file=schema-fraud.sql --remote
116
+
117
+ # Índices compostos de performance (queries D1)
118
+ wrangler d1 execute cdp-edge-db --file=schema-indexes.sql --remote
119
+
120
+ # Fase 5: LTV Model (regressão logística) + Match Quality Log
121
+ wrangler d1 execute cdp-edge-db --file=migrate-v7.sql --remote
116
122
  ```
117
123
 
118
124
  Após cada migração: confirmar sucesso antes de prosseguir.
119
125
 
126
+ > **Fase 5 cria duas tabelas críticas:**
127
+ > - `ltv_model_weights` — pesos do modelo LTV treinado semanalmente pelo cron
128
+ > - `match_quality_log` — registra flags de qualidade de dados (has_email, has_fbp, etc.) a cada CAPI dispatch
129
+ > Sem essas tabelas: o modelo LTV não persiste e o Match Quality Alert não funciona.
130
+
120
131
  ---
121
132
 
122
133
  ## PROCEDURE `*rollback`
@@ -306,6 +306,33 @@ async function checkApiDepreciations(env) {
306
306
 
307
307
  ---
308
308
 
309
+ ### MONITORAMENTO AUTOMÁTICO DE MATCH QUALITY (CRON SEMANAL)
310
+
311
+ O Intelligence Agent monitora a qualidade dos dados enviados ao Meta CAPI a cada execução do cron.
312
+ Os dados são lidos da tabela `match_quality_log` (populada automaticamente pelo Worker a cada dispatch).
313
+
314
+ **Thresholds obrigatórios — alertar via CallMeBot se:**
315
+
316
+ | Métrica | Threshold mínimo | Ação automática |
317
+ |---|---|---|
318
+ | `email_rate` | 40% dos eventos com email | Alerta ⚠️ — verificar Identity Graph |
319
+ | `fbp_rate` | 30% dos eventos com cookie fbp | Alerta ⚠️ — verificar cdpTrack.js |
320
+ | `composite_score` | 45% (email×0.4 + fbp×0.3 + phone×0.2 + fbc×0.1) | Alerta 🚨 CRÍTICO |
321
+
322
+ **O cron semanal executa automaticamente (sem intervenção manual):**
323
+ 1. `_trainLtvModel(env)` — re-treina regressão logística com últimos 5000 leads do D1; pesos salvos em `ltv_model_weights` e cache KV invalidado
324
+ 2. `_autoDecideAbWinner(env)` — declara winner de A/B LTV se melhoria ≥ 5pp vs controle; alerta WhatsApp automático
325
+ 3. `_analyzeMatchQuality(env)` — analisa janela 2h; dispara alertas CallMeBot se abaixo dos thresholds
326
+ 4. `syncMetaCustomAudience(env)` — sincroniza leads high_intent com Meta Custom Audience
327
+
328
+ **Auto-recuperação integrada ao dispatch:**
329
+ - Antes de cada envio ao Meta CAPI, o Worker tenta enriquecer automaticamente o payload consultando o Identity Graph pelo `userId` (recupera email, fbp, fbc, phone ausentes)
330
+ - Resultado de recuperação é logado em `match_quality_log.was_email_recovered`
331
+
332
+ **Pré-requisito de infraestrutura:** `migrate-v7.sql` deve estar aplicada no D1 (tabelas `ltv_model_weights` + `match_quality_log`).
333
+
334
+ ---
335
+
309
336
  ### CHECK DE NOVOS PARÂMETROS DE EVENT MATCH QUALITY
310
337
 
311
338
  O Intelligence Agent DEVE buscar novos parâmetros que melhoram a nota de atribuição:
@@ -1285,7 +1285,7 @@ Spawnar o **Intelligence Agent** para realizar auditoria completa da stack:
1285
1285
 
1286
1286
  **2. Infraestrutura Cloudflare**
1287
1287
  - `wrangler.toml` — bindings D1, KV, Queue, AI estão todos declarados
1288
- - `schema.sql` e migrations — todas as fases (core, segmentation, bidding, ab-ltv, fraud) aplicadas
1288
+ - `schema.sql` e migrations — todas as fases aplicadas na ordem: core segmentation bidding ab-ltv fraud → schema-indexes → **migrate-v7** (LTV model + Match Quality)
1289
1289
  - Worker.js — endpoints ativos correspondem à arquitetura esperada
1290
1290
 
1291
1291
  **3. Conformidade e Qualidade de Sinal**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cdp-edge",
3
- "version": "1.21.0",
3
+ "version": "1.21.1",
4
4
  "description": "CDP Edge - Quantum Tracking - Sistema multi-agente para tracking digital Cloudflare Native (Workers + D1)",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -46,13 +46,13 @@ CREATE INDEX IF NOT EXISTS idx_profiles_email_updated
46
46
 
47
47
  -- ── fraud_signals: dashboard e alertas ───────────────────────────────────────
48
48
 
49
- -- handleFraudAlerts: filtra por ip + período
50
- CREATE INDEX IF NOT EXISTS idx_fraud_ip_created
51
- ON fraud_signals(ip_address, created_at DESC);
49
+ -- handleFraudAlerts: filtra por ip + período (coluna: detected_at)
50
+ CREATE INDEX IF NOT EXISTS idx_fraud_ip_detected
51
+ ON fraud_signals(ip_address, detected_at DESC);
52
52
 
53
53
  -- handleFraudStats: fraud_score >= threshold ordenado por data
54
- CREATE INDEX IF NOT EXISTS idx_fraud_score_created
55
- ON fraud_signals(fraud_score DESC, created_at DESC);
54
+ CREATE INDEX IF NOT EXISTS idx_fraud_score_detected
55
+ ON fraud_signals(fraud_score DESC, detected_at DESC);
56
56
 
57
57
  -- ── ltv_ab_assignments: resultados de A/B test ───────────────────────────────
58
58
 
@@ -62,6 +62,6 @@ CREATE INDEX IF NOT EXISTS idx_ab_testid_class
62
62
 
63
63
  -- ── ml_segment_members: join com leads para bidding ─────────────────────────
64
64
 
65
- -- handleBiddingRecommend: segment_id lookup
65
+ -- handleBiddingRecommend: segment_id lookup (coluna: assigned_at)
66
66
  CREATE INDEX IF NOT EXISTS idx_seg_members_segid
67
- ON ml_segment_members(segment_id, joined_at DESC);
67
+ ON ml_segment_members(cluster_id, assigned_at DESC);