Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 89 additions & 0 deletions crypto-pilot-builder/python/config_example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#!/usr/bin/env python3
"""
Configuration d'exemple pour l'autowallet
"""

import os
from dotenv import load_dotenv

# Charger les variables d'environnement
load_dotenv()

# Configuration de base
AUTOWALLET_CONFIG = {
'is_active': True,
'analysis_interval': 15, # minutes
'max_investment_per_trade': 100.0, # USD
'risk_tolerance': 'medium', # low, medium, high
'investment_strategy': 'balanced', # conservative, balanced, aggressive
'crypto_whitelist': ['BTC', 'ETH', 'ADA', 'DOT', 'SOL'],
'crypto_blacklist': [],
'min_confidence_threshold': 0.7,
'max_daily_trades': 10
}

# Configuration des alertes
ALERT_CONFIGS = {
'email': {
'channel_type': 'email',
'config': {
'email': 'votre@email.com'
},
'is_active': True
},
'telegram': {
'channel_type': 'telegram',
'config': {
'bot_token': 'VOTRE_BOT_TOKEN',
'chat_id': 'VOTRE_CHAT_ID'
},
'is_active': False
},
'discord': {
'channel_type': 'discord',
'config': {
'webhook_url': 'VOTRE_WEBHOOK_URL',
'channel_name': 'alertes-crypto'
},
'is_active': False
}
}

# Configuration des variables d'environnement
ENV_VARS = {
'NEWS_API_KEY': 'Votre clé API pour les news crypto',
'SMTP_SERVER': 'smtp.gmail.com',
'SMTP_PORT': '587',
'SMTP_USERNAME': 'votre_email@gmail.com',
'SMTP_PASSWORD': 'votre_mot_de_passe_app',
'FROM_EMAIL': 'alerts@cryptopilot.com'
}

def print_config():
"""Affiche la configuration d'exemple"""
print("🤖 Configuration d'exemple pour CryptoPilot AutoWallet")
print("=" * 60)

print("\n📋 Configuration de l'autowallet:")
for key, value in AUTOWALLET_CONFIG.items():
print(f" {key}: {value}")

print("\n🔔 Configuration des alertes:")
for name, config in ALERT_CONFIGS.items():
print(f" {name}: {config['channel_type']} - {'Actif' if config['is_active'] else 'Inactif'}")

print("\n⚙️ Variables d'environnement nécessaires:")
for key, description in ENV_VARS.items():
current_value = os.getenv(key, 'Non définie')
print(f" {key}: {current_value}")
if current_value == 'Non définie':
print(f" → {description}")

print("\n🚀 Pour démarrer:")
print(" 1. Configurez vos variables d'environnement")
print(" 2. Démarrez le serveur: python app.py")
print(" 3. Accédez à l'interface: http://localhost:5000")
print(" 4. Naviguez vers /autowallet")

if __name__ == "__main__":
print_config()
187 changes: 187 additions & 0 deletions crypto-pilot-builder/python/create_test_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
#!/usr/bin/env python3
"""
Script pour créer une configuration AutoWallet de test
"""

import requests
import json
from datetime import datetime, timedelta
import jwt

def create_test_jwt():
"""Crée un token JWT de test"""
# Clé secrète de test (doit correspondre à celle du serveur)
secret_key = "your-secret-key" # Remplacez par votre vraie clé secrète

# Payload du token
payload = {
"user_id": "test_user_123",
"username": "test_user",
"exp": datetime.utcnow() + timedelta(hours=1),
"iat": datetime.utcnow()
}

try:
# Créer le token
token = jwt.encode(payload, secret_key, algorithm="HS256")
return token
except Exception as e:
print(f"❌ Erreur lors de la création du token: {e}")
return None

def create_autowallet_config():
"""Crée une configuration AutoWallet de test"""
print("🔧 Création d'une configuration AutoWallet de test")
print("=" * 60)

# Créer un token JWT de test
token = create_test_jwt()
if not token:
print("❌ Impossible de créer un token de test")
return False

print(f"✅ Token JWT créé: {token[:50]}...")

# URL de l'endpoint
url = "http://localhost:5000/api/autowallet/config"

# Configuration de test
config_data = {
"is_active": True,
"analysis_interval": 15, # 15 minutes
"max_investment_per_trade": 100, # $100
"risk_tolerance": "medium",
"investment_strategy": "balanced",
"min_confidence_score": 0.3,
"max_daily_trades": 10,
"stop_loss_percentage": 5.0,
"take_profit_percentage": 15.0
}

# Headers avec authentification
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}

print(f"\n📡 Création de la configuration: {url}")
print(f"📊 Configuration: {json.dumps(config_data, indent=2)}")

try:
response = requests.post(url, json=config_data, headers=headers, timeout=10)
print(f"\n📊 Réponse reçue:")
print(f" Status: {response.status_code}")
print(f" Contenu: {response.text}")

if response.status_code == 201:
data = response.json()
print(f"\n✅ Configuration créée avec succès !")
print(f" ID: {data.get('autowallet_id')}")
print(f" Message: {data.get('message')}")
return True
elif response.status_code == 401:
print(f"\n❌ Erreur d'authentification")
print(" Vérifiez que la clé secrète correspond à celle du serveur")
elif response.status_code == 500:
print(f"\n❌ Erreur serveur")
print(" Vérifiez les logs du serveur")
else:
print(f"\n⚠️ Réponse inattendue")

except requests.exceptions.ConnectionError:
print("❌ Impossible de se connecter au serveur")
print(" Assurez-vous que le serveur est démarré: python app.py")
except Exception as e:
print(f"❌ Erreur lors de la création: {e}")

return False

def test_config_retrieval():
"""Test de récupération de la configuration"""
print("\n📋 Test de récupération de la configuration")
print("=" * 60)

token = create_test_jwt()
if not token:
return False

url = "http://localhost:5000/api/autowallet/config"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}

try:
response = requests.get(url, headers=headers, timeout=10)
print(f"📡 Test de récupération: {url}")
print(f" Status: {response.status_code}")

if response.status_code == 200:
data = response.json()
print(f" ✅ Configuration récupérée")
print(f" Active: {data.get('is_active')}")
print(f" Intervalle: {data.get('analysis_interval')} minutes")
print(f" Investissement max: ${data.get('max_investment_per_trade')}")
return True
else:
print(f" ❌ Erreur: {response.text}")
return False

except Exception as e:
print(f"❌ Erreur lors du test: {e}")
return False

def test_analyze_endpoint():
"""Test de l'endpoint d'analyse après création de la config"""
print("\n🧪 Test de l'endpoint d'analyse")
print("=" * 60)

token = create_test_jwt()
if not token:
return False

url = "http://localhost:5000/api/autowallet/analyze"
test_data = {
"news_ids": ["50915331", "50914430"]
}
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}

try:
response = requests.post(url, json=test_data, headers=headers, timeout=10)
print(f"📡 Test de l'endpoint: {url}")
print(f" Status: {response.status_code}")

if response.status_code == 200:
data = response.json()
print(f" ✅ {data.get('count', 0)} alertes générées")
return True
else:
print(f" ❌ Erreur: {response.text}")
return False

except Exception as e:
print(f"❌ Erreur lors du test: {e}")
return False

if __name__ == "__main__":
print("🚀 Création et test de configuration AutoWallet")
print("=" * 70)

# Étape 1: Créer la configuration
if create_autowallet_config():
print("\n" + "="*70)

# Étape 2: Tester la récupération
if test_config_retrieval():
print("\n" + "="*70)

# Étape 3: Tester l'endpoint d'analyse
test_analyze_endpoint()

print("\n📋 Résumé:")
print(" Si la configuration est créée avec succès,")
print(" l'interface AutoWallet devrait fonctionner")
print(" et le bouton Analyser devrait marcher !")
Loading
Loading