Docs : audit post-release v1.10.0 — §3 (uiautomator), §5 (EstrannaiseModels, demande #69), §8 (259/225), §16 (259/225 + 14 UI), §21 (2 points manuels v1.10.0), README FR/EN (plage releases)
This commit is contained in:
parent
386693379e
commit
0bb259d12d
@ -143,7 +143,7 @@ No Play Store: the app is sideloaded. Step-by-step details (French):
|
|||||||
|
|
||||||
Repositories: **gitea.cloudyfy.fr** and **gitea.farewell.dev** (mirror) —
|
Repositories: **gitea.cloudyfy.fr** and **gitea.farewell.dev** (mirror) —
|
||||||
`Siphonight/HormoneTrack` on both (private), with **tagged releases**
|
`Siphonight/HormoneTrack` on both (private), with **tagged releases**
|
||||||
(`v1.1.0` → `v1.9.8`) and **two APKs per release** (since v1.2.5)
|
(`v1.1.0` → `v1.10.0`) and **two APKs per release** (since v1.2.5)
|
||||||
(downloadable without building, cf
|
(downloadable without building, cf
|
||||||
[docs/DEVELOPPEMENT.md §16.bis](docs/DEVELOPPEMENT.md)):
|
[docs/DEVELOPPEMENT.md §16.bis](docs/DEVELOPPEMENT.md)):
|
||||||
`-release.apk` (**recommended**, R8-optimized, 2.7 MB) and `-debug.apk` (20 MB):
|
`-release.apk` (**recommended**, R8-optimized, 2.7 MB) and `-debug.apk` (20 MB):
|
||||||
|
|||||||
@ -141,7 +141,7 @@ Pas de Play Store : l'app est sideloadée. Détails pas-à-pas : [docs/GUIDE_INS
|
|||||||
|
|
||||||
Dépôts : **gitea.cloudyfy.fr** et **gitea.farewell.dev** (miroir) —
|
Dépôts : **gitea.cloudyfy.fr** et **gitea.farewell.dev** (miroir) —
|
||||||
`Siphonight/HormoneTrack` sur les deux (privé), avec
|
`Siphonight/HormoneTrack` sur les deux (privé), avec
|
||||||
**releases taguées** (`v1.1.0` → `v1.9.8`) et **deux APK par release** (depuis v1.2.5)
|
**releases taguées** (`v1.1.0` → `v1.10.0`) et **deux APK par release** (depuis v1.2.5)
|
||||||
(téléchargeables sans compiler, cf [docs/DEVELOPPEMENT.md §16.bis](docs/DEVELOPPEMENT.md)) :
|
(téléchargeables sans compiler, cf [docs/DEVELOPPEMENT.md §16.bis](docs/DEVELOPPEMENT.md)) :
|
||||||
`-release.apk` (**recommandé**, optimisé R8, 2,7 Mo) et `-debug.apk` (20 Mo) :
|
`-release.apk` (**recommandé**, optimisé R8, 2,7 Mo) et `-debug.apk` (20 Mo) :
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
1. [Contexte & objectifs](#1-contexte--objectifs)
|
1. [Contexte & objectifs](#1-contexte--objectifs)
|
||||||
2. [Historique du projet](#2-historique-du-projet)
|
2. [Historique du projet](#2-historique-du-projet)
|
||||||
3. [Stack & versions (épinglées — à jour v1.9.8)](#3-stack--versions-épinglées--à-jour-v198)
|
3. [Stack & versions (épinglées — à jour v1.10.0)](#3-stack--versions-épinglées--à-jour-v1100)
|
||||||
4. [Environnement de build (cette machine)](#4-environnement-de-build-cette-machine)
|
4. [Environnement de build (cette machine)](#4-environnement-de-build-cette-machine)
|
||||||
5. [Architecture générale](#5-architecture-générale)
|
5. [Architecture générale](#5-architecture-générale)
|
||||||
6. [Modèle de données (Room)](#6-modèle-de-données-room) + [6.bis Sémantique isActive](#6bis-sémantique-isactive-v124--drapeau-administratif-jamais-un-filtre)
|
6. [Modèle de données (Room)](#6-modèle-de-données-room) + [6.bis Sémantique isActive](#6bis-sémantique-isactive-v124--drapeau-administratif-jamais-un-filtre)
|
||||||
@ -119,7 +119,7 @@ Leçon importante de la session build : **les erreurs de compilation et les bugs
|
|||||||
(bisection inversée, plancher d'affichage des profils) n'ont été détectés qu'en construisant
|
(bisection inversée, plancher d'affichage des profils) n'ont été détectés qu'en construisant
|
||||||
et en testant** — aucun build n'avait été lancé avant la session 3.
|
et en testant** — aucun build n'avait été lancé avant la session 3.
|
||||||
|
|
||||||
## 3. Stack & versions (épinglées — à jour v1.9.8)
|
## 3. Stack & versions (épinglées — à jour v1.10.0)
|
||||||
|
|
||||||
| Composant | Version | Où |
|
| Composant | Version | Où |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
@ -134,7 +134,7 @@ et en testant** — aucun build n'avait été lancé avant la session 3.
|
|||||||
| DataStore Preferences | 1.2.1 | idem |
|
| DataStore Preferences | 1.2.1 | idem |
|
||||||
| Gson | 2.14.0 | idem |
|
| Gson | 2.14.0 | idem |
|
||||||
| JUnit | 4.13.2 (testImplementation + androidTestImplementation explicite) | idem |
|
| JUnit | 4.13.2 (testImplementation + androidTestImplementation explicite) | idem |
|
||||||
| Tests UI Compose | **ui-test-junit4 via le BOM** + `androidx.test.ext:junit-ktx:1.3.0` (androidTest, v1.9.8 — §8.ter) | idem |
|
| Tests UI Compose | **ui-test-junit4 via le BOM** + `androidx.test.ext:junit-ktx:1.3.0` + `androidx.test.uiautomator:uiautomator:2.3.0` (androidTest, v1.9.8/v1.10.0 — §8.ter) | idem |
|
||||||
| WorkManager | 2.11.2 (**UTILISÉ depuis v1.4.2** : worker périodique des seuils d'alerte, cf §9.bis) | idem |
|
| WorkManager | 2.11.2 (**UTILISÉ depuis v1.4.2** : worker périodique des seuils d'alerte, cf §9.bis) | idem |
|
||||||
| compileSdk / targetSdk | **37** / **36** ; minSdk 26 ; Java target 17 | app |
|
| compileSdk / targetSdk | **37** / **36** ; minSdk 26 ; Java target 17 | app |
|
||||||
| buildFeatures | compose + **buildConfig** (VERSION_NAME pour l'app) | app |
|
| buildFeatures | compose + **buildConfig** (VERSION_NAME pour l'app) | app |
|
||||||
@ -204,10 +204,14 @@ MainActivity (AppCompatActivity)
|
|||||||
```
|
```
|
||||||
|
|
||||||
Points clés :
|
Points clés :
|
||||||
- `HormoneTrackApp.onCreate()` : init `PKProfileStore` (asset), canal de notification
|
- `HormoneTrackApp.onCreate()` : init `EstrannaiseModels` (asset MCMC —
|
||||||
|
`PKProfileStore` HORS runtime depuis v1.9.0), canal de notification
|
||||||
- `MainActivity` : applique la langue sauvegardée (`AppCompatDelegate.setApplicationLocales`),
|
- `MainActivity` : applique la langue sauvegardée (`AppCompatDelegate.setApplicationLocales`),
|
||||||
demande POST_NOTIFICATIONS (API 33+), lit les extras d'intent `open_log_dose` +
|
demande POST_NOTIFICATIONS (API 33+) ; demande « logger une dose »
|
||||||
`treatment_id` (venus de la notification) → Home pré-ouvre le dialog de log
|
(`open_log_dose` + `treatment_id` venus de la notification) = `MutableState<Long?>`
|
||||||
|
détenu par l'activité, **consommé UNE fois** par Home via
|
||||||
|
[HormoneTrackRoot] (fix #69 — extras retirés de l'intent après lecture,
|
||||||
|
tap notification app-ouverte géré par `onNewIntent`)
|
||||||
- **Tout calcul PK est hors UI thread** (`produceState` + `Dispatchers.Default`)
|
- **Tout calcul PK est hors UI thread** (`produceState` + `Dispatchers.Default`)
|
||||||
|
|
||||||
## 6. Modèle de données (Room)
|
## 6. Modèle de données (Room)
|
||||||
@ -749,9 +753,9 @@ devient à son tour**.
|
|||||||
|
|
||||||
## 8. Tests unitaires
|
## 8. Tests unitaires
|
||||||
|
|
||||||
**234 tests JVM, tous verts** (`./gradlew testDebugUnitTest`) — **193 sans
|
**259 tests JVM, tous verts** (`./gradlew testDebugUnitTest`) — **225 sans
|
||||||
les données de test locales** (cf §8.bis : les 5 classes de régression,
|
les données de test locales** (cf §8.bis : les 6 classes de régression sont
|
||||||
6/6/6/5/7 tests, sont skippées via `Assume`). Dépendance : JUnit 4.13.2.
|
skippées via `Assume`). Dépendance : JUnit 4.13.2.
|
||||||
Emplacement : `app/src/test/java/com/hormonetrack/`. Répertoire de travail d'exécution =
|
Emplacement : `app/src/test/java/com/hormonetrack/`. Répertoire de travail d'exécution =
|
||||||
`app/` → l'asset est lu via `src/main/assets/pk_profiles.json` (fallback `app/src/…`).
|
`app/` → l'asset est lu via `src/main/assets/pk_profiles.json` (fallback `app/src/…`).
|
||||||
|
|
||||||
@ -1890,9 +1894,9 @@ structure ci-dessus. **Toute restructuration du JSON impose de mettre à jour
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/projects/HormoneTrack
|
cd ~/projects/HormoneTrack
|
||||||
./gradlew assembleDebug testDebugUnitTest # build + 249 tests (219 sans données locales)
|
./gradlew assembleDebug testDebugUnitTest # build + 259 tests (225 sans données locales)
|
||||||
./gradlew assembleRelease # APK optimisé R8 (cf §16.bis ; signature cf §16.quater)
|
./gradlew assembleRelease # APK optimisé R8 (cf §16.bis ; signature cf §16.quater)
|
||||||
./gradlew connectedDebugAndroidTest # 13 tests UI Compose (émulateur requis, §8.ter)
|
./gradlew connectedDebugAndroidTest # 14 tests UI Compose (émulateur requis, §8.ter)
|
||||||
adb install -r app/build/outputs/apk/debug/app-debug.apk
|
adb install -r app/build/outputs/apk/debug/app-debug.apk
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -2318,6 +2322,11 @@ Sur le téléphone de test (à compléter par l'utilisatrice) :
|
|||||||
- [ ] Redémarrer le téléphone → rappel reprogrammé (BootReceiver)
|
- [ ] Redémarrer le téléphone → rappel reprogrammé (BootReceiver)
|
||||||
- [ ] Désactiver un rappel → plus de notif (cancel — cf §14.3)
|
- [ ] Désactiver un rappel → plus de notif (cancel — cf §14.3)
|
||||||
- [ ] Tester l'installation d'une watchface `.hwt` via Gadgetbridge (pour la Phase 2)
|
- [ ] Tester l'installation d'une watchface `.hwt` via Gadgetbridge (pour la Phase 2)
|
||||||
|
- [ ] **v1.10.0** : carte « Prochaine prise de sang » — la date du creux est
|
||||||
|
POSTÉRIEURE à la mention « pas stabilisée avant le … » (fix #68), et
|
||||||
|
cohérente avec le créneau affiché (~juste avant)
|
||||||
|
- [ ] **v1.10.0** : logger la dose du jour AVANT l'heure de rappel → la
|
||||||
|
notification ne sonne pas ; le rappel suivant repart au créneau suivant
|
||||||
- [ ] **v1.2.x** : graphique panoramique (glisser → passé, bouton « Revenir à maintenant »)
|
- [ ] **v1.2.x** : graphique panoramique (glisser → passé, bouton « Revenir à maintenant »)
|
||||||
- [ ] **v1.2.x** : toggles Estrannaise/TFS indépendants (les deux courbes superposées)
|
- [ ] **v1.2.x** : toggles Estrannaise/TFS indépendants (les deux courbes superposées)
|
||||||
- [ ] **v1.2.x** : chip « Prévision » (configurer la Posologie d'un traitement d'abord)
|
- [ ] **v1.2.x** : chip « Prévision » (configurer la Posologie d'un traitement d'abord)
|
||||||
@ -2491,5 +2500,5 @@ maintenance (permissions agenda, export logs IO, bump de version) ; v1.3.4 = 2 c
|
|||||||
reproduits sur émulateur (#47 stringResource arity, #48 LocalDate+pattern horaire), lint
|
reproduits sur émulateur (#47 stringResource arity, #48 LocalDate+pattern horaire), lint
|
||||||
filet bloquant ; v1.3.5 = diagnostic à distance via les logs exportés (#50/#50bis/#51
|
filet bloquant ; v1.3.5 = diagnostic à distance via les logs exportés (#50/#50bis/#51
|
||||||
agenda) ; v1.4.0 = modèle TFS V3C sur la méta-analyse officielle (7 esters, fidélité
|
agenda) ; v1.4.0 = modèle TFS V3C sur la méta-analyse officielle (7 esters, fidélité
|
||||||
~1 % épinglée) + rappels sur la grille Posologie (#52) ; v1.4.1 = prévision étendue sans saut (scroll futur, horizon 1 an) + delta en jours sur l'accueil ; v1.4.2 = seuils d'alerte configurables (carte accueil + notification WorkManager 15 min + anti-spam) et backup JSON v2 avec paramètres ; v1.4.3 = fix du delta 6 h (#53) + régression n°4 (plateau EEn épinglé) ; v1.4.4 = prévision réparée (captures figées #54 + extension de fenêtre) ; v1.4.5 = marqueurs de doses + minuit local + fuseau configurable (#55) + boucle de recomposition tuée (#56) ; v1.4.6 = 3ᵉ modèle PK WHSAH (fit Mona, superposable) + scroll du graphique (#57). Dette connue : fragments de
|
~1 % épinglée) + rappels sur la grille Posologie (#52) ; v1.4.1 = prévision étendue sans saut (scroll futur, horizon 1 an) + delta en jours sur l'accueil ; v1.4.2 = seuils d'alerte configurables (carte accueil + notification WorkManager 15 min + anti-spam) et backup JSON v2 avec paramètres ; v1.4.3 = fix du delta 6 h (#53) + régression n°4 (plateau EEn épinglé) ; v1.4.4 = prévision réparée (captures figées #54 + extension de fenêtre) ; v1.4.5 = marqueurs de doses + minuit local + fuseau configurable (#55) + boucle de recomposition tuée (#56) ; v1.4.6 = 3ᵉ modèle PK WHSAH (fit Mona, superposable) + scroll du graphique (#57) ; v1.10.0 = creux pré-injection dans la reco (#68), dialog fantôme tué (#69), rappel sauté si dose déjà loggée. Dette connue : fragments de
|
||||||
labs dans l'historique git (v1.1.0→v1.2.3) — cf §8.bis.*
|
labs dans l'historique git (v1.1.0→v1.2.3) — cf §8.bis.*
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user