Automazione di eventi e premi: regole e webhoop
La Gaimifica si basa su due «motori»: un evento (che l'utente ha fatto) e una regola (che si basa su). Per farlo funzionare in modo efficiente e efficiente, è necessario un pneumatico sicuro di eventi, un motore di regole, un meccanismo di consegna/ricompensa e una protezione severa contro il frodo. Di seguito sono riportati l'architettura pratica, i modelli e i fogli di assegno.
1) Architettura di flusso evento-regola premio
1. Ingest (accesso eventi): SDK/Web, webhoop server da pagella/provider di giochi → API Gateway → coda/bus (Kafka/Rabbit/Cloud Pub/Sub).
2. Normalizer: convalida, arricchimento (geo, device, payer _ flag), versione dello schema.
3. Rule Engine: scorciatoie di punti/CP, controlli di missione/ricerca, trigger di premi/notifiche.
4. Reward Orchestrator: ricompensa, bilancio-assegno, RG/KYC-gate, creazione di attività di rilascio, registrazione.
5. Payout/Bonus Service: cache/bonus-cache/fresine/coupon, webhoop esterni (portafogli, provider).
6. Notifier: push/in-app/email/messaggistica con limiti di frequenza.
7. Storage/Analytics: eventi crudi, vetrine, A/B, alert.
8. Anti-Fraud/RG: caps, euristici/ML, hold-and-review grandi premi.
2) Modello di eventi (set minimo)
json
{
"event_id": "d9e8-...-5c2", "event_name": "bet", "version": "1. 2. 0", "ts": "2025-10-24T11:37:21Z", "user": {
"id": "u_123", "geo": "TR", "platform": "android", "payer_flag": true, "risk_flags": ["vp_nightly"]
}, "context": {
"session_id": "s_789", "device_fp": "fp_...", "ip": "203. 0. 113. 24"
}, "payload": {
"game_id": "slot_wolf", "bet": 0. 5, "win": 1. 25, "currency": "EUR", "provider": "GameCo"
}
}
Базовые типы: `login`, `session_start/end`, `bet/spin`, `win`, `deposit`, `withdraw_request`, `kyc_status_changed`, `mission_view/join/progress/complete`, `tournament_join/score/update/reward`, `reward_issued`, `rg_event`.
3) Motore regole: come descrivere la logica
Concetti: regole (if/then), segmenti, finestre del tempo, caps, priorità, versioning.
Esempio di regola dichiarativa (stile YAML):yaml rule_id: r_points_winmult_v2 when:
event_name: bet filters:
- payload. bet >= 0. 2
- user. geo in ["TR","BR","PE"]
- now between "2025-11-01" and "2025-11-30"
score:
formula: "floor((payload. win / payload. bet) 3)"
caps:
per_bet: 50 per_minute: 200 per_day: 1500 reward_trigger:
on_progress:
threshold: [100, 300, 800]
reward: [{type: "fs", value: 10}, {type: "bonus_cash", value: 2}, {type: "loot", rarity: "rare"}]
guardrails:
kyc_min_level: 2 rg_limits_ok: true budget_pool: "nov_season"
budget_soft_cap: 80000 meta:
version: "2. 0"
experiment: "scoring_ab_2025w45"
4) Web hook: server di integrazione
4. 1. Webhoop in uscita (da voi ai provider/portafogli)
Metodo: 'POST https ://partner. example/payouts`
Подпись: `X-Signature: HMAC-SHA256(secret, body)` + `X-Request-Id` (idempotency).
Retrai: backoff esponenziale, 'max _ retries = 8', jitter, DLQ.
Idempotency: ripetizione dello stesso partner «X-Sollest-Id» deve rispondere allo stesso «payout _ id/status».
Esempio payload:json
{
"request_id": "rid_7f5...", "user_id": "u_123", "reward": {"type":"cash","amount":10. 00,"currency":"EUR"}, "reason": "milestone_300_points", "kyc_level": 2, "constraints": {"wagering": 0, "expiry_at": "2025-12-01T00:00:00Z"}
}
4. 2. Webhoop in arrivo (a te)
Autorizza solo gli elenchi IP/MTLS, controlla HMAC e la durata della firma ('X-Timestamp', © 5 minuti).
Salvare body crude + intestazioni in un archivio di controllo (WORM).
Ogni ripresa/ripetizione controlla idempotency key contro la rivista.
5) Affidabilità: flusso «allineato» senza doppi pagamenti
I processori at-least-once su ingest + idempotent hanno → lo standard d'oro.
Idempotency key: 'hash (event _ id + user _ id + rule _ id)' per l'assegnazione dei punti; chiave separata per il premio «reward _ task _ id».
Exactly-once semantico è realistico solo logicamente (attraverso idampotenza) e non il trasporto.
Ordine eventi: memorizza «event _ ts» e «ingest _ ts»; applicare reordering window (ad esempio 60 secondi) e replay dalla coda «user _ id».
Dead Letter Queue (DLQ):- Scriviamo messaggi con un errore permanente (lo schema temporale non è passato, la firma è nevalidna, il budget è chiuso).
- Strumenti DLQ con i pulsanti reprocess/drop/fix schema.
6) Budget e protezione dei margini
Pool di budget: 'nov _ season', 'daily _ sprint', 'vip _ weekend'.
Quote: soft/hard cap, «circuito breaker» - quando si raggiunge il 90% del budget, trasferire i premi più importanti in hold-state.
Costo unico: «Prize & Bonus Cost per Active/Payor», Net Uplift.
Priorità: l'RG e la compliance sono più importanti del promo.
Esempio di controllo di bilancio (sketch SQL):sql
SELECT pool_id, SUM(amount) AS spent, budget AS limit, SUM(amount)/budget AS fill
FROM reward_ledger
WHERE pool_id =:pool AND date(ts) = current_date
GROUP BY pool_id, budget;
7) RG/KYC/Geo-gate (sicurezza del giocatore e della compilazione)
KYC: L2 minimo per la cache/grandi premi; i frusini sono ammessi con L1.
RG - Controllo dei limiti di deposito, auto-esclusione, «cool-off», i premi «congelati» fino alla rimozione delle restrizioni.
La lista dei paesi autorizzati per ogni regola/pool di premi.
Alert di soglia: la crescita «quasi-raggiunto» da singoli account = motivo per hold & review.
8) Regole antifrode e telemetria
Caps punti a tasso/min/ore/giorno, la dispersione minima delle scommesse, il divieto di pattern «perfetti».
Tecnico: headless, device _ fp ripetuti, proxy.
Le anomalie sono «punti/scommesse» e «punti/min» - lunghe «code» al 99 percento.
Hold-and-review per i migliori premi: assegno automatico KYC + anteprima manuale.
9) Monitoraggio, metriche e alert
SLO/SLA:- Ingest p95 250 ms; Elaborazione della regola p95-150 ms aggiornamento del liderbord 2 c; Una ricompensa di 60 secondi.
- Error budget < 0. 1% degli eventi/24 ore.
- SRM in esperimenti (distorsione del traffico), crescita del DLQ, riduzione della firma di convalida HMAC, eccesso di budget, aumento delle prese idempotent.
- Eventi/s, lega, disponibilità di errore;
- Vortice - Evento regola reward _ task reward _ issued;
- Costo: Prize/Bonus per Active, Net Uplift;
- Qualità: flag, blocchi KYC, RG.
10) Versioning e migrazione
Ogni regola è versioned ('rule. version`).
Non è possibile modificare una regola attiva senza una nuova versione. Usate il fiflag e il riscaldamento fluido (10% a 50% a 100%).
Schema eventi tramite schema registry; modifiche incompatibili - Solo la versione maggiore.
11) A/B test di automazione (breve)
Unità - Utente; sticky-assignment; stratificazione (payer/geo/platform).
Liderboard separati o normalizzazione degli occhiali per escludere interferenza.
Primary: participation_net, completion, Net ARPPU; Guardrails: lamentele/1k, flag flag, RG.
CUPED e covariati per ridurre la dispersione.
12) Esempi, dalla regola all'emissione
12. 1. Trigger «micro-premio per il progresso»
json
{
"type": "reward_task. created", "reward_task_id": "rt_456", "user_id": "u_123", "origin": {"rule_id":"r_points_winmult_v2","threshold":300}, "reward": {"type": "bonus_cash", "amount": 2, "currency":"EUR", "wagering": 15}, "pool_id": "nov_season", "status": "pending", "created_at": "2025-10-24T11:38:30Z"
}
12. 2. Webhook in uscita per portafoglio
POST /wallet/credit
X-Request-Id: rid_7f5...
X-Timestamp: 1730061700
X-Signature: sha256=7b9a...
{ "user_id":"u_123", "amount":2. 00, "currency":"EUR", "reason":"rule:r_points_winmult_v2" }
Il successo di «reward _ task» = «succeeded» e la scrittura di «reward _ ledger».
Errore (5xx/timeout) con il retro con lo stesso X-Sollest-Id.
Errore (4xx) DLQ + analisi manuale.
13) Archivi e tabelle (sketch)
sql
-il registro dei premi
CREATE TABLE reward_ledger (
id BIGSERIAL PRIMARY KEY, reward_task_id TEXT UNIQUE, user_id TEXT, pool_id TEXT, type TEXT, value NUMERIC(18,2), currency TEXT, cost NUMERIC(18,2) DEFAULT 0, -- реальная стоимость для P&L status TEXT, -- succeeded/failed/held created_at TIMESTAMPTZ, updated_at TIMESTAMPTZ
);
-Indipotenza
CREATE UNIQUE INDEX uniq_reward_task ON reward_ledger (reward_task_id);
--- budget
CREATE TABLE reward_budget (
pool_id TEXT PRIMARY KEY, budget NUMERIC(18,2), spent NUMERIC(18,2), period DATE
);
14) Sicurezza e privacy
Firme HMAC, MTLS, allow-list IP.
Crittografia in transito/pace, rotazione delle chiavi, segreti in vault.
Minimizza i dati in payload (PII separatamente, TTL).
Controllo-login non modificato (WORM).
Regole di conservazione ed eliminazione (diritto all'oblio, deduplication-safe).
15) Assegno foglio di avvio
- Schemi di eventi e registry, contratti di webhoop (firme, TTL).
- Code, retrai, DLQ, elaboratori idropotenti.
- Caps/guardrail-in regole, KYC/RG-gate.
- Budget-pool, circuiti-breakers, alert di sovraffollamento.
- Dashboard SLO + vortice reward.
- A/B-phicheflagi e monitoraggio SRM.
- Runbook incidenti (rinnovo, congelamento, estrazione manuale).
16) Mini valigetta (sintetico)
Eventi connessi dai provider di giochi e portafogli; è abilitato «win/bet» con i caps.
I webhoop sono firmati HMAC, retrai fino a 8 tentativi, DLQ con gelosia ogni 2 ore
In 4 settimane: p95 180 ms di trattamento; DLQ < 0,06%; duplicati di pagamento 0; flag - 0,4 pp; ΔParticipation_net +6,3 п.п.; ΔARPPU (net) +€2,1 при Prize&Bonus/Active +€0,7.
Output: scalabilità delle regole sui nuovi geo con budget-pool locali.
L'automazione dei premi non è «mandare un po'di frisca». Questo è un sistema di ingegneria: consegna sicura degli eventi, versioning rigoroso delle regole, idempotency e firme, budget-capperi, KYC/RG-gate, antifrode e monitoraggio. Costruisci questa struttura un giorno - e qualsiasi missione, torneo e «lute-point» funzionerà prevedibilmente, in tempo e con effetti netti positivi.