# Chat IA - Sistema de Perguntas com Claude

## 📋 Descrição

Sistema integrado de Chat IA que permite aos usuários fazer perguntas sobre a frota de veículos usando a IA Claude. O sistema:

- ✅ Segue os padrões de autenticação do sistema SAG
- ✅ Grava histórico de perguntas no banco de dados
- ✅ Controla tokens enviados e recebidos
- ✅ Apresenta dashboard com estatísticas
- ✅ Integra-se com a sessão do usuário

## 🗂️ Estrutura de Arquivos

```
iap_chat/
├── index.php              # Chat principal (interface padrão do sistema)
├── dashboard.php          # Dashboard com estatísticas
├── schema_iap.sql         # Script SQL para criar tabelas
├── api/
│   └── processar.php      # API que processa as perguntas
├── fresh_start/           # Protótipo original
│   ├── index.php
│   ├── claude_handler.php
│   └── schemas.php
└── README.md              # Este arquivo
```

## 🚀 Instalação

### 1. Executar Script SQL

Execute o arquivo `schema_iap.sql` no seu banco PostgreSQL:

```bash
psql -U seu_usuario -d seu_banco < /caminho/para/iap_chat/schema_iap.sql
```

Ou acesse via interface gráfica (pgAdmin):
1. Abra o banco de dados
2. Vá em `Ferramentas → Editor de Consultas`
3. Cole o conteúdo de `schema_iap.sql`
4. Execute

### 2. Configurar Variável de Ambiente

Configure a chave da API Claude:

```bash
# Linux/Mac
export CLAUDE_API_KEY="sua-chave-aqui"

# Windows (PowerShell)
$env:CLAUDE_API_KEY = "sua-chave-aqui"

# Windows (CMD)
set CLAUDE_API_KEY=sua-chave-aqui
```

Ou adicione ao arquivo `.env` (se usar dotenv):
```
CLAUDE_API_KEY=sua-chave-aqui
```

### 3. Permissões de Pastas

Certifique-se que o servidor web pode escrever em:
- `/iap_chat/api/` - Para logs da API

```bash
chmod 755 /var/www/html/sagadm/iap_chat/api/
```

## 📖 Como Usar

### Acesso ao Chat

1. Acesse: `http://localhost/sagadm/iap_chat/`
2. Você será autenticado automaticamente (usa o sistema de autenticação do SAG)
3. Digite sua pergunta e clique em "Enviar"

### Dashboard de Estatísticas

Acesse: `http://localhost/sagadm/iap_chat/dashboard.php`

Você verá:
- Total de perguntas feitas
- Tokens processados
- Usuários ativos
- Top 10 usuários
- Últimas 20 perguntas
- Tendências dos últimos 7 dias

## 🗄️ Tabelas do Banco de Dados

### `iap_log_perguntas`

Armazena cada pergunta feita:

| Campo | Tipo | Descrição |
|-------|------|-----------|
| id | SERIAL | Identificador único |
| usuario_id | INTEGER | ID do usuário (foreign key) |
| empresa | INTEGER | Código da empresa |
| pergunta | TEXT | Texto da pergunta |
| resposta | TEXT | Resposta da IA |
| tokens_enviados | INTEGER | Tokens da pergunta |
| tokens_recebidos | INTEGER | Tokens da resposta |
| data_criacao | TIMESTAMP | Data/hora da pergunta |
| status | VARCHAR | Ativo/Arquivado/Deletado |

### `iap_stats_usuario`

Consolidação de estatísticas por usuário (atualizada automaticamente):

| Campo | Tipo | Descrição |
|-------|------|-----------|
| usuario_id | INTEGER | ID do usuário (UNIQUE) |
| total_perguntas | INTEGER | Quantidade total de perguntas |
| total_tokens_enviados | BIGINT | Total de tokens enviados |
| total_tokens_recebidos | BIGINT | Total de tokens recebidos |
| ultima_pergunta | TIMESTAMP | Última pergunta feita |

### `iap_stats_diaria`

Consolidação de estatísticas por dia:

| Campo | Tipo | Descrição |
|-------|------|-----------|
| data | DATE | Data |
| total_usuarios | INTEGER | Usuários ativos no dia |
| total_perguntas | INTEGER | Perguntas no dia |
| total_tokens_* | BIGINT | Tokens no dia |

## 🔌 API

### Endpoint: POST `/iap_chat/api/processar.php`

Processa uma pergunta e retorna a resposta.

**Request:**
```json
{
    "pergunta": "me informe a localização atual da placa AAA1234"
}
```

**Response:**
```json
{
    "sucesso": true,
    "resposta": "A placa AAA1234 está localizada em São Paulo, SP...",
    "tokens_enviados": 150,
    "tokens_recebidos": 320
}
```

**Erro:**
```json
{
    "sucesso": false,
    "erro": "Desculpe, não consegui processar sua consulta."
}
```

## 🔐 Segurança

- ✅ Requer autenticação via sistema SAG
- ✅ Tokens de API não são expostos ao cliente
- ✅ Perguntas com erros não são gravadas no banco
- ✅ Validação de entrada no backend
- ✅ Logs de todas as operações

## 📊 Estatísticas em Tempo Real

O sistema mantém na sessão do usuário:

```php
$_SESSION['iap_stats'] = [
    'perguntas' => 5,           // Perguntas nesta sessão
    'tokens_enviados' => 750,   // Total enviados
    'tokens_recebidos' => 1200  // Total recebidos
];
```

Estas informações são:
- Exibidas no painel lateral do chat
- Gravadas no banco após cada pergunta
- Consolidadas nas tabelas de estatísticas

## 🔄 Fluxo de Processamento

```
1. Usuário faz pergunta → index.php
2. JavaScript envia para → api/processar.php
3. API verifica autenticação
4. Instancia ClaudeHandler
5. Processa pergunta com Claude
6. Grava logs no banco
7. Retorna resposta + tokens
8. Frontend atualiza estatísticas
```

## 🐛 Troubleshooting

### "API key não configurada"

Configure a variável de ambiente `CLAUDE_API_KEY`:
```bash
export CLAUDE_API_KEY="sua-chave"
```

### "Não consegui processar sua consulta"

Claude gerou SQL inválido. Verifique:
1. Os schemas estão corretos em `fresh_start/schemas.php`
2. A pergunta é clara e específica
3. Os dados existem no banco

### "Erro na conexão com o banco"

Verifique:
1. PostgreSQL está rodando
2. Credenciais em `include/conexaodb.php`
3. Tabelas foram criadas via `schema_iap.sql`

### Perguntas não são gravadas

Verifique logs:
```bash
tail -f /var/log/apache2/error.log
```

Ou ative erros temporariamente:
```php
ini_set('display_errors', 1);
```

## 📈 Próximas Melhorias

- [ ] Exportar estatísticas em CSV/PDF
- [ ] Filtros avançados no dashboard
- [ ] Gráficos com Chart.js
- [ ] Cache de respostas similares
- [ ] Rate limiting por usuário
- [ ] Webhook para notificações
- [ ] API de relatórios

## 📞 Suporte

Para dúvidas ou problemas:
1. Verifique o dashboard em `/iap_chat/dashboard.php`
2. Consulte os logs em `iap_log_perguntas`
3. Verifique a sessão do usuário em autenticação.php

## 📄 Licença

Sistema SAG - Todos os direitos reservados
