# Campos Necessários por Tipo de Campanha

## Análise dos 7 Tipos de Campanha

### 1️⃣ RewardType_Auto (Oferta Automática)
**Campos necessários:**
- `auto_points_amount` (INTEGER) - Quantidade de pontos a dar automaticamente
- `auto_points_condition` (TEXT) - Condição para receber (ex: "após primeira compra", "ao aderir")

### 2️⃣ RewardType_Draw (Sorteio)
**Campos necessários:**
- `draw_participation_condition` (TEXT) - Condição para participar (ex: "compra acima de 500 MZN")
- `draw_min_spend` (NUMERIC) - Valor mínimo de compra para participar
- `draw_chances_per_purchase` (INTEGER) - Número de chances por compra
- `draw_prize_description` (TEXT) - Descrição do prémio
- `draw_date` (TIMESTAMP) - Data do sorteio
- `draw_winners_count` (INTEGER) - Número de vencedores

### 3️⃣ RewardType_Exchange (Troca)
**Campos necessários:**
- `exchange_points_cost` (INTEGER) - Custo em pontos (já existe como reward_points_cost)
- `exchange_reward_description` (TEXT) - Descrição da recompensa (já existe como reward_description)
- `exchange_reward_value_mt` (NUMERIC) - Valor em MZN (já existe como reward_value_mt)
- `exchange_stock` (INTEGER) - Estoque disponível (já existe como reward_stock)
- `exchange_min_points_required` (INTEGER) - Pontos mínimos necessários

### 4️⃣ RewardType_Quiz (Questões)
**Campos necessários:**
- `quiz_questions` (JSONB ou TEXT) - Array de perguntas e respostas
- `quiz_points_per_correct` (INTEGER) - Pontos por resposta correta
- `quiz_max_attempts` (INTEGER) - Número máximo de tentativas
- `quiz_time_limit_seconds` (INTEGER) - Tempo limite por pergunta (opcional)

### 5️⃣ RewardType_Referral (Indicação)
**Campos necessários:**
- `referral_min_referrals` (INTEGER) - Número mínimo de indicações
- `referral_points_per_referral` (INTEGER) - Pontos por cada indicação
- `referral_bonus_points` (INTEGER) - Bônus adicional ao completar meta
- `referral_requires_first_purchase` (BOOLEAN) - Se requer primeira compra do indicado
- `referral_code` (VARCHAR) - Código único de referência (opcional)

### 6️⃣ RewardType_Challenge (Desafio)
**Campos necessários:**
- `challenge_objective` (TEXT) - Objetivo do desafio (ex: "fazer mais almoços durante a semana")
- `challenge_target_value` (INTEGER) - Valor alvo (ex: número de visitas, valor gasto)
- `challenge_target_type` (VARCHAR) - Tipo de alvo: 'visits', 'spend', 'purchases'
- `challenge_reward_points` (INTEGER) - Pontos ao completar
- `challenge_bonus_reward` (TEXT) - Recompensa bônus (ex: "jantar especial")
- `challenge_progress_tracking` (BOOLEAN) - Se deve rastrear progresso

### 7️⃣ RewardType_Party (Votação)
**Campos necessários:**
- `party_voting_options` (JSONB ou TEXT) - Opções de voto
- `party_points_per_vote` (INTEGER) - Pontos por participar na votação
- `party_winner_reward` (TEXT) - Recompensa para mais votados
- `party_voting_deadline` (TIMESTAMP) - Prazo para votar
- `party_results_date` (TIMESTAMP) - Data de divulgação dos resultados

## Campos Genéricos Adicionais

- `campaign_metadata` (JSONB) - Metadados flexíveis para cada tipo
- `campaign_rules` (JSONB) - Regras específicas do tipo de campanha
- `campaign_settings` (JSONB) - Configurações específicas

