Eventos em Tempo Real
Este documento descreve os eventos em tempo real (tipos de notificação) consumidos pelos serviços do Backend de Recompensas, incluindo os campos obrigatórios para cada tipo de evento e quais serviços
Visão Geral
O Backend de Recompensas processa eventos em tempo real de uma fila de mensagens (Kafka) para alimentar as seguintes funcionalidades:
- Fidelidade (Sistema de Níveis): Progressão de XP e subidas de nível baseadas na atividade do jogador
- Desafios: Acompanhar o progresso em apostas, depósitos, contagem de cassino, login consecutivo e outros tipos de desafios
- Mapeamento de Jogos: Descoberta e mapeamento automático de jogos a partir da atividade do jogador
Tipos de Eventos
GamesEnriched (CasinoEvent)
Descrição: Eventos individuais de transação de cassino (aposta ou vitória) antes da agregação de rodadas.
Usado por:
- Sistema de Fidelidade
- Desafios de Apostas
- Desafios de Contagem de Cassino
- Desafios de Multiplicador de Vitória
- Serviço de Mapeamento de Jogos
Campos Obrigatórios:
| Campo | Tipo | Descrição |
|---|---|---|
user_id | int64 | ID interno do usuário (deve ser > 0 e < MaxInt32) |
game_id | string | Identificador do jogo |
game_name | string | Nome do jogo |
vendor_id | string | Identificador do fornecedor/provedor do jogo. Pode ser opcional se allow_incomplete_game_hash estiver habilitado. |
vendor_name | string | Nome do fornecedor/provedor do jogo. Pode ser opcional se allow_incomplete_game_hash estiver habilitado. |
origin | string | Identificador de origem do jogador |
type | string | Tipo de transação (ex: "bet", "win") |
amount | float64 | Valor da transação (deve ser > 0) |
activity_id | string | Identificador único da atividade/transação |
currency | string | Código da moeda |
timestamp | time | Timestamp do evento (não pode ser zero) |
status | string | Deve ser "approved" ou "rollback" |
round_id | string | Identificador da rodada do jogo. Obrigatório para alguns serviços, configurável. |
Exemplo JSON:
PaymentEnriched
Descrição: Eventos de transação de pagamento (depósitos e saques).
Usado por:
- Serviço de Fidelidade: para contribuição de XP baseada em depósitos
- Desafios de Depósito (Consecutivo)
Campos Obrigatórios:
| Campo | Tipo | Descrição |
|---|---|---|
user_id | int64 | ID interno do usuário (deve ser > 0 e < MaxInt32) |
payment_id | string | Identificador único do pagamento |
status | string | Status do pagamento. Deve ser "approved" para processamento de desafios. Status de rollback também é suportado para reversão de contribuição de fidelidade. |
type | string | Tipo de pagamento. Deve ser "deposit" para processamento de desafios. |
amount | float64 | Valor do pagamento (deve ser > 0) |
currency | string | Código da moeda |
origin | string | Identificador de origem do jogador |
timestamp | time | Timestamp do evento (não pode ser zero) |
Exemplo JSON:
LoginEventEnriched
Descrição: Eventos de login do usuário.
Usado por:
- Desafios de Login Consecutivo
Campos Obrigatórios:
| Campo | Tipo | Descrição |
|---|---|---|
user_id | int64 | ID interno do usuário (deve ser > 0 e < MaxInt32) |
unique_id | string | Identificador único do evento |
timestamp | time | Timestamp do evento (não pode ser zero) |
Exemplo JSON:
SportsBetEnriched
Descrição: Eventos de apostas esportivas.
Usado por:
- Serviço de Fidelidade: para contribuição de XP de apostas esportivas
Campos Obrigatórios:
| Campo | Tipo | Descrição |
|---|---|---|
user_id | int64 | ID interno do usuário (deve ser > 0) |
origin | string | Identificador de origem do jogador |
activity_id | string | Identificador único da atividade |
status | string | Status da aposta. Para contribuição de XP de fidelidade, apenas eventos com status "Settlement" são processados. |
currency | string | Código da moeda |
timestamp | time | Timestamp do evento (não pode ser zero) |
amount | float64 | Valor da aposta (deve ser > 0) |
type | string | Tipo da aposta |
Exemplo JSON: