# Entropyk Circuit Builder UI

Outil web minimal pour créer des configurations de circuits HVAC et les tester avec le CLI Entropyk (validate + run).

## Prérequis

- Python 3.6+
- Entropyk compilé en release : `cargo build --release -p entropyk-cli`

## Lancement

Depuis **la racine du dépôt** Entropyk :

```bash
cd /chemin/vers/Entropyk
python3 tools/circuit-builder-ui/server.py
```

Puis ouvre un navigateur sur : **http://localhost:8765**

Le serveur sert l’UI et exécute le CLI pour les actions « Valider » et « Lancer simulation ». Le binaire attendu est `target/release/entropyk-cli`.

## Utilisation

1. **Scénario** : nom, fluide (ex. R410A), backend (Test ou CoolProp).
2. **Circuits** : ajouter un ou plusieurs circuits ; pour chaque circuit :
   - **Composants** : type (Placeholder, Compressor, Condenser, Evaporator, etc.), nom, paramètres.
   - **Arêtes** : `from` / `to` au format `composant:port` (ex. `comp:outlet` → `cond:inlet`).
3. **Solver** : stratégie (fallback, newton, picard), max itérations, tolérance.
4. **Couplages thermiques** (optionnel) : circuit chaud/froid, UA, efficacité.
5. **Charger un exemple** : simple_working.json ou chiller_r410a_minimal.json.
6. **Télécharger JSON** : exporte la config pour usage en ligne de commande.
7. **Valider (CLI)** : envoie la config au serveur qui lance `entropyk-cli validate`.
8. **Lancer simulation (CLI)** : lance `entropyk-cli run` et affiche le résultat.

Tous les types de composants supportés par le CLI peuvent être testés depuis l’UI (Placeholder, Compressor, Condenser, Evaporator, ExpansionValve, HeatExchanger, Pump, etc.). La palette inclut aussi **sources/puits** (Source eau, Puits eau, Source réfrig., Puits réfrig.) et **Splitter/Merger** ; exportés en Placeholder pour le CLI. Pour conditions aux limites réelles : API Rust (BrineSource, RefrigerantSource…), voir `docs/migration/boundary-conditions.md`.

---

## Application UI complète plus tard : quelle option technique ?

Tu prévois une vraie application UI à part entière. Voici les options et une recommandation.

### 1. **Application web (front + API)**

- **Stack typique** : React, Vue ou Svelte + backend (Rust actix/axum, ou Node, ou Python FastAPI).
- **Avantages** : un seul front déployable partout (cloud, on-premise), mises à jour centralisées, pas d’installateur.
- **Inconvénients** : les calculs doivent tourner côté serveur (ou via WebAssembly si tu portes le moteur un jour). Il faut exposer une API (ex. POST /run avec la config JSON) qui appelle le CLI ou la lib Entropyk.
- **Bonne option si** : tu veux un outil accessible via navigateur, multi-utilisateurs ou hébergé.

### 2. **Desktop avec Tauri (Rust + web view)**

- **Stack** : Tauri 2 + front en HTML/JS ou framework (React, Vue, etc.) ; la logique métier et les appels au moteur sont en Rust.
- **Avantages** : réutilisation directe d’Entropyk comme crate Rust (pas de sous-process CLI), binaire léger, pas de serveur, offline, performances maximales.
- **Inconvénients** : c’est une app desktop (packaging Windows/macOS/Linux), un peu plus de mise en place au début.
- **Bonne option si** : tu veux une application native installable, un seul binaire, et garder tout le calcul dans le même processus Rust. **C’est souvent le meilleur choix pour un outil HVAC pro à long terme.**

### 3. **Desktop avec Electron**

- **Stack** : app Node + moteur de rendu Chromium, front web (React, etc.) ; le CLI peut être lancé en sous-process depuis Node.
- **Avantages** : même stack qu’en web, écosystème npm riche.
- **Inconvénients** : gros binaire, consommation mémoire, il faut quand même appeler le CLI (ou un binaire natif) pour les calculs.
- **Bonne option si** : tu as déjà une équipe 100 % web et tu veux du desktop sans toucher au Rust en front.

### 4. **Hybride : web UI + petit service local**

- **Principe** : une SPA (React/Vue) qui parle à un petit service local (Rust ou Python) qui exécute le CLI ou utilise la lib Entropyk.
- **Avantages** : UI 100 % web, calculs locaux, pas d’hébergement serveur obligatoire.
- **Inconvénients** : il faut installer et lancer le service local en plus du navigateur.
- **Bonne option si** : tu veux une UI web mais que les calculs restent sur la machine de l’utilisateur.

---

### Recommandation

- **Pour un outil interne / démo / prototypage rapide** : garder cette UI (Circuit Builder) + serveur Python tel quel, ou remplacer le serveur par un petit backend Rust (axum) qui appelle la lib Entropyk.
- **Pour une application produit complète (HVAC, multi-circuits, résultats structurés)** : viser **Tauri 2 + front web (React/Vue/Svelte)**. Tu réutilises Entropyk en Rust, une seule codebase UI, et tu distribues un installateur par plateforme. C’est la solution la plus propre et la plus pérenne pour une app desktop basée sur Entropyk.

Si tu indiques si tu vises plutôt **desktop** ou **web hébergé**, on peut détailler l’architecture (Tauri vs web API) et les prochaines étapes concrètes.
