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>
47 lines
3.3 KiB
Markdown
47 lines
3.3 KiB
Markdown
# 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).
|