Skip to content

pmsi-io v0.4.0

Choose a tag to compare

@GuillaumePressiat GuillaumePressiat released this 22 Jun 10:47
b163f3a

Changelog pmsi::io

[0.4.0] : 2026-06-22

Résumé

pmsi::io 0.4.0 représente une extension significative de l'application et une refonte sur deux axes principaux.

Côté fonctionnalités, deux nouveaux onglets viennent enrichir l'interface :

  • Requêtes : sélection et exécution de requêtes PMSI pré-établies par thématique, avec aperçu hover et lien vers le Lab'
  • Requête Lab' : constructeur de requêtes personnalisées (GHM, diagnostics, actes, âge, poids, durée), sauvegarde, édition, export JSON, partage entre utilisateurs
  • ces onglets requêtes utilisent les développements de requêtage déjà embarqués dans pmsi_rust depuis la version 0.2
  • Notifications toast : système de notifications succès / erreur / info dans les trois onglets
  • Onglet Aide : documentation utilisateur intégrée

Côté robustesse :

  • PmsiError : type d'erreur unifié dans pmsi_rust, remplace les multiples types disparates (PolarsError, String, Box<dyn Error>) ; les erreurs remontent proprement jusqu'au frontend sans être silencieuses
  • Fichier absent : produit désormais une vraie erreur FichierIntrouvable au lieu d'un DataFrame vide silencieux
  • Requête sans résultat : retour silencieux sans erreur, pas de fichier écrit
  • Zéro .unwrap() dans le code de production Rust
  • 37 tests dont 3 nouveaux tests d'erreurs indépendants des fichiers locaux
  • le passage en Tauri v2 permettra une maintenance plus facile à l'avenir

Frontend (Svelte 5)

  • Migration Svelte 5 : runes ($state, $derived, $bindable), syntaxe onclick au lieu de on:click, suppression des $: réactifs
  • Refactoring composants : +page.svelte réduit à l'orchestration ; logique extraite dans ConversionTab.svelte, QueryTab.svelte, CustomQueryTab.svelte
  • Onglet Requêtes : sélection par chips avec ellipsis, groupes thématiques, requêtes pré-établies et personnalisées, preview hover, lien ↗ vers Requête Lab'
  • Onglet Requête Lab' : constructeur de requêtes JSON (GHM, CIM, CCAM, âge, poids, durée), sauvegarde/édition/suppression, export JSON, copie presse-papier
  • Stores partagés : addTra, outExtension partagés entre les 3 onglets via store.ts
  • Notifications toast : système Toaster.svelte (succès/erreur/info), auto-dismiss 5s, coin inférieur droit
  • Messages requêtes : toast succès indique le nombre de requêtes exécutées dont non vides
  • Onglet Aide : documentation utilisateur (hygiène numérique, conversion I/O, requêtes, Requête Lab')
  • Header responsive : flex-wrap sur fenêtre réduite
  • Lien mailto : fonctionnel via tauri-plugin-shell

Backend Rust (pmsi_rust 0.4.0)

  • PmsiError : type d'erreur unifié (thiserror) : FichierIntrouvable, ExtensionInconnue, AnneeInvalide, ParsingPmsi, Requete, FormatInconnu, XlsxTropGrand, Polars/Io/Json (conversions automatiques), Autre
  • PmsiResult<T> : toutes les fonctions publiques migrées ; suppression des Result<T, PolarsError>, Result<T, String>, Result<T, Box<dyn Error>>
  • Zéro .unwrap() dans le code de production
  • pmsi_read_lines : retourne Err(FichierIntrouvable) si le fichier est absent (au lieu d'un DataFrame vide silencieux)
  • DataFrame vide : write_dataframe_to_somefile ne tente pas d'écrire si 0 lignes, retour silencieux sans erreur
  • Tests : 3 tests d'erreurs dans test_errors.rs indépendants des fichiers locaux ; 37 tests au total
  • CLI : pmsi_rust_cli() retourne PmsiResult<()>, messages d'erreur propres via eprintln!

Tauri bridge

  • Erreurs Rust → UI : commandes Tauri retournent de vrais Err(String) ; suppression de la logique Ok(Attention: ...) et de colorize_errors
  • Dépendance regex supprimée de src-tauri/Cargo.toml
  • query_rsa() : propagation correcte de PmsiResult via .map_err(|e| e.to_string())?

Infrastructure

  • Tauri v2 : migration depuis Tauri v1
  • Vite : bumpé à ^5.4.3 (corrige CVE server.fs.deny)
  • CSS partagé : classes communes (pmsi-select, pmsi-toggle, etc.) extraites dans app.postcss
  • Version : 0.4.0 dans tauri.conf.json, package.json, src-tauri/Cargo.toml, Logo.svelte