# 🚀 Como Iniciar o Sistema

## ⚠️ IMPORTANTE: Docker Desktop Precisa Estar Rodando!

### 1️⃣ Inicie o Docker Desktop

**macOS:**
1. Abra o **Docker Desktop** (procure no Spotlight ou em Aplicativos)
2. Aguarde o ícone da baleia aparecer na barra superior
3. Clique no ícone e verifique se está "Docker Desktop is running"

**Como saber se está rodando:**
```bash
docker ps
# Se funcionar → Docker está OK ✅
# Se erro "Cannot connect to the Docker daemon" → Docker está parado ❌
```

### 2️⃣ Inicie o Sistema Completo

```bash
# No diretório do projeto
cd /Users/tiagomarins/Projetos/github-tiago/modelo_ml_acdoc

# Inicia API + Interface Web
docker compose up --build -d

# Aguarde a inicialização (15-20 segundos)
sleep 20
```

### 3️⃣ Verifique se Está Rodando

```bash
# Veja os containers
docker ps

# Deve mostrar 2 containers:
# - predicao-glosas (API Python)
# - predicao-glosas-web (Interface Web PHP)

# Teste a API
curl http://localhost:8010/health

# Deve retornar:
# {
#   "status": "healthy",
#   "modelos_carregados": 3,
#   ...
# }
```

### 4️⃣ Acesse no Navegador

**Interface Web de Gestão:**
```
http://localhost:8000
```

**API REST:**
```
http://localhost:8010
```

## 📊 O que você verá na Interface Web

1. **Cabeçalho**
   - Status da API (Online/Offline)
   - Número de modelos carregados

2. **Estatísticas**
   - Total de modelos
   - Modelos OOV
   - Espaço usado

3. **Upload**
   - Arraste ou selecione arquivos `.pkl`
   - Até 100MB

4. **Lista de Modelos**
   - Cards com todas as informações
   - Botão para excluir

## 🛠️ Comandos Úteis

### Ver Logs

```bash
# Todos os logs
docker compose logs -f

# Apenas API
docker compose logs -f predicao-glosas-api

# Apenas Web
docker compose logs -f web-interface
```

### Reiniciar

```bash
# Reiniciar tudo
docker compose restart

# Reiniciar apenas API
docker compose restart predicao-glosas-api

# Reiniciar apenas Web
docker compose restart web-interface
```

### Parar

```bash
# Para tudo mas mantém containers
docker compose stop

# Para e remove tudo
docker compose down
```

### Rebuild (após mudanças no código)

```bash
docker compose down
docker compose build --no-cache
docker compose up -d
```

## 🐛 Problemas Comuns

### "Cannot connect to the Docker daemon"

**Solução:**
1. Abra o Docker Desktop
2. Aguarde aparecer "Docker Desktop is running"
3. Tente novamente

### "port is already allocated"

**Porta 8010 (API):**
```bash
lsof -ti:8010 | xargs kill -9
```

**Porta 8000 (Web):**
```bash
lsof -ti:8000 | xargs kill -9
```

Depois:
```bash
docker compose up -d
```

### "No such image"

```bash
# Faz download das imagens
docker compose pull

# Ou rebuild
docker compose build --no-cache
docker compose up -d
```

### Interface mostra "API Offline"

1. Verifique se a API está rodando:
```bash
docker ps | grep predicao-glosas
```

2. Veja os logs da API:
```bash
docker compose logs predicao-glosas-api
```

3. Teste manualmente:
```bash
curl http://localhost:8010/health
```

4. Se necessário, reinicie:
```bash
docker compose restart predicao-glosas-api
```

### Upload não funciona

1. Verifique permissões do diretório:
```bash
ls -la modelos/
chmod -R 755 modelos/
```

2. Verifique dentro do container:
```bash
docker exec predicao-glosas-web ls -la /var/www/modelos/
```

3. Corrija permissões no container:
```bash
docker exec predicao-glosas-web chown -R www-data:www-data /var/www/modelos
docker exec predicao-glosas-web chmod -R 755 /var/www/modelos
```

## 📱 Acesso Rápido

Após iniciar, salve esses links:

- **Interface Web**: http://localhost:8000
- **API Health**: http://localhost:8010/health
- **API Docs**: http://localhost:8010/
- **Modelos Disponíveis**: http://localhost:8010/modelos

## 🔄 Workflow Completo

1. **Iniciar sistema**: `docker compose up -d`
2. **Acessar interface**: http://localhost:8000
3. **Fazer upload de modelo**: Selecionar arquivo `.pkl` → Enviar
4. **Verificar modelo**: Aparece automaticamente na lista
5. **Usar modelo**: API carrega automaticamente na próxima requisição
6. **Testar predição**:
```bash
curl -X POST http://localhost:8010/predizer \
  -H "Content-Type: application/json" \
  -d '{"protocolo": 123, "tipo_guia": 1, "cod": 30404126, "quantidade": 1}'
```

## 💡 Dicas

- **Auto-reload**: Mudanças em arquivos PHP são automáticas, não precisa reiniciar
- **Modelos compartilhados**: Upload pela web aparece imediatamente para API
- **Logs em tempo real**: Use `docker compose logs -f` para debugging
- **Status sempre visível**: A interface mostra se a API está online/offline

## 📞 Resumo Executivo

```bash
# 1. Abra Docker Desktop (espere inicializar)

# 2. No terminal, execute:
docker compose up -d

# 3. Aguarde 20 segundos

# 4. Acesse no navegador:
http://localhost:8000

# Pronto! 🎉
```

---

**Última atualização**: 01/12/2025
