Files
rpa_vision_v3/docs/guides/SERVER_TESTING_GUIDE.md
Dom a27b74cf22 v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- 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>
2026-01-29 11:23:51 +01:00

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:

  1. API Upload (port 8000) - Reçoit les sessions chiffrées de l'agent
  2. Dashboard Web (port 5001) - Interface de monitoring et gestion
  3. 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:

  1. Cliquer sur "⚙️ Traiter" pour la session
  2. 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