From 14effe467aec3ba93fe737d9062647844f32a1e6 Mon Sep 17 00:00:00 2001 From: donovan-dev-web Date: Fri, 11 Sep 2026 08:54:49 +0200 Subject: [PATCH] docs(M-12): aligner les statuts sur la livraison du milestone dans v1.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 09-ISSUE : registre M-12/M-12R livrés (8 issues done) + décisions du test physique - 11-ROADMAP : phase 12 Terminée ✓ (jauge, récap, tableau) - 08-USER-STORIES : US-OCR-01..08 livrées (US-OCR-05 adaptée à la liste de zones) - 04-FONCTIONAL-SPEC §5.6, 03-TECHNICAL-SPEC §5.5, 05-ARCHITECTURE : statuts ✅ - 12-TESTING : état de couverture M-12 (518 tests / 58 suites) --- docs/03-TECHNICAL-SPEC.md | 9 ++++-- docs/04-FONCTIONAL-SPEC.md | 9 +++--- docs/05-ARCHITECTURE.md | 17 +++++------ docs/08-USER-STORIES.md | 29 +++++++++---------- docs/09-ISSUE.md | 58 +++++++++++++++++++++++++++++--------- docs/11-ROADMAP.md | 34 ++++++++++++---------- docs/12-TESTING.md | 25 ++++++++-------- 7 files changed, 110 insertions(+), 71 deletions(-) diff --git a/docs/03-TECHNICAL-SPEC.md b/docs/03-TECHNICAL-SPEC.md index 43ae2b6..576a212 100644 --- a/docs/03-TECHNICAL-SPEC.md +++ b/docs/03-TECHNICAL-SPEC.md @@ -171,7 +171,9 @@ Photo (takePictureAsync) OCR (référentiel photo, `W×H` capturé) vers l'écran (proportions, `resizeMode`) ; - **Perf** (§8) : traitement borné hors bandeau UI, import paresseux conservé. -> **Statut M-12 : à venir (backlog)** — issues M12-01..08 (#205-#212). +> **Statut M-12 : livré ✅** — issues M12-01..08 (#205-#212) closés, intégrés à +> la release **v1.0.0** (modules `ocrImagePreprocessor`, `ocrResultMapper`, +> `ocrCandidateAnalyzer`, `ocrProposals`, écran `/scan/ocr-review`, PR #214/#215). --- @@ -292,10 +294,11 @@ Priorités : ``` Plugins (`app.json`) : `["expo-mlkit-ocr", { "iosEngine": "auto" }]` et `["expo-build-properties", { "ios": { "deploymentTarget": "16.4" } }]`. -> **M-12 (engagé)** : `expo-image-manipulator` **installé** (prétraitement, M12-01 — +> **M-12 (livré)** : `expo-image-manipulator` **installé** (prétraitement, M12-01 — > redimensionnement ≤ 2600 px + ré-encodage JPEG 0.85) ; les **bounding boxes** > sont exposées nativement par `expo-mlkit-ocr` (niveau *ligne*, M12-02), sans -> wrapper : `mapRecognitionResult` les projette en `OcrTextZone`. +> wrapper : `mapRecognitionResult` les projette en `OcrTextZone`. Les zones sont +> proposées à la sélection en **liste cliquable** (M12-05, test physique). --- diff --git a/docs/04-FONCTIONAL-SPEC.md b/docs/04-FONCTIONAL-SPEC.md index a9cdf5d..3b49521 100644 --- a/docs/04-FONCTIONAL-SPEC.md +++ b/docs/04-FONCTIONAL-SPEC.md @@ -268,9 +268,10 @@ Valeurs validées → recherche (si suffisant) ← US-OCR-07 - l'application **ne présente jamais** une identification comme certaine ; - la fiabilisation est **mesurée** sur un jeu de couvertures réelles (jeu de données + taux d'erreurs, cf. `12-TESTING.md`). -> **Statut M-12 : à venir (backlog)** — issues M12-01..08 (#205-#212), user -> stories US-OCR-01..08 (`08-USER-STORIES.md` §11). Voir aussi -> `03-TECHNICAL-SPEC.md` §5.5. +> **Statut M-12 : livré ✅** — issues M12-01..08 (#205-#212) closés et intégrés +> à la release **v1.0.0** ; corrections test physique (PR #215) et synthèse dans +> `12-TESTING.md` §5.4. User stories US-OCR-01..08 (`08-USER-STORIES.md` §11). +> Voir aussi `03-TECHNICAL-SPEC.md` §5.5. --- @@ -556,7 +557,7 @@ L'application vérifie, **selon le format choisi dans la popup** : | Caméra / OCR | ✅ | | — Surcouche de scan ciblé | ✅ (v0.7.1, US-ID-08) | | — Validation / correction des infos détectées | ✅ (v0.7.1, US-ID-09) | -| — OCR v2 interactif & fiabilisation | 🚧 (v1.1.0, M-12 — §5.6, US-OCR-01..08) | +| — OCR v2 interactif & fiabilisation | ✅ (v1.0.0, M-12 — §5.6, US-OCR-01..08) | | Saisie manuelle | ✅ | | Résultat Possédé / Absent | ✅ | | Gestion des doublons | ✅ | diff --git a/docs/05-ARCHITECTURE.md b/docs/05-ARCHITECTURE.md index c1c5bd6..aafe01c 100644 --- a/docs/05-ARCHITECTURE.md +++ b/docs/05-ARCHITECTURE.md @@ -290,16 +290,17 @@ module natif est **paresseux** (dans `recognize`) : sur CI / hors Development Bu retourne `null` sans bloquer les tests. `NoopOcrEngine` reste disponible comme repli. La reconnaissance brute se valide sur téléphone physique (Development Build). -**Évolution M-12 — OCR interactif & fiabilisation (à venir, US-OCR-01..08)** : -- `OcrFrameResult` ({ text }) évolue vers un résultat avec **zones** (`blocks` / - `lines` / `elements` + `boundingBox`) — gap à confirmer dans `expo-mlkit-ocr` - (issue M12-02 #206) ; -- `ocrImagePreprocessor` (prétraitement éphémère : redimensionnement + contraste) - branché avant `recognize` (issue M12-01 #205) ; +**Évolution M-12 — OCR interactif & fiabilisation (livré, US-OCR-01..08)** : +- `OcrFrameResult` transporte le texte **et** les **zones** (`blocks`→`lines`, + niveau **ligne**, chacune avec sa `boundingBox` en pixels image d'origine) — + mappées par `ocrResultMapper` (issue M12-02 #206) ; +- `ocrImagePreprocessor` (prétraitement éphémère : redimensionnement ≤ 2600 px + + ré-encodage JPEG, jamais d'écriture sur stockage) branché avant `recognize` + (issue M12-01 #205) ; - `ocrCandidateAnalyzer` produit des **candidats par champ** avec score de confiance (règles métier : pages/prix/année/numéro) (issue M12-03 #207) ; -- nouvel écran `/scan/ocr-review` : overlay photo + zones cliquables + conversion - de coordonnées image→écran (issues M12-05 ../09) ; +- écran `/scan/ocr-review` : photo + **liste des textes détectés** cliquables + (choix validé sur device à la place de l'overlay tap-image, M12-05/06) ; - intégration des valeurs validées à `identificationService.searchByOcrFields` (issue M12-07 #211). diff --git a/docs/08-USER-STORIES.md b/docs/08-USER-STORIES.md index 48754ab..4f408af 100644 --- a/docs/08-USER-STORIES.md +++ b/docs/08-USER-STORIES.md @@ -686,9 +686,9 @@ Chaque story est identifiée par un code (ex. `US-DB-01`) et possède : > Évolution du flux OCR de l'Épique 4 : l'application lit la couverture, > **analyse des candidats** (titre, numéro/tome, année, pages, prix…) avec un > **niveau de confiance**, **propose automatiquement** les champs fiables et -> ne fait **intervenir Marc que pour les zones ambiguës**, sélectionnées en -> touchant directement la photo. Cible : après v1.0.0 (**M-12 → v1.1.0**, -> issue #205-#212). +> ne fait **intervenir Marc que pour les zones ambiguës**, sélectionnées parmi +> la liste des textes détectés. Cible : livrée dans la **v1.0.0** (**M-12 / M-12R**, +> issues #205-#212, #215). ### US-OCR-01 — Préparer la photo avant la lecture (prétraitement) > En tant que **Marc**, je veux **que la photo de la couverture soit retravaillée (redimensionnement, contraste) avant la reconnaissance** afin de **maximiser les chances de lecture, même sur une couverture stylisée**. @@ -698,7 +698,7 @@ Chaque story est identifiée par un code (ex. `US-DB-01`) et possède : - aucune image n'est enregistrée (analyse éphémère, R14.2) ; - la lecture est plus fiable qu'à l'écran nu sur les couvertures fortement stylisées. -**Statut (M-12)** : backlog — [M12-01 (#205)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/205). +**Statut (M-12)** : livré ✅ ([M12-01 (#205)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/205), v1.0.0). **Priorité** : haute. @@ -710,7 +710,7 @@ Chaque story est identifiée par un code (ex. `US-DB-01`) et possède : - les positions sont exprimées dans un référentiel exploitable par l'écran ; - le moteur reste abstrait (`OcrEngine`) et la CI reste verte sans module natif. -**Statut (M-12)** : backlog — [M12-02 (#206)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/206). +**Statut (M-12)** : livré ✅ ([M12-02 (#206)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/206), v1.0.0). **Priorité** : haute. @@ -722,7 +722,7 @@ Chaque story est identifiée par un code (ex. `US-DB-01`) et possède : - les règles métier discriminent : `192 PAGES` ≠ numéro, `€8,50` = prix, `2026` = année, `TOME 12` / `N° 125` = numéro ; - le module est testable sans dépendance matérielle. -**Statut (M-12)** : backlog — [M12-03 (#207)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/207). +**Statut (M-12)** : livré ✅ ([M12-03 (#207)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/207), v1.0.0). **Priorité** : haute. @@ -734,20 +734,19 @@ Chaque story est identifiée par un code (ex. `US-DB-01`) et possède : - en cas de candidats à confiance proche, **aucune** proposition automatique (validation utilisateur requise) ; - les propositions restent **toujours** modifiables. -**Statut (M-12)** : backlog — [M12-04 (#208)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/208). +**Statut (M-12)** : livré ✅ ([M12-04 (#208)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/208), v1.0.0). **Priorité** : moyenne. ### US-OCR-05 — Choisir la bonne zone sur la photo -> En tant que **Marc**, je veux **voir la photo avec les zones de texte détectées et toucher directement la bonne zone** afin de **dire à l'application où se trouve l'information** quand un champ est ambigu ou multiple. +> En tant que **Marc**, je veux **voir la photo avec les textes détectés et choisir le bon texte** afin de **dire à l'application où se trouve l'information** quand un champ est ambigu ou multiple. **Critères d'acceptation** : -- après la capture, un écran intermédiaire affiche la photo + les zones OCR en overlay ; -- les zones suivent fidèlement la photo quel que soit l'écran (conversion des coordonnées) ; -- chaque zone est **cliquable** ; +- après la capture, un écran intermédiaire affiche la photo + les textes détectés ; +- chaque texte détecté est **cliquable** (choix par liste, validé sur device — le tap direct sur l'image étant imprécis) ; - aucune image n'est enregistrée. -**Statut (M-12)** : backlog — [M12-05 (#209)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/209). +**Statut (M-12)** : livré ✅ ([M12-05 (#209)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/209), v1.0.0). **Priorité** : haute. @@ -760,7 +759,7 @@ Chaque story est identifiée par un code (ex. `US-DB-01`) et possède : - les champs non identifiés restent vides (jamais de blocage) ; - la correction prend au plus 2-3 gestes par champ. -**Statut (M-12)** : backlog — [M12-06 (#210)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/210). +**Statut (M-12)** : livré ✅ ([M12-06 (#210)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/210), v1.0.0). **Priorité** : haute. @@ -772,7 +771,7 @@ Chaque story est identifiée par un code (ex. `US-DB-01`) et possède : - information absente → saisie manuelle **pré-remplie** avec ce qui est connu (pas de blocage) ; - plusieurs candidats possibles → l'utilisateur choisit (jamais de choix automatique hasardeux). -**Statut (M-12)** : backlog — [M12-07 (#211)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/211). +**Statut (M-12)** : livré ✅ ([M12-07 (#211)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/211), v1.0.0). **Priorité** : moyenne. @@ -785,7 +784,7 @@ Chaque story est identifiée par un code (ex. `US-DB-01`) et possède : - les règles métier (US-OCR-03) et les seuils (US-OCR-04) sont ajustés à partir des mesures ; - la synthèse est documentée (`docs/12-TESTING.md`). -**Statut (M-12)** : backlog — [M12-08 (#212)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/212). +**Statut (M-12)** : livré ✅ ([M12-08 (#212)](https://github.com/donovan-dev-web/PicsouCollectionApp/issues/212), v1.0.0). **Priorité** : moyenne. diff --git a/docs/09-ISSUE.md b/docs/09-ISSUE.md index 2291adf..2c056c7 100644 --- a/docs/09-ISSUE.md +++ b/docs/09-ISSUE.md @@ -212,7 +212,8 @@ Les milestones correspondent aux **phases de la roadmap** (`11-ROADMAP.md`). | `M-10R2` | 2ᵉ passe retours test physique | SafeZone drawer, permission caméra + onboarding 1er lancement, popup résultat, form valider header, paramètres sous-menus, header fiche, tri collection, OCR numéro, écran Recherche → v0.9.2 (livrée, PR #176) | | `M-09` | Tests terrain & publication | Validation réelle, retours physique → v0.9.3 (M09-01 panneau recherche #177) | | `M-11` | Review & Qualité v1.0.0 | Audit doc ↔ code, revue, refactor, tests, retrait Play Store, publication APK GitHub → v1.0.0 (#181-#190) | -| `M-12` | OCR interactif & fiabilisation (v1.1.0) | Prétraitement de la photo, OCR texte + bounding boxes, analyse de candidats par champ (titre, numéro/tome, année, pages, prix) avec confiance, propositions automatiques, sélection interactive des zones, correction rapide, intégration à la recherche, jeu de test réel → **après v1.0.0** (#205-#212) | +| `M-12` | OCR interactif & fiabilisation (v1.1.0) | Prétraitement de la photo, OCR texte + bounding boxes, analyse de candidats par champ (titre, numéro/tome, année, pages, prix) avec confiance, propositions automatiques, sélection interactive des zones, correction rapide, intégration à la recherche, jeu de test réel → livré dans **v1.0.0** (#205-#212) | +| `M-12R` | Corrections test physique M-12 | Corrections post-test physique M-12 (PR #215) : panneau d'infos caméra retiré, popup résultat reconstruite, zones cliquables → liste de textes, réticule retiré, code-barres en 1ʳᵉ partie de formulaire, écran Recherche édition + numéro → **v1.0.0** | ### Règle d'attribution - Chaque milestone a une **date de fin cible** (indicative) et une **description** ; @@ -293,22 +294,25 @@ M-10/M-10R/M-10R2 terminées, correction issues ouvertes pendant la Phase 9 |---|---|---|---| | M09-01 | Collection : panneau de recherche repliable (bouton Rechercher) | #177 | En cours (PR #178) | -**Milestone M-12 « OCR interactif & fiabilisation » (v1.1.0)** — après v1.0.0 · -milestone GitHub #17 · issues **#205 à #212** · ajoutées au project #5 (To Do, P1) +**Milestone M-12 « OCR interactif & fiabilisation » (v1.1.0)** — réalisé avant la +release finale et **livré dans v1.0.0** · milestone GitHub #17 (clos) · issues +**#205 à #212** · project #5 | Issue | Titre | GitHub | Statut | |---|---|---|---| -| M12-01 | OCR : prétraitement de la photo avant reconnaissance | #205 | À faire | -| M12-02 | OCR : récupérer texte + bounding boxes (ML Kit) | #206 | À faire | -| M12-03 | OCR : analyse de candidats par champ + score de confiance | #207 | À faire | -| M12-04 | OCR : propositions automatiques et seuil de confiance | #208 | À faire | -| M12-05 | OCR : écran interactif — overlay photo + zones cliquables | #209 | À faire | -| M12-06 | OCR : sélection d'une zone pour un champ + correction rapide | #210 | À faire | -| M12-07 | OCR : brancher les valeurs validées à la recherche / l'ajout | #211 | À faire | -| M12-08 | OCR : jeu de test réel, mesure des erreurs, ajustement des règles | #212 | À faire | - -Voir `08-USER-STORIES.md` §11 (US-OCR-01..08). Backlog : non engagé tant que -**M-11 / v1.0.0** n'est pas clôturé. +| M12-01 | OCR : prétraitement de la photo avant reconnaissance | #205 | Done | +| M12-02 | OCR : récupérer texte + bounding boxes (ML Kit) | #206 | Done | +| M12-03 | OCR : analyse de candidats par champ + score de confiance | #207 | Done | +| M12-04 | OCR : propositions automatiques et seuil de confiance | #208 | Done | +| M12-05 | OCR : écran interactif — zones de texte cliquables (liste) | #209 | Done | +| M12-06 | OCR : sélection d'une zone pour un champ + correction rapide | #210 | Done | +| M12-07 | OCR : brancher les valeurs validées à la recherche / l'ajout | #211 | Done | +| M12-08 | OCR : jeu de test réel, mesure des erreurs, ajustement des règles | #212 | Done | + +Livré : 8 issues closes (PR #214 M-12 ; PR #215 M-12R corrections du test +physique) → incluses dans la release **v1.0.0** (#189). Voir +`08-USER-STORIES.md` §11 (US-OCR-01..08) et `12-TESTING.md` §5.4 (synthèse de la +passe device). ### 6.2 Décisions de conception et causes racines (retours terrain) @@ -370,6 +374,32 @@ Les retours test physique ont produit des choix structurants conservés ici. (Possédé/Absent) ; **non trouvé** → repli `/scan/manual` pré-rempli. Le bouton « Ajouter » de l'accueil reste un ajout. +**M-12 / M-12R (v1.0.0)** + +*Décisions (implémentation et test physique M-12)* +- **M12-01 Prétraitement** : `expo-image-manipulator` en local, borné + (≤ 2600 px, ré-encodage JPEG 0.85) et **éphémère** (aucune image stockée) ; + le contraste n'est pas exposé nativement → reporté (documenté §8). +- **M12-02 Granularité** : niveau **ligne** ML Kit (texte + bounding boxes en + pixels de l'image d'origine) ; mappé par `mapRecognitionResult` → `OcrTextZone`. +- **M12-05 Sélection des zones** : remplacement de l'overlay cliquable sur la + photo par une **liste des textes détectés** (choix validé sur device : tap + image imprécis sur couvertures) — la photo reste affichée, chaque zone reste + cliquable. +- **M12-R1 Panneau caméra** : le panneau d'informations détectées (Nom / + Numéro / Édition-Date) affiché en standard est **retiré** (bruit visuel). +- **M12-R2 Popup résultat** : recalculée sur le modèle « carte centrée » du scan + code-barres (backdrop + feuille, lisible sur petits écrans). +- **M12-R4 Réticule** : le réticule jaune est retiré des surcouches OCR et + code-barres (non informatif, inutile sans overlay). +- **M12-R5 Formulaire** : le champ **code-barres** rejoint la 1ʳᵉ partie du + formulaire d'ajout (visible sans ouvrir la section Détails). +- **M12-R6 Recherche** : liste déroulante **« Édition »** (défaut : toutes les + éditions) + **numéro**, recherche directe dans la collection (fini le champ + « nom » inefficace en brocante). +- **CSV v2** : une ligne = une édition ; les doublons d'exemplaires sont + **ignorés** à l'import et retirés de l'exemple (`collection-exemple.csv`). + --- ## 7. Branches (Git Flow) diff --git a/docs/11-ROADMAP.md b/docs/11-ROADMAP.md index 8163155..801702c 100644 --- a/docs/11-ROADMAP.md +++ b/docs/11-ROADMAP.md @@ -61,7 +61,7 @@ Phase 10R2 ███████████████████████ Phase 10R3 ██████████████████████████████ Terminé ✓ (v0.9.3) Phase 9 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ À venir (M-09 → v1.0.0) Phase 11 ▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░ En cours (M-11 → v1.0.0) -Phase 12 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ À venir (M-12 → v1.1.0) +Phase 12 ██████████████████████████████ Terminé ✓ (M-12 → v1.0.0) ``` ### 2.1 Correspondance phase ↔ milestone ↔ issues @@ -87,7 +87,7 @@ Chaque phase de la roadmap correspond à un **milestone GitHub** (`M-0x`) et à | 10R3 — Retours test v0.9.3 | `M-09 — Tests terrain & publication` | `US-UX-23` (#177), retours physiques v0.9.3 | 1 | | 9 — Tests & publication | `M-09 — Tests terrain & publication` | `US-QA-03` | 1 | | 11 — Review & Qualité | `M-11 — Review & Qualité v1.0.0` | issues M11-01..10 (#181-#190) | 10 | -| 12 — OCR interactif | `M-12 — OCR interactif & fiabilisation (v1.1.0)` | `US-OCR-01..08` (issues M12-01..08, #205-#212) | 8 | +| 12 — OCR interactif | `M-12 — OCR interactif & fiabilisation (livré v1.0.0)` | `US-OCR-01..08` (issues M12-01..08, #205-#212) | 8 | | **Total** | | | **122** | --- @@ -477,32 +477,36 @@ Détail : [09-ISSUE.md §6 – Milestones](09-ISSUE.md#6-milestones). --- -## 19. Phase 12 — OCR interactif & fiabilisation (M-12 → v1.1.0) +## 19. Phase 12 — OCR interactif & fiabilisation (M-12 → livré v1.0.0) **Objectif** : rendre le flux OCR **fiable en brocante** pour tous les supports (magazines, BD, comics, couvertures stylisées). L'application fait le maximum automatiquement — prétraitement de la photo, OCR texte + positions, analyse de **candidats par champ** (titre, numéro/tome, année, pages, prix…) avec **niveau de confiance**, **propositions automatiques** au-dessus d'un seuil — -et **n'implique Marc que pour les zones ambiguës**, qu'il sélectionne en -touchant la photo. Démarrage **après la v1.0.0** (M-11). +et **n'implique Marc que pour les zones ambiguës**, qu'il sélectionne parmi la +liste des textes détectés. Réalisée avant la release finale : livrée dans la +**v1.0.0** (M-12/M-12R intégrés à la release). | Tâche | Issue | Statut | |---|---|---| -| Prétraitement de la photo avant reconnaissance (redimensionnement, contraste) | M12-01 (#205) | À faire | -| Récupérer texte + bounding boxes (ML Kit) | M12-02 (#206) | À faire | -| Analyse de candidats par champ + score de confiance (règles métier) | M12-03 (#207) | À faire | -| Propositions automatiques et seuil de confiance | M12-04 (#208) | À faire | -| Écran interactif : overlay photo + zones cliquables | M12-05 (#209) | À faire | -| Sélection d'une zone pour un champ + correction rapide | M12-06 (#210) | À faire | -| Brancher les valeurs validées à la recherche / l'ajout | M12-07 (#211) | À faire | -| Jeu de test réel, mesure des erreurs, ajustement des règles/seuils | M12-08 (#212) | À faire | +| Prétraitement de la photo avant reconnaissance (redimensionnement, contraste) | M12-01 (#205) | ✓ Livré | +| Récupérer texte + bounding boxes (ML Kit) | M12-02 (#206) | ✓ Livré | +| Analyse de candidats par champ + score de confiance (règles métier) | M12-03 (#207) | ✓ Livré | +| Propositions automatiques et seuil de confiance | M12-04 (#208) | ✓ Livré | +| Écran interactif : liste des zones de texte cliquables | M12-05 (#209) | ✓ Livré | +| Sélection d'une zone pour un champ + correction rapide | M12-06 (#210) | ✓ Livré | +| Brancher les valeurs validées à la recherche / l'ajout | M12-07 (#211) | ✓ Livré | +| Jeu de test réel, mesure des erreurs, ajustement des règles/seuils | M12-08 (#212) | ✓ Livré | **Livrables** : 8 issues M12-01..08 (#205-#212) + 8 user stories US-OCR-01..08 (`08-USER-STORIES.md` §11). Définition fonctionnelle : `04-FONCTIONAL-SPEC.md` §5.6 ; technique : `03-TECHNICAL-SPEC.md` §5.5. -**Statut : À venir** — backlog ; ne démarre qu'à la fermeture du **M-11**. +**Statut : Terminé ✓** — 8 issues closés (milestone GitHub #17 clos) ; passe de +test physique (build v0.9.4) et corrections **M-12R** intégrées (PR #215) ; +synthèse dans `12-TESTING.md` §5.4. Le tout est inclus dans la release +**v1.0.0** (#189). --- @@ -542,5 +546,5 @@ Pour chaque phase, les critères de sortie sont : | 10R3 — Retours test v0.9.3 | Recherche repliable, drawer scroll, renommage | US-UX-23 (M09-01) | 1 | | 9 — Publication | APK GitHub (release v1.0.0) | US-QA-03 | 1 | | 11 — Review & Qualité | Préparation v1.0.0 | M11-01..10 (#181-#190) | 10 | -| 12 — OCR interactif | OCR interactif & fiabilisation (v1.1.0) | US-OCR-01..08 (M12-01..08, #205-#212) | 8 | +| 12 — OCR interactif | OCR interactif & fiabilisation (livré v1.0.0) | US-OCR-01..08 (M12-01..08, #205-#212) | 8 | | **Total** | | | **122** | diff --git a/docs/12-TESTING.md b/docs/12-TESTING.md index 7d60cbb..9af3f4b 100644 --- a/docs/12-TESTING.md +++ b/docs/12-TESTING.md @@ -240,19 +240,20 @@ Les tests peuvent également être co-localisés au niveau du fichier couvert (c } ``` -| Zone | Couverture mesurée (M-11 copie 2) | Couverture cible | +| Zone | Couverture mesurée (M-12) | Couverture cible | |---|---|---| -| Global | **98,35 %** (statements), lines **97,84 %**, functions **96,83 %**, branches **92,99 %** | ≥ 80 % | -| Services / repositories (`src/backup`, `src/database`, `src/store`) | ≥ 90 % sur les 4 métriques (100 % pour database & store) | ≥ 85 % | -| Bibliothèque (`src/lib`) | 100 % lignes, 90 % functions | ≥ 80 % | -| OCR (`src/identification`) | **96,82 %** branches, 100 % functions | ≥ 85 % | -| Composants critiques (`src/components`) | **90,47 %** branches, 94,41 % lines | ≥ 70 % | - -> État M-11 (2e passe) : **416 tests / 46 suites**, couverture globale — statements -> **98,35 %**, branches **92,99 %**, functions **96,83 %**, lines **97,84 %** -> (seuil global CI ≥ 80 %). État M-11 (1re passe) : 346 tests / 40 suites et -> statements 87,40 % — état mesuré en M-08 : 270 tests / 33 suites, statements -> 90,24 %, branches 85,86 %. +| Global | **97,32 %** (statements), lines **97,62 %**, functions **96,73 %**, branches **90,58 %** | ≥ 80 % | +| Services / repositories (`src/backup`, `src/database`, `src/store`) | database 100 %, store ≥ 94 % sur les 4 métriques ; backup ≥ 91 % | ≥ 85 % | +| Bibliothèque (`src/lib`) | 97,36 % statements, 90,56 % branches | ≥ 80 % | +| OCR (`src/identification`) | **96,66 %** branches, 100 % functions | ≥ 85 % | +| Composants critiques (`src/components`) | **88,79 %** branches, 97,11 % lines | ≥ 70 % | + +> État M-12 : **518 tests / 58 suites**, couverture globale — statements +> **97,32 %**, branches **90,58 %**, functions **96,73 %**, lines **97,62 %** +> (seuil global CI ≥ 80 %). État M-11 (2e passe) : 416 tests / 46 suites, +> statements 98,35 %, branches 92,99 %, functions 96,83 %, lines 97,84 % — état +> M-11 (1re passe) : 346 tests / 40 suites et statements 87,40 % — état mesuré +> en M-08 : 270 tests / 33 suites, statements 90,24 %, branches 85,86 %. ### 8.2 Exclusion de couverture Certains fichiers sont exclus du calcul :