Flask API 2026
API
Cette page documente les routes exposées par web/app.py. Swagger est disponible sur /api/docs/ si flasgger est installé.
Contrat. Les exemples ci-dessous correspondent aux routes réellement présentes dans le code. En production, placez l'application derrière un reverse proxy avec TLS, contrôle d'accès et limites de taille.
Workflow API recommandé. La chaîne la plus robuste du dépôt consiste à générer une configuration via /api/generate-json, lancer l'exécution via /api/run-simulation/<id>/async, puis suivre l'état avec /api/results/<id>/status avant d'exploiter les données de résultats ou de PDF.
Base
BASE_URL=http://localhost:5000
Pages web servies par Flask
| Route | Usage |
/, /form, /configure/<sim_type> | création et configuration d'une simulation |
/history, /results/<sim_id>, /compare | historique, résultats, comparaison |
/materials, /optimize, /optimize/results/<opt_id> | matériaux et optimisation |
/chat, /conversations/history | assistant LLM et historique de conversations |
/statistics, /validation | statistiques globales et validation scientifique |
Simulation
| Méthode | Route | Rôle |
| GET | /api/health | santé applicative, DB, disponibilité Celery, version |
| POST | /api/validate_config | validation de configuration sans lancement |
| GET | /api/template/<sim_type> | template léger |
| GET | /api/template-full/<sim_type> | template détaillé |
| GET | /api/schema/<sim_type> | schéma JSON |
| GET | /api/simulations | liste des simulations persistées |
| POST | /api/generate-json | génération d'une configuration à partir du payload formulaire |
| POST | /api/simulate | lancement immédiat en une étape |
| POST | /api/run-simulation/<sim_id> | exécution synchrone |
| POST | /api/run-simulation/<sim_id>/async | exécution asynchrone, Celery si disponible sinon thread local |
curl -X POST http://localhost:5000/api/generate-json \
-H "Content-Type: application/json" \
-d '{
"simulation_name": "si_reference",
"simulation_type": "homojunction",
"material": "Si",
"illum_enabled": true,
"voltage_start": 0,
"voltage_stop": 0.7,
"voltage_points": 50
}'
Suivi, résultats et post-traitement
| Méthode | Route | Rôle |
| GET | /api/results/<sim_id>/status | polling du statut |
| GET | /api/events/<sim_id> | flux SSE principal |
| GET | /api/simulation/<sim_id>/progress-stream | flux SSE de progression |
| GET | /api/results/<sim_id> | résultat complet JSON |
| GET | /api/results/<sim_id>/plots | liste des graphiques disponibles |
| GET | /api/results/<sim_id>/plot/<plot_name> | image d'un graphique |
| GET | /api/results/<sim_id>/pdf | rapport PDF |
| GET | /api/results/<sim_id>/csv | export CSV |
| GET | /api/results/<sim_id>/profiling | profiling d'exécution |
| GET | /api/results/<sim_id>/sweep-heatmap | heatmap pour balayages paramétriques |
| GET | /api/plot-info | métadonnées globales sur les graphiques |
| GET | /api/am15g-spectrum | spectre AM1.5G de référence |
| GET | /api/simulations/<sim_id>/tags | lecture des tags |
| PUT | /api/simulations/<sim_id>/tags | mise à jour des tags |
Comparaison, aperçu et sessions
| Méthode | Route | Rôle |
| GET | /api/compare-data | données agrégées pour la page de comparaison |
| GET | /api/compare-config | configurations comparées |
| POST | /api/preview-system | aperçu géométrique et validation rapide d'une configuration |
| POST | /api/session/create | création de session |
| GET | /api/session/get | lecture de session |
| POST | /api/session/delete | suppression de session |
Matériaux
| Méthode | Route | Rôle |
| GET | /api/materials, /api/materials/list | liste des matériaux |
| POST | /api/materials/search | recherche fédérée |
| GET | /api/materials/<formula> | détail d'un matériau |
| POST | /api/custom-materials, /api/materials/save | ajout et persistance de matériaux |
| DELETE | /api/materials/delete/<formula> | suppression |
| GET | /api/materials/mp/search | recherche Materials Project |
| POST | /api/materials/mp/install, /api/materials/reload | installation / rechargement |
| POST | /api/materials/dft-request | demande de calcul DFT externe |
Optimisation
| Méthode | Route | Rôle |
| POST | /api/optimize/create | création d'un job |
| POST | /api/optimize/<opt_id>/run, /cancel | pilotage |
| GET | /api/optimize/<opt_id>/progress, /status, /results | suivi et résultat |
| GET | /api/optimize/<opt_id>/heatmap, /pdf | visualisation et export |
| POST | /api/optimize/<opt_id>/sensitivity, /predict | sensibilité et surrogate |
| DELETE | /api/optimize/<opt_id>/delete | suppression |
| GET | /api/optimize/history | historique |
Supervision Celery et tâches
| Méthode | Route | Rôle |
| GET | /api/workers/status | état des workers et files |
| GET | /api/task/<task_id>/status | état d'une task |
| POST | /api/task/<task_id>/revoke | annulation d'une task |
LLM, profils et conversations
| Méthode | Route | Rôle |
| GET | /api/chat/status | état du backend LLM |
| POST | /api/chat | réponse streamée |
| GET | /api/llm/config, /api/llm/config/history, /api/llm/models | lecture de configuration et modèles |
| POST | /api/llm/config, /api/llm/config/import, /api/llm/test-key, /api/llm/estimate-cost | configuration, import, test, estimation |
| GET | /api/llm/config/export | export de configuration |
| GET | /api/llm/profiles, /api/conversations, /api/conversations/<conv_id> | listes de profils et conversations |
| POST | /api/llm/profiles, /api/llm/profiles/<profile_id>/activate | création et activation de profils |
| DELETE | /api/llm/profiles/<profile_id>, /api/conversations/<conv_id>, /api/conversations | suppression |
Codes de réponse
| Code | Cas typique | Lecture utile |
| 200 | réponse HTTP correcte | ne prouve pas la validité physique du contenu |
| 400 | payload ou configuration invalide | relire errors et le schéma |
| 404 | simulation, optimisation, matériau ou conversation introuvable | revalider l'identifiant et la base active |
| 429 | limitation de requêtes côté agent LLM | attendre la fenêtre courante |
| 500 | erreur solveur, SQLite, provider externe ou export | consulter la réponse JSON et les logs Flask |