HormoneTrack/README.md
Siphonight 24423be3ff Documentation v1.2.0 : changelog, guide (fonctions du graphique), doc de dev (AGP 9, migrations, panoramique, prévision, auto-cal), README (git, features)
- docs/CHANGELOG.md : entrée v1.2.0 complète
- docs/DEVELOPPEMENT.md : versions épinglées à jour, note Material Expressive
  (API encore internal), migration Room v1→v2, §7.3b (override modèle/prévision/
  auto-cal), §8 (36 tests), §10/§11 (panoramique, multi-séries), §16 (workflow git),
  §18 (disque), historique des sessions
- README : statut v1.2.0, features à jour, section Git (tags de release)
- GUIDE : nouvelle section « Fonctions du graphique » (panoramique, toggles
  modèles, prévision, calibration auto)
2026-09-05 16:58:32 +02:00

145 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HormoneTrack
Suivi de thérapie hormonale (THS) sur Android, avec courbes estimées **heure par heure**
d'estradiol (E2) et de testostérone (T), calibration sur les prises de sang, rappels
affichés sur smartwatch (Huawei Watch GT 3 via Gadgetbridge ou Huawei Health) et
sauvegarde JSON. **100 % local, aucun compte, aucun serveur.**
> **⚠️ Avertissement médical** : les courbes sont des **estimations pharmacocinétiques**
> à titre informatif — ce ne sont pas des mesures. Fie-toi toujours à tes analyses de
> sang et aux consignes de ton endocrinologue.
- **Statut** : v1.2.0 — build Android ✅, **36 tests unitaires** ✅ (dont régression sur données réelles), intégration montre = notifications ✅, **repo git avec releases taguées** ✅
- **Journal des versions** : [docs/CHANGELOG.md](docs/CHANGELOG.md)
- **Guide utilisateur** : [docs/GUIDE_INSTALLATION.md](docs/GUIDE_INSTALLATION.md)
- **Doc de développement** (architecture, maths, décisions, bugs) : [docs/DEVELOPPEMENT.md](docs/DEVELOPPEMENT.md)
- **Montre / Gadgetbridge** : [docs/MONTRE-GADGETBRIDGE.md](docs/MONTRE-GADGETBRIDGE.md)
## Fonctionnalités
- **Courbes estimées heure par heure** : E2 (pg/mL) et T (ng/mL), vue 24 h / 7 j / 30 j,
**panoramique** (glisser pour remonter dans le passé)
- **Deux modèles PK au choix, superposables** (issus de la feuille `Estrogen.ods`) :
**Estrannaise (EstraNase)** et **Transfem Science** pour les injections EV / EU / EEn,
affichés côte à côte avec toggles indépendants
- **Modèle Bateman** paramétrable (temps au pic, demi-vie, biodisponibilité) pour gel,
patch et voie orale
- **Simulation prévisionnelle** : configurer la **fréquence d'injection** (jours) sur un
traitement → projection des doses à venir sur le graphique (jamais sauvegardées)
- **Log des doses** avec date/heure exacte, dose en mg, **ester par injection**
(switch EV↔EU↔EEn comme dans le tableur), **éditable** (tap sur une ligne dans Doses),
**intervalle en jours entre dosages** affiché
- **Analyses de sang** (E2, T, PRL…) tracées sur les courbes comme points de calibration
- **Calibration** : facteur d'échelle par traitement = médiane(lab ÷ prédiction du modèle),
calculé automatiquement (« Scale factor » du `.ods`, automatisé) — ou **calibration
automatique permanente** (option, désactivée par défaut)
- **Estimation T** empirique `T = plancher + (base − plancher) ÷ (1 + k·E2)`, calibrable
avec tes résultats T (unités ng/mL, ng/dL, ng/L, nmol/L acceptées)
- **Rappels quotidiens** avec actions **« Pris » / « Reporter 1 h »** dans la notification ;
les notifications remontent sur la Watch GT 3 (Gadgetbridge ou Huawei Health)
- **Sauvegarde/Restauration JSON** complète (traitements + doses + analyses + réglages T)
- **FR + EN** (langue par app, indépendante du système)
- UI Jetpack Compose récente (BOM 2026.08, Material You) ; 100 % local, aucun compte
## Démarrage rapide (build depuis les sources)
Prérequis : JDK 17+ (Java 21 OK), Android SDK (la plateforme 37 sera auto-téléchargée
par AGP si les licences sont signées). Le wrapper télécharge Gradle 9.7.1.
```bash
git clone <repo> && cd HormoneTrack
echo "sdk.dir=/chemin/vers/android-sdk" > local.properties # ou ANDROID_HOME
./gradlew assembleDebug # APK : app/build/outputs/apk/debug/app-debug.apk
./gradlew testDebugUnitTest # 36 tests (moteur PK, profils, backup, régression)
```
Installation sur un téléphone : mode développeur + Débogage USB, puis Android Studio
(**Run ▶️**) ou `adb install -r app/build/outputs/apk/debug/app-debug.apk`.
Pas de Play Store : l'app est sideloadée. Détails pas-à-pas : [docs/GUIDE_INSTALLATION.md](docs/GUIDE_INSTALLATION.md).
## Git
Dépôt initialisé avec des **releases taguées** (`v1.1.0`, `v1.2.0`, …) :
```bash
git tag # lister les releases
git log --oneline # historique par couches (toolchain / moteur / UI / docs)
git push -u origin main --tags # après ajout d'un remote
```
Chaque commit de release passe `./gradlew testDebugUnitTest` (vert obligatoire) et est
taggué annoté. Voir [docs/DEVELOPPEMENT.md §16](docs/DEVELOPPEMENT.md).
## Les modèles en bref
Chaque injection contribue `dose_mg × profil(dt)` où `profil` est la réponse normalisée
(pg/mL par mg) issue des tables horaires d'Estrannaise / Transfem Science (8001 h) ;
les contributions se superposent. Pics de référence :
| Profil | Modèle | Pic (pg/mL/mg) | Tmax |
|----------|------------------|----------------|--------|
| EV | Estrannaise | 61,1 | ~45 h |
| EU | Estrannaise | 3,4 | ~55 h (plateau long) |
| EEn | Estrannaise | 31,4 | ~152 h |
| EV | Transfem Science | 59,0 | ~51 h |
| EU | Transfem Science | 10,1 | ~198 h |
| EEn | Transfem Science | 32,0 | ~156 h |
La calibration (facteur d'échelle par traitement, calibré par tes labs) ajuste le modèle
à ton corps, exactement comme la colonne « Scale factor » de la feuille d'origine.
## Vie privée
- Base de données **Room locale** sur le téléphone ; **aucune** télémétrie, aucun réseau
- Sauvegarde = fichier JSON que tu stockes où tu veux (Owncloud, etc.)
- `allowBackup=false` (données sensibles) ; verrou biométrique prévu en Phase 2
- Compat **Gadgetbridge** (FOSS) : aucune dépendance à Huawei Health ni aux services Huawei
## Structure du dépôt
```
HormoneTrack/
├── README.md ← ce fichier
├── docs/
│ ├── GUIDE_INSTALLATION.md guide utilisateur (téléphone + montre)
│ ├── DEVELOPPEMENT.md doc de dev complète (architecture, maths, bugs, tests)
│ └── MONTRE-GADGETBRIDGE.md montre Huawei GT 3 : options + limites
├── build.gradle.kts config Gradle racine (AGP/Kotlin/KSP épinglés)
├── settings.gradle.kts
├── gradle.properties
├── gradle/wrapper/ wrapper Gradle 8.9 (jar + properties)
├── gradlew / gradlew.bat
└── app/
├── build.gradle.kts dépendances (Compose, Room, DataStore, Gson…)
├── proguard-rules.pro
└── src/
├── main/
│ ├── AndroidManifest.xml
│ ├── assets/pk_profiles.json ← tables horaires (Estrannaise/TFS)
│ ├── java/com/hormonetrack/
│ │ ├── data/ (Room : models, DAOs, repository, backup)
│ │ ├── pk/ (moteur pharmacocinétique + profils)
│ │ ├── reminder/ (alarmes exactes, notifs + actions, boot)
│ │ ├── settings/ (DataStore : TConfig, langue)
│ │ ├── ui/ (Compose : screens, components, theme)
│ │ ├── HormoneTrackApp.kt
│ │ └── MainActivity.kt
│ └── res/ (strings FR/EN, thème, icônes)
└── test/java/com/hormonetrack/ ← tests unitaires JVM
├── pk/ (moteur + profils)
└── data/backup/ (round-trip Gson)
```
## Feuille de route
- [x] v1 : courbes E2/T, log doses, labs + calibration, rappels, backup JSON, FR/EN
- [ ] Tests UI Compose + compilation release signée
- [ ] Verrou biométrique, widget, export CSV
- [ ] Phase 2 montre : watchface personnalisée et/ou mini-app Lite Wearable (voir [docs/MONTRE-GADGETBRIDGE.md](docs/MONTRE-GADGETBRIDGE.md))
## Licence
À définir avant le premier push public (suggestion : GPL-3.0, cohérent avec l'écosystème
Gadgetbridge). Les modèles PK appartiennent à leurs autrices respectives
([Estrannaise](https://estrannaise.github.io/), [Transfem Science](https://transfemscience.org)).