[{"data":1,"prerenderedAt":394},["ShallowReactive",2],{"\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Ftelemetrie":3,"section:\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Ftelemetrie":393},{"id":4,"title":5,"body":6,"description":377,"extension":378,"meta":379,"navigation":220,"path":389,"seo":390,"stem":391,"__hash__":392},"docs\u002F2.next\u002F3.dodock\u002F10.developpeurs\u002Ftelemetrie.md","Télémétrie",{"type":7,"value":8,"toc":369},"minimark",[9,13,22,25,30,33,102,115,133,138,145,158,162,165,187,194,198,228,254,257,260,264,271,358,365],[10,11,5],"h1",{"id":12},"télémétrie",[14,15,16,17,21],"p",{},"Dodock contient un module de télémétrie, ",[18,19,20],"code",{},"frappe.utils.telemetry",", qui peut envoyer des événements d'usage à un serveur Pulse, comme Frappe Framework. Dokos n'exploite pas encore de serveur de télémétrie. Sur une installation Dokos standard, aucun serveur n'est configuré : rien n'est capturé, mis en file ni envoyé, et le module ne fait aucun appel réseau. Sentry est désactivé.",[14,23,24],{},"Cette page s'adresse aux développeurs et aux administrateurs de serveur.",[26,27,29],"h2",{"id":28},"conditions-denvoi","Conditions d'envoi",[14,31,32],{},"Une seule condition gouverne la capture, la file d'attente et l'envoi. La télémétrie est active seulement si toutes ces conditions sont réunies :",[34,35,36,49],"table",{},[37,38,39],"thead",{},[40,41,42,46],"tr",{},[43,44,45],"th",{},"Condition",[43,47,48],{},"Où la régler",[50,51,52,64,75,91],"tbody",{},[40,53,54,61],{},[55,56,57,58],"td",{},"Une clé ",[18,59,60],{},"pulse_api_key",[55,62,63],{},"Configuration du site",[40,65,66,73],{},[55,67,68,69,72],{},"Un hôte ",[18,70,71],{},"pulse_host"," (aucun hôte par défaut)",[55,74,63],{},[40,76,77,84],{},[55,78,79,80,83],{},"La case ",[18,81,82],{},"enable_telemetry"," cochée",[55,85,86,90],{},[87,88,89],"strong",{},"Paramètres système"," (champ masqué)",[40,92,93,100],{},[55,94,95,96,99],{},"Le mode développeur désactivé, sauf si ",[18,97,98],{},"pulse_force_enabled"," est défini",[55,101,63],{},[14,103,104,105,107,108,110,111,114],{},"Un refus de l'utilisateur l'emporte toujours : si ",[18,106,82],{}," vaut 0, aucun événement n'est capturé, même avec ",[18,109,98],{},". Quand la télémétrie est inactive, la tâche planifiée ",[18,112,113],{},"send_queued_events"," vide la file sans rien envoyer.",[14,116,117,118,121,122,121,125,128,129,132],{},"Les clés facultatives ",[18,119,120],{},"pulse_ingest_endpoint",", ",[18,123,124],{},"pulse_identify_endpoint",[18,126,127],{},"pulse_alias_endpoint"," et ",[18,130,131],{},"fc_team"," règlent les adresses d'envoi et l'équipe.",[134,135,137],"h3",{"id":136},"consentement-dans-lassistant-de-configuration","Consentement dans l'assistant de configuration",[14,139,140,141,144],{},"Quand un serveur Pulse est configuré, le premier écran de l'assistant de configuration affiche la case « Share usage data to help us improve ». Elle est ",[87,142,143],{},"décochée par défaut"," : la télémétrie demande un accord explicite. Le choix est enregistré avant le premier événement de configuration. Si l'utilisateur ne coche pas la case, aucun événement n'est capturé.",[14,146,147,148,150,151,153,154,157],{},"Après l'installation, la case ",[18,149,82],{}," reste masquée dans les ",[87,152,89],{},". Seul un administrateur de serveur peut la changer, par exemple avec ",[18,155,156],{},"bench --site \u003Csite> console",".",[134,159,161],{"id":160},"événements-de-dodock","Événements de Dodock",[14,163,164],{},"Quand la télémétrie est active, Dodock envoie :",[166,167,168,172,178,184],"ul",{},[169,170,171],"li",{},"les événements de l'assistant de configuration ;",[169,173,174,177],{},[18,175,176],{},"app_heartbeat",", au plus une fois toutes les 6 heures par application ;",[169,179,180,183],{},[18,181,182],{},"switched_to_apps_navigation"," ;",[169,185,186],{},"depuis le navigateur, les pages vues (pour un site de moins de 15 jours, noms masqués) et les événements d'onboarding.",[14,188,189,190,193],{},"L'utilisateur est remplacé par un identifiant anonyme : ",[18,191,192],{},"user_"," suivi d'un hachage de l'adresse et du site.",[26,195,197],{"id":196},"envoyer-un-événement","Envoyer un événement",[199,200,205],"pre",{"className":201,"code":202,"language":203,"meta":204,"style":204},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from frappe.utils.telemetry import capture\n\ncapture(\"export_lance\", \"mon_app\", properties={\"lignes\": 120})\n","python","",[18,206,207,215,222],{"__ignoreMap":204},[208,209,212],"span",{"class":210,"line":211},"line",1,[208,213,214],{},"from frappe.utils.telemetry import capture\n",[208,216,218],{"class":210,"line":217},2,[208,219,221],{"emptyLinePlaceholder":220},true,"\n",[208,223,225],{"class":210,"line":224},3,[208,226,227],{},"capture(\"export_lance\", \"mon_app\", properties={\"lignes\": 120})\n",[14,229,230,231,234,235,121,238,121,241,121,244,121,247,121,250,253],{},"La signature est ",[18,232,233],{},"capture(event, app, **kwargs)",". Les arguments nommés vont au client Pulse : ",[18,236,237],{},"properties",[18,239,240],{},"user",[18,242,243],{},"team",[18,245,246],{},"captured_at",[18,248,249],{},"interval",[18,251,252],{},"site",". Sans télémétrie active, l'appel ne fait rien et ne met rien en file.",[14,255,256],{},"Le module est marqué comme interne : son interface peut changer sans préavis.",[14,258,259],{},"N'envoyez jamais de donnée personnelle : nom, adresse e-mail, montant, texte libre.",[26,261,263],{"id":262},"événements-de-hrms","Événements de HRMS",[14,265,266,267,270],{},"HRMS envoie ses événements avec ",[18,268,269],{},"hrms.telemetry.capture",". Il ne garde que les booléens, les nombres et certaines valeurs de liste fixes. Il n'envoie rien pendant une installation, une migration, un patch, un test ou un import.",[34,272,273,283],{},[37,274,275],{},[40,276,277,280],{},[43,278,279],{},"Type",[43,281,282],{},"Exemples d'événements",[50,284,285,313,347],{},[40,286,287,290],{},[55,288,289],{},"Validation d'un document",[55,291,292,121,295,121,298,121,301,121,304,121,307,121,310],{},[18,293,294],{},"leave_application_submitted",[18,296,297],{},"expense_claim_submitted",[18,299,300],{},"attendance_request_submitted",[18,302,303],{},"shift_request_submitted",[18,305,306],{},"payroll_entry_submitted",[18,308,309],{},"appraisal_submitted",[18,311,312],{},"interview_submitted",[40,314,315,318],{},[55,316,317],{},"Premier usage, dans les 30 jours après l'installation",[55,319,320,121,323,121,326,121,329,121,332,121,335,121,338,121,341,121,344],{},[18,321,322],{},"first_employee_created",[18,324,325],{},"shift_type_configured",[18,327,328],{},"leave_type_configured",[18,330,331],{},"salary_structure_created",[18,333,334],{},"recruitment_started",[18,336,337],{},"performance_cycle_started",[18,339,340],{},"employee_onboarding_started",[18,342,343],{},"first_salary_slip_created",[18,345,346],{},"first_attendance_marked",[40,348,349,352],{},[55,350,351],{},"Résumé quotidien",[55,353,354,357],{},[18,355,356],{},"attendance_daily_summary"," : employés actifs, pointages, présences validées et taux de participation de la veille",[14,359,360,361,364],{},"Le DocType ",[87,362,363],{},"HR Telemetry Milestone"," garde la trace des événements de premier usage, pour ne les envoyer qu'une fois.",[366,367,368],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":204,"searchDepth":211,"depth":217,"links":370},[371,375,376],{"id":28,"depth":217,"text":29,"children":372},[373,374],{"id":136,"depth":224,"text":137},{"id":160,"depth":224,"text":161},{"id":196,"depth":217,"text":197},{"id":262,"depth":217,"text":263},"Conditions d'envoi des données d'usage par le module frappe.utils.telemetry vers un serveur Pulse, consentement de l'utilisateur, et événements envoyés par Dodock et HRMS.","md",{"icon":380,"reviewed":220,"last_verified":381,"sources":382},"i-mdi-chart-line","2026-11-04",[383,384,385,386,387,388],"dodock@develop:frappe\u002Futils\u002Ftelemetry\u002F__init__.py","dodock@develop:frappe\u002Futils\u002Ftelemetry\u002Fpulse\u002Fclient.py","dodock@develop:frappe\u002Futils\u002Ftelemetry\u002Fpulse\u002Futils.py","dodock@develop:frappe\u002Fcore\u002Fdoctype\u002Fsystem_settings\u002Fsystem_settings.json","dodock@develop:frappe\u002Fhooks.py","hrms@develop:hrms\u002Ftelemetry.py","\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Ftelemetrie",{"title":5,"description":377},"2.next\u002F3.dodock\u002F10.developpeurs\u002Ftelemetrie","TKpZvm5YoBkLTPwL4BcB2BS4Bk_tr812AiMO89U9ZB4",{},1793871753889]