217 lines
7.0 KiB
Markdown
217 lines
7.0 KiB
Markdown
# 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. |