# CHANGELOG - LAN-IBO-3-4 Panel

## Versão 2.0 - Correções e Melhorias (08/06/2026)

### 🐛 Bugs Corrigidos

#### 1. **api/request.php** - Undefined Array Keys
- **Problema**: Warnings PHP sobre chaves indefinidas em `$_GET['mac']`, `$_GET['devID']` e `$_GET['deviceName']`
- **Solução**: Adicionada validação com `isset()` e `trim()` para todos os parâmetros GET
- **Benefício**: Elimina warnings nos logs de erro e torna a API mais robusta

#### 2. **users_create.php** - Formato de Data Incorreto (Linha 14)
- **Problema**: Usa `date('h:m:s')` onde `m` representa mês, não minutos
- **Solução**: Alterado para `date('H:i:s')` para formato correto de hora:minuto:segundo
- **Benefício**: Timestamps corretos nos registros de criação de clientes

#### 3. **a/getappuser.php** - Chave JSON Inexistente (Linhas 140, 142)
- **Problema**: Tenta usar `$ibo_data['app_url']` que não existe no arquivo `a/ibo.json`
- **Solução**: Substituído por `$ibo_data['apk_url']` que é a chave correta
- **Benefício**: App recebe resposta JSON válida sem erros de chave indefinida

#### 4. **users_create.php** - MAC não Pré-preenchido
- **Problema**: Quando clica em "Ativar" em devices.php, o MAC não é preenchido automaticamente no formulário
- **Solução**: Adicionada leitura de `$_GET['mac']` e pré-preenchimento do campo MAC
- **Benefício**: Fluxo de ativação de MACs capturados agora funciona corretamente

#### 5. **api/request.php** - Falta de Validação de JSON
- **Problema**: Não valida se o arquivo JSON é válido antes de decodificar
- **Solução**: Adicionada verificação `is_array()` após `json_decode()` com fallback para array vazio
- **Benefício**: Evita erros ao processar dados corrompidos

---

### ✨ Melhorias Implementadas

#### 1. **api/request.php** - Timestamps Automáticos
- Adicionado campo `timestamp` com data/hora automática em formato ISO 8601
- Resposta JSON agora retorna status e mensagens descritivas
- Validação obrigatória de MAC address

#### 2. **mac_auto.php** - Novo Endpoint Melhorado
- Suporte completo a CORS para requisições cross-origin
- Validação robusta de dados de entrada
- Limite de 500 registros (anteriormente 200)
- Resposta JSON estruturada com informações detalhadas
- Suporte a requisições GET para listar MACs capturados

#### 3. **devices.php** - Interface Aprimorada
- Cards de estatísticas com visual melhorado (Total, Pendentes, Ativados)
- Tabela com mais informações (IP, Data/Hora, Status)
- Badges de status visual (Ativado/Pendente)
- Mensagem informativa quando não há MACs capturados
- Seção de documentação da API integrada
- Validação de dados com `strtoupper()` e `trim()` para consistência

#### 4. **users_create.php** - Melhorias no Fluxo
- Pré-preenchimento automático do MAC quando vem de devices.php
- Labels em português mais claros
- Validação de entrada melhorada
- Formatação automática de MAC address (XX:XX:XX:XX:XX:XX)

#### 5. **Tratamento de Erros Global**
- Todas as operações de arquivo agora verificam existência de diretórios
- JSON sempre é salvo com formatação legível (`JSON_PRETTY_PRINT`)
- Suporte a Unicode em JSON (`JSON_UNESCAPED_UNICODE`)

---

### 📋 Arquivos Modificados

| Arquivo | Tipo | Descrição |
|---------|------|-----------|
| `api/request.php` | Correção | Validação de GET, timestamp, tratamento de erros |
| `users_create.php` | Correção | Data corrigida, MAC pré-preenchido |
| `a/getappuser.php` | Correção | Chave JSON corrigida (app_url → apk_url) |
| `mac_auto.php` | Melhoria | CORS, validação robusta, limite aumentado |
| `devices.php` | Melhoria | Interface nova, documentação API, validação |

---

### 🔧 Testes Recomendados

1. **Captura de MAC via API**
   ```bash
   curl -X POST http://seu-painel/mac_auto.php \
     -H "Content-Type: application/json" \
     -d '{"mac":"AA:BB:CC:DD:EE:FF","deviceName":"TV"}'
   ```

2. **Ativação de MAC Capturado**
   - Acesse devices.php
   - Clique em "Ativar" para um MAC pendente
   - Verifique se o MAC está pré-preenchido em users_create.php

3. **Verificação de Logs**
   - Acesse `error_log` e `api/error_log`
   - Não deve haver warnings sobre "Undefined array key"

4. **Teste de App**
   - Envie requisição POST para `a/getappuser.php`
   - Verifique se o JSON retorna com `apk_url` correto

---

### 📝 Notas de Segurança

- Todos os inputs são validados e sanitizados com `htmlspecialchars()` e `trim()`
- Limite de 500 registros de MAC previne consumo excessivo de memória
- Diretórios são criados automaticamente com permissões 0777 (ajustar conforme necessário)
- Recomenda-se usar prepared statements em vez de concatenação direta em queries SQL

---

### 🚀 Próximas Melhorias Sugeridas

1. Implementar prepared statements em todas as queries SQL
2. Adicionar autenticação na API de captura de MACs
3. Criar dashboard com gráficos de ativações
4. Implementar backup automático de dados
5. Adicionar filtros avançados na tabela de MACs

---

**Data de Atualização**: 08 de Junho de 2026  
**Versão**: 2.0  
**Status**: Estável
