# Sistema de Reviews - Hello Tours

## Visão Geral

O sistema de reviews da Hello Tours permite gerenciar avaliações de clientes para os tours, incluindo funcionalidades para importar reviews do TripAdvisor e gerenciar reviews submetidas pelos usuários.

## Funcionalidades

### 1. Importação de Reviews do TripAdvisor

#### Comando Principal
```bash
php artisan import:tripadvisor-reviews --url="URL_DO_TRIPADVISOR"
```

#### Comando Simplificado
```bash
php artisan scrape:tripadvisor --url="URL_DO_TRIPADVISOR" --pages=5
```

#### Exemplo de Uso
```bash
# Importar reviews da Hello Tours Sintra
php artisan scrape:tripadvisor --url="https://www.tripadvisor.co.uk/Attraction_Review-g189164-d16849407-Reviews-Ehellotours_Sintra-Sintra_Sintra_Municipality_Lisbon_District_Central_Portugal.html"

# Importar com limite de páginas
php artisan scrape:tripadvisor --url="URL_DO_TRIPADVISOR" --pages=3
```

### 2. Gerenciamento via Filament Admin

#### Acessar Reviews
1. Acesse o painel admin: `/admin`
2. Navegue para "Store" > "Reviews"
3. Visualize todas as reviews importadas e submetidas

#### Associar Reviews a Tours
1. Para reviews importadas do TripAdvisor (sem tour_id):
   - Clique no botão "Associar Tour" (ícone de link)
   - Selecione o tour correspondente
   - Salve a associação

#### Aprovar Reviews
1. Edite a review desejada
2. Marque/desmarque "Aprovado"
3. Salve as alterações

### 3. Estrutura do Banco de Dados

#### Tabela `reviews`
- `id` - ID único
- `tour_id` - ID do tour (nullable para reviews importadas)
- `name` - Nome do revisor
- `email` - Email do revisor (nullable)
- `rating` - Avaliação (1-5 estrelas)
- `review` - Texto da review
- `is_approved` - Se a review foi aprovada
- `created_at` - Data de criação
- `updated_at` - Data de atualização

### 4. Componentes Frontend

#### ReviewList (Livewire)
- Exibe reviews aprovadas de um tour específico
- Mostra avaliação média e total de reviews
- Paginação automática

#### ReviewForm (Livewire)
- Formulário para submissão de novas reviews
- Validação de campos
- Email opcional

### 5. Traduções

O sistema suporta múltiplos idiomas:
- Português (pt)
- Inglês (en)
- Francês (fr)
- Alemão (de)
- Espanhol (es)
- Italiano (it)

### 6. Configuração da API Scrapfly

O sistema usa a API Scrapfly para contornar bloqueios do TripAdvisor:

```php
// Em ImportTripadvisorReviews.php
$this->apiKey = 'scp-live-fb16be6fe8b04a418705402d3082241a';
```

### 7. Fluxo de Trabalho Recomendado

1. **Importar Reviews do TripAdvisor**
   ```bash
   php artisan scrape:tripadvisor --url="URL_DO_TRIPADVISOR"
   ```

2. **Associar Reviews aos Tours**
   - Acesse o admin
   - Use a ação "Associar Tour" para reviews sem tour_id

3. **Aprovar Reviews**
   - Marque como aprovadas as reviews que deseja exibir no site

4. **Monitorar Performance**
   - Use os filtros do admin para analisar reviews por tour/rating

### 8. Troubleshooting

#### Problemas Comuns

1. **Erro de API Key**
   - Verifique se a API key do Scrapfly está válida
   - Confirme o limite de requisições

2. **Reviews não aparecem**
   - Verifique se estão marcadas como aprovadas
   - Confirme se estão associadas ao tour correto

3. **Erro de scraping**
   - Verifique se a URL do TripAdvisor está correta
   - Confirme se o site não mudou a estrutura HTML

#### Logs
Os comandos de scraping geram logs detalhados no console para debug.

### 9. Personalização

#### Adicionar Novos Campos
1. Crie uma migration para adicionar campos
2. Atualize o modelo Review
3. Modifique os formulários do Filament
4. Atualize as traduções

#### Modificar Seletores CSS
Para mudanças no TripAdvisor, atualize os seletores em `ImportTripadvisorReviews.php`:
- `.QIHsu a.BMQDV` - Nome do usuário
- `svg[data-automation="bubbleRatingImage"]` - Rating
- `.fIrGe .biGQs` - Texto da review
- `.RpeCd` - Data

### 10. Segurança

- Reviews importadas são marcadas como aprovadas automaticamente
- Reviews submetidas pelos usuários precisam de aprovação manual
- Validação de email opcional para reviews importadas
- Proteção contra duplicatas baseada em nome e texto da review 