docs(beta): kit bêta 2026-06-19 (checklist tests, note client, runbook portail)
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) <noreply@anthropic.com>
This commit is contained in:
54
docs/beta/checklist-tests-collaborateurs.md
Normal file
54
docs/beta/checklist-tests-collaborateurs.md
Normal file
@@ -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).
|
||||
36
docs/beta/note-beta-client.md
Normal file
36
docs/beta/note-beta-client.md
Normal file
@@ -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)*.
|
||||
46
docs/beta/runbook-portail-beta.md
Normal file
46
docs/beta/runbook-portail-beta.md
Normal file
@@ -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 <email> <mdp> --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).
|
||||
Reference in New Issue
Block a user