[{"data":1,"prerenderedAt":507},["ShallowReactive",2],{"\u002Fnext\u002Fdodock\u002Ffonctionnalites\u002Foutils\u002Fles_outils_diagnostic":3,"section:\u002Fnext\u002Fdodock\u002Ffonctionnalites\u002Foutils\u002Fles_outils_diagnostic":506},{"id":4,"title":5,"body":6,"description":490,"extension":491,"meta":492,"navigation":494,"path":502,"seo":503,"stem":504,"__hash__":505},"docs\u002F2.next\u002F3.dodock\u002F04.fonctionnalites\u002F5.outils\u002Fles_outils_diagnostic.md","Les outils de diagnostic",{"type":7,"value":8,"toc":476},"minimark",[9,14,32,55,62,80,84,93,97,104,114,119,156,159,162,328,331,335,356,370,374,381,402,415,418,444,448,468],[10,11,13],"h2",{"id":12},"linspecteur-dautorisations","L'inspecteur d'autorisations",[15,16,17,18,22,23,26,27,31],"p",{},"Cet outil vérifie si un utilisateur a le droit de faire une action. Il est réservé au rôle ",[19,20,21],"strong",{},"Gestionnaire système",". Ouvrez l'",[19,24,25],{},"Inspecteur d'autorisations"," depuis la recherche (",[28,29,30],"code",{},"Ctrl+K",").",[15,33,34,35,38,39,42,43,46,47,50,51,54],{},"Renseignez le ",[19,36,37],{},"Type de document",", le ",[19,40,41],{},"Document"," (facultatif), l'",[19,44,45],{},"Utilisateur"," et le ",[19,48,49],{},"Type d'autorisation"," (par défaut « Lire »). Le cadre ",[19,52,53],{},"Résultat"," affiche les rôles de l'utilisateur, les autorisations issues de ces rôles, l'effet des autorisations utilisateur, puis le résultat final, par exemple « L'utilisateur … n'a pas accès à ce document ».",[15,56,57],{},[58,59],"img",{"alt":60,"src":61},"Inspecteur d'autorisations : type de document, document, utilisateur, type d'autorisation et cadre Sortie indiquant que l'utilisateur n'a pas accès au document","\u002Fimages\u002Fdokos\u002Fgeneralites\u002Fadministration-inspecteur.png",[15,63,64,65,67,68,70,71,73,74,76,77,79],{},"Exemple fictif : un commercial ne peut pas ouvrir la facture ACC-SINV-2026-00042. Choisissez ",[19,66,37],{}," « Facture de vente », ",[19,69,41],{}," ACC-SINV-2026-00042, ",[19,72,45],{}," le commercial, ",[19,75,49],{}," « Lire ». Le ",[19,78,53],{}," montre qu'une autorisation utilisateur limite ses accès à une autre société.",[10,81,83],{"id":82},"les-messages-derreur","Les messages d'erreur",[15,85,86,87,92],{},"En cas de refus, lisez le message affiché. Il indique en général le type de document et le droit qui manque. Les erreurs serveur sont aussi gardées dans le ",[88,89,91],"a",{"href":90},"\u002Fnext\u002Fdodock\u002Ffonctionnalites\u002Foutils\u002Fgestion-des-erreurs","journal des erreurs",".",[10,94,96],{"id":95},"lenregistreur","L'enregistreur",[15,98,99,100,103],{},"L'",[19,101,102],{},"Enregistreur"," (Recorder) suit les requêtes web et les tâches de fond exécutées sur le site. Il note aussi les requêtes SQL et les méthodes du cycle de vie des documents. Il sert à trouver les étapes lentes d'une action.",[15,105,106,107,110,111,113],{},"Seul le compte ",[19,108,109],{},"Administrator"," peut l'utiliser. Les autres utilisateurs, même avec le rôle ",[19,112,21],{},", reçoivent le message « Seul l'Administrateur est autorisé à utiliser l'Enregistreur ».",[115,116,118],"h3",{"id":117},"démarrer-un-enregistrement","Démarrer un enregistrement",[120,121,122,130,141,144,150],"ol",{},[123,124,125,126,26,128,31],"li",{},"Ouvrez l'",[19,127,102],{},[28,129,30],{},[123,131,132,133,136,137,140],{},"Cliquez sur ",[19,134,135],{},"Démarrer",". La fenêtre ",[19,138,139],{},"Configurer l'enregistreur"," s'ouvre.",[123,142,143],{},"Choisissez les options (voir le tableau ci-dessous).",[123,145,132,146,149],{},[19,147,148],{},"Commencer à enregistrer",". L'indicateur passe à « Actif ».",[123,151,152,153,92],{},"Faites l'action à analyser, puis cliquez sur ",[19,154,155],{},"Arrêter",[15,157,158],{},"L'enregistrement s'arrête seul après 10 minutes. Pendant l'enregistrement, la liste se rafraîchit toutes les 5 secondes.",[15,160,161],{},"Les options de la fenêtre s'affichent en anglais :",[163,164,165,181],"table",{},[166,167,168],"thead",{},[169,170,171,175,178],"tr",{},[172,173,174],"th",{},"Option",[172,176,177],{},"Effet",[172,179,180],{},"Par défaut",[182,183,184,198,217,229,245,257,269,281,312],"tbody",{},[169,185,186,192,195],{},[187,188,189],"td",{},[19,190,191],{},"Record Web Requests",[187,193,194],{},"Enregistre les requêtes web.",[187,196,197],{},"Cochée",[169,199,200,205,212],{},[187,201,202],{},[19,203,204],{},"Request path filter",[187,206,207,208,211],{},"Enregistre seulement les chemins qui commencent par ce texte, par exemple ",[28,209,210],{},"\u002Fapi\u002Fmethod\u002Ffrappe.desk.form.save",". Vide : toutes les requêtes.",[187,213,214],{},[28,215,216],{},"\u002F",[169,218,219,224,227],{},[187,220,221],{},[19,222,223],{},"Record Background Jobs",[187,225,226],{},"Enregistre les tâches de fond.",[187,228,197],{},[169,230,231,236,242],{},[187,232,233],{},[19,234,235],{},"Background Jobs filter",[187,237,238,239,92],{},"Enregistre seulement les tâches dont le nom contient ce texte, par exemple ",[28,240,241],{},"email_queue.pull",[187,243,244],{},"Vide",[169,246,247,252,255],{},[187,248,249],{},[19,250,251],{},"Record SQL queries",[187,253,254],{},"Enregistre chaque requête SQL.",[187,256,197],{},[169,258,259,264,267],{},[187,260,261],{},[19,262,263],{},"Generate EXPLAIN for SQL queries",[187,265,266],{},"Ajoute le plan d'exécution de chaque requête.",[187,268,197],{},[169,270,271,276,279],{},[187,272,273],{},[19,274,275],{},"Capture callstack of SQL queries",[187,277,278],{},"Indique le code qui a lancé chaque requête.",[187,280,197],{},[169,282,283,288,310],{},[187,284,285],{},[19,286,287],{},"Capture document lifecycle timeline",[187,289,290,291,294,295,294,298,301,302,305,306,92],{},"Enregistre les méthodes du cycle de vie des documents (",[28,292,293],{},"validate",", ",[28,296,297],{},"on_update",[28,299,300],{},"on_submit","…), les ",[28,303,304],{},"doc_events"," et les autres hooks. Voir ",[88,307,309],{"href":308},"\u002Fnext\u002Fadministrer\u002Fperformance\u002Fanalyse-des-hooks-dans-les-performances","Analyser les hooks Python dans les performances",[187,311,197],{},[169,313,314,319,325],{},[187,315,316],{},[19,317,318],{},"Run cProfile",[187,320,321,322,324],{},"Profile le code Python. Ralentit beaucoup le serveur. Décochez ",[19,323,275],{}," avec cette option.",[187,326,327],{},"Décochée",[15,329,330],{},"Vous devez enregistrer au moins les requêtes web ou les tâches de fond.",[115,332,334],{"id":333},"lire-la-liste","Lire la liste",[15,336,337,338,341,342,345,346,38,349,352,353,92],{},"Chaque ligne de la liste est une requête ou une tâche. Elle montre le ",[19,339,340],{},"Lien"," (le chemin appelé), la ",[19,343,344],{},"Durée",", l'heure, le ",[19,347,348],{},"Nombre de requêtes",[19,350,351],{},"Nombre d'événements"," et les ",[19,354,355],{},"Applications impliquées",[15,357,358,359,362,363,46,366,369],{},"Ouvrez une ligne pour voir aussi les ",[19,360,361],{},"Requêtes SQL"," (avec leur durée, leur plan et la pile d'appels), les ",[19,364,365],{},"Indexes suggérés",[19,367,368],{},"Résultat CProfile",", si l'option était cochée.",[115,371,373],{"id":372},"analyser-la-chronologie-des-documents","Analyser la chronologie des documents",[15,375,376,377,380],{},"Ouvrez une requête enregistrée. La section ",[19,378,379],{},"Chronologie"," liste chaque méthode exécutée, imbriquée selon les appels. Pour chaque ligne :",[382,383,384,390,396],"ul",{},[123,385,386,389],{},[19,387,388],{},"Durée (ms)"," : le temps d'exécution.",[123,391,392,395],{},[19,393,394],{},"Requêtes"," : le nombre de requêtes SQL lancées.",[123,397,398,401],{},[19,399,400],{},"Applications"," : les applications qui ont déclenché la méthode.",[15,403,404,405,407,408,38,411,352,413,92],{},"La requête indique aussi le ",[19,406,348],{},", la ",[19,409,410],{},"Durée des requêtes",[19,412,351],{},[19,414,355],{},[15,416,417],{},"Exemple fictif : la validation d'une facture client prend 8 secondes.",[120,419,420,425,432,435],{},[123,421,422,423,92],{},"Démarrez l'enregistreur avec l'option ",[19,424,287],{},[123,426,427,428,92],{},"Validez une facture du client ",[429,430,431],"em",{},"Maison Verte SARL",[123,433,434],{},"Arrêtez l'enregistreur et ouvrez la requête de validation.",[123,436,437,438,440,441,443],{},"Dans la ",[19,439,379],{},", cherchez la ligne dont la durée est la plus longue. Ses ",[19,442,400],{}," indiquent l'application à corriger.",[115,445,447],{"id":446},"gérer-les-enregistrements","Gérer les enregistrements",[382,449,450,456,462],{},[123,451,452,455],{},[19,453,454],{},"Réinitialiser"," supprime tous les enregistrements.",[123,457,458,461],{},[19,459,460],{},"Exporter"," (menu) télécharge les enregistrements dans un fichier JSON.",[123,463,464,467],{},[19,465,466],{},"Importer"," (menu) charge un fichier exporté. L'import ne se fait que si la liste est vide.",[469,470,473],"callout",{"color":471,"icon":472},"amber","i-heroicons-exclamation-triangle",[15,474,475],{},"L'enregistrement ralentit le serveur. Utilisez un filtre de chemin en production et arrêtez l'enregistreur dès la mesure faite. Les enregistrements sont gardés dans le cache Redis, pas en base de données. Un vidage du cache les efface.",{"title":477,"searchDepth":478,"depth":479,"links":480},"",1,2,[481,482,483],{"id":12,"depth":479,"text":13},{"id":82,"depth":479,"text":83},{"id":95,"depth":479,"text":96,"children":484},[485,487,488,489],{"id":117,"depth":486,"text":118},3,{"id":333,"depth":486,"text":334},{"id":372,"depth":486,"text":373},{"id":446,"depth":486,"text":447},"Vérifier les autorisations d'un utilisateur avec l'Inspecteur d'autorisations et trouver la cause d'une lenteur avec l'Enregistreur.","md",{"icon":493,"reviewed":494,"last_verified":495,"sources":496},"i-mdi-tools",true,"2026-11-04",[497,498,499,500,501],"frappe\u002Fcore\u002Fdoctype\u002Fpermission_inspector\u002Fpermission_inspector.json","frappe\u002Frecorder.py","frappe\u002Fcore\u002Fdoctype\u002Frecorder\u002Frecorder_list.js","frappe\u002Fcore\u002Fdoctype\u002Frecorder\u002Frecorder.json","frappe\u002Flocale\u002Ffr.po","\u002Fnext\u002Fdodock\u002Ffonctionnalites\u002Foutils\u002Fles_outils_diagnostic",{"title":5,"description":490},"2.next\u002F3.dodock\u002F04.fonctionnalites\u002F5.outils\u002Fles_outils_diagnostic","7rwAXVGKZ3yAG9Vyp1tPrZ-Zva3tiFRWo-ZfmpmmzNw",{},1793871767948]