DeskamiUn mic prieten pe biroul tău

Formatul exportului

Exportul, parte din Deskami Plus, scrie aceeași înregistrare minut cu minut pe care Deskami o ține pe Mac-ul tău. Nimic nu e adăugat, estimat sau completat. Pagina aceasta descrie ce e în fișier.

Convenții

  • O celulă goală în CSV sau null în JSON înseamnă nemăsurat. Un 0 înseamnă măsurat și a fost zero.
  • Numele coloanelor sunt în engleză în toate limbile și sunt fixe; se schimbă doar odată cu o nouă valoare a export_version.
  • Fișierele sunt în UTF-8. CSV-ul folosește virgula ca separator și are un rând de antet.
  • Orele sunt în UTC, în format ISO 8601, de exemplu 2026-09-28T07:41:00Z. Datele sunt în forma YYYY-MM-DD: ziua calendaristică sub care a fost înregistrat minutul.
  • Numerele zecimale folosesc punctul; separatorul de mii nu apare niciodată. Valorile booleene sunt true și false.
  • Există câte un rând pentru fiecare minut în care Deskami a înregistrat ceva și niciun rând pentru minutele în care n-a înregistrat nimic.

Coloanele minutelor

CSV-ul are aceste coloane, în această ordine; în JSON aceleași câmpuri alcătuiesc fiecare minut. Numele din paranteză e coloana din fișierul brut al bazei de date.

  • minute_utc — oră. Începutul minutului, în UTC. (minute_utc, în secunde de timp Unix)
  • local_day — dată. Ziua calendaristică de care ține minutul, în fusul orar în care se afla Mac-ul atunci. Se fixează la scriere; o schimbare ulterioară a fusului orar nu o mută. (day_key)
  • setup_id — număr întreg. Configurația în uz: o cameră plus o așezare a ecranelor. În JSON configurațiile sunt listate sub setups. (profile_id)
  • seconds_at_desk — de la 0 la 60. Secundele în care camera te-a văzut în acest minut. Când camera_off e false, 0 înseamnă că camera era pornită și nu te-a văzut. (present_s)
  • posture_deviation — număr, 0 sau mai mult. Cât de jos au stat capul și umerii tăi față de propria ta referință, în medie pe minut, ca multiplu al pragului de avertizare în vigoare la acel moment: 0 la referință, 1 la prag. Gol când postura nu a fost măsurată. (posture_dev)
  • posture_peak — număr, 0 sau mai mult. Cea mai mare valoare a aceleiași măsuri în timpul minutului. (posture_peak)
  • distance_deviation — număr, 0 sau mai mult. Cu cât ți-a fost fața mai aproape de ecran decât la referință, pe aceeași scară, citit din distanța dintre ochi în imagine. (distance_dev)
  • blinks — număr întreg. Clipirile numărate cât timp ochii au putut fi măsurați. Gol când nu au putut. (blinks)
  • incomplete_blinks — număr întreg. Clipirile al căror moment cel mai îngust nu s-a apropiat destul de închidere. Gol când nu s-a putut judeca nimic. (incomplete_blinks)
  • head_pitch_degrees — număr. Înclinarea medie a capului înainte sau înapoi, în grade, așa cum o raportează camera: față de cameră, nu față de referința ta. (head_pitch)
  • confidence — de la 0 la 1. Încrederea medie a detectării feței. (confidence)
  • light — de la 0 la 1. Luminozitatea medie a zonei feței, de la 0 (întuneric) la 1 (luminos). Nu a încăperii. (light)
  • eyes_measured — valoare booleană. Ochii au putut fi măsurați cel puțin o dată în acest minut. Când e false, blinks, incomplete_blinks și eye_observed_seconds sunt goale. (eye_valid)
  • eye_observed_seconds — de la 0 la 60. Secundele în care ochii au fost urmăriți cu adevărat. Clipirile pe minut sunt blinks × 60 ÷ eye_observed_seconds. (eye_observed_s)
  • look_aways — număr întreg. Priviri în depărtare duse la capăt, obiceiul 20-20-20. Gol când privitul în depărtare nu era măsurat. (gaze_breaks)
  • camera_off — valoare booleană. Camera a fost oprită în acest minut: ai oprit-o tu, o ținea ocupată altă aplicație sau permisiunea a fost retrasă. Coloanele camerei sunt atunci goale; coloanele de aplicație și de activitate pot fi totuși completate. (camera_off)
  • declared_break — valoare booleană. I-ai spus lui Deskami că nu lucrezi. Minutul contează ca timp departe de birou, orice ar fi văzut camera. (declared_break)
  • front_app — text. Identificatorul de pachet (bundle identifier) al aplicației din față în cea mai mare parte a minutului, de exemplu com.apple.Safari. Gol când citirea aceasta era oprită, când ecranul era blocat sau când nu era nimic în față. Niciodată titlul unei ferestre. (app_id)
  • app_switches — număr întreg. De câte ori s-a schimbat aplicația din față în acest minut. (app_switches)
  • active_seconds — de la 0 la 60. Secundele în care tastatura sau mouse-ul fuseseră atinse în ultimele 15 secunde. Se citește doar timpul scurs de la ultimul eveniment, niciodată tastele. Gol când citirea aceasta era oprită. (active_s)
  • call_seconds — de la 0 la 60. Secundele în care o aplicație de apeluri era în față sau o aplicație avea deschise în același timp microfonul și difuzorul. Gol când nu s-a măsurat, inclusiv în fiecare minut înregistrat înainte ca Deskami să înceapă să măsoare asta. (meeting_s)

JSON

Fișierul JSON e un singur obiect. Începe cu un antet: export_version, app_version, exported_at, time_zone (la momentul exportului), database_schema_version, range (kind, from, to) și setups (id, camera_name, created_at).

Urmează days, câte un obiect pentru fiecare zi înregistrată din interval. Fiecare zi are propriul rezumat, propriile minute și avertismente:

  • local_day și minutes_at_desk, suma seconds_at_desk împărțită la 60.
  • breaks: intervale departe de birou de 5 minute sau mai mult și sub 2 ore, între două intervale la birou. Timpul cu camera oprită nu se numără în niciun sens.
  • posture_fine_minutes (posture_deviation sub 1) și posture_attention_minutes (1 sau mai mult).
  • blink_rate: clipiri pe minut în timpul în care ochii au fost urmăriți; null sub un minut de urmărire.
  • incomplete_blink_ratio: null când prea puține clipiri au putut fi judecate.
  • reminders_by_signal: avertismentele afișate, numărate pe semnal.
  • minutes: coloanele minutelor de mai sus, câte un obiect pe minut.
  • reminders: câte un obiect pentru fiecare avertisment, cu time_utc, local_day, setup_id, signal (posture, distance, blink, incompleteBlink sau gaze), build_up_seconds (timpul peste prag înainte de avertisment), recover_seconds (timpul până la revenirea sub prag; null când măsurarea s-a oprit înainte), asked (dacă a apărut întrebarea despre referința ta) și answer (null când întrebarea nu s-a pus, altfel true sau false).

PDF

PDF-ul nu e un tabel: e rezumatul însuși — rezumatul zilei, săptămâna sau luna — tipărit pe o pagină exact cum arată pe ecran. Fiecare număr din el e numărul de pe ecran.

Fișierul brut

Setări › General › Date › Afișează în Finder arată history.sqlite, lângă history.sqlite-wal și history.sqlite-shm. Cât timp Deskami rulează, cele mai noi minute pot fi încă în fișierul -wal; copiază toate cele trei fișiere sau ieși mai întâi din Deskami. Dacă le ștergi cât timp Deskami rulează, în câteva secunde pornește o evidență nouă, goală. Exportul scrie întotdeauna o captură completă a datelor. Ce conține baza de date e listat pe pagina de confidențialitate.