Docs : audit post-release v1.10.0 — statut README, comptes de tests (180), description lab-timing alignée sur le fix #68

This commit is contained in:
Siphonight 2026-09-27 23:16:59 +02:00
parent b865b1606f
commit f36e25ef62
3 changed files with 19 additions and 10 deletions

View File

@ -17,11 +17,14 @@
> Fie-toi toujours à tes analyses de sang et aux consignes de ton
> endocrinologue.
- **Statut** : web v1.9.7 — parité fonctionnelle avec l'Android v1.9.7
(modèle Estrannaise analytique + nuage d'incertitude MCMC exclusif ESE ;
presets des 6 esters injectables ESE ; l'auto-backup journalier Android
reste structurellement non porté, cf §12 — l'export manuel couvre la
donnée) ·
- **Statut** : web v1.10.0 — parité fonctionnelle avec l'Android v1.10.0
sur la logique miroirée (fix #68 : creux PRÉ-INJECTION dans la
recommandation de prise de sang — date toujours postérieure à la
stabilisation, cohérente avec le créneau affiché ; les autres changements
Android de la v1.10.0 — dialog fantôme #69, rappel sauté si dose déjà
loggée — sont sans équivalent web, notifications = Android) ;
l'auto-backup journalier Android reste structurellement non porté,
cf §12 — l'export manuel couvre la donnée ·
**180 tests verts** · E2E navigateur ✅ · conteneur testé en
configuration durcie ✅ · lint/i18n ✅
- **Journal des versions web** : [docs/CHANGELOG.md](docs/CHANGELOG.md)

View File

@ -60,7 +60,7 @@ Règles du portage, fixées au départ :
| Choix | Décision | Pourquoi |
|---|---|---|
| Langage | JavaScript ES modules natifs (pas de TS, pas de build) | zéro chaîne de compilation → le déploiement = copier le dossier ; les types critiques sont documentés en JSDoc et épinglés par 175 tests |
| Langage | JavaScript ES modules natifs (pas de TS, pas de build) | zéro chaîne de compilation → le déploiement = copier le dossier ; les types critiques sont documentés en JSDoc et épinglés par 180 tests |
| Framework UI | Aucun — DOM via un helper `el()` (`ui/components.js`) | même philosophie que la v1 Android (pas de ViewModel/DI) ; une seule abstraction à connaître |
| Rendu graphique | Canvas 2D natif (portage de `CurveChart.kt`) | pas de lib de charts : fidélité du rendu, zéro dépendance |
| Persistance | `localStorage` (clés préfixées `hormonetrack.`) | données petites (JSON) ; backend INJECTABLE → testable en Node (`store.setBackend(new Map())`) |
@ -405,7 +405,7 @@ Pièges rencontrés :
|---|---|---|---|
| Syntaxe | `node --check` | tous les modules ES | `bash scripts/check.sh` |
| i18n | `scripts/i18n-check.mjs` | clés FR/EN synchronisées + clés utilisées | (dans check.sh) |
| Unitaires | `node --test` | **175 tests** : noyau PK (ESE analytique/TFS/WHS), calibration, backup, store, helpers, alertes, rappels, changelog, tracé labs, estrannaise-models/cloud, rounding, presets (v1.9.4) | `npm test` |
| Unitaires | `node --test` | **180 tests** : noyau PK (ESE analytique/TFS/WHS), calibration, backup, store, helpers, alertes, rappels, changelog, tracé labs, estrannaise-models/cloud, rounding, presets (v1.9.4) | `npm test` |
| E2E navigateur | playwright-core + build Firefox | app réelle : rendu, canvas peint (pixels), navigation, dialog changelog, langue | `npm run e2e` |
| Smoke HTTP | curl | ressources clés en 200 | `check.sh --with-serve` |
@ -448,8 +448,11 @@ launch) — d'où le build dédié dans le cache Playwright, hors dépôt.
garde #61 sur la prolongation, flag off = v1.5.0 bit-compatible,
`lastAnchorMs`.
- **lab-timing** : v1.8.0 « prochaine prise de sang recommandée » (miroir
du Kotlin, §7.11 Android) : creux = minimum de la courbe prévisionnelle
entre 2 injections, saut au premier creux STABILISÉ (5 × t½ — TFS/WHS
du Kotlin, §7.11 Android) : creux = niveau PRÉ-INJECTION du créneau
(**fix #68 v1.10.0** — l'ancien minimum de la fenêtre entière tombait
juste après l'injection précédente pour les esters à montée lente comme
l'EEn ; pour EV le point pré-injection EST le minimum de fenêtre),
saut au premier creux STABILISÉ (5 × t½ — TFS/WHS
analytiques, Estrannaise lue dans la table via terminalHalfLifeDays),
filtres (≥ now+6 h, > dernière prise, Posologie requise), invite
« renseigne une Posologie », oral seul → null.

View File

@ -10,7 +10,10 @@
* énormément, le creux reflète le niveau de fond et l'accumulation) ;
* 2. un creux n'est interprétable que si le régime est **stabilisé** — règle
* des 5 demi-vies terminales (≈ 97 % de l'équilibre) ;
* 3. **ON SAUTE donc au premier creux STABILISÉ** (décision v1.8.0).
* 3. **ON SAUTE donc au premier creux STABILISÉ** (décision v1.8.0 ; fix
* #68 v1.10.0 : le creux = niveau PRÉ-INJECTION du créneau — l'ancien
* minimum de fenêtre entière tombait juste après l'injection PRÉCÉDENTE
* pour les esters à montée lente, date antérieure à la stabilisation).
*
* CALCUL (déduit de ce que l'app connaît déjà) :
* - traitement porteur : ESTRADIOL + injectable + ACTIF + Posologie