Իրադարձությունների և մրցանակների ավտոմատացումը 'կանոնները և վեբհուկները
Գեյմիֆիֆիկացիան պահվում է երկու «շարժիչի» վրա 'իրադարձություններ (ինչ արեց օգտագործողը) և կանոններ (որոնք ապավինում են դրա համար)։ Այս ամենը լայնորեն և անխուսափելի դարձնելու համար անհրաժեշտ է հուսալի իրադարձություններ, կանոնների շարժիչ, առաքման/առաքման մեխանիզմ և ֆրոդից խիստ պաշտպանություն։ Ներքևում գործնական ճարտարապետությունն է, ձևանմուշները և չեկի թերթերը։
1) Հոսքի ճարտարապետությունը «իրադարձությունը հաստատվում է պարգևատրման կանոնով»
1. Ingest (իրադարձությունների ցանկը): SNK/web, սերվերային webhuks վճարելուց/Sub/Sub/Sub խաղերի պրովայդերից։
2. Նորմալիզեր 'վալիդացիա, հարստացում (geo, device, payer _ flag), սխեմայի տարբերակը։
3. Rules Engine: Միավորների/HR, ստուգում 2019/Quests, մրցանակների/ծանուցումների։
4. Reward Orchestrance: Մրցանակների հաշվարկը, բյուջեթը, RG/KYC գեյտերը, «մրցույթի առաջադրանքների» ստեղծումը, ամսագրում գրելը։
5. Payout/Bonus Express: cash/bonus-cash/frispins/կուպոններ, արտաքին webhuks (դրամապանակ, պրովայդերներ)։
6. Notifier: push/in-app/email/messengers հաճախականության սահմաններով։
7. Storage/Analytics: Հում իրադարձություններ, վիտրիններ, A/B, ալերտներ։
8. Anti-Fraud/RG 'գլխարկներ, էվրիստիկա/ML, hold-and-review մեծ մրցանակների։
2) Իրադարձությունների մոդելը (նվազագույն հավաքածու)
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) Կանոնների շարժիչ 'ինչպես նկարագրել տրամաբանությունը
Հասկացություններ ՝ կանոնները (if/then), հատվածները, ժամանակի պատուհանները, գլխարկները, գերակայությունները, տարբերակումը։
Կառավարական կանոնների օրինակ (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) Webhuki 'սերվերի սերվերը 2019
4. 1. Webhuks (ձեզանից մինչև պրովայդերներ/դրամապանակ)
Մեթոդը '"POST https : //partner։ example/payouts`
Подпись: `X-Signature: HMAC-SHA256(secret, body)` + `X-Request-Id` (idempotency).
Retrai: էքսպոնենցիալ backoff, «max _ retries = 8», jitter, DLQ։
Idempotency: Նույն "X-Request-Id 'ռուսական գործընկեր պարտավոր է պատասխանել նույն" payout _ id/status "։
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. Webhuki (ձեզ)
Թույլ տվեք միայն IP/MTSA ցուցակները, ստուգեք HMAC-ը և ստորագրության կյանքի ժամանակը («X-Timestamp», 355 րոպե)։
Պահպանեք «հում» body + վերնագրերը աուդիտի պահեստում (WORM)։- Ցանկացած դուբլ/կրկնօրինակը ստուգեք idempotency key-ը ամսագրի դեմ։
5) Վստահություն ՝ «հավասար» հոսք առանց երկակի շարժիչների։
At-leport-once-ը ingest + idempotent-ի վրա ոսկու մատակարարման։
Idempotency key: 'hash (event _ id + user _ id + rule _ id)' ակնոցներ հաշվարկելու համար։ «reward _ task _ id» մրցանակների համար առանձին բանալին։
Exactly-once-ը իրական է միայն տրամաբանական (idempotenty միջոցով), այլ ոչ թե տրանսպորտով։- Իրադարձությունների կարգը 'պահպանեք «event _ ts» և «ingest _ ts»; օգտագործեք reordering կոդերը (օրինակ ՝ 60 վայրկյան) և replay-ը '«user _ id» բանալին։
- Մենք այնտեղ հաղորդագրություններ ենք գրում պերմանենտային սխալի հետ (ժամանակավոր սխեմա չի անցել, ստորագրությունը անգնահատելի է, բյուջեն փակված է)։
- «DLQ» ծառայությունը reprocess/drop/fix schema կոճակներով։
6) Բյուջեներն ու մարժայի պաշտպանությունը
Պուլները ՝ «07 v _ season», «daily _ sprint», «vip _ weekend»։
Քվոտաներ ՝ som/hard cap, «circuit breaker» - երբ հասնեք բյուջեի 90 տոկոսը փոխանցել մեծ մրցանակներ hold-state-ում։
Մեկ արժեք ՝ «Prize & Bonus Cost per Action/Payor», Net Uplift։- Առաջնահերթությունները 'RG-ն և կոմպլանսը ավելի կարևոր են, քան պրոմպլենսը' հակամարտության ժամանակ մրցանակը հետաձգվում է։
Բյուջեի ստուգման օրինակը (SQL-sketch)
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-Geats (խաղացողի անվտանգությունը և կոմպլենսը)
KYC: Առնվազն L2 քեշի/մեծ մրցանակների համար; ֆրիսպինները թույլատրելի են L1-ից։
RG 'դեպոզիտի, ինքնության, «cool-off» ռուսական մրցանակների ստուգումը «սառեցնում է» մինչև սահմանափակումների վերացումը։
Geo 'թույլատրված երկրների ցանկը յուրաքանչյուր կանոնների/փամփուշտի մրցանակների համար։- Շեմի ալերտները '«գրեթե հասել» կտրուկ աճը առանձին հաշիվներում = hold & review-ի պատճառը։
8) Հակաֆրոդ կանոնները և հեռուստատեսությունը
Կետերի կաթիլները/րոպե/ժամ/օր, նվազագույն ցրումը, «իդեալական» պաթոգենների արգելքը։- Techsignals: headless, որոնք կրկնվում են device _ fp, 71-ենթահամակարգ։
- Աննոմալիա ՝ «ակնոցներ/112» և «ակնոցներ/րոպե» - երկար «պոչեր» 99-պերցենտիլում։
- Hold-and-review-ի լավագույն մրցանակակիրների համար 'ավտոմատ KYC + ձեռքով դիտելու։
9) Մոսկվա, մետրեր և ալերտներ
SLO/SLA:- Ingest p95-250 ms; p95-150 մզ կանոնների վերամշակումը; Թիվ 2 առաջնորդի նորարարությունը; Իսկ մրցանակները ՝ 60 սմ։
- Error budget < 0. 1% իրադարձություններ/օր։
Ալերտա
MSM-ը փորձարկումների վրա (ROM), DLQ-ի աճը, HMAC-վալիդացիայի ստորագրության անկումը, բյուջեի ավելացումը, idempotent-դուբլի աճը։
Դաշբորդ (ամեն օր)
Իրադարձությունները/s, լագը, անկայունությունը։- Վորոնկա 'իրադարձությունը հաստատվում է reward _ task բանաձևով reward _ issued;
- Արժեքը ՝ Prize/Bonus per Action, Net Uplift;
- Որակը 'ֆրոդի դրոշներ, KYC բլոկներ, RG-գործիքներ։
10) Տարբերակումը և իրականացումը
Յուրաքանչյուր կանոն versioned ("rules. version`).
Դուք չեք կարող խմբագրել ակտիվ կանոնը առանց նոր տարբերակի։ օգտագործեք ficheflag և «լողացող տաքացում» (10% - 50% - 100%)։
Իրադարձությունների սխեման schema registry-ի միջոցով։ անհամատեղելի փոփոխությունները միայն major տարբերակն են։
11) A/B ավտոմատացման թեստերը (կարճ)
Միավորը օգտագործողն է։ sticky-assignment; ստրատիֆիկացիա (payer/geo/platform)։- Առանձին առաջնորդները կամ ակնոցների նորմալացումը, որպեսզի բացառեն միջամտությունը։
- Primary: participation_net, completion, Net ARPPU; Guardrails: բողոքներ/1k, ֆրոդի դրոշներ, RG գործիքներ։
- CUPED-ը և կովարիատները ցրումը նվազեցնելու համար։
12) Օրինակներ ՝ կանոնից մինչև 2019 թվականը
12. 1. Trigger «միկրո մրցանակ առաջընթացի համար»
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. Առաջացող վեբհուկը դրամապանակի վրա
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" }
Reward _ task '= «succeeded» և «reward _ ledger» ձայնագրությունը։
- Ձախողումը (5x/timaut) նույն «X-Request-Id» -ի հետ։
- Ձախողումը (4xx) DLQ + ձեռքով վերլուծություն է։
13) Մոսկվան և աղյուսակները (էսթչ)
sql
- մրցանակների ամսագիր
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
);
- indempotenty
CREATE UNIQUE INDEX uniq_reward_task ON reward_ledger (reward_task_id);
- բյուջե
CREATE TABLE reward_budget (
pool_id TEXT PRIMARY KEY, budget NUMERIC(18,2), spent NUMERIC(18,2), period DATE
);
14) Անվտանգությունն ու գաղտնիությունը
HMAC ստորագրությունները, MTSA, allow-list IP։- Գաղտնագրումը տարանցիկ/հանգիստ, կոդավորման գաղտնիքները v.ru-ում։
- Տվյալների նվազեցումը payload-ում (PII առանձին, 71-տոկենի, TTL)։
- Աուդիտ լոգները անփոփոխ են (WORM)։
- Պահեստավորման և պահեստավորման քաղաքականությունը (մոռացման իրավունք, deduplant-safe)։
15) Չեկի թուղթ
- Իրադարձությունների սխեմաները և registry, webhuks պայմանագրերը (ազդանշաններ, TTL)։
- Գծեր, retrai, DLQ, կուռքեր։
- Caps/gagrail-ները կանոններում, KYC/RG-Gatts-ում։
- Պուլայի բյուջեն, circuit-breakers, ալտերտեր։
- Dashbords SLO + reward.
- A/B-ficheflagy և MSM-2019։
- Runbook 2019 (վերագրանցում, սառնամանիք, ձեռքով խառնուրդ)։
16) Մինի-Քեյս (սինթետիկ)
Իրադարձությունները միացված են խաղերի և դրամապանակի պրովայդերից։ միացված է «win/bet» կաթիլներով։- Webhuks-ը ստորագրվել է HMAC-ի կողմից, մինչև 8 փորձեր, DLQ-ը յուրաքանչյուր 2 ռուբլով։
Չորս շաբաթվա ընթացքում, p95 180 մզ վերամշակման լագը; DLQ < 0,06%; դուբլի 240; ֆրոդի դրոշները 0.4 pp; ΔParticipation_net +6,3 п.п.; ΔARPPU (net) +€2,1 при Prize&Bonus/Active +€0,7.
Եզրակացությունն այն է, որ կանոնների մեծացումը նոր գեո հետ տեղական բյուջեով։
Մրցանակների ավտոմատիզացիան «ֆրիսպիններով» ուղարկելը չէ։ Սա ինժեներական համակարգ է 'իրադարձությունների հուսալի առաքում, կանոնների խիստ տարբերակումը, idempotency-ը և ստորագրությունները, բյուջեն-capers, KYC/RG-gatts, հակաֆրոդ և ռուսական։ Դուք մի օր կկառուցեք այս շրջանակը, և ցանկացած առաքելություն, մրցավարները և «լութ պահերը» կաշխատեն կանխատեսելի, ժամանակին և դրական ոչ-էֆեկտով։