diagram_ph/INSTRUCTIONS_TEST_DIAGRAMMES.md

7.0 KiB
Raw Permalink Blame History

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 :

  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 :

    # Dans un terminal
    uv run python -m app.main
    
  2. Dans un AUTRE terminal, exécutez le script de test :

    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 :

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 :

    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 :

    {
      "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 :

    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 - Réécrit complètement basé sur diagram_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 :

  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.