ModĂšles dâUI pour actions en masse : aperçu, permissions et annulation
ModĂšles dâUI pour actions en masse qui rĂ©duisent les modifications accidentelles : flux avec aperçu prĂ©alable, vĂ©rifications de permission, options dâannulation et protections backend Ă implĂ©menter.

Pourquoi les actions en masse Ă©chouent (et ce que signifie « sĂ»r »)\n\nLes actions en masse sont les contrĂŽles « faire ceci sur beaucoup dâĂ©lĂ©ments » que lâon utilise quand on va vite. Dans les produits rĂ©els, cela signifie gĂ©nĂ©ralement modification en masse (changer un champ), suppression en masse, dĂ©placement vers un autre dossier ou Ă©tape, assignation Ă une personne ou une Ă©quipe, ajout dâĂ©tiquettes ou dĂ©clenchement dâun workflow.\n\nElles Ă©chouent pour une raison simple : elles troquent la rĂ©flexion minutieuse en mode enregistrement par enregistrement contre la rapiditĂ©. Cet Ă©change est acceptable quand la portĂ©e est Ă©vidente. Trop souvent, la portĂ©e est floue, les consĂ©quences sont incertaines et les rĂšgles de permission incohĂ©rentes. LâopĂ©ration semble correcte jusquâĂ ce que quelquâun remarque que 200 enregistrements ont Ă©tĂ© modifiĂ©s par erreur.\n\nLes mĂȘmes problĂšmes reviennent sans cesse :\n\n- La sĂ©lection est floue (filtres vs Ă©lĂ©ments cochĂ©s, sur plusieurs pages, surprises du « tout sĂ©lectionner »).\n- Lâimpact est difficile Ă prĂ©visualiser (on ne voit pas ce qui va rĂ©ellement changer).\n- Les permissions sont vĂ©rifiĂ©es trop tard ou seulement dans lâUI.\n- Lâ« annuler » manque, est peu fiable ou trompeur.\n- Il nây a pas de piste dâaudit, donc personne ne peut expliquer ce qui sâest passĂ©.\n\nLes dommages sont rarement mineurs. Les clients reçoivent de mauvais emails, des factures changent de statut, ou un pipeline commercial est rĂ©assignĂ© au mauvais propriĂ©taire. MĂȘme quand on peut restaurer les donnĂ©es, la rĂ©cupĂ©ration prend des heures et gĂ©nĂšre des doutes : « Peut-on faire confiance au systĂšme ? »\n\n« SĂ»r » ne veut pas dire « lent » ou « couvert dâavertissements ». Cela signifie quâun utilisateur peut rĂ©pondre Ă trois questions avant de valider :\n\n1. Quels enregistrements seront exactement affectĂ©s ?\n2. Quelles seront exactement les modifications, et quâest-ce qui ne changera pas ?\n3. Si câest une erreur, quel est le moyen honnĂȘte le plus rapide pour revenir en arriĂšre ?\n\nImaginez un responsable support qui clĂŽt en masse des tickets aprĂšs une panne. Si lâUI inclut silencieusement des tickets archivĂ©s, les clĂŽt sans montrer le nombre final et nâoffre pas dâannulation, un nettoyage de 30 secondes devient un incident rĂ©el.\n\n## Principes fondamentaux pour des actions en masse sĂ»res\n\nDe bonnes actions en masse rĂ©duisent deux risques Ă la fois : lâutilisateur qui fait la mauvaise chose, ou le systĂšme qui fait la mauvaise chose. Lâobjectif nâest pas de ralentir les gens, mais de rendre lâaction claire, intentionnelle et facile Ă vĂ©rifier.\n\nSĂ©parez la sĂ©lection de lâaction. Laissez les gens sĂ©lectionner des Ă©lĂ©ments (ou confirmer un ensemble filtrĂ©) dâabord, puis choisir lâaction. Quand sĂ©lection et action sont mĂȘlĂ©es, les utilisateurs dĂ©clenchent des changements alors quâils dĂ©cident encore de ce qui doit ĂȘtre inclus.\n\nAffichez la portĂ©e avant la confirmation. Cela signifie le compte exact, les filtres appliquĂ©s et toutes les exclusions (Ă©lĂ©ments quâils ne peuvent pas modifier, Ă©lĂ©ments dĂ©jĂ dans lâĂ©tat cible, etc.). Une ligne unique comme « 128 sĂ©lectionnĂ©s (filtrĂ©s par : Statut = Ouvert, AssignĂ© = Moi ; 6 exclus : pas de permission) » Ă©vite la plupart des surprises.\n\nFaites apparaĂźtre les actions destructrices diffĂ©remment. Utilisez des libellĂ©s clairs (« Supprimer 128 enregistrements »), des indices visuels forts et Ă©loignez-les des actions sĂ»res. Exigez aussi un dĂ©clencheur dĂ©libĂ©rĂ© (un bouton dĂ©diĂ©), pas un Ă©lĂ©ment de menu qui ressemble aux autres.\n\nGardez le flux court et prĂ©visible : sĂ©lectionner, revoir la portĂ©e, confirmer, voir les rĂ©sultats. Ăvitez les assistants multi-Ă©tapes sauf si lâaction nĂ©cessite vraiment des choix supplĂ©mentaires.\n\nSi vous voulez un contrĂŽle rapide, voilĂ lâessentiel : la sĂ©lection est explicite, la portĂ©e est visible Ă cĂŽtĂ© de lâaction, les actions destructrices sont plus difficiles Ă dĂ©clencher par accident, le texte de confirmation dit ce qui va se passer et le rĂ©sultat est affichĂ© clairement (succĂšs, succĂšs partiel, Ă©checs).\n\n## UI « preview-first » : montrer lâimpact avant lâapplication\n\nUne bonne action en masse ne doit pas ressembler Ă un saut dans le vide. Avant que lâutilisateur clique sur Appliquer, montrez un aperçu qui rĂ©pond Ă une question : « Que va-t-il changer, exactement ? »\n\nCommencez par un rĂ©sumĂ© facile Ă vĂ©rifier. Les comptes lâemportent sur les longs tableaux quand la sĂ©lection est grande. Si vous changez le statut, montrez combien dâĂ©lĂ©ments passent de chaque statut actuel au nouveau. Si vous rĂ©affectez des propriĂ©taires, montrez des comptes par propriĂ©taire actuel et le nouveau propriĂ©taire. Gardez le rĂ©sumĂ© prĂšs du bouton dâaction principal pour quâil soit difficile Ă manquer.\n\nDonnez ensuite assez de dĂ©tails pour repĂ©rer les surprises. Quelques lignes dâexemple suffisent pour des changements simples (comme « DĂ©finir la prioritĂ© sur Haute »). Une liste complĂšte (ou un export du jeu affectĂ©) est mieux lorsque les utilisateurs sâattendent Ă des exceptions ou quand la sĂ©lection vient dâun filtre quâils ne se rappellent pas parfaitement.\n\nIndiquez explicitement ce qui ne se passera pas. Une petite zone « sera ignoré » renforce la confiance lorsquâelle explique les exclusions en langage clair, par exemple : ignorĂ© parce que vous nâavez pas la permission, dĂ©jĂ dans lâĂ©tat cible, verrouillĂ© par un workflow dâapprobation, ou donnĂ©es requises manquantes.\n\nLâimportant est que lâaperçu reflĂšte les rĂšgles rĂ©elles. Si le backend va rejeter une mise Ă jour, lâaperçu doit lâindiquer avant la confirmation, pas aprĂšs.\n\n## Dialogues de confirmation que les utilisateurs comprennent vraiment\n\nUn dialogue de confirmation ne doit pas ĂȘtre un simple ralentisseur. Il doit rĂ©pondre Ă une question : « Ai-je bien compris ce qui va se passer si je clique ? » Sâil ne peut pas le faire en deux lectures rapides, les gens lâignoreront.\n\nCommencez par le nom de lâaction et lâĂ©tat final. Les libellĂ©s gĂ©nĂ©riques comme « Mettre Ă jour le statut » obligent lâutilisateur Ă deviner. PrĂ©fĂ©rez « Mettre le statut Ă Fermé » ou « Supprimer 24 clients ».\n\nNe laissez pas le choix risquĂ© par dĂ©faut. Sâil y a deux boutons, faites en sorte que le plus sĂ»r ait le focus par dĂ©faut. Si des options existent (par exemple « Clore les tickets et notifier les clients »), exigez un choix explicite au lieu de prĂ©-cocher lâoption la plus destructive.\n\nUtilisez le texte du dialogue pour le risque rĂ©el. Dites ce qui change, ce qui ne changera pas, ce qui est permanent et ce qui est inclus. Ăvitez le flou du type « Ătes-vous sĂ»r ? ».\n\nToutes les actions en masse nâont pas besoin du mĂȘme niveau de friction. Une confirmation simple suffit pour des changements rĂ©versibles et peu risquĂ©s (comme ajouter une Ă©tiquette). Une confirmation tapĂ©e est pertinente quand le rayon dâimpact est Ă©levé : suppressions irrĂ©versibles, changements de permission, paiements importants, ou tout ce qui affecte directement des clients.\n\nUn motif utile est « tapez DELETE » ou « tapez CLOSE 24 », ainsi lâutilisateur voit la portĂ©e en confirmant.\n\n## Permissions et contrĂŽle dâaccĂšs pour les opĂ©rations en masse\n\nLes actions en masse mettent les rĂšgles de permission Ă rude Ă©preuve. Un utilisateur peut Ă©diter certains enregistrements, ne rien supprimer, et ne changer que certains champs. Traitez les permissions comme une partie du flux, pas comme une surprise aprĂšs « Appliquer ».\n\nSoyez clair sur ce que signifie « autorisé ». Ce nâest rarement que « peut-il ouvrir lâĂ©lĂ©ment ? ». Câest gĂ©nĂ©ralement un mĂ©lange dâaccĂšs en lecture, droits dâĂ©dition, droits de suppression, rĂšgles au niveau des champs (peut changer le statut mais pas le propriĂ©taire, le prix ou les permissions) et rĂšgles de portĂ©e (seulement les Ă©lĂ©ments de leur Ă©quipe, rĂ©gion ou projet).\n\nLes permissions mixtes dans une sĂ©lection sont normales. Un systĂšme sĂ»r choisit une approche honnĂȘte et la communique clairement :\n\n- Appliquer uniquement aux Ă©lĂ©ments autorisĂ©s et rĂ©sumer ce qui a Ă©tĂ© ignorĂ©.\n- Bloquer lâaction tant que la sĂ©lection ne contient pas uniquement des Ă©lĂ©ments autorisĂ©s.\n\nLa premiĂšre option est plus fluide pour le travail Ă fort volume. La seconde est souvent prĂ©fĂ©rable pour les actions Ă haut risque comme la suppression ou les changements de permission.\n\nĂvitez les fuites de donnĂ©es quand certains Ă©lĂ©ments sont inaccessibles. Ne rĂ©vĂ©lez pas les noms, titres ou champs sensibles des enregistrements bloquĂ©s. « 12 Ă©lĂ©ments ne peuvent pas ĂȘtre mis Ă jour en raison des rĂšgles dâaccĂšs » est plus sĂ»r que lister lesquels.\n\nUn bon retour UI aide les utilisateurs Ă comprendre ce qui sâest passĂ© sans les faire sentir punis. Par exemple : une banniĂšre de prĂ©-vĂ©rification (« Vous pouvez mettre Ă jour 38 des 50 Ă©lĂ©ments sĂ©lectionnĂ©s »), des codes de raison courts (« Bloqué : pas dans votre Ă©quipe »), et un filtre qui cache les Ă©lĂ©ments que lâutilisateur ne peut pas Ă©diter.\n\nCĂŽtĂ© backend, rĂ©appliquez les mĂȘmes rĂšgles pour chaque Ă©lĂ©ment. MĂȘme si lâUI fait des prĂ©-vĂ©rifications, le serveur doit toujours vĂ©rifier les permissions par enregistrement et par champ.\n\n## Modes dâannulation qui inspirent confiance\n\nLâannulation la plus sĂ»re est celle que vous pouvez rĂ©ellement honorer. Cela implique gĂ©nĂ©ralement de prĂ©voir la rĂ©cupĂ©ration dĂšs le dĂ©part, pas dâajouter un simple bouton de derniĂšre minute.\n\nUn bon comportement par dĂ©faut est la suppression douce avec une fenĂȘtre temporelle de restauration. Au lieu de supprimer immĂ©diatement, marquez les enregistrements comme supprimĂ©s (et cachez-les des vues normales), puis supprimez-les dĂ©finitivement plus tard. Cela rattrape les clics erronĂ©s, les filtres faux et les « je nâavais pas vu que ces Ă©lĂ©ments Ă©taient inclus ».\n\nPour des actions rapides, un toast dâannulation fonctionne bien car il est immĂ©diat et peu contraignant. Restez prĂ©cis pour inspirer confiance : indiquez ce qui a changĂ©, un bouton Annuler, la limite de temps et une note si certains Ă©lĂ©ments ont Ă©tĂ© ignorĂ©s.\n\nChoisissez une fenĂȘtre dâannulation adaptĂ©e au risque. Dix Ă trente secondes sont courantes pour de petites erreurs. Des heures ou des jours sont mieux gĂ©rĂ©s par la suppression douce et un Ă©cran de restauration.\n\nPour des jobs longue durĂ©e, « annuler » signifie gĂ©nĂ©ralement interrompre, pas revenir en arriĂšre. RĂ©tablir un job qui a dĂ©jĂ dĂ©clenchĂ© des emails, paiements ou mises Ă jour externes peut ĂȘtre trompeur. Permettez dâannuler le travail restant et montrez ce qui sâest dĂ©jĂ passĂ©.\n\nQuand lâannulation nâest pas possible, soyez direct et fournissez une voie de rĂ©cupĂ©ration : exportez les IDs affectĂ©s, Ă©crivez une entrĂ©e dâaudit et proposez un workflow de restauration quand câest faisable.\n\n## Protections backend : validation, idempotence, auditabilitĂ©\n\nUne action en masse sĂ»re nâest pas quâun problĂšme dâUI. MĂȘme avec un aperçu solide, les utilisateurs double-cliquent, les navigateurs renvoient des requĂȘtes et les jobs en arriĂšre-plan peuvent sâexĂ©cuter deux fois. Le backend doit supposer que chaque requĂȘte en masse est risquĂ©e et prouver quâil est sĂ»r de lâappliquer.\n\nCommencez par une validation stricte. Validez chaque Ă©lĂ©ment, pas seulement le premier. Si 3 sur 200 enregistrements Ă©choueraient (champs requis manquants, mauvais Ă©tat, pas de permission), dĂ©cidez en amont si vous rejetez tout le lot ou si vous autorisez un succĂšs partiel avec des erreurs par Ă©lĂ©ment claires.\n\nLâidempotence empĂȘche les applications doubles accidentelles. Donnez Ă chaque requĂȘte en masse une clĂ© dâidempotence unique (ou un ID de requĂȘte) et stockez le rĂ©sultat. Si la mĂȘme clĂ© arrive, renvoyez le mĂȘme rĂ©sultat sans rĂ©exĂ©cuter la mise Ă jour.\n\nPour les Ă©ditions concurrentes, utilisez le verrou optimiste. Stockez une version ou un updated_at par enregistrement et nâactualisez que si elle correspond encore. Sâil y a eu un changement, renvoyez un conflit plutĂŽt que dâĂ©craser le travail de quelquâun dâautre.\n\nDeux patterns dâAPI sont trĂšs utiles :\n\n- Dry-run : exĂ©cutez la validation et les vĂ©rifications de permission, renvoyez des comptes et des changements dâexemple, mais nâĂ©crivez rien.\n- Apply : exigez un token de confirmation ou la mĂȘme sĂ©lection calculĂ©e, puis Ă©crivez.\n\nAjoutez des limites pratiques pour protĂ©ger le systĂšme : plafonnez le nombre maximal dâĂ©lĂ©ments par requĂȘte, appliquez des limites de dĂ©bit (souvent plus strictes pour les suppressions) et mettez des time-outs pour que dĂ©pendances bloquĂ©es nâimmobilisent pas tout le job.\n\nEnfin, rendez chaque changement en masse auditable. Enregistrez qui lâa fait, ce qui a changĂ© et la portĂ©e. Une entrĂ©e dâaudit utile capture lâacteur, lâhorodatage, les paramĂštres de lâaction (filtres, comptes), les donnĂ©es avant/aprĂšs (ou un diff) et un ID de lot/job.\n\n## Faire Ă©voluer les actions en masse sans compromettre la fiabilitĂ©\n\nQuand les actions en masse passent de 50 Ă©lĂ©ments Ă 50 000, le risque nâest pas seulement lâerreur utilisateur. Câest le systĂšme qui se surcharge en cours dâopĂ©ration, laissant des changements Ă moitiĂ© faits difficiles Ă expliquer.\n\nDivisez le travail en morceaux. PlutĂŽt que de tout mettre Ă jour dans une longue transaction, traitez par lots (par exemple 500 Ă 2 000 Ă la fois) et enregistrez la progression aprĂšs chaque lot. Si quelque chose Ă©choue, vous pouvez arrĂȘter proprement, montrer oĂč ça sâest arrĂȘtĂ© et Ă©viter de verrouiller les tables trop longtemps.\n\nPour de gros jobs, exĂ©cutez-les en arriĂšre-plan et affichez un statut clair : en file, en cours (avec « X sur Y »), terminĂ© avec problĂšmes, Ă©chouĂ© ou annulĂ© (si pris en charge).\n\nLe succĂšs partiel exige une UI honnĂȘte. Nâaffichez pas « Terminé » si 20 % ont Ă©chouĂ©. Montrez ce qui a rĂ©ussi et ce qui nâa pas fonctionnĂ©, et facilitez les actions sur les erreurs : relancer seulement les Ă©lĂ©ments Ă©chouĂ©s, exporter les IDs Ă©chouĂ©s ou ouvrir une vue filtrĂ©e.\n\nUne rĂšgle simple tient bien : si vous ne pouvez pas expliquer lâĂ©tat actuel du job en une phrase, les utilisateurs ne vous feront pas confiance non plus.\n\n## Erreurs courantes et piĂšges Ă Ă©viter\n\nLa plupart des Ă©checs dâactions en masse ne sont pas une « erreur utilisateur ». Ils surviennent quand lâUI change silencieusement la signification de « sĂ©lectionné », ou quand le systĂšme suppose que lâutilisateur voulait la plus grande portĂ©e possible.\n\nUn piĂšge classique est la confusion entre « toutes les lignes visibles » et « tous les rĂ©sultats ». Un utilisateur sĂ©lectionne 20 Ă©lĂ©ments Ă lâĂ©cran, puis coche une case qui cible 20 000 sur toutes les pages. Si vous proposez « sĂ©lectionner tous les rĂ©sultats », faites-en une Ă©tape distincte et explicite, et affichez toujours le compte final Ă cĂŽtĂ© de lâaction.\n\nUn autre problĂšme frĂ©quent est le changement silencieux de filtre entre la sĂ©lection et lâapplication. Un utilisateur sĂ©lectionne un ensemble de commandes, puis une vue partagĂ©e change ou la liste se rafraĂźchit et le filtre dĂ©vie. Lâaction sâapplique Ă un ensemble diffĂ©rent de celui quâil a examinĂ©. Liez les actions Ă un instantanĂ© (IDs sĂ©lectionnĂ©s) et avertissez si la sĂ©lection a changĂ©.\n\nDes menus surchargĂ©s causent aussi des dĂ©gĂąts. Si « Supprimer » est Ă cĂŽtĂ© de « Exporter » et « Ătiqueter », des erreurs arriveront. SĂ©parez les actions destructrices et donnez-leur une confirmation plus claire.\n\nEt ne comptez jamais sur « lâUI a cachĂ© le bouton » comme contrĂŽle de permission. Le backend doit toujours vĂ©rifier chaque Ă©lĂ©ment.\n\n## Checklist rapide de sĂ©curitĂ© pour les actions en masse\n\nAvant de livrer une action en masse, vĂ©rifiez les bases qui empĂȘchent les moments « Je ne voulais pas faire ça » et facilitent grandement les enquĂȘtes de support.\n\nCommencez par la clartĂ© de la portĂ©e. Les utilisateurs doivent voir exactement ce qui sera affectĂ©, pas seulement le libellĂ© de lâaction. Affichez le nombre dâĂ©lĂ©ments et le filtre ou la sĂ©lection exacte qui a produit ce nombre (par exemple « 132 tickets correspondant : Statut = Ouvert, AssignĂ© Ă = Moi »).\n\nEnsuite, assurez-vous que les trois zones Ă haut risque ne sont pas cachĂ©es : impact, permissions et consĂ©quences.\n\n- La portĂ©e est explicite : nombre dâenregistrements plus le filtre/sĂ©lection utilisĂ© pour construire lâensemble.\n- Les actions risquĂ©es ont un aperçu : exemples de changements ou un court rĂ©sumĂ© de type diff.\n- Les permissions sont appliquĂ©es cĂŽtĂ© serveur pour chaque Ă©lĂ©ment, pas seulement dans lâUI.\n- Il existe un vrai retour : annulation/restauration quand câest possible, ou wording clair « irrĂ©versible » avant lâexĂ©cution.\n- Les rĂ©sultats sont documentĂ©s : journal dâaudit et rĂ©sumĂ© clair du rĂ©sultat (rĂ©ussi, ignorĂ©, Ă©chouĂ© et pourquoi).\n\n## Un exemple rĂ©aliste : clĂŽturer en masse des tickets de support en toute sĂ©curitĂ©\n\nUn responsable support rĂ©alise un nettoyage post-campagne. Des centaines de tickets sont taggĂ©s « promo-2026 », et beaucoup sont dĂ©jĂ rĂ©solus en self-service. Ils veulent clĂŽturer en masse le reste sans fermer par erreur des cas VIP ou des tickets appartenant Ă une autre Ă©quipe.\n\nIls sĂ©lectionnent des tickets depuis une liste filtrĂ©e et cliquent sur « Clore la sĂ©lection ». Avant que quoi que ce soit ne change, ils voient un aperçu qui rend lâimpact concret :\n\n- Un rĂ©sumĂ© de comptes : 183 seront clos, 12 seront ignorĂ©s, 4 nĂ©cessitent une attention.\n- Raison simple des Ă©lĂ©ments ignorĂ©s (par exemple « DĂ©jĂ clos » ou « Compte VIP, impossible de clĂŽturer en masse »).\n- Un petit Ă©chantillon (10 Ă©lĂ©ments) plus une option dâexport du jeu affectĂ©.\n\n- Le changement exact : le statut devient « Closed », la raison devient « Campaign cleanup ».\n\n- Un bouton principal clair : « Clore 183 tickets », pas un vague « Confirmer ».\n\nAprĂšs confirmation, le systĂšme lance un job en arriĂšre-plan et affiche la progression. Ă la fin, lâĂ©cran de rĂ©sultats montre combien ont rĂ©ussi, lesquels ont Ă©chouĂ© et pourquoi (par exemple, un ticket a Ă©tĂ© mis Ă jour par un agent pendant lâexĂ©cution).\n\nCĂŽtĂ© backend, le flux reste dĂ©fensif : reverifier les permissions par ticket au moment de lâexĂ©cution, valider les Ă©tats autorisĂ©s, Ă©crire une entrĂ©e dâaudit avec un ID de lot, appliquer les mises Ă jour par petits morceaux et renvoyer un rapport de rĂ©sultat.\n\nLâannulation est traitĂ©e comme une vraie opĂ©ration, pas une promesse. LâUI propose « Annuler ce lot » pendant 30 minutes. Cliquer lance un nouveau job qui restaure le statut et la raison prĂ©cĂ©dents seulement pour les tickets modifiĂ©s par ce lot, et uniquement sâils nâont pas Ă©tĂ© Ă©ditĂ©s depuis.\n\n## Ătapes suivantes : implĂ©mentez une amĂ©lioration de sĂ©curitĂ© cette semaine\n\nVous nâavez pas besoin dâune refonte complĂšte pour rendre les actions en masse plus sĂ»res. Choisissez un petit changement qui rĂ©duit les accidents et les tickets de support, livrez-le, puis construisez dessus.\n\nCommencez par la clarté : ajoutez une Ă©tiquette de portĂ©e qui dit exactement ce qui va changer (« 37 factures sĂ©lectionnĂ©es »), et montrez un court rĂ©sumĂ© des rĂ©sultats aprĂšs lâaction (combien ont rĂ©ussi, Ă©chouĂ© et pourquoi). Cela Ă©vite dĂ©jĂ de nombreuses erreurs « Je pensais que ce nâĂ©tait quâun Ă©lĂ©ment ».\n\nEnsuite, attaquez les actions les plus risquĂ©es. Pour les suppressions massives, changements de statut et mises Ă jour sensibles aux permissions, ajoutez un aperçu qui montre lâimpact avant toute sauvegarde. MĂȘme un simple tableau « avant -> aprĂšs » pour les 10 premiers Ă©lĂ©ments attrape les filtres erronĂ©s.\n\nUn ordre pratique pour la plupart des Ă©quipes :\n\n- Ajouter le compte de sĂ©lection + texte clair de portĂ©e Ă cĂŽtĂ© du bouton.\n- Ajouter un Ă©cran de rĂ©sultats avec Ă©checs et raisons (permission, validation).\n- Ajouter un aperçu ou une validation dry-run pour les actions les plus risquĂ©es.\n- Ajouter la restauration pour les suppressions (soft delete + vue de restauration) et afficher lâoption de rĂ©cupĂ©ration immĂ©diatement aprĂšs.\n\n- Pour les gros lots, exĂ©cuter en arriĂšre-plan et notifier Ă la fin.\n\nSi vous construisez un outil interne ou un panneau dâadministration sur AppMaster, vous pouvez implĂ©menter cela sans assembler plusieurs systĂšmes : modĂ©lisez les tables dâaudit et de job dans PostgreSQL via le Data Designer, appliquez des rĂšgles par enregistrement dans le Business Process Editor, et crĂ©ez les Ă©crans dâaperçu, confirmation et rĂ©sultats dans les builders web ou mobile. Pour les Ă©quipes qui Ă©valuent des plateformes, appmaster.io est aussi un endroit pratique pour prototyper une action en masse de bout en bout et tester si les contrĂŽles de sĂ©curitĂ© semblent naturels aux utilisateurs quotidiens.
FAQ
« SĂ»r » signifie que lâutilisateur peut dire, avant de confirmer, quels enregistrements seront affectĂ©s, quels champs changeront et quel sera le chemin de rĂ©cupĂ©ration en cas dâerreur. Lâaction doit rester rapide, mais il doit ĂȘtre difficile de faire une mauvaise action silencieusement.
SĂ©parez la sĂ©lection de lâaction, puis affichez la portĂ©e finale juste Ă cĂŽtĂ© du bouton dâaction. Faites de âsĂ©lectionner tous les rĂ©sultatsâ une Ă©tape volontaire avec un compte explicite afin que lâutilisateur ne confonde pas « ce que je vois » et « tout ce qui correspond ».
Commencez par un rĂ©sumĂ© fiable qui reflĂšte les rĂšgles rĂ©elles du backend : combien dâĂ©lĂ©ments changeront et combien seront ignorĂ©s. Ajoutez ensuite assez de dĂ©tails pour repĂ©rer les surprises, par exemple un petit Ă©chantillon de lignes affectĂ©es ou les valeurs avant/aprĂšs exactes pour le champ modifiĂ©.
Utilisez la boĂźte de dialogue pour rĂ©pĂ©ter lâĂ©tat final et la portĂ©e en langage clair, par exemple « Supprimer 24 clients » ou « Mettre le statut Ă FermĂ© pour 183 tickets ». Ăvitez les « Ătes-vous sĂ»r ? » vagues et ne positionnez pas par dĂ©faut le bouton le plus risquĂ©.
Traitez les permissions mixtes comme normales et choisissez une rĂšgle honnĂȘte : soit bloquez lâaction tant que la sĂ©lection ne contient que des Ă©lĂ©ments autorisĂ©s, soit appliquez les changements uniquement lĂ oĂč câest permis et rĂ©sumez clairement ce qui a Ă©tĂ© ignorĂ©. Ne comptez jamais sur lâinterface qui cache un bouton pour la sĂ©curité ; le serveur doit vĂ©rifier les permissions par enregistrement et par champ.
Le succĂšs partiel est acceptable si câest rapportĂ© clairement. Affichez combien ont rĂ©ussi, Ă©chouĂ© et ont Ă©tĂ© ignorĂ©s, et fournissez des raisons simples qui aident lâutilisateur Ă corriger le problĂšme sans rĂ©vĂ©ler des dĂ©tails sensibles sur des enregistrements inaccessibles.
Un toast dâannulation fonctionne pour des changements rapides et rĂ©versibles quand vous pouvez vraiment rĂ©tablir lâĂ©tat. Pour les suppressions, la suppression douce (soft delete) avec une fenĂȘtre de restauration est plus sĂ»re, car elle couvre les clics erronĂ©s et les filtres incorrects sans prĂ©tendre pouvoir annuler des effets externes (emails, paiements).
Consignez qui a lancĂ© lâaction en masse, quand elle a eu lieu, quelle sĂ©lection a produit la portĂ©e (filtres ou IDs sĂ©lectionnĂ©s) et ce qui a changĂ©. Incluez un ID de lot/job et un rĂ©sumĂ© clair du rĂ©sultat pour que le support puisse expliquer sans deviner.
Utilisez lâidempotence : si des requĂȘtes rĂ©pĂ©tĂ©es arrivent avec la mĂȘme clĂ©, renvoyez le mĂȘme rĂ©sultat au lieu dâappliquer deux fois. Ajoutez une validation par enregistrement et un verrou optimiste pour ne pas Ă©craser des Ă©ditions plus rĂ©centes. Un endpoint dry-run aide aussi Ă calculer la portĂ©e rĂ©elle et les erreurs avant toute Ă©criture.
Traitez de gros lots en morceaux et exĂ©cutez-les en tant que jobs en arriĂšre-plan avec un statut visible (en file, en cours, terminĂ© avec problĂšmes). Le progrĂšs doit ĂȘtre explicable en une phrase et les rĂ©sultats doivent honnĂȘtement indiquer ce qui sâest terminĂ©, Ă©chouĂ© ou Ă©tĂ© annulĂ©.


