cdp-edge 1.0.2 → 1.0.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cdp-edge",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
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",
@@ -761,6 +761,17 @@ export default {
761
761
  ctx.waitUntil(resolveDeviceGraph(env.DB, payload.userId, payload.email, payload.phone));
762
762
  }
763
763
 
764
+ // Registrar em events — deduplicação + label ML (INSERT OR IGNORE descarta duplicatas)
765
+ if (env.DB && payload.eventId) {
766
+ ctx.waitUntil(
767
+ env.DB.prepare(
768
+ `INSERT OR IGNORE INTO events (event_id, event_name, user_id, created_at)
769
+ VALUES (?, ?, ?, datetime('now'))`
770
+ ).bind(payload.eventId, eventName, payload.userId || null).run()
771
+ .catch(() => { /* silencioso — não bloqueia o pipeline */ })
772
+ );
773
+ }
774
+
764
775
  // R2 Audit Log — background
765
776
  ctx.waitUntil(writeAuditLog(env, eventName, payload, geoData));
766
777
 
@@ -79,6 +79,22 @@ CREATE INDEX IF NOT EXISTS idx_profiles_fbp ON user_profiles(fbp);
79
79
  CREATE INDEX IF NOT EXISTS idx_profiles_msclkid ON user_profiles(msclkid);
80
80
  CREATE INDEX IF NOT EXISTS idx_profiles_li_fat ON user_profiles(li_fat_id);
81
81
 
82
+ -- ── Tabela de Eventos (Deduplicação + Label ML) ──────────────────────────────
83
+ -- Registra cada evento processado com sucesso.
84
+ -- Duplo uso: (1) deduplicação server-side via event_id UNIQUE;
85
+ -- (2) label de LTV para treinamento ML (lead comprou depois?)
86
+ CREATE TABLE IF NOT EXISTS events (
87
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
88
+ event_id TEXT UNIQUE, -- deduplicação: INSERT OR IGNORE descarta duplicatas
89
+ event_name TEXT NOT NULL,
90
+ user_id TEXT,
91
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
92
+ );
93
+
94
+ CREATE INDEX IF NOT EXISTS idx_events_user_id ON events(user_id);
95
+ CREATE INDEX IF NOT EXISTS idx_events_event_name ON events(event_name);
96
+ CREATE INDEX IF NOT EXISTS idx_events_created ON events(created_at);
97
+
82
98
  -- ── Tabela de LOG de Webhooks Offline ─────────────────────────────────────────
83
99
  CREATE TABLE IF NOT EXISTS webhook_events (
84
100
  id INTEGER PRIMARY KEY AUTOINCREMENT,