teste / docs /troubleshooting.md
torxyton's picture
Initial commit: Complete Fibonacci analysis application with Gradio interface
7f335a2

A newer version of the Gradio SDK is available: 6.6.0

Upgrade

🔧 Guia de Troubleshooting

Visão Geral

Este guia ajuda a resolver problemas comuns encontrados ao usar o Vampire Trading Bot. Os problemas estão organizados por categoria com soluções passo a passo.

🚨 Problemas de Instalação

Erro: "Microsoft Visual C++ 14.0 is required"

Sintomas:

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"

Causa: Falta de ferramentas de compilação no Windows.

Solução:

  1. Baixe e instale o Visual Studio Build Tools
  2. Durante a instalação, selecione "C++ build tools"
  3. Reinicie o terminal e tente novamente:
    pip install -r requirements.txt
    

Erro: "No module named 'pyaudioop'"

Sintomas:

ModuleNotFoundError: No module named 'pyaudioop'

Causa: Incompatibilidade com Python 3.13.

Solução:

# Atualizar Gradio para versão mais recente
pip install --upgrade gradio

# Verificar se audioop-lts foi instalado
pip list | grep audioop

Erro: "Failed building wheel for tokenizers"

Sintomas:

Failed building wheel for tokenizers
ERROR: Could not build wheels for tokenizers

Causa: Falta do compilador Rust.

Soluções:

Opção 1 - Usar versão pré-compilada:

pip install --upgrade transformers

Opção 2 - Instalar Rust:

# Windows (PowerShell)
Invoke-WebRequest -Uri https://win.rustup.rs/ -OutFile rustup-init.exe
.\rustup-init.exe

# Linux/macOS
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

Erro: "Permission denied" (Windows)

Sintomas:

PermissionError: [WinError 5] Access is denied

Solução:

# Alterar política de execução
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# Executar como administrador se necessário

🤖 Problemas com Modelos de IA

Erro: "OutOfMemoryError" ao carregar modelo

Sintomas:

torch.cuda.OutOfMemoryError: CUDA out of memory
# ou
RuntimeError: [enforce fail at alloc_cpu.cpp:75]

Soluções:

1. Usar modelo mais leve:

# Em config.py
FinancialModels.DEFAULT_MODEL = "nlptown/bert-base-multilingual-uncased-sentiment"

2. Reduzir tamanho do texto:

# Em config.py
AIConfig.MAX_TEXT_LENGTH = 256  # Reduzir de 512
AIConfig.BATCH_SIZE = 4         # Reduzir de 8

3. Forçar uso de CPU:

# Em config.py
AIConfig.USE_GPU = False

4. Executar em modo standalone:

python app.py --no-ai

Erro: "Model not found" ou "Repository not found"

Sintomas:

OSError: Repository not found
HTTPError: 404 Client Error

Soluções:

1. Verificar conectividade:

import requests
response = requests.get("https://huggingface.co")
print(f"Status: {response.status_code}")

2. Usar modelo alternativo:

# Em config.py
FinancialModels.DEFAULT_MODEL = "cardiffnlp/twitter-roberta-base-sentiment-latest"

3. Cache offline:

# Baixar modelo manualmente
from transformers import pipeline
pipeline("sentiment-analysis", model="nlptown/bert-base-multilingual-uncased-sentiment")

Modelo carrega muito lentamente

Sintomas: Demora excessiva no primeiro carregamento.

Soluções:

1. Habilitar cache:

# Em config.py
AIConfig.ENABLE_MODEL_CACHE = True
AIConfig.CACHE_SIZE = 100

2. Pré-carregar modelos:

# Adicionar ao início do app.py
from sentiment_analysis import SentimentAnalysisEngine
engine = SentimentAnalysisEngine()
engine.model_manager.load_model()  # Pré-carrega

3. Usar modelo local:

# Baixar modelo para pasta local
mkdir models
# Configurar caminho local em config.py

🖥️ Problemas de Interface

Interface não carrega (erro 500)

Sintomas: Página em branco ou erro 500 no navegador.

Diagnóstico:

# Verificar logs no terminal
python -u app.py

# Verificar porta
netstat -an | findstr 7860

Soluções:

1. Verificar dependências:

try:
    import gradio as gr
    print(f"Gradio versão: {gr.__version__}")
except ImportError as e:
    print(f"Erro ao importar Gradio: {e}")

2. Usar porta diferente:

python app.py --server_port=8080

3. Modo debug:

# Em app.py
demo.launch(debug=True, show_error=True)

Interface trava durante análise

Sintomas: Interface não responde após submeter análise.

Soluções:

1. Verificar timeout:

# Em config.py
AIConfig.MODEL_LOAD_TIMEOUT = 120  # Aumentar timeout

2. Adicionar indicador de progresso:

# Em ui.py
def analyze_with_progress(text):
    yield "🔄 Iniciando análise..."
    # ... análise
    yield "✅ Análise concluída!"

3. Processamento assíncrono:

import asyncio

async def async_analysis(text):
    # Análise em background
    pass

Erro: "Connection refused" ou "Address already in use"

Sintomas:

OSError: [Errno 98] Address already in use
ConnectionRefusedError: [Errno 111] Connection refused

Soluções:

1. Verificar processos na porta:

# Windows
netstat -ano | findstr :7860
taskkill /PID <PID> /F

# Linux/macOS
lsof -ti:7860 | xargs kill -9

2. Usar porta diferente:

python app.py --server_port=8080

📊 Problemas de Performance

Alto uso de CPU/Memória

Sintomas: Sistema lento, ventilador alto.

Diagnóstico:

# Verificar uso de recursos
from performance_monitor import PerformanceMonitor
monitor = PerformanceMonitor()
monitor.start_monitoring()
print(monitor.get_current_metrics())

Soluções:

1. Otimizar configurações:

# Em config.py
AIConfig.MAX_TEXT_LENGTH = 256
AIConfig.BATCH_SIZE = 2
AIConfig.USE_GPU = False

2. Limitar histórico:

# Em performance_monitor.py
PerformanceMonitor(max_metrics_history=100)

3. Desabilitar recursos:

# Desabilitar monitoramento em tempo real
real_time_integration = None

Análises muito lentas

Sintomas: Demora excessiva para gerar resultados.

Soluções:

1. Profile de performance:

import cProfile

def profile_analysis():
    cProfile.run('engine.analyze_market_data(text)')

2. Cache de resultados:

from functools import lru_cache

@lru_cache(maxsize=100)
def cached_analysis(text_hash):
    return engine.analyze_market_data(text)

3. Processamento paralelo:

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(max_workers=2) as executor:
    future = executor.submit(analyze_function, text)
    result = future.result(timeout=30)

📁 Problemas de Arquivos e Logs

Erro: "File not found" para logs

Sintomas:

FileNotFoundError: [Errno 2] No such file or directory: 'trading.log'

Soluções:

1. Verificar caminho:

from pathlib import Path
log_path = Path("d:/hugging_face_spaces/text")
print(f"Existe: {log_path.exists()}")
print(f"É arquivo: {log_path.is_file()}")

2. Criar arquivo de exemplo:

# Criar log de exemplo para testes
with open("sample_log.txt", "w") as f:
    f.write("""⏰ Análise #1 - 09:46:58
📊 DADOS DE MERCADO - WINV25
Preço Atual: 140135.00000 ↗
""")

3. Configurar caminho correto:

# Em real_time_integration.py
LOG_FILE_PATH = "caminho/correto/para/logs.txt"

Erro de permissão em arquivos

Sintomas:

PermissionError: [Errno 13] Permission denied

Soluções:

1. Verificar permissões:

# Linux/macOS
ls -la arquivo.log
chmod 644 arquivo.log

# Windows
icacls arquivo.log

2. Executar como administrador:

# Windows (PowerShell como Admin)
python app.py

🔄 Problemas de Integração em Tempo Real

FileWatcher não detecta mudanças

Sintomas: Logs atualizados mas sistema não processa.

Diagnóstico:

from real_time_integration import FileWatcher

def test_callback(content):
    print(f"Arquivo mudou: {len(content)} caracteres")

watcher = FileWatcher("test.txt", test_callback)
watcher.start()

Soluções:

1. Verificar intervalo:

# Em real_time_integration.py
config = RealTimeConfig(
    log_file_path="logs.txt",
    check_interval=0.5  # Reduzir intervalo
)

2. Forçar flush do arquivo:

# No sistema que gera logs
with open("logs.txt", "a") as f:
    f.write("nova linha\n")
    f.flush()  # Forçar escrita

Eventos duplicados

Sintomas: Mesmo evento processado múltiplas vezes.

Solução:

# Adicionar deduplicação
class EventDeduplicator:
    def __init__(self):
        self.processed_events = set()
    
    def is_duplicate(self, event_hash):
        if event_hash in self.processed_events:
            return True
        self.processed_events.add(event_hash)
        return False

🧪 Problemas de Desenvolvimento

Erro ao importar módulos

Sintomas:

ModuleNotFoundError: No module named 'market_analysis'

Soluções:

1. Verificar PYTHONPATH:

# Windows
set PYTHONPATH=%PYTHONPATH%;D:\hugging_face_spaces

# Linux/macOS
export PYTHONPATH=$PYTHONPATH:/path/to/project

2. Usar imports relativos:

# Em vez de
from market_analysis import TechnicalAnalysisEngine

# Use
from .market_analysis import TechnicalAnalysisEngine

3. Adicionar ao sys.path:

import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

Erro de encoding

Sintomas:

UnicodeDecodeError: 'utf-8' codec can't decode

Soluções:

1. Especificar encoding:

with open("arquivo.txt", "r", encoding="utf-8") as f:
    content = f.read()

2. Detectar encoding automaticamente:

import chardet

with open("arquivo.txt", "rb") as f:
    raw_data = f.read()
    encoding = chardet.detect(raw_data)['encoding']
    content = raw_data.decode(encoding)

🔍 Ferramentas de Diagnóstico

Script de Diagnóstico Completo

#!/usr/bin/env python3
# diagnostic.py

import sys
import os
import importlib
import platform
import psutil
from pathlib import Path

def run_diagnostics():
    print("🔍 DIAGNÓSTICO DO VAMPIRE TRADING BOT")
    print("=" * 50)
    
    # Sistema
    print(f"🖥️  Sistema: {platform.system()} {platform.release()}")
    print(f"🐍 Python: {sys.version}")
    print(f"📁 Diretório: {os.getcwd()}")
    
    # Recursos
    print(f"💾 RAM: {psutil.virtual_memory().total // (1024**3)} GB")
    print(f"🔥 CPU: {psutil.cpu_count()} cores")
    
    # Dependências
    print("\n📦 DEPENDÊNCIAS:")
    dependencies = [
        'gradio', 'transformers', 'torch', 
        'numpy', 'pandas', 'scipy', 'psutil'
    ]
    
    for dep in dependencies:
        try:
            module = importlib.import_module(dep)
            version = getattr(module, '__version__', 'N/A')
            print(f"✅ {dep}: {version}")
        except ImportError:
            print(f"❌ {dep}: NÃO INSTALADO")
    
    # Arquivos
    print("\n📁 ARQUIVOS:")
    files = [
        'app.py', 'config.py', 'market_analysis.py',
        'sentiment_analysis.py', 'ui.py', 'requirements.txt'
    ]
    
    for file in files:
        path = Path(file)
        if path.exists():
            size = path.stat().st_size
            print(f"✅ {file}: {size} bytes")
        else:
            print(f"❌ {file}: NÃO ENCONTRADO")
    
    # Teste de importação
    print("\n🧪 TESTE DE IMPORTAÇÃO:")
    modules = [
        'market_analysis', 'sentiment_analysis', 
        'fibonacci_analysis', 'ui'
    ]
    
    for module in modules:
        try:
            importlib.import_module(module)
            print(f"✅ {module}: OK")
        except Exception as e:
            print(f"❌ {module}: {str(e)[:50]}...")
    
    print("\n🏁 Diagnóstico concluído!")

if __name__ == "__main__":
    run_diagnostics()

Script de Teste de Performance

#!/usr/bin/env python3
# performance_test.py

import time
import psutil
from memory_profiler import profile

@profile
def test_analysis_performance():
    """Testa performance das análises."""
    
    # Simular análise técnica
    start_time = time.time()
    
    # Teste de análise
    sample_text = "Preço: 140135, Variação: +5, Volume: 5023"
    
    try:
        from market_analysis import TechnicalAnalysisEngine
        engine = TechnicalAnalysisEngine()
        result = engine.analyze_market_data(sample_text)
        
        end_time = time.time()
        analysis_time = end_time - start_time
        
        print(f"⏱️  Tempo de análise: {analysis_time:.2f}s")
        print(f"💾 Uso de memória: {psutil.Process().memory_info().rss / 1024 / 1024:.1f} MB")
        print(f"🔥 Uso de CPU: {psutil.cpu_percent()}%")
        
        return True
        
    except Exception as e:
        print(f"❌ Erro na análise: {e}")
        return False

if __name__ == "__main__":
    test_analysis_performance()

📞 Obtendo Ajuda

Informações para Suporte

Ao reportar problemas, inclua:

  1. Informações do sistema:

    python diagnostic.py > diagnostic_report.txt
    
  2. Logs de erro completos:

    python app.py > app_log.txt 2>&1
    
  3. Configurações utilizadas:

    # Exportar configurações
    from config import *
    print(f"Modelo: {FinancialModels.DEFAULT_MODEL}")
    print(f"RSI: {TechnicalAnalysis.RSI_PERIOD}")
    

Recursos Adicionais

Comunidade e Suporte

  • 🐛 Issues: Para reportar bugs
  • 💬 Discussões: Para dúvidas gerais
  • 📧 Email: Para suporte direto
  • 📖 Wiki: Para documentação adicional

💡 Dica: Mantenha sempre uma cópia de backup das suas configurações antes de fazer alterações significativas!