actualise le readme
EBO <eric@ebii.fr> committé le 2026-09-26 14:33
2dda5a6aa917c832baae51a71de4385679f5ebd5
1 parent(s)
1 fichiers modifiés
+71
-8
M
README.md
+71
-8
@@ -30,7 +30,7 @@ Sans configuration sync : aucun compte, aucune donnée CRM envoyée hors apparei
| 30 | 30 | |
| 31 | 31 | Sync **offline-first** avec un serveur [PicLead](https://github.com/) (piclead-server) : carnet, projets, tâches kanban et comptes-rendus. **L’OCR et le scan ne nécessitent pas Internet.** |
| 32 | 32 | |
| 33 | -**Prérequis serveur :** variable `PICLEAD_API_CLES` (clés API par utilisateur), endpoints `/api/auth/cle`, `/api/sync/status`, `/api/sync/pull` — voir le [plan serveur](../Server/docs/plans/sync_api_mobile_v1.md). | |
| 33 | +**Prérequis serveur :** variable `PICLEAD_API_CLES` (clés API par utilisateur), endpoints `/api/auth/cle`, `/api/sync/status`, `/api/sync/pull`. Le contrat de ces endpoints est figé par les fixtures `Server/contrats/*.json`, rejouées par les tests des trois plateformes. | |
| 34 | 34 | |
| 35 | 35 | **Configuration dans l’app :** Paramètres (engrenage) → URL **HTTPS** du serveur → identifiant + mot de passe → « Obtenir la clé » → retaper le mot de passe pour déchiffrer la clé API (stockée chiffrée sur l’appareil ; le mot de passe n’est jamais conservé). |
| 36 | 36 |
@@ -43,6 +43,26 @@ Sync images carte/photo : [`docs/plans/sync_cartes_visite_v1.md`](docs/plans/syn
| 43 | 43 | |
| 44 | 44 | > **Upgrade schéma v2 :** la migration Room peut réinitialiser les données locales (documenté dans le plan sync). |
| 45 | 45 | |
| 46 | +## Tâches et planification (dépend de la sync) | |
| 47 | + | |
| 48 | +Les projets et leurs tâches arrivent par la sync ; l’écran projet affiche un **kanban** par colonnes de workflow. Il n’y a **pas de diagramme de Gantt sur téléphone** : l’écran retenu est la carte kanban enrichie. | |
| 49 | + | |
| 50 | +Quand le projet a la **planification activée** (réglage web), chaque carte porte : | |
| 51 | + | |
| 52 | +- une **pastille de couleur** d’étiquette — même teinte que sur le web, le hachage étant reproduit à l’identique sur les trois plateformes ; | |
| 53 | +- la **période** « 22/07 → 24/07 », calculée en **jours ouvrés** selon le rythme du projet (5 = lun-ven, 6 = lun-sam, 7 = tous les jours) ; | |
| 54 | +- l’**avancement des sous-tâches** (« 2/5 fait ») ; | |
| 55 | +- un **repère de retard** si la fin dépasse l’échéance du projet ; | |
| 56 | +- la mention **« ↳ regroupée »** si la tâche a une tâche parente. | |
| 57 | + | |
| 58 | +Si le projet n’active pas la planification, aucun de ces repères ne s’affiche — comme sur le web. | |
| 59 | + | |
| 60 | +**Éditable depuis le téléphone :** titre, assigné, **date de début** (saisie en texte ISO `AAAA-MM-JJ` ; une date malformée bloque la validation plutôt que de partir au serveur), **durée** en jours ouvrés, **étiquette** (avec suggestions tirées des tâches du projet) et **cases des sous-tâches**. | |
| 61 | + | |
| 62 | +**Réservé au web :** le diagramme de Gantt, l’édition des **dépendances** et du **regroupement** (transportés et conservés, mais non modifiables ici), ainsi que l’**échéance** et le **rythme** du projet. | |
| 63 | + | |
| 64 | +> **`duree_jours` se compte en jours ouvrés**, pas en jours calendaires. Les projets antérieurs sont neutralisés par `jours_ouvres = 7` ; basculer un projet en rythme 5 allonge visiblement ses tâches en durée calendaire. | |
| 65 | + | |
| 46 | 66 | ## Agenda / calendriers (optionnel, dépend de la sync) |
| 47 | 67 | |
| 48 | 68 | PicLead ne contient **aucun écran agenda** : les rendez-vous et réservations de ressources se consultent et se modifient dans l’**app Agenda système** (calendriers **locaux**, hors-GMS — aucun compte Google requis), via des calendriers dédiés que l’app crée et synchronise avec PicLead. |
@@ -58,7 +78,7 @@ PicLead ne contient **aucun écran agenda** : les rendez-vous et réservations d
| 58 | 78 | - **Oui** → la réservation locale et son événement Agenda sont supprimés. |
| 59 | 79 | - **Non** → rien n’est modifié ; l’arbitrage se fait sur le serveur web (demandes / réclamations restent hors périmètre mobile). |
| 60 | 80 | |
| 61 | -Spec détaillée : [`docs/superpowers/specs/2026-07-22-sync-agenda-rdv-ressources-v2-design.md`](docs/superpowers/specs/2026-07-22-sync-agenda-rdv-ressources-v2-design.md). Plan d’implémentation : [`docs/plans/sync_agenda_rdv_ressources_v2.md`](docs/plans/sync_agenda_rdv_ressources_v2.md). | |
| 81 | +Plan d’implémentation : [`docs/plans/sync_agenda_rdv_ressources_v2.md`](docs/plans/sync_agenda_rdv_ressources_v2.md). La spec de conception correspondante n’est pas versionnée (voir [Documentation locale](#documentation-locale-non-versionnée)). | |
| 62 | 82 | |
| 63 | 83 | > **Room v3 (agenda) :** l’ajout des tables RDV/réservations/indisponibilités passe la base Room en version 3 avec `fallbackToDestructiveMigration` — comme pour l’upgrade v2 ci-dessus, la mise à jour **réinitialise les données locales** (carnet inclus) ; ré-exportez en VCF ou synchronisez avant de mettre à jour l’app si nécessaire. |
| 64 | 84 |
@@ -192,21 +212,43 @@ Distribution : envoyez le fichier `PicLead-<version>-direct-release.apk` tel que
| 192 | 212 | |
| 193 | 213 | ## Build |
| 194 | 214 | |
| 215 | +Quatre variantes : deux saveurs (`fdroid`, `direct`) × deux types (`debug`, `release`). | |
| 216 | +Toutes les commandes se lancent depuis `android/`. | |
| 217 | + | |
| 218 | +| Variante | Commande | APK produit | | |
| 219 | +|---|---|---| | |
| 220 | +| `fdroid` debug | `./gradlew :app:assembleFdroidDebug` | `app/build/outputs/apk/fdroid/debug/PicLead-<version>-fdroid-debug.apk` | | |
| 221 | +| `fdroid` release | `./gradlew :app:assembleFdroidRelease` | `app/build/outputs/apk/fdroid/release/PicLead-<version>-fdroid-release.apk` | | |
| 222 | +| `direct` debug | `./gradlew :app:assembleDirectDebug` | `app/build/outputs/apk/direct/debug/PicLead-<version>-direct-debug.apk` | | |
| 223 | +| `direct` release | `./gradlew :app:assembleDirectRelease` | `app/build/outputs/apk/direct/release/PicLead-<version>-direct-release.apk` | | |
| 224 | + | |
| 225 | +Ajouter `-Ptessdata=full` aux variantes `direct` pour embarquer les modèles `full` | |
| 226 | +au lieu des `fast` (voir « Saveurs de distribution » ci-dessus). La saveur `fdroid` | |
| 227 | +ignore ces propriétés : elle n’embarque rien et n’accède pas au réseau au build. | |
| 228 | + | |
| 195 | 229 | ```bash |
| 196 | 230 | cd android |
| 197 | -./gradlew :app:assembleFdroidDebug | |
| 231 | +./gradlew clean :app:assembleFdroidRelease # build F-Droid reproductible, hors ligne | |
| 198 | 232 | ./gradlew :app:testFdroidDebugUnitTest |
| 199 | 233 | ./gradlew :app:testDirectDebugUnitTest |
| 200 | 234 | ``` |
| 201 | 235 | |
| 202 | -APK debug : `android/app/build/outputs/apk/fdroid/debug/PicLead-<version>-fdroid-debug.apk` | |
| 203 | - | |
| 204 | 236 | Les tests d’absence de modèle vivent dans la source set `app/src/testFdroid/` : la saveur |
| 205 | 237 | `direct` embarque ses traineddata, l’absence n’y est pas reproductible. |
| 206 | 238 | |
| 207 | -##Install | |
| 208 | -adb install -r android/app/build/outputs/apk/debug/app-debug.apk | |
| 239 | +Vérifier qu’un APK `fdroid` est bien vide de modèles (doit afficher `0`) : | |
| 240 | + | |
| 241 | +```bash | |
| 242 | +unzip -l app/build/outputs/apk/fdroid/release/PicLead-*-fdroid-release.apk \ | |
| 243 | + | grep -cE 'traineddata|vosk-model' | |
| 244 | +``` | |
| 209 | 245 | |
| 246 | +## Install | |
| 247 | + | |
| 248 | +```bash | |
| 249 | +adb install -r android/app/build/outputs/apk/fdroid/debug/PicLead-<version>-fdroid-debug.apk | |
| 250 | +adb install -r android/app/build/outputs/apk/direct/release/PicLead-<version>-direct-release.apk | |
| 251 | +``` | |
| 210 | 252 | |
| 211 | 253 | Prérequis : JDK 21, Android SDK (API 35). |
| 212 | 254 |
@@ -219,7 +261,28 @@ Prérequis : JDK 21, Android SDK (API 35).
| 219 | 261 | |
| 220 | 262 | ## Design |
| 221 | 263 | |
| 222 | -UI N&B éditoriale (`design.md`) : coins carrés, hairlines, polices TTF embarquées (Playfair Display, Lora, Manrope — OFL, voir `docs/licenses/OFL-fonts.txt`). Icône : `icon.png`. | |
| 264 | +UI N&B éditoriale (`design.md`) : coins carrés, hairlines, polices TTF embarquées (Playfair Display, Lora, Manrope — sous licence **OFL**). Icône : `icon.png`. | |
| 265 | + | |
| 266 | +> Le texte de la licence OFL est présent en local dans `docs/licenses/OFL-fonts.txt` mais **n’est pas versionné** (cf. ci-dessous). L’OFL impose que sa copie accompagne les polices redistribuées : à corriger avant toute publication du dépôt ou de l’APK. | |
| 267 | + | |
| 268 | +## Documentation locale (non versionnée) | |
| 269 | + | |
| 270 | +Le `.gitignore` racine exclut `docs/plans`, `Server/docs/plans`, `Server/docs/superpowers`, `Client/docs/plans/` et `Client/docs/superpowers/` ; `Client/.gitignore` exclut en plus tout `docs/*`. Une partie de la documentation de travail **n’est donc pas dans le dépôt**, et les liens qui y pointaient ont été retirés de ce README. | |
| 271 | + | |
| 272 | +Présent en local seulement, côté client : | |
| 273 | + | |
| 274 | +| Fichier | Contenu | | |
| 275 | +|---|---| | |
| 276 | +| `docs/publication-fdroid.md` | Procédure de publication F-Droid (recette YAML, checklist) | | |
| 277 | +| `docs/superpowers/specs/2026-07-22-sync-agenda-rdv-ressources-v2-design.md` | Conception de la sync agenda / ressources v2 | | |
| 278 | +| `docs/audit-securite-2026-07-27.md` | Audit de sécurité | | |
| 279 | +| `docs/licenses/OFL-fonts.txt` | Licence des polices embarquées | | |
| 280 | + | |
| 281 | +Les plans du monorepo (`docs/plans/` à la racine, dont les chantiers **modèles OCR téléchargeables** et **planification des tâches**) sont dans le même cas. | |
| 282 | + | |
| 283 | +Seuls les six plans historiques de `Client/docs/plans/` restent suivis : ils avaient été committés avant l’ajout des règles d’exclusion. | |
| 284 | + | |
| 285 | +> Deux points à trancher, hors périmètre de ce README : l’exclusion de `docs/plans` contredit son propre commentaire dans le `.gitignore` (« les plans versionnés restent dans `docs/plans/` ») et la consigne du `CLAUDE.md` (« les plans vivent dans le dépôt, avec le code »). Et la licence OFL devrait être redistribuée avec les polices. | |
| 223 | 286 | |
| 224 | 287 | ## Origine du code |
| 225 | 288 |
GitRust