Docs : audit doc↔code — arbre §4 complet, leçons 12/13 (§11), 132 tests
Constats de l'audit systématique : - arbre §4 sans les fichiers conteneurisation (Dockerfile, nginx.conf, compose, .dockerignore) ni container-test.sh / publish-release.py - check.sh décrit 1→6 (actualisé : + mode --release 7→9) - suite lab-trajectory absent de l'arbre tests/ - mentions « 121 tests » périmées → 132 (statut/démarrage/§2/§8/footer) - leçons de portage v1.5.0 ajoutées au §11 (12 : clé LAB skippée de la légende, miroir #63 Android ; 13 : imports ESM = modules exacts)
This commit is contained in:
parent
dfef8e90ef
commit
38cf62826e
@ -182,7 +182,7 @@ in-app s'affiche quand même à l'heure du rappel, page ouverte).
|
||||
## Doc de développement
|
||||
|
||||
Architecture, portage fichier par fichier, format du backup, processus de
|
||||
test (121 tests Node + E2E navigateur), processus de push et pièges connus :
|
||||
test (132 tests Node + E2E navigateur), processus de push et pièges connus :
|
||||
**[docs/DEVELOPPEMENT.md](docs/DEVELOPPEMENT.md)**.
|
||||
|
||||
## Licence
|
||||
|
||||
@ -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 121 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 132 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())`) |
|
||||
@ -140,6 +140,10 @@ HormoneTrack-web/ (dépôt séparé)
|
||||
├── index.html page unique (SPA) — shell construit par app.js
|
||||
├── css/style.css thème (couleurs = Color.kt Android), mobile-first
|
||||
├── LICENSE GPL-3.0 (copie de l'Android — dépôt autonome)
|
||||
├── Dockerfile image de déploiement (nginx-unprivileged, §10)
|
||||
├── nginx.conf server block no-cache/gzip/sécurité (§10)
|
||||
├── docker-compose.yml run durci (read_only + tmpfs, §10)
|
||||
├── .dockerignore runtime seulement (docs/ INCLUS — changelog)
|
||||
├── .gitignore node_modules, package-lock, local-test-data
|
||||
├── assets/pk_profiles.json COPIE de l'asset Android (tables Estrannaise)
|
||||
├── js/
|
||||
@ -219,9 +223,17 @@ HormoneTrack-web/ (dépôt séparé)
|
||||
│ └── CHANGELOG.md journal web (lu par le dialog « Nouveautés »)
|
||||
├── scripts/
|
||||
│ ├── serve.py serveur statique de dev (no-cache, MIME ok)
|
||||
│ ├── check.sh vérifications 1→6 (syntaxe, i18n, tests, E2E, HTTP)
|
||||
│ ├── check.sh vérifications 1→6 (syntaxe, i18n, tests, E2E,
|
||||
│ │ smoke HTTP) + mode --release : 7→9 (cohérence
|
||||
│ │ version↔changelog↔tag, arbre propre, test
|
||||
│ │ conteneur si daemon — §10)
|
||||
│ ├── i18n-check.mjs cohérence FR/EN + clés utilisées
|
||||
│ └── e2e.mjs E2E playwright (Firefox headless, ?demo=1)
|
||||
│ ├── e2e.mjs E2E playwright (Firefox headless, ?demo=1 ;
|
||||
│ │ mode conteneur via HRT_E2E_BASE)
|
||||
│ ├── container-test.sh build + run DURCI + headers/gzip/MIME +
|
||||
│ │ E2E contre le conteneur ([port] [platform])
|
||||
│ └── publish-release.py publie la release Gitea (zip = git archive
|
||||
│ AU TAG, vérifié par téléchargement)
|
||||
├── tests/ ── node --test (miroirs des suites Kotlin) ──
|
||||
│ ├── helpers.js fixtures (makeTreatment/makeDose/makeLab, asset)
|
||||
│ ├── pk-profiles.test.js ← PKProfileStoreTest.kt (pics ODS, casse #22…)
|
||||
@ -230,6 +242,8 @@ HormoneTrack-web/ (dépôt séparé)
|
||||
│ ├── pk-engine.test.js ← PharmacokineticEngineTest.kt (+ #35, §6.bis)
|
||||
│ ├── calibration.test.js ← CalibrationPerModel/ScaleFactorWhsahRepro/
|
||||
│ │ V120Features (fixes #60/#61, périodes d'ester)
|
||||
│ ├── lab-trajectory-model.test.js ← LabTrajectoryModelTest.kt (v1.5.0
|
||||
│ │ « Tracé labs » — passage exact, garde #61)
|
||||
│ ├── backup.test.js ← BackupGsonTest.kt + exports Android RÉELS
|
||||
│ │ (local-test-data/ si présent, sinon skip)
|
||||
│ ├── chart-helpers.test.js ← ChartZoomTest.kt (#53/#54/#55/#58/#62)
|
||||
@ -362,7 +376,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` | **121 tests** : noyau PK, calibration, backup, store, helpers, alertes, rappels, changelog | `npm test` |
|
||||
| Unitaires | `node --test` | **132 tests** : noyau PK, calibration, backup, store, helpers, alertes, rappels, changelog, tracé labs (v1.5.0) | `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` |
|
||||
|
||||
@ -469,7 +483,7 @@ fonctionnalités (sauf impossibilités structurelles §12).
|
||||
|
||||
**v1.4.10 = la première release web publiée (8 sept. 2026, cloudyfy)** :
|
||||
tag + release Gitea avec l'archive zip de déploiement, APRES validation
|
||||
complète (121 tests unitaires + E2E navigateur local + container-test réel
|
||||
complète (132 tests unitaires + E2E navigateur local + container-test réel
|
||||
en configuration durcie). Le dépôt farewell reste en attente de la création
|
||||
du repo (one-shot côté Gitea).
|
||||
|
||||
@ -667,6 +681,15 @@ Trouvés pendant l'écriture (à ne pas réintroduire) :
|
||||
11. **`getSettings()` fusionne les défauts** : un stockage partiel ne doit
|
||||
jamais exposer des champs `undefined` (les gardes `!== null` deviennent
|
||||
fausses autrement).
|
||||
12. **Miroir du fix #63 Android** (v1.5.0) : la clé `'LAB'` (Tracé labs)
|
||||
dans la liste `curves` est SKIPPÉE de la boucle de légende (légende
|
||||
dédiée à part) — même bug qu'Android : le `else` (TFS) imprimerait la
|
||||
légende TFS en doublon. Quand une liste clé→série reçoit une clé,
|
||||
grepper chaque consommateur de la liste (légende, stats, styles).
|
||||
13. **Imports ESM = noms de modules EXACTS** (v1.5.0) : `labIsSignificant`
|
||||
vit dans `pk-calibration.js` (pas `pk-engine.js`) — un import du
|
||||
mauvais module = SyntaxError AU CHARGEMENT, l'app entière ne démarre
|
||||
pas ; attrapé par `node --check` + l'E2E « aucune erreur console ».
|
||||
|
||||
## 12. Limites connues & non-portés
|
||||
|
||||
@ -701,7 +724,7 @@ Structurels (plateforme), pas des bugs :
|
||||
|
||||
---
|
||||
*Doc mise à jour le 11 sept. 2026 (web v1.5.0 — sync Android, dépôt séparé
|
||||
HormoneTrack-web) — portage de l'Android v1.4.10, 121 tests verts + E2E,
|
||||
HormoneTrack-web) — sync Android v1.5.0, 132 tests verts + E2E,
|
||||
backup compatible bidirectionnel, historique propre (aucune donnée de
|
||||
santée, aucune dette de confidentialité), versions alignées sur
|
||||
l'Android.*
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user