Recompensas (resgate por código)
Pré-requisitos de acesso
- Permissão (módulo):
viewCommissionsOUmanageCommissions - Licença/Feature: Nenhuma
- Contêiner do menu: GERAL → grupo Comissões e Recompensas
O que é / quando usar
Tela de campanhas de recompensa por código de resgate. Você cadastra uma recompensa (um Token ou uma NFT) associada a um código de resgate e uma janela de campanha (data início/fim). O sistema gera um QR Code / link que, escaneado pelo usuário, abre o Midas-Web já com o redemptionCode na URL para o resgate.
Use para campanhas promocionais (brinde por código), distribuição de NFTs de evento ou bonificação em token vinculada a um código impresso/divulgado. Não confundir com o Clube de Recompensas (missões/tiers) — aqui é resgate pontual por código.
Pré-condições
- Permissão:
viewCommissionsoumanageCommissions(permissão dupla: enum CPM + módulo dinâmico no DB). - Licença/Feature: Nenhuma.
- Dependências de outras telas: o Token (Tokenização → Gerenciar Tokens) ou a NFT (Tokenização → NFTs/Assets) que será dado como recompensa precisa existir antes — o formulário só aceita selecionar um asset/token já cadastrado (autocomplete validado).
Passo a passo
- Acesse o menu Comissões e Recompensas → Recompensas (
/manage-reward-config/list). - A lista mostra as recompensas com nome, asset, tipo, e um toggle de ativação. Use a busca e a paginação (server-side) para localizar.
- Clique em Novo para abrir o formulário de criação.
- Escolha o Tipo de recompensa (NFT ou Token), busque e selecione o asset/token (o chip "validado" aparece ao selecionar), defina nome, código de resgate, datas da campanha e, para Token, a quantidade.
- Salve. O QR Code/link de resgate é montado a partir do código e pode ser copiado ou baixado.
Campos
| Campo | O que é | Obrigatório? | Efeito no sistema/backend |
|---|---|---|---|
Nome (name) | Nome interno da campanha de recompensa | Sim | Identifica a configuração; máx. 200 caracteres. |
Tipo de recompensa (rewardType) | NFT ou Token | Sim | Define qual catálogo o autocomplete busca (NFTs/assets ou tokens) e se o campo Quantidade aparece. Trocar o tipo limpa o asset selecionado. |
Asset/Token (assetId) | Asset (NFT) ou token concedido como recompensa | Sim | Resolvido por autocomplete validado contra o catálogo real. Erros de backend tratados: "NFT not found" / "Token not found". |
Código de resgate (redemptionCode) | Código que o usuário usa para resgatar | Sim | Deve ser único; backend recusa com "redemption code is already in use". Compõe a URL/QR de resgate. Máx. 50 caracteres. |
Quantidade (quantity) | Quantidade de tokens a creditar | Condicional (só Token) | Só aparece e é enviada quando rewardType = Token; em NFT é descartada. |
Data de início (campaignStartDate) | Início da vigência da campanha | Sim | Define quando o resgate passa a valer. Ajuste de fuso aplicado na carga/edição. |
Data de fim (campaignEndDate) | Fim da vigência da campanha | Sim | Define o encerramento da janela de resgate. |
QR Code / Link (qrcodeImg) | Imagem/URL de resgate | Gerado | Montado como <host>/home?redemptionCode=<código>; pode ser copiado ou baixado como PNG. |
Ativo (isActive) | Liga/desliga a campanha | — | Toggle na listagem; abre confirmação antes de ativar/desativar. Recompensa inativa não resgata. |
Ações e modais
- Novo / Editar / Visualizar: o formulário opera em três modos. Em view os campos ficam desabilitados e há botão Editar. O botão Salvar só habilita quando nome, asset, tipo, código de resgate e ambas as datas estão preenchidos.
- Copiar URL / Baixar imagem: copia o link de resgate ou baixa o QR Code como
code-reward-<código>.png. - Toggle Ativo: ativa/desativa a campanha com confirmação (bottom-sheet). Em caso de erro, o toggle é revertido.
- Excluir (lixeira): confirma e remove a configuração.
Regras de negócio / cuidados
Atenção
- O código de resgate é único por tenant — reaproveitar um código existente é recusado pelo backend.
- O asset/token precisa existir e ser válido no momento da criação; o autocomplete não permite digitar um id arbitrário sem validação.
- A janela de campanha (início/fim) delimita o resgate; fora dela o código não concede a recompensa.
- Valores financeiros: a quantidade de tokens é tratada com precisão; confira as casas decimais do token escolhido.