- Frontend v4 accessible sur réseau local (192.168.1.40) - Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard) - Ollama GPU fonctionnel - Self-healing interactif - Dashboard confiance Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
9.5 KiB
9.5 KiB
Guide de Test - Serveur RPA Vision V3
Guide complet pour tester le système serveur (API + Dashboard + Pipeline)
🎯 Vue d'ensemble
Le système serveur comprend 3 composants principaux:
- API Upload (port 8000) - Reçoit les sessions chiffrées de l'agent
- Dashboard Web (port 5001) - Interface de monitoring et gestion
- Pipeline de traitement - Transforme les sessions en données exploitables
📋 Prérequis
# Activer l'environnement virtuel
source venv_v3/bin/activate
# Installer les dépendances serveur
pip install -r server/requirements_server.txt
pip install -r web_dashboard/requirements.txt
# Vérifier l'installation
python -c "import fastapi, flask, cryptography; print('✅ Dépendances OK')"
🚀 Démarrage Rapide
Option 1: Script automatique (recommandé)
# Démarrer API + Dashboard
./server/start_all.sh
Sortie attendue:
========================================
RPA Vision V3 - Démarrage Complet
========================================
✅ API démarrée (PID: 12345)
✅ Dashboard démarré (PID: 12346)
🌐 URLs:
API: http://localhost:8000
Dashboard: http://localhost:5001
Option 2: Démarrage manuel
Terminal 1 - API:
cd server
python api_upload.py
Terminal 2 - Dashboard:
cd web_dashboard
python app.py
✅ Tests Unitaires
1. Test du module de chiffrement/déchiffrement
# Créer un fichier de test
echo "test data" > /tmp/test.txt
zip /tmp/test.zip /tmp/test.txt
# Chiffrer (depuis agent_v0)
cd agent_v0
python storage_encrypted.py /tmp/test.zip test_password
# Déchiffrer (depuis server)
cd ../server
python storage_encrypted.py /tmp/test.zip.enc test_password
# Vérifier
unzip -l /tmp/test.zip
Résultat attendu:
✅ Chiffrement réussi: /tmp/test.zip.enc
✅ Déchiffrement réussi: /tmp/test.zip
2. Test du pipeline de traitement
# Lancer les tests d'intégration
pytest tests/integration/test_server_pipeline.py -v
Tests exécutés:
- ✅ Chiffrement/déchiffrement round-trip
- ✅ Déchiffrement avec mauvais mot de passe (doit échouer)
- ✅ Pipeline de traitement basique
- ✅ Gestion des erreurs (session manquante, JSON corrompu)
3. Test de l'API
# Test 1: Status de l'API
curl http://localhost:8000/api/traces/status
# Résultat attendu:
# {
# "status": "online",
# "version": "1.0.0",
# "upload_dir": "...",
# "encryption_enabled": false
# }
# Test 2: Liste des sessions
curl http://localhost:8000/api/traces/sessions
# Résultat attendu:
# {
# "sessions": [],
# "total": 0
# }
4. Test du Dashboard
# Ouvrir dans un navigateur
xdg-open http://localhost:5001
# Ou avec curl
curl http://localhost:5001/api/system/status
Interface attendue:
- 📊 Vue d'ensemble (statut système)
- 📦 Sessions Agent (liste des sessions)
- 🧪 Tests (lancer les tests)
- 📝 Logs (voir les logs)
🔄 Test du Flux Complet
Scénario: Upload d'une session depuis l'agent
1. Créer une session de test avec l'agent:
cd agent_v0
# Enregistrer une session de test (10 secondes)
python agent_v0.py --duration 10 --label "test_workflow"
# Résultat: session_YYYYMMDD_HHMMSS.zip.enc
2. Uploader vers le serveur:
# Méthode 1: Avec curl
SESSION_FILE="session_20251125_143022.zip.enc"
SESSION_ID="session_20251125_143022"
curl -X POST http://localhost:8000/api/traces/upload \
-F "file=@$SESSION_FILE" \
-F "session_id=$SESSION_ID"
# Méthode 2: Avec l'agent (si configuré)
# L'agent uploade automatiquement si server_url est configuré
Résultat attendu:
{
"status": "success",
"session_id": "session_20251125_143022",
"events_count": 42,
"screenshots_count": 15,
"user": {"id": "user123", "label": "Test User"},
"received_at": "2025-11-25T14:30:45.123456"
}
3. Vérifier dans le Dashboard:
# Ouvrir le dashboard
xdg-open http://localhost:5001
# Aller dans l'onglet "📦 Sessions Agent"
# La session devrait apparaître dans la liste
4. Traiter la session:
Dans le Dashboard:
- Cliquer sur "⚙️ Traiter" pour la session
- Le pipeline va:
- Construire les ScreenStates
- Générer les embeddings (si CLIP disponible)
- Détecter les UI (si modèles disponibles)
- Construire le workflow
5. Vérifier les logs:
# Logs API
tail -f logs/api.log
# Logs Dashboard
tail -f logs/dashboard.log
# Ou dans le Dashboard, onglet "📝 Logs"
🧪 Tests Automatisés
Suite complète de tests
# Tous les tests d'intégration serveur
pytest tests/integration/test_server_pipeline.py -v
# Avec couverture
pytest tests/integration/test_server_pipeline.py --cov=server --cov-report=html
# Ouvrir le rapport
xdg-open htmlcov/index.html
Tests individuels
# Test chiffrement/déchiffrement
pytest tests/integration/test_server_pipeline.py::test_encryption_decryption_roundtrip -v
# Test pipeline
pytest tests/integration/test_server_pipeline.py::test_processing_pipeline_basic -v
# Test gestion erreurs
pytest tests/integration/test_server_pipeline.py::test_processing_pipeline_missing_session -v
🔒 Test de Sécurité
1. Test du chiffrement
# Créer un fichier avec données sensibles
echo "Données confidentielles: password123" > /tmp/secret.txt
zip /tmp/secret.zip /tmp/secret.txt
# Chiffrer
cd agent_v0
python storage_encrypted.py /tmp/secret.zip "strong_password_2025"
# Vérifier que le fichier .enc n'est pas lisible
cat /tmp/secret.zip.enc
# Devrait afficher du binaire illisible
# Déchiffrer avec bon mot de passe
cd ../server
python storage_encrypted.py /tmp/secret.zip.enc "strong_password_2025"
# Vérifier le contenu
unzip -p /tmp/secret.zip secret.txt
# Devrait afficher: "Données confidentielles: password123"
2. Test avec mauvais mot de passe
# Tenter de déchiffrer avec mauvais mot de passe
python storage_encrypted.py /tmp/secret.zip.enc "wrong_password"
# Résultat attendu:
# ❌ Erreur: Erreur déchiffrement (mot de passe incorrect?)
3. Test de taille de fichier
# Créer un gros fichier (50 MB)
dd if=/dev/urandom of=/tmp/large.bin bs=1M count=50
zip /tmp/large.zip /tmp/large.bin
# Chiffrer
cd agent_v0
python storage_encrypted.py /tmp/large.zip "test_password"
# Uploader (vérifier que ça passe)
curl -X POST http://localhost:8000/api/traces/upload \
-F "file=@/tmp/large.zip.enc" \
-F "session_id=large_test" \
--max-time 300
# Note: Nginx limite à 100MB par défaut
📊 Tests de Performance
1. Test de charge API
# Installer Apache Bench
sudo apt install apache2-utils
# Test: 100 requêtes, 10 concurrentes
ab -n 100 -c 10 http://localhost:8000/api/traces/status
# Résultat attendu:
# Requests per second: > 100
# Time per request: < 100ms
2. Test de traitement de session
# Mesurer le temps de traitement
time python -c "
from server.processing_pipeline import process_session_async
stats = process_session_async('session_20251125_143022', 'data/training')
print(f'ScreenStates: {stats[\"screen_states_created\"]}')
print(f'Embeddings: {stats[\"embeddings_generated\"]}')
"
# Temps attendu (dépend du matériel):
# - Sans embeddings: < 1s
# - Avec embeddings: 2-5s par screenshot
🐛 Troubleshooting
Problème: API ne démarre pas
# Vérifier le port
netstat -tlnp | grep 8000
# Si occupé, tuer le processus
kill $(lsof -t -i:8000)
# Vérifier les logs
cat logs/api.log
Problème: Dashboard ne démarre pas
# Vérifier le port
netstat -tlnp | grep 5001
# Vérifier les dépendances
pip list | grep -i flask
# Réinstaller si nécessaire
pip install --force-reinstall Flask
Problème: Déchiffrement échoue
# Vérifier le mot de passe
echo $ENCRYPTION_PASSWORD
# Tester manuellement
cd server
python storage_encrypted.py /path/to/file.enc "votre_password"
# Vérifier l'intégrité du fichier
file /path/to/file.enc
# Devrait afficher: "data"
Problème: Pipeline échoue
# Vérifier les dépendances
python -c "import torch, clip, faiss; print('OK')"
# Vérifier les modèles
ls -lh models/
# Voir les logs détaillés
tail -f logs/api.log | grep -i error
📝 Checklist de Test
Avant de déployer en production:
- ✅ API démarre sans erreur
- ✅ Dashboard démarre sans erreur
- ✅ Test chiffrement/déchiffrement réussi
- ✅ Upload de session réussi
- ✅ Pipeline de traitement réussi
- ✅ Tests unitaires passent (pytest)
- ✅ Tests d'intégration passent
- ✅ Test avec mauvais mot de passe échoue correctement
- ✅ Dashboard affiche les sessions
- ✅ Logs accessibles et lisibles
- ✅ Mot de passe de production configuré (pas le défaut!)
- ✅ Firewall configuré (si production)
- ✅ HTTPS configuré (si production)
🎯 Résultats Attendus
Après tous les tests:
✅ API fonctionnelle (http://localhost:8000)
✅ Dashboard fonctionnel (http://localhost:5001)
✅ Chiffrement/déchiffrement opérationnel
✅ Pipeline de traitement opérationnel
✅ Tests automatisés passent
✅ Gestion d'erreurs robuste
✅ Logs disponibles et informatifs
Le système est prêt pour:
- Recevoir des sessions de l'agent
- Les déchiffrer automatiquement
- Les traiter avec le pipeline
- Les afficher dans le dashboard
- Être déployé en production (avec HTTPS)
Besoin d'aide?
- Logs API:
tail -f logs/api.log - Logs Dashboard:
tail -f logs/dashboard.log - Tests:
pytest tests/integration/test_server_pipeline.py -v