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

RouteUsage
/, /form, /configure/<sim_type>création et configuration d'une simulation
/history, /results/<sim_id>, /comparehistorique, résultats, comparaison
/materials, /optimize, /optimize/results/<opt_id>matériaux et optimisation
/chat, /conversations/historyassistant LLM et historique de conversations
/statistics, /validationstatistiques globales et validation scientifique

Simulation

MéthodeRouteRôle
GET/api/healthsanté applicative, DB, disponibilité Celery, version
POST/api/validate_configvalidation 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/simulationsliste des simulations persistées
POST/api/generate-jsongénération d'une configuration à partir du payload formulaire
POST/api/simulatelancement immédiat en une étape
POST/api/run-simulation/<sim_id>exécution synchrone
POST/api/run-simulation/<sim_id>/asyncexé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éthodeRouteRôle
GET/api/results/<sim_id>/statuspolling du statut
GET/api/events/<sim_id>flux SSE principal
GET/api/simulation/<sim_id>/progress-streamflux SSE de progression
GET/api/results/<sim_id>résultat complet JSON
GET/api/results/<sim_id>/plotsliste des graphiques disponibles
GET/api/results/<sim_id>/plot/<plot_name>image d'un graphique
GET/api/results/<sim_id>/pdfrapport PDF
GET/api/results/<sim_id>/csvexport CSV
GET/api/results/<sim_id>/profilingprofiling d'exécution
GET/api/results/<sim_id>/sweep-heatmapheatmap pour balayages paramétriques
GET/api/plot-infométadonnées globales sur les graphiques
GET/api/am15g-spectrumspectre AM1.5G de référence
GET/api/simulations/<sim_id>/tagslecture des tags
PUT/api/simulations/<sim_id>/tagsmise à jour des tags

Comparaison, aperçu et sessions

MéthodeRouteRôle
GET/api/compare-datadonnées agrégées pour la page de comparaison
GET/api/compare-configconfigurations comparées
POST/api/preview-systemaperçu géométrique et validation rapide d'une configuration
POST/api/session/createcréation de session
GET/api/session/getlecture de session
POST/api/session/deletesuppression de session

Matériaux

MéthodeRouteRôle
GET/api/materials, /api/materials/listliste des matériaux
POST/api/materials/searchrecherche fédérée
GET/api/materials/<formula>détail d'un matériau
POST/api/custom-materials, /api/materials/saveajout et persistance de matériaux
DELETE/api/materials/delete/<formula>suppression
GET/api/materials/mp/searchrecherche Materials Project
POST/api/materials/mp/install, /api/materials/reloadinstallation / rechargement
POST/api/materials/dft-requestdemande de calcul DFT externe

Optimisation

MéthodeRouteRôle
POST/api/optimize/createcréation d'un job
POST/api/optimize/<opt_id>/run, /cancelpilotage
GET/api/optimize/<opt_id>/progress, /status, /resultssuivi et résultat
GET/api/optimize/<opt_id>/heatmap, /pdfvisualisation et export
POST/api/optimize/<opt_id>/sensitivity, /predictsensibilité et surrogate
DELETE/api/optimize/<opt_id>/deletesuppression
GET/api/optimize/historyhistorique

Supervision Celery et tâches

MéthodeRouteRô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>/revokeannulation d'une task

LLM, profils et conversations

MéthodeRouteRôle
GET/api/chat/statusétat du backend LLM
POST/api/chatréponse streamée
GET/api/llm/config, /api/llm/config/history, /api/llm/modelslecture de configuration et modèles
POST/api/llm/config, /api/llm/config/import, /api/llm/test-key, /api/llm/estimate-costconfiguration, import, test, estimation
GET/api/llm/config/exportexport 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>/activatecréation et activation de profils
DELETE/api/llm/profiles/<profile_id>, /api/conversations/<conv_id>, /api/conversationssuppression

Codes de réponse

CodeCas typiqueLecture utile
200réponse HTTP correctene prouve pas la validité physique du contenu
400payload ou configuration invaliderelire errors et le schéma
404simulation, optimisation, matériau ou conversation introuvablerevalider l'identifiant et la base active
429limitation de requêtes côté agent LLMattendre la fenêtre courante
500erreur solveur, SQLite, provider externe ou exportconsulter la réponse JSON et les logs Flask