diagram_ph/INSTRUCTIONS_TEST_DIAGRAMMES.md

217 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`](diagram_PH.py:1) qui fonctionnait correctement. Le nouveau code dans [`app/services/diagram_generator.py`](app/services/diagram_generator.py:1) devrait maintenant :
1. ✅ Tracer la **cloche de saturation** (liquide + vapeur)
2. ✅ Tracer les **isothermes** (lignes vertes en pointillés)
3. ✅ Ajouter les **annotations de température**
4. ✅ Utiliser une **échelle logarithmique** pour la pression
5. ✅ 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 avec `h_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
1. Assurez-vous que l'API est en cours d'exécution :
```bash
# Dans un terminal
uv run python -m app.main
```
2. Dans un AUTRE terminal, exécutez le script de test :
```bash
python test_diagram_visual.py
```
3. Le script va générer 3 images PNG dans le dossier `test_outputs/` :
- `diagram_r134a_validation.png`
- `diagram_r410a_validation.png`
- `diagram_with_cycle.png`
4. **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 :
```bash
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
1. Lancez Jupyter :
```bash
jupyter notebook test_api.ipynb
```
2. Exécutez les cellules 6 ou 11 qui génèrent des diagrammes PH
3. L'image s'affichera directement dans le notebook
### Option 4 : Utiliser la documentation Swagger
1. Ouvrez votre navigateur : http://localhost:8001/docs
2. Allez à l'endpoint `POST /api/v1/diagrams/ph`
3. Cliquez sur "Try it out"
4. Utilisez ce JSON :
```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
}
```
5. Cliquez sur "Execute"
6. Copiez le contenu du champ `image` (string base64)
7. Utilisez un décodeur base64 en ligne ou ce code Python :
```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 :
1. **Ce qui manque** : cloche, isothermes, annotations ?
2. **Ce qui est incorrect** : échelle, couleurs, positions ?
3. **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`](app/services/diagram_generator.py:1) - Réécrit complètement basé sur [`diagram_PH.py`](diagram_PH.py:1)
- ✅ [`test_diagram_visual.py`](test_diagram_visual.py:1) - Nouveau script de test visuel
- ✅ Ce document d'instructions
## Prochaines étapes
Une fois que vous avez validé visuellement les diagrammes :
1. ✅ Les diagrammes sont corrects → On passe à la Phase 6 (déploiement AWS)
2. ❌ 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.