Service d’état Rust — pcmirror-serveur remplace status-server/server.py #3
Loading…
Reference in a new issue
No description provided.
Delete branch "hermes/serveur-etat-rust"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Carte t_21cfa69d.
crates/pcmirror-serveur(binairepcmirror-serveur) remplacestatus-server/server.py: mêmes routes, mêmes codes, mêmes pages, plus l’espace disque, l’historique des passes et un verdict de santé.API — ce que le front doit savoir. Aucun champ retiré ni renommé :
/jsongarde ses douze clés (taille_octets,taille,fichiers,dossiers,derniere_modif,age_secondes,sync_en_cours,sync_progression,dernier_sync,backup_pve_dernier,cache_calcule_le,duree_scan_s) et en ajoute onze (disque,sante,sante_libelle,sante_details,sante_faits,derniere_passe,historique,rapports_illisibles,scan_en_cours,racine,demarre_le). Deux routes neuves :/api/etat(/json+listes: dossiers, récents, plus gros, extensions) et/api/sante(le verdict seul). Rien à changer côté front pour que ça continue de marcher ; les nouveaux blocs sont à disposition sisvelteveut les afficher.Preuves.
cargo test --release --locked→ 188 tests verts (122 pour ce crate, dont 10 de parité sur de vraies connexions TCP) ;cargo clippy --all-targets --locked -- -D warningsvert ;cargo fmt --checkvert ;python3 tests/verifier_reference.py→ 21/21 en ligne, 17/17 hors ligne (le serveur Python de référence n’a pas bougé). Les 17 sondes detests/fixtures/status-server-local/attendu.jsonsont rejouées contre le binaire Rust parcrates/pcmirror-serveur/tests/parite_reference.rs.Détail des écarts assumés et des bizarreries reproduites :
docs/SERVEUR-RUST.md.La passe de synchronisation du PC Studio est réécrite en Rust : crate `crates/pcmirror` (bibliothèque et binaire), configuration TOML, verrou, garde-fous, exclusions, corbeille datée, rapport JSON et télémétrie aux mêmes clés que le script en service. La référence reste `sync/pcmirror-sync.sh`, que le PC exécute toujours : rien n'est déployé. `pcmirror run --dry-run` affiche les commandes `rsync` prévues et reproduit la passe décrite dans `docs/COMPORTEMENT-SYNCHRO.md`. - verrou `flock` sans attente, comme `flock -n` : un second passage n'attend pas et sort en 0 ; une panne de `flock` autre qu'un verrou occupé remonte au lieu de se faire passer pour une passe déjà en cours ; - garde-fous : média absent ou vide, hôte injoignable, dossier personnel vide face à une copie pleine, dossier personnel absent ignoré, `--ignorer-garde-fous` pour outrepasser un essai à la main ; - exclusions : les six motifs fixes du script, `_exclusions.txt` du miroir pour le transfert média, `/_rapports/` pour ne pas effacer les rapports déposés ; - rapport JSON de passe, déposé sur le miroir dans `_rapports/` ; télémétrie `_last-sync.json` et `_sync-progress.json` (`{"pct":…,"rate":…}` toutes les 4 s), aux clés du script ; - CI Forgejo : formatage, `clippy` sans avertissement, tests lançant un vrai `rsync` dans `/tmp`, relecture des fichiers de référence. Mesures : 68 tests passés (`cargo test --release --locked`), `clippy --all-targets -D warnings` sans avertissement, couverture 89,15 % des régions / 87,58 % des lignes. Référence de parité : le script en service `/mnt/Media/Linux/pcmirror-sync.sh` (129 lignes, sha256 `cfe3a4b0…`).36942526dcf9c6b47860fusion-auto: pas de fusion, la CI est rouge (Crate pcmirror, Crate pcmirror). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.