7.0 KiB
Instructions pour tester les diagrammes PH
Contexte
J'ai corrigé le service de génération de diagrammes PH en me basant sur le code original diagram_PH.py qui fonctionnait correctement. Le nouveau code dans app/services/diagram_generator.py devrait maintenant :
- ✅ Tracer la cloche de saturation (liquide + vapeur)
- ✅ Tracer les isothermes (lignes vertes en pointillés)
- ✅ Ajouter les annotations de température
- ✅ Utiliser une échelle logarithmique pour la pression
- ✅ Tracer les cycles frigorifiques en rouge
Corrections effectuées
Avant (problèmes)
- Isothermes mal calculées ou absentes
- Cloche de saturation incomplète
- Pas d'annotations de température
- Échelle incorrecte
Après (basé sur code original)
- Méthode
get_psat_values(): calcule la cloche de saturation correctement - Méthode
get_IsoT_values(): calcule les isothermes avech_pT() - Méthode
find_whole_10_numbers(): trouve les températures rondes (multiples de 10) - Annotations de température positionnées correctement
- Échelle logarithmique pour la pression
Comment tester
Option 1 : Utiliser le script de test
-
Assurez-vous que l'API est en cours d'exécution :
# Dans un terminal uv run python -m app.main -
Dans un AUTRE terminal, exécutez le script de test :
python test_diagram_visual.py -
Le script va générer 3 images PNG dans le dossier
test_outputs/:diagram_r134a_validation.pngdiagram_r410a_validation.pngdiagram_with_cycle.png
-
Ouvrez ces images et vérifiez visuellement :
- ✓ La cloche de saturation (2 courbes noires)
- ✓ Les isothermes (lignes vertes pointillées)
- ✓ Les annotations de température (en blanc)
- ✓ L'échelle Y logarithmique
- ✓ Le cycle en rouge (pour la 3ème image)
Option 2 : Utiliser l'API directement
Vous pouvez utiliser curl ou un outil comme Postman :
curl -X POST "http://localhost:8001/api/v1/diagrams/ph" \
-H "Content-Type: application/json" \
-d '{
"refrigerant": "R134a",
"pressure_range": {"min": 1.0, "max": 20.0},
"enthalpy_range": {"min": 150, "max": 500},
"include_isotherms": true,
"isotherm_values": [-20, -10, 0, 10, 20, 30, 40, 50, 60],
"format": "png",
"width": 1400,
"height": 900,
"dpi": 100
}'
La réponse contiendra un champ image avec le PNG en base64. Décodez-le et sauvegardez-le.
Option 3 : Utiliser le Jupyter Notebook
-
Lancez Jupyter :
jupyter notebook test_api.ipynb -
Exécutez les cellules 6 ou 11 qui génèrent des diagrammes PH
-
L'image s'affichera directement dans le notebook
Option 4 : Utiliser la documentation Swagger
-
Ouvrez votre navigateur : http://localhost:8001/docs
-
Allez à l'endpoint
POST /api/v1/diagrams/ph -
Cliquez sur "Try it out"
-
Utilisez ce JSON :
{ "refrigerant": "R134a", "pressure_range": {"min": 1.0, "max": 20.0}, "enthalpy_range": {"min": 150, "max": 500}, "include_isotherms": true, "isotherm_values": [-20, -10, 0, 10, 20, 30, 40, 50, 60], "format": "png", "width": 1400, "height": 900, "dpi": 100 } -
Cliquez sur "Execute"
-
Copiez le contenu du champ
image(string base64) -
Utilisez un décodeur base64 en ligne ou ce code Python :
import base64 # Collez la string base64 ici image_base64 = "iVBORw0KGg..." # Décodez et sauvegardez image_data = base64.b64decode(image_base64) with open('diagram.png', 'wb') as f: f.write(image_data) print("Image sauvegardée: diagram.png")
Critères de validation
Pour considérer le diagramme comme VALIDE, vérifiez :
1. Cloche de saturation ✓
- 2 courbes noires visibles
- Courbe de gauche : liquide saturé
- Courbe de droite : vapeur saturée
- Les deux courbes se rejoignent en haut (point critique)
2. Isothermes ✓
- Lignes vertes en pointillés visibles
- Plusieurs isothermes (selon
isotherm_values) - Les isothermes traversent la cloche horizontalement
- Les isothermes sont régulièrement espacées
3. Annotations ✓
- Températures affichées sur les isothermes
- Format : "10°C", "20°C", etc.
- Fond blanc pour la lisibilité
- Positionnées au milieu des isothermes
4. Axes et échelle ✓
- Axe X : "Enthalpy [kJ/kg]"
- Axe Y : "Pressure [bar]"
- Échelle Y logarithmique (espacement non linéaire)
- Grille visible
5. Légende et titre ✓
- Titre : "PH Diagram for R134a" (ou autre réfrigérant)
- Légende avec "Liquid Saturation" et "Vapor Saturation"
6. Cycle (si applicable) ✓
- Cycle tracé en rouge avec points
- 4 points visibles
- Lignes reliant les points dans le bon ordre
Exemple de ce que vous devriez voir
Le diagramme devrait ressembler à ceci :
P (bar)
^
20 | ╱─────────╲ <- Vapeur saturée
| ╱ ╲
10 | ─────── ╱ 20°C 30°C 40°C <- Isothermes
| ╱ ╲
5 | ╱ -10°C 0°C 10°C ╲
| ╱ ╲
2 | ╱ -20°C ╲
| ╱ ╲
1 | ╱────────────────────────────────────╲
| ^ ^
| Liquide Vapeur
| saturé saturée
+─────────────────────────────────────────────> h (kJ/kg)
150 250 350 450
(Schéma ASCII approximatif - le vrai diagramme est beaucoup plus détaillé)
Si le diagramme n'est pas correct
Si vous voyez des problèmes, merci de me décrire précisément :
- Ce qui manque : cloche, isothermes, annotations ?
- Ce qui est incorrect : échelle, couleurs, positions ?
- Message d'erreur : s'il y en a un
Je corrigerai immédiatement en conséquence.
Fichiers modifiés pour cette correction
- ✅
app/services/diagram_generator.py- Réécrit complètement basé surdiagram_PH.py - ✅
test_diagram_visual.py- Nouveau script de test visuel - ✅ Ce document d'instructions
Prochaines étapes
Une fois que vous avez validé visuellement les diagrammes :
- ✅ Les diagrammes sont corrects → On passe à la Phase 6 (déploiement AWS)
- ❌ Il y a encore des problèmes → Décrivez-moi ce qui ne va pas et je corrige
IMPORTANT : Le serveur API doit être en cours d'exécution sur http://localhost:8001 pour que les tests fonctionnent.