Chargement…

Accès réservé

La console de bascule est réservée aux administrateurs.

← Retour au planning
Strateine

Console de bascule

état de Claude…

Le déroulé d'une session

La seule chose à lire pour savoir où vous en êtes : chaque ligne porte son état et renvoie à l'outil qui la réalise. Le journal d'une opération s'affiche sous l'étape qui tourne, pas en bas de l'écran. Deux actions reviennent deux fois — c'est normal, ce n'est pas une erreur de la liste.

Ouvrir la session

  1. Déconnecter Claude — jamais pendant qu'une session de travail est ouverte.
  2. Restaurer le point de départ : le snapshot B (vos données de la fois précédente), ou le snapshot 0 s'il s'agit du premier import.
  3. Tourner la clé APIaprès la restauration, toujours : les jetons vivent dans la base, donc un snapshot ramène ceux de son époque.
  4. Rejouer la structure, puis vérifier ses identifiants — ce que Claude a ajouté en travaillant sur A n'existe pas dans B.
  5. Configurer l'expéditeur facultatif — seulement si vous voulez que les invitations partent automatiquement. À faire maintenant, pas plus tard : après l'anonymisation il n'y aurait plus d'adresse à servir.

Travailler

  1. Importer les deux Excel — inspecter, aperçu, puis exécuter. au premier import seulement
  2. Après l'import : poser les appartenances de poste sur les dossiers qui viennent de naître, puis contrôler. Sans rejouer la structure — elle vient du snapshot. au premier import seulement
  3. Tester à plusieurs : donner les accès, puis vérifier que chacun voit ce que son rôle autorise.
  4. Mesurer l'application sur le volume réel : préparer le compte de mesure (le tester, l'armer si besoin), éprouver le garde anti-fuite, lancer la mesure, télécharger le rapport. C'est la seule occasion — après la restauration de A, les 700 clients ne sont plus là. recommandé

Fermer la session

  1. Sortir les retours des testeurs : ce que la bulle 🛟 a recueilli vit dans la base, donc la restauration de A l'efface. On le sort maintenant, ou il part avec.
  2. Générer le snapshot B, puis le récupérer sur votre poste — la commande scp s'affiche à ce moment-là.
  3. Restaurer le snapshot A — c'est ça qui retire vos vraies données de la base.
  4. Tourner la clé API — de nouveau, pour la même raison.
  5. Effacer le snapshot B de la VM — après avoir vérifié qu'il est bien arrivé chez vous. Avant le nettoyage : la purge des résidus refuse de tourner tant qu'un B est là.
  6. Contrôler puis nettoyer : fichiers réels, résidus en base, traces de Claude, et le secret d'envoi.
  7. Reconnecter Claude. Refusé tant qu'un snapshot B reste sur la machine.
📖 Le détail de chaque étape, et le tuto scp, sont dans docs/IMPORT-WRIKE.md — à garder ouvert pendant la session, puisque Claude sera déconnecté.

Les outils

Déconnecter Claude

Avant de manipuler de vraies données, on met Claude hors ligne : ses accès (fichier de credentials) sont déplacés hors de portée. Tant que Claude est déconnecté, il ne peut plus rien lire sur la VM.
⚠️ Ne faites JAMAIS cette action pendant qu'une session Claude Code est ouverte et en cours de travail. Filet de secours : en cas de souci, les accès peuvent être restaurés manuellement en SSH.

Changer la clé API OpenProject

Claude est déconnecté, mais la clé API qu'il a pu voir est toujours valide. On la remplace maintenant, avant que la base contienne de vraies données : ainsi aucune clé encore utilisable ne subsiste ailleurs que sur cette VM.
Où récupérer une nouvelle clé dans OpenProject
  1. Ouvrez http://192.168.10.70:8080/my/access_tokens (ou : avatar en haut à droite → Mon compteJetons d'accès).
  2. Connectez-vous avec un compte administrateur — c'est indispensable : cette clé sert à créer les comptes et à lire l'organisation. Une clé non-administrateur sera refusée.
  3. Sur la ligne API, cliquez pour générer une clé. S'il en existe déjà une, révoquez-la puis générez-en une nouvelle : c'est ce qui rend l'ancienne inutilisable.
  4. Copiez la clé tout de suite — OpenProject ne l'affiche qu'une seule fois.
  5. Collez-la ci-dessous, puis Vérifier avant d'appliquer.
Clé :
La clé n'est jamais écrite dans le journal ci-dessous, ni conservée par la page.
🔄 Appliquer redémarre le service d'authentification : cette page se figera 2 à 3 secondes, c'est normal. Rechargez-la ensuite et cliquez « Vérifier l'état de la rotation ». En cas de problème, la rotation revient toute seule à l'état précédent — l'ancienne clé est sauvegardée sur la VM.

Import réel

Déposez les deux exports Wrike : le CRM (clients / paramètres missions) et l'onboarding collaborateurs. L'aperçu ne touche à rien ; l'exécution crée les clients, les tâches et les comptes.
🔒 À l'import, seules les colonnes utiles de l'onboarding sont lues (Nom, Mail pro, et Rôle/Poste/Équipe si présents). Toutes les colonnes sensibles sont ignorées (N°SS, mail perso, mots de passe…).
CRM : aucun fichier
Collab : aucun fichier
Si l'aperçu répond « Colonnes requises absentes » — cliquez d'abord « Inspecter les fichiers » : cette action ne lit que les intitulés de colonnes (aucun nom de client, aucun e-mail n'est affiché) et vous dit quelle feuille, quelle ligne d'en-têtes et quels intitulés ont été trouvés. Les en-têtes sont cherchés dans toutes les feuilles, sur les 15 premières lignes, accents/casse/espaces ignorés.
S'il reste une colonne non reconnue, indiquez-la ci-dessous au format ColonneAttendue=Intitulé exact du fichier (une par ligne), puis relancez l'inspection.
⚠️ Ce récapitulatif porte des noms de clients : même famille que les mots de passe temporaires — à télécharger, à utiliser pour corriger l'export du CRM, puis à détruire. Il n'est écrit nulle part sur la machine.
Le second contrôle regarde ce que l'import n'a pas demandé. Un import neuf devrait le rendre vert : s'il trouve des dates de début, c'est une base écrite avant le correctif du 01/09 — le bouton rouge les retire.
À la fin de l'import réussi, un bouton de téléchargement des mots de passe temporaires apparaît dans la console (à récupérer, il ne sera plus disponible ensuite).
Vous reprenez un cycle sur une base restaurée ? Les trois boutons ci-dessus ont besoin des classeurs redéposés : restaurer un snapshot rend la base, pas les fichiers du cycle précédent — le nettoyage les a effacés, comme demandé. Tant qu'ils manquent, l'aperçu reste grisé et « Vérifier après import » échoue aussitôt, faute de retrouver le plan d'import.
À noter : redéposer les mêmes classeurs et lancer l'aperçu sur une base qui contient déjà l'import est un test utile en soi — il doit annoncer 0 création. C'est la façon de vérifier qu'un import rejoué ne duplique rien.

Après l'import

Deux ou trois gestes dépendent des clients que l'import vient de créer : ils ne peuvent donc pas être dans le snapshot de structure. Les oublier ne produit aucune erreur — il produit quatre refus d'OpenProject qu'on découvre des jours plus tard, en essayant de réaffecter ou de saisir un temps.
Ne rejouez PAS la structure ici. Sur une base refabriquée depuis les Excel, elle vient du snapshot de départ : elle y est déjà. Le rejeu ne sert que sur une base vivante qu'on ne peut pas refabriquer. C'est cette étape-ci qu'il faut, et elle finit par le contrôle de structure — sans rien rejouer.
Ce que l'aperçu ne peut pas faire à votre place : le premier archivage des exercices révolus, et les heures hebdomadaires réelles des temps partiels (sans elles tout le monde est calculé à 35 h, et la charge est fausse pour eux).

Tester à plusieurs

L'authentification est déjà en production. Donnez leur accès aux collaborateurs, puis connectez-vous à plusieurs pour vérifier que chacun voit bien ce qu'il doit voir selon son rôle.
Deux façons de donner l'accès — choisissez, ne faites pas les deux
  1. Invitation à usage unique (recommandé, décision du 31/07 « plus aucun mot de passe ne circule ») : Gestion des utilisateurs« Inviter en masse… ». Chaque personne choisit elle-même son mot de passe. ⚠️ Le lien expire en 1 jour, et il invalide le mot de passe temporaire produit par l'import.
  2. Mots de passe temporaires : le fichier téléchargeable à la fin de l'import. Encore accepté par l'application, mais il fait circuler des mots de passe — c'est ce que la décision du 31/07 voulait arrêter.
⏱️ Pour que les invitations partent tout seules, configurez l'expéditeur AVANT d'arriver ici. Il ne dépend que de la déconnexion de Claude, donc il peut se faire dès l'ouverture de la session. Sans expéditeur, rien n'est bloqué : un fichier de liens est téléchargé et vous faites le publipostage vous-même.

Sortir les retours des testeurs

Chaque retour envoyé par la bulle 🛟 (« Signaler / demander de l'aide ») devient une tâche du projet support, dans la base — avec son auteur, sa date, la page d'où il a été écrit et son texte. La restauration du jeu de test les efface : on les sort AVANT, ou ils partent avec.
⚠️ À jouer avant de restaurer le jeu de test (étape 10), et après avoir prévenu les testeurs que la campagne se termine. Rien ne le rattrape après.
Ce que le testeur fait — sur n'importe quel écran, la bulle 🛟 en bas à droite → « Signaler / demander de l'aide ». Il choisit une catégorie (pour une amélioration : « Demande d'évolution »), écrit deux lignes, valide. La page d'où il écrit et son compte sont enregistrés tout seuls — c'est tout l'intérêt par rapport à un fichier : le contexte est capturé sans qu'il ait à le décrire.
Le fichier produit est un Markdown rangé par catégorie. Il est téléchargé par votre navigateur puis effacé de la machine — il porte ce que des humains ont tapé, donc peut-être des noms de clients réels : gardez-le hors du dépôt.
Pour n'en sortir qu'une catégorie, c'est en ligne de commande : python3 tools/export_tickets.py --categorie "Demande d'évolution".

Mesurer l'application sur le volume réel

Les sondes ne lisent que des comptes et des durées, jamais une valeur : ni nom de client, ni nom de personne, ni contenu de champ personnalisé. Le rapport se télécharge — il n'est écrit nulle part sur la machine, il vit en mémoire du service le temps que vous cliquiez, et un redémarrage n'en laisse rien.
Ce qu'il faut faire, dans l'ordre
  1. Préparer le compte de mesure, AVANT tout le reste. Saisir un compte de la base mesurée et son mot de passe, puis « Tester le compte ». S'il n'est pas utilisable — c'est le cas normal après une restauration de snapshot B — « Armer ce compte » lui pose le mot de passe de votre choix. Sans ce geste, 17 des 18 sondes s'interrompent : c'est ce qui s'est produit aux deux premiers cycles réels, et la mesure y a été perdue les deux fois.
  2. Éprouver le garde ensuite. Le bouton « Éprouver le garde anti-fuite » injecte une fausse fuite (une raison sociale, un nom, une adresse) et le garde doit refuser de publier. Un contrôle qui n'a jamais dit « non » ne prouve rien.
  3. Lancer la mesure. Elle peut tourner longtemps — c'est voulu : chaque sonde est répétée pour distinguer « lent » de « lent la première fois seulement ».
  4. Télécharger le rapport, puis le lire : sa dernière section liste tous les mots qu'il contient. Si l'un d'eux ressemble à une donnée du cabinet, le rapport ne doit pas sortir de la machine — dites-le moi.
⚠️ Un rapport sans sa ligne « FIN DU RAPPORT » est INCOMPLET, pas « rien à signaler » : la campagne a été interrompue et il manque des sondes. Ce qui y figure reste vrai, mais l'absence d'une sonde ne veut pas dire qu'elle allait bien.
⚠️ Ce compte doit exister dans la base MESURÉE — après un import réel, c'est donc un compte importé, pas un compte du jeu de test. Il lui faut les droits RH et administrateur : quatre des sept sondes d'écran ouvrent la vue RH, la heatmap ou la création de mission. Un compte trop étroit ne fait pas échouer la mesure — les sondes concernées s'interrompent, et le rapport dit désormais laquelle et pourquoi.
🔴 Après une restauration de snapshot B, aucun compte connu ne marche, et c'est normal : B part du snapshot de structure (donc aucun compte du jeu de test) et les mots de passe temporaires de l'import ont été détruits en fin de cycle, comme demandé. Le magasin ne garde que des empreintes : rien ne s'en relit. Commencez par « Tester le compte » — il dit en deux secondes si le compte existe, si son mot de passe passe, et ce que la campagne pourra mesurer. S'il n'est pas utilisable, « Armer ce compte » pose le mot de passe de votre choix sur un compte existant et lève le changement obligatoire. Sans ce geste, les 17 sondes de coût s'interrompent — c'est ce qui s'est produit les deux premières fois.

Restaurer un snapshot étapes 2 et 10

Trois natures : 0 = structure vide, A = jeu fabriqué (ce sur quoi Claude travaille), B = vos vraies données. La liste se remplit toute seule, y compris avec un B que vous venez de déposer par scp.
🔑 On restaure, PUIS on tourne la clé. Les jetons d'API vivent DANS la base, donc un snapshot restaure ceux de son époque : si la clé a été tournée depuis, toute l'application répond 401 sans que rien ne soit cassé. Enchaînez sur la rotation de clé.
chargement…

Le point de départ est-il nu ?

Le snapshot 0 ne devrait porter que le nécessaire à l'application : les 5 projets de structure, les 2 comptes techniques, les groupes de rôle et de poste, les définitions du catalogue et les deux porteurs de réglages. Rien d'autre.
Le manifeste du snapshot ne pouvait pas répondre : sa notion d'« objet hors structure » met dans le même sac les 84 définitions du catalogue et une absence d'essai. Le contrôle ci-dessous restaure le snapshot dans une base temporaire (jetée à la fin) et sépare les deux, objet par objet.
Deux causes de résidu, mesurées le 08/09 : la purge préserve « Gestion interne » et « Support » en entier — définitions comme instances, donc les absences et les tickets d'essai traversent toutes les remises à zéro ; et cinq équipes de démonstration étaient créées par un script de structure, donc recréées à chaque rejeu (corrigé le même jour : plus que sous --demo).
⚠️ Le nettoyage se joue sur une base nue, juste avant de refaire le snapshot 0. Il épargne toujours le catalogue, les porteurs nommés par le code, les groupes de rôle et de poste — et il refuse de supprimer une équipe qui a des membres.

Rejouer la structure étape 4

Un champ, un groupe ou une entrée de catalogue ajoutés pendant que Claude travaillait sur A n'existent pas dans B. Et l'ordre de création détermine les identifiants que l'application cite en dur : les rejouer dans le désordre donnerait une base d'apparence correcte et une application subtilement fausse.
À jouer après une restauration comme après une remise à zéro : la purge emporte le projet « Feuilles de temps » — un contenant pour les feuilles des gens, pas une définition — alors qu'elle préserve le catalogue de tâches, qui n'en contient aucune. La vérification nomme ce qui manque, y compris un projet absent.
Pas besoin de rejouer APRÈS un import (précisé le 08/09/2026) : ce qui dépend des clients est dans l'étape Après l'import. Le rejeu sert quand on repart d'une base vivante qu'on ne peut pas refabriquer — pas quand on la refabrique depuis les Excel, où la structure vient du snapshot de départ. Le bouton 2 · Vérifier, lui, est toujours utile : il ne modifie rien.
⚠️ Juste après un import, ce contrôle est ROUGE — et ce n'est pas la structure (constat de l'user, 09/09/2026). Son point 7 exige que les groupes de poste soient membres des dossiers qui viennent de naître : c'est le geste de Après l'import, le seul, et il n'existe nulle part avant. Jouez cette étape-là d'abord — elle finit d'ailleurs par ce même contrôle.

Le snapshot B — générer, récupérer, effacer étapes 9 et 12

B ne reste jamais sur la VM. On le génère, on le récupère sur son poste, on vérifie qu'il est bien arrivé, puis on l'efface d'ici — et c'est seulement à ce moment-là que le nettoyage peut tourner, puis la reconnexion.
2 · La commande scp s'affiche ci-dessus dès que B existe. ⚠️ Vérifiez la taille chez vous avant d'effacer : c'est peut-être la seule copie du travail du cabinet.

Annexe · outils hors déroulé ne servent plus normalement

Rien n'a été supprimé, mais rien ici ne fait partie du déroulé. Trois sujets : le snapshot de référence, l'anonymisation (reportée, à trancher) et la remise à zéro, dont la restauration d'un snapshot fait mieux — elle détruit et recharge la base, là où la remise à zéro préserve 3 projets et 2 comptes, donc leurs journaux d'activité. Gardée comme repli si une restauration échouait.

Snapshot de référence (0 / A)

Reste sur la VM, dans une zone que la purge préserve — donc réservé aux bases sans dossier client. Le script refuse si la base en porte, et renvoie vers le snapshot B.

Remise à zéro de la base (repli)

Aperçu d'abord ; la confirmation apparaît ensuite dans la console. Elle vide la base, pas le disque : les fichiers et les traces s'effacent plus bas.

Anonymisation

Masque les noms réels en place et génère le mapping.csv nécessaire à un futur dé-masquage. Ne fait plus partie du déroulé : pour rendre la base à Claude, c'est la restauration du snapshot A qui s'en charge — sans mapping à conserver.
⚠️ Deux limites qui ont motivé son retrait. Elle ne touche jamais aux titres de tâches (certains portaient des fragments de vrais noms clients). Et comme elle écrit par l'API, chaque modification crée une version dans l'historique d'OpenProject dont l'instantané précédent garde la valeur réelle : la base masquée n'est donc pas exempte de réel. Conservée le temps que ce sujet soit tranché.
Dé-masquage — l'inverse, à partir du mapping.csv d'une anonymisation précédente. Remplacé dans le déroulé par la restauration du snapshot B, qui ne demande aucun mapping.
aucun fichier

Expéditeur des e-mails

Permet au planning d'envoyer lui-même les invitations. Facultatif : sans lui, tout fonctionne déjà — la page de gestion affiche le lien, vous le transmettez par copie ou par votre propre Outlook.
⏱️ À faire dès l'ouverture de la session si vous comptez l'utiliser. Elle n'a qu'une exigence : que Claude soit déconnecté. Les invitations se distribuent au moment des tests à plusieurs. Et le secret doit être supprimé dans Entra juste avant de reconnecter Claude.
Les valeurs viennent d'une application Entra ID côté Microsoft, avec la permission applicative Mail.Send. Les trois premiers champs ne sont pas des secrets (l'identifiant de tenant se découvre depuis le nom de domaine) ; seul le quatrième en est un.
Indispensable : restreindre l'application à la seule boîte d'envoi par une ApplicationAccessPolicy dans Exchange Online. Sans elle, Mail.Send vaut sur tout le tenant — l'application pourrait écrire au nom de n'importe quelle boîte du cabinet.
🔁 Le secret ne vit que pendant que Claude est déconnecté (décision user du 31/07, plus stricte que la simple rotation) :
· à la déconnexion de Claude — créer le secret dans Entra et le saisir ici ; l'envoi fonctionne.
· avant de reconnecter Claudesupprimer le secret dans Entra. L'envoi s'arrête, et aucune copie subsistant sur la VM n'ouvre plus rien.
Conséquence assumée : pas d'envoi automatique tant que Claude est connecté. Le lien d'invitation reste produit et transmissible à la main.
Envoi de test — à faire immédiatement après l'enregistrement. Au premier contact ça échoue presque toujours ; la réponse brute de Microsoft dit pourquoi.

Nettoyer, puis reconnecter Claude étapes 13 et 14

Quatre gestes, dans cet ordre, un bouton chacun : il joue l'aperçu, et la confirmation n'apparaît qu'ensuite, dans le journal, une fois l'aperçu réussi. On ne peut donc pas exécuter sans avoir vu ce que ça va faire. ⚠️ Le snapshot B doit être récupéré puis effacé avant : la purge des résidus refuse de tourner tant qu'il est sur la machine.
1 · Les fichiers réels de la machine
Les classeurs déposés pour l'import et le plan temporaire. Le contrôle ne fabrique rien : il lit.
2 · Les résidus en base
La base archive ce qu'elle supprime (table d'audit), et garde le contenu effacé dans ses pages jusqu'à un VACUUM FULL. Emporte aussi trois réservoirs qu'aucun autre bouton ne touche : le secret d'envoi, le journal systemd — qui nomme les auteurs des écritures privilégiées — et les copies horodatées du magasin d'auth, dont chacune porte les empreintes ET les jetons d'API des comptes de son époque. Le magasin vivant, lui, n'est pas touché.
3 · Les segments WAL
Ils appartiennent au serveur PostgreSQL, pas à une base : ils survivent à la restauration en gardant des fragments d'écritures. Le recouvrement écrit dans une base jetable et prouve au niveau octet qu'il ne reste rien.
4 · Les traces de Claude en dernier
Claude Code écrit sur le disque tout ce qu'il lit. ⚠️ À jouer après l'avoir déconnecté — sinon l'opération est refusée. Sa mémoire auto est préservée.
Relancez le contrôle du geste 1 APRÈS les trois autres — c'est lui qui dit si le nettoyage a tout pris. Joué avant, il rougit à raison : la restauration vient d'écrire une copie du magasin d'auth, que le geste 2 emporte. Ne reconnectez qu'une fois ce contrôle vert.