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>
This commit is contained in:
Dom
2026-01-29 11:23:51 +01:00
parent 21bfa3b337
commit a27b74cf22
1595 changed files with 412691 additions and 400 deletions

View File

@@ -0,0 +1,295 @@
# Task 3 Complete: API REST de Base
## Date
2 décembre 2024
## Résumé
Implémentation complète de l'API REST pour le Visual Workflow Builder avec endpoints CRUD, validation JSON, gestion d'erreurs et tests automatisés.
## Fichiers Créés/Modifiés
### Nouveaux Fichiers
1. **visual_workflow_builder/backend/api/errors.py**
- Classes d'exceptions personnalisées (APIError, ValidationError, NotFoundError, etc.)
- Fonction `error_response()` pour formater les réponses d'erreur
- Classe `ErrorCode` avec codes d'erreur standardisés
- Messages d'erreur localisés
2. **visual_workflow_builder/backend/api/validation.py**
- Fonctions de validation pour les requêtes API
- `validate_workflow_data()` - Validation complète des workflows
- `validate_update_data()` - Validation des mises à jour
- `validate_node_data()` - Validation des nodes
- `validate_edge_data()` - Validation des edges
- `validate_variable_data()` - Validation des variables
- `validate_settings_data()` - Validation des paramètres
3. **visual_workflow_builder/backend/test_api_manual.py**
- Suite de tests automatisés pour l'API
- Tests CRUD complets
- Tests de validation
- Tests de gestion d'erreurs
- Tests de filtrage
### Fichiers Modifiés
1. **visual_workflow_builder/backend/api/workflows.py**
- Implémentation complète des endpoints CRUD
- GET `/api/workflows/` - Liste des workflows avec filtres
- POST `/api/workflows/` - Création de workflow
- GET `/api/workflows/<id>` - Récupération d'un workflow
- PUT `/api/workflows/<id>` - Mise à jour d'un workflow
- DELETE `/api/workflows/<id>` - Suppression d'un workflow
- POST `/api/workflows/<id>/validate` - Validation d'un workflow
- Stockage en mémoire (sera remplacé par DB en Phase 4)
2. **visual_workflow_builder/backend/api/__init__.py**
- Exports de tous les modules API
- Point d'entrée centralisé
3. **visual_workflow_builder/backend/app.py**
- Enregistrement du blueprint workflows
- Gestionnaires d'erreurs globaux (404, 405, 500)
- Gestion des exceptions non capturées
## Fonctionnalités Implémentées
### 1. Endpoints CRUD Complets
#### GET /api/workflows/
- Liste tous les workflows
- Filtres disponibles:
- `category` - Filtrer par catégorie
- `is_template` - Filtrer les templates (true/false)
- `tags` - Filtrer par tags (séparés par virgules)
- Retourne un tableau JSON de workflows
#### POST /api/workflows/
- Crée un nouveau workflow
- Génère automatiquement un ID unique (UUID)
- Ajoute les timestamps (created_at, updated_at)
- Valide les données avant création
- Retourne le workflow créé avec code 201
#### GET /api/workflows/<id>
- Récupère un workflow spécifique par ID
- Retourne 404 si non trouvé
- Retourne le workflow complet en JSON
#### PUT /api/workflows/<id>
- Met à jour un workflow existant
- Supporte les mises à jour partielles
- Met à jour automatiquement le timestamp updated_at
- Valide les données avant mise à jour
- Retourne le workflow mis à jour
#### DELETE /api/workflows/<id>
- Supprime un workflow
- Retourne 204 (No Content) en cas de succès
- Retourne 404 si le workflow n'existe pas
#### POST /api/workflows/<id>/validate
- Valide la structure d'un workflow
- Retourne:
- `is_valid` - Boolean indiquant si le workflow est valide
- `errors` - Liste des erreurs critiques
- `warnings` - Liste des avertissements (ex: nodes déconnectés)
### 2. Validation des Données
#### Validation des Workflows
- Champs requis: `name`, `created_by`
- Validation des types de données
- Validation de la structure des nodes et edges
- Validation des variables (unicité des noms)
- Validation des paramètres
#### Validation des Nodes
- Champs requis: `id`, `type`, `position`, `size`, `parameters`, `input_ports`, `output_ports`
- Validation de la position (x, y doivent être des nombres)
- Validation de la taille (width, height doivent être des nombres)
- Validation des ports
#### Validation des Edges
- Champs requis: `id`, `source`, `target`, `source_port`, `target_port`
- Tous les champs doivent être des chaînes non vides
#### Validation des Variables
- Champs requis: `name`, `type`, `value`
- Types valides: `string`, `number`, `boolean`, `object`
### 3. Gestion des Erreurs
#### Codes d'Erreur HTTP
- **200** - Succès
- **201** - Créé
- **204** - Pas de contenu (suppression réussie)
- **400** - Requête invalide (validation échouée)
- **404** - Ressource non trouvée
- **405** - Méthode non autorisée
- **500** - Erreur serveur interne
#### Format des Réponses d'Erreur
```json
{
"error": {
"code": 400,
"message": "Description de l'erreur",
"details": {} // Optionnel
}
}
```
#### Codes d'Erreur Personnalisés
- **1000-1999**: Erreurs de validation
- **2000-2999**: Erreurs de sérialisation
- **3000-3999**: Erreurs d'exécution
- **4000-4999**: Erreurs réseau
- **5000-5999**: Erreurs de ressources
### 4. Stockage en Mémoire
- Dictionnaire Python pour stocker les workflows
- Clé: workflow_id (UUID)
- Valeur: objet VisualWorkflow
- Sera remplacé par une base de données en Phase 4
## Tests Exécutés
### Suite de Tests Automatisés (✓ Tous passent)
```
✓ test_health_check
✓ test_list_workflows_empty
✓ test_create_workflow
✓ test_get_workflow
✓ test_update_workflow
✓ test_validate_workflow
✓ test_create_workflow_with_nodes
✓ test_list_workflows_with_filters
✓ test_delete_workflow (x2)
✓ test_error_handling
- 404 error
- Validation error
- Missing body error
```
### Résultats
```
============================================================
✓ ALL TESTS PASSED!
============================================================
```
## Exemples d'Utilisation
### Créer un Workflow
```bash
curl -X POST http://localhost:5001/api/workflows/ \
-H "Content-Type: application/json" \
-d '{
"name": "Mon Workflow",
"description": "Description",
"created_by": "user123",
"nodes": [],
"edges": [],
"variables": []
}'
```
### Lister les Workflows
```bash
curl http://localhost:5001/api/workflows/
```
### Filtrer par Tags
```bash
curl http://localhost:5001/api/workflows/?tags=test,demo
```
### Récupérer un Workflow
```bash
curl http://localhost:5001/api/workflows/<workflow_id>
```
### Mettre à Jour un Workflow
```bash
curl -X PUT http://localhost:5001/api/workflows/<workflow_id> \
-H "Content-Type: application/json" \
-d '{
"name": "Nouveau Nom",
"description": "Nouvelle description"
}'
```
### Valider un Workflow
```bash
curl -X POST http://localhost:5001/api/workflows/<workflow_id>/validate
```
### Supprimer un Workflow
```bash
curl -X DELETE http://localhost:5001/api/workflows/<workflow_id>
```
## Exigences Validées
-**Exigence 5.1**: Endpoints CRUD pour workflows
-**Exigence 5.2**: Sérialisation/désérialisation JSON
-**Exigence 5.3**: Validation des requêtes
-**Exigence 5.5**: Gestion d'erreurs et codes d'erreur
## Prochaines Étapes
La tâche 4 peut maintenant commencer: **Checkpoint - Vérifier que les tests passent**
Ensuite, Phase 2 commencera avec:
- Tâche 5: Implémenter le composant Canvas
- Tâche 6: Implémenter la gestion des edges
- Tâche 7: Créer la palette de nodes
## Notes Techniques
### Choix de Design
1. **Stockage en Mémoire**: Utilisé pour la Phase 1, sera remplacé par SQLite/PostgreSQL
2. **Validation en Deux Étapes**:
- Validation des données de requête (validation.py)
- Validation de la structure du workflow (models.validate())
3. **Gestion d'Erreurs Centralisée**: Toutes les erreurs passent par error_response()
4. **Codes d'Erreur Standardisés**: Facilite le debugging et l'intégration frontend
### Points d'Attention
- Le stockage en mémoire est volatile (données perdues au redémarrage)
- Les endpoints execute, export, import sont des placeholders pour les phases futures
- CORS est configuré pour accepter localhost:3000 (frontend React)
- Le serveur utilise le port 5001 (5000 était en conflit)
## Statistiques
- **Fichiers créés**: 3
- **Fichiers modifiés**: 3
- **Lignes de code Python**: ~900
- **Endpoints implémentés**: 9
- **Tests automatisés**: 11
- **Taux de réussite des tests**: 100%
## Intégration
### Backend ↔ Models
- ✅ Utilisation complète des modèles de données
- ✅ Sérialisation/désérialisation automatique
- ✅ Validation intégrée
### API ↔ Frontend (Prêt)
- ✅ Format JSON standardisé
- ✅ Codes d'erreur clairs
- ✅ CORS configuré
- ✅ Documentation des endpoints
### Prochaine Intégration
- Phase 4: Base de données (SQLite/PostgreSQL)
- Phase 5: Conversion vers WorkflowGraph
- Phase 6: WebSocket pour temps réel