From c64162a936aba5d4d067a6e8515f38d85bcf28e1 Mon Sep 17 00:00:00 2001 From: Domi31tls Date: Thu, 18 Jun 2026 12:47:56 +0200 Subject: [PATCH] =?UTF-8?q?docs(beta):=20kit=20b=C3=AAta=202026-06-19=20(c?= =?UTF-8?q?hecklist=20tests,=20note=20client,=20runbook=20portail)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Préparation bêta GUI demain (scope gelé Codex/Dom) — documentation, pas de code produit : - docs/beta/checklist-tests-collaborateurs.md : install/lancement/licence/traitement PDF natif+scan/vérif anonymisation/0 remontée patient/usage admin/relevé OS-hash-version, garde-fou RGPD (synthétique/caviardé only). - docs/beta/note-beta-client.md : version+SHA 8B437346…, moteurs actifs CamemBERT+regex, EDS/GLiNER non actifs, traitement local, consigne retour (pas de PDF/log patient). - docs/beta/runbook-portail-beta.md : publier artefact actif, compte client+approbation→licence, jeton activation, /api/v1/version + download authentifié, rappels sécu prod (HTTPS/secrets/ CSRF/rate-limit = accès restreint tant que non traités). Cible : Anonymisation-Setup.exe v2026.06.18.1203 (source 19c4934). Aucun push/diffusion. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/beta/checklist-tests-collaborateurs.md | 54 +++++++++++++++++++++ docs/beta/note-beta-client.md | 36 ++++++++++++++ docs/beta/runbook-portail-beta.md | 46 ++++++++++++++++++ 3 files changed, 136 insertions(+) create mode 100644 docs/beta/checklist-tests-collaborateurs.md create mode 100644 docs/beta/note-beta-client.md create mode 100644 docs/beta/runbook-portail-beta.md diff --git a/docs/beta/checklist-tests-collaborateurs.md b/docs/beta/checklist-tests-collaborateurs.md new file mode 100644 index 0000000..4f8098c --- /dev/null +++ b/docs/beta/checklist-tests-collaborateurs.md @@ -0,0 +1,54 @@ +# Checklist — tests collaborateurs avant bêta client (GUI 2026-06-19) + +> Build sous test : **`Anonymisation-Setup.exe`** · AppVersion **`2026.06.18.1203`** · +> SHA-256 `8B437346D71446FE87B7699662A428E28D0F8EE6C3DA698FE0ED2CE21E5DED2F` · +> source `19c4934`. **Interne — pas de diffusion externe.** +> +> ⚠️ RGPD : pour ces tests, n'utiliser **que des PDF synthétiques ou déjà caviardés**. +> Aucun document patient réel ne doit quitter le poste ni être joint à un retour. + +## 0. Avant de commencer +- [ ] Vérifier le **SHA-256** de l'installateur reçu == `8B437346…DED2F` (`certutil -hashfile Anonymisation-Setup.exe SHA256`). +- [ ] Noter : **OS + version** (ex. Windows 10/11, Server 2016), CPU (AVX2 ? — pertinent pour le CLI LegacyCPU, pas la GUI). + +## 1. Installation +- [ ] Lancer `Anonymisation-Setup.exe`, installation va au bout sans erreur. +- [ ] L'application apparaît au menu Démarrer / raccourci créé. +- [ ] Pas d'alerte SmartScreen bloquante non contournable (noter si signature manquante). + +## 2. Lancement +- [ ] L'application démarre (fenêtre GUI V6 s'ouvre), pas de crash au démarrage. +- [ ] Onglet **Administration > Profils** lisible (pas de bloc vide / zone coupée — c'est le fix `19c4934`), défilement molette OK. +- [ ] Onglet **À propos** : version affichée cohérente (`2026.06.18.1203` / commit `19c4934`). +- [ ] **Moteurs** affichés honnêtement : **CamemBERT-bio = actif** ; **EDS-Pseudo / GLiNER = « non embarqués dans cette version »** (ne doivent PAS apparaître comme activables). + +## 3. Activation licence +- [ ] Saisir la **clef/jeton d'activation** fourni (onglet Licence) → activation réussie. +- [ ] Sans licence valide : le comportement est clair (message, pas de crash). +- [ ] Le jeton est à usage poste : vérifier qu'une 2ᵉ machine nécessite son propre jeton (selon nb de postes licence). + +## 4. Traitement de documents +- [ ] Traiter **1 PDF natif** (texte) synthétique → PDF caviardé produit. +- [ ] Traiter **1 PDF scanné** (image) synthétique si disponible → OCR + caviardage (peut être plus lent). +- [ ] Tester **1 autre format** si pertinent (DOCX/JPEG) → conversion + caviardage. +- [ ] Vérifier que le **fichier de sortie** est bien généré à l'emplacement attendu. + +## 5. Vérification visuelle de l'anonymisation +- [ ] Ouvrir le PDF caviardé : **noms, dates de naissance, adresses, NIR, IPP, n° dossier, établissements** sont masqués. +- [ ] Pas de **sur-masquage** flagrant du contenu clinique (médicaments, termes médicaux préservés). +- [ ] Noter tout **leak** (PII visible) ou **faux positif** (texte clinique masqué) avec capture **du document synthétique uniquement**. + +## 6. Confidentialité / RGPD (critique) +- [ ] **Aucune remontée de contenu patient vers le serveur** : le traitement est **local au poste**. Vérifier (réseau coupé possible) que l'anonymisation fonctionne hors-ligne. +- [ ] Seuls des **compteurs d'usage agrégés** (nb de traitements / documents / pages) peuvent être envoyés au portail — **jamais** nom de fichier, texte ou entité. Vérifier côté portail admin « Utilisation par client » si la télémétrie est configurée. + +## 7. Relevé à remonter (par testeur) +- [ ] OS + version, CPU. +- [ ] SHA-256 de l'artefact testé + AppVersion. +- [ ] Résultats checklist (OK / KO par section). +- [ ] Anomalies : étape, description, **logs sans contenu patient**, captures **synthétiques** seulement. +- [ ] Temps de traitement approximatif (natif vs scan). + +## Hors périmètre de cette bêta (ne pas tester comme bloquant) +- EDS-Pseudo / GLiNER (non embarqués — chantier model registry séparé). +- Variante CLI (cette checklist = GUI ; le CLI LegacyCPU est testé à part). diff --git a/docs/beta/note-beta-client.md b/docs/beta/note-beta-client.md new file mode 100644 index 0000000..1c2da04 --- /dev/null +++ b/docs/beta/note-beta-client.md @@ -0,0 +1,36 @@ +# Note bêta — Pseudonymisation de documents (version bêta) + +Merci de participer à la bêta. Cette note résume l'essentiel. + +## Version +- Installateur : **`Anonymisation-Setup.exe`** +- Version : **2026.06.18.1203** +- Empreinte SHA-256 (à vérifier après téléchargement) : + `8B437346D71446FE87B7699662A428E28D0F8EE6C3DA698FE0ED2CE21E5DED2F` + +## Ce que fait l'application +Anonymise (pseudonymise) vos documents médicaux en masquant les données +identifiantes : noms/prénoms, dates de naissance, adresses, NIR, IPP, numéros de +dossier, établissements, téléphones/emails, etc. Le document caviardé est produit +localement. + +## Moteurs actifs dans cette version +- ✅ **CamemBERT-bio** (détection par IA, modèle embarqué) + **règles & dictionnaires** (regex, gazetteers INSEE/FINESS/BDPM). +- ❌ **EDS-Pseudo** et **GLiNER** : **non actifs** dans cette bêta (modèles non embarqués). Ils feront l'objet d'une mise à disposition ultérieure. + +## Confidentialité (important) +- **Le traitement est 100 % local sur votre poste.** Aucun contenu de document (texte, nom de fichier, données patient) n'est envoyé vers un serveur. +- Seuls des **compteurs d'usage agrégés** (nombre de traitements / documents / pages) peuvent, si activé, être transmis — **jamais** de contenu patient. +- L'application peut fonctionner **hors connexion** pour le traitement. + +## Vos retours (consigne stricte) +Pour nous remonter un problème : +- ✅ Décrivez le cas, l'étape, le comportement observé. +- ✅ Joignez **uniquement** des **documents synthétiques** (fictifs) **ou déjà caviardés**, et des **logs sans texte patient**. +- ❌ **N'envoyez jamais** de PDF/document patient réel ni de log contenant du texte patient. + +## Limitations connues de la bêta +- Première version de test : signaler tout **masquage manquant** (donnée visible) ou **sur-masquage** (texte médical caché à tort), sur exemples **fictifs**. +- Documents scannés : traitement plus lent (OCR). + +Contact / canal de retour : *(à compléter par l'établissement / le diffuseur)*. diff --git a/docs/beta/runbook-portail-beta.md b/docs/beta/runbook-portail-beta.md new file mode 100644 index 0000000..d29e88e --- /dev/null +++ b/docs/beta/runbook-portail-beta.md @@ -0,0 +1,46 @@ +# Runbook — portail licence/téléchargement pour bêta contrôlée + +Portail `app_aivanov` (FastAPI). Objectif : permettre à un **client bêta** de +récupérer la GUI et d'activer sa licence. **Bêta contrôlée, accès restreint.** + +> ⚠️ Pré-requis de déploiement (NON couverts par le code actuel — voir §5) : +> reverse proxy **HTTPS**, **secrets forts**, **accès limité**. Tant que ces +> points ne sont pas en place, rester sur un accès interne/restreint. + +## 1. Publier l'installateur GUI comme artefact actif +Sur le serveur portail : +```bash +python3 scripts/publish_artifact.py --version 2026.06.18.1203 \ + --file /chemin/vers/Anonymisation-Setup.exe --active +``` +(ou via le back-office admin → « Publier une version » : version, canal, fichier, « rendre active »). +Le SHA-256 est recalculé côté serveur — **vérifier qu'il == `8B437346…DED2F`**. + +## 2. Créer / valider le compte client bêta +- Option A — auto-inscription : le client va sur `/register` (organisation, e-mail, mot de passe ≥ 8) → compte **en attente**. +- Puis **admin** : `/admin` → section « Inscriptions en attente » → **Approuver** (crée automatiquement une **licence active** via `approve_user_with_default_licence`). +- Option B — création admin directe : back-office « Nouveau client ». +- (Reset admin si besoin : `python3 scripts/create_admin.py --force`.) + +## 3. Licence + jeton d'activation +- Vérifier la **licence active** du client (back-office « Licences » : statut `active`, postes, expiration). +- Le client (espace `/licences`) génère un **jeton d'activation** (« Générer un jeton », valable 48 h) à saisir dans la GUI (bouton « Activer »). +- L'activation poste appelle `POST /api/v1/activate` (token + machine_id) → licence signée RSA renvoyée. + +## 4. Vérifier la disponibilité du téléchargement +- `GET /api/v1/version` → doit renvoyer la version active (`2026.06.18.1203` + SHA + `download_url`). 404 = aucun artefact actif (revoir §1). +- **Téléchargement authentifié** : `GET /api/v1/download/{version}` exige une **session web connectée** + licence active (ou admin). Vérifier qu'un client connecté avec licence peut télécharger, et qu'un anonyme reçoit 401. +- UX : un navigateur anonyme sur une route protégée est redirigé vers `/login` ; le logo renvoie à `/` ; favicon OK (correctifs F1/F2/F3). + +## 5. Sécurité avant exposition (rappels — bloquants prod connus) +Ces points sont **hors des commits actuels** (sprint durcissement, GO Dom requis) ; en +attendant, **n'exposer le portail qu'en accès restreint** : +- **HTTPS obligatoire** via reverse proxy ; cookie de session `https_only` à activer hors dev. +- **Secrets forts** en variables d'environnement : `APP_SECRET_KEY`, `ADMIN_PASSWORD` (ne pas laisser les défauts dev `change-me`). +- **CSRF** : pas de protection sur les POST → limiter l'accès / front de confiance tant que non ajouté. +- **Rate-limiting `/login`** : absent → restreindre l'accès réseau (anti-brute-force). +- Retirer l'e-mail admin par défaut (`dom@aivanov.fr`) du code source (→ `.env`). + +## 6. Données / RGPD +- Le portail ne reçoit **jamais** de contenu patient : uniquement licences, activations de postes, et **compteurs d'usage agrégés** (nb traitements/documents/pages). +- Le dashboard admin « Utilisation par client » affiche ces compteurs (clients sans usage inclus, à 0).