Deskami책상 위의 작은 친구

내보내기 형식

Deskami Plus에 포함된 내보내기는 Deskami가 이 Mac에 간직하는 것과 똑같은 1분 단위 기록을 써요. 더하거나, 추정하거나, 빈칸을 채우는 것은 없어요. 이 페이지는 파일에 무엇이 들어 있는지 설명해요.

규칙

  • CSV의 빈 칸, JSON의 null은 측정 안 됨을 뜻해요. 0은 쟀고, 0이었다는 뜻이에요.
  • 열 이름은 어느 언어에서나 영어이고 고정되어 있어요. 새 export_version과 함께일 때만 바뀌어요.
  • 파일은 UTF-8이에요. CSV는 쉼표로 구분되고 첫 줄이 머리글이에요.
  • 시간은 ISO 8601 형식의 UTC예요. 예를 들면 2026-09-28T07:41:00Z. 날짜는 YYYY-MM-DD이고, 그 1분이 기록된 날짜예요.
  • 소수점은 마침표를 쓰고, 천 단위 구분 기호는 쓰지 않아요. 불리언은 true와 false예요.
  • Deskami가 무언가를 기록한 1분마다 한 줄이 있고, 기록하지 않은 1분에는 줄이 없어요.

1분 단위 열

CSV에는 다음 열이 이 순서대로 있어요. JSON에서는 같은 필드가 1분 하나하나를 이뤄요. 괄호 안의 이름은 원본 데이터베이스 파일에서의 열 이름이에요.

  • minute_utc — 시각. 그 1분의 시작, UTC. (minute_utc, Unix 초)
  • local_day — 날짜. 이 1분이 속한 날짜로, 그때 Mac이 있던 시간대를 따라요. 기록할 때 정해지고, 나중에 시간대가 바뀌어도 옮겨지지 않아요. (day_key)
  • setup_id — 정수. 사용 중이던 환경, 곧 카메라와 화면 배치의 묶음. JSON에서는 환경 목록이 setups 아래에 있어요. (profile_id)
  • seconds_at_desk — 0에서 60. 이 1분 동안 카메라에 보인 초. camera_off가 false일 때 0은 카메라가 켜져 있었지만 보이지 않았다는 뜻이에요. (present_s)
  • posture_deviation — 0 이상의 수. 머리와 어깨가 자기 기준보다 얼마나 내려가 있었는지를 1분 동안 평균한 값으로, 그때 적용되던 알림 문턱값의 배수예요. 기준에서 0, 문턱값에서 1. 자세를 재지 않았을 때는 비어 있어요. (posture_dev)
  • posture_peak — 0 이상의 수. 같은 척도로, 그 1분 안에서 가장 컸던 값. (posture_peak)
  • distance_deviation — 0 이상의 수. 기준 때보다 얼굴이 화면에 얼마나 더 가까웠는지를 같은 척도로 나타낸 값으로, 장면 속 두 눈 사이의 간격으로 읽어요. (distance_dev)
  • blinks — 정수. 눈을 잴 수 있던 동안 센 깜박임. 잴 수 없었을 때는 비어 있어요. (blinks)
  • incomplete_blinks — 정수. 가장 좁아진 순간에도 충분히 감기지 않은 깜박임. 판단할 수 없었을 때는 비어 있어요. (incomplete_blinks)
  • head_pitch_degrees — 수. 카메라가 알려주는 머리의 위아래 기울기를 도 단위로 평균한 값. 기준이 아니라 카메라에 대한 값이에요. (head_pitch)
  • confidence — 0에서 1. 얼굴 감지 신뢰도의 평균. (confidence)
  • light — 0에서 1. 얼굴 부분의 평균 밝기로, 0은 어둡고 1은 밝아요. 방의 밝기가 아니에요. (light)
  • eyes_measured — 불리언. 이 1분 동안 눈을 한 번이라도 잴 수 있었는지. false이면 blinks, incomplete_blinks, eye_observed_seconds가 비어 있어요. (eye_valid)
  • eye_observed_seconds — 0에서 60. 눈을 실제로 지켜본 초. 1분당 깜박임은 blinks × 60 ÷ eye_observed_seconds예요. (eye_observed_s)
  • look_aways — 정수. 멀리 보기를 끝까지 해낸 횟수, 곧 20-20-20 습관. 멀리 보기를 재지 않고 있었을 때는 비어 있어요. (gaze_breaks)
  • camera_off — 불리언. 이 1분 동안 카메라가 꺼져 있었는지. 직접 껐거나, 다른 앱이 카메라를 쓰고 있었거나, 권한이 없어진 경우예요. 이때 카메라 열은 비어 있고, 앱과 활동 열은 채워져 있을 수 있어요. (camera_off)
  • declared_break — 불리언. Deskami에게 휴식 중이라고 알렸는지. 카메라가 무엇을 봤든 이 1분은 책상을 떠나 있던 것으로 쳐요. (declared_break)
  • front_app — 텍스트. 그 1분의 대부분 동안 앞에 있던 앱의 번들 식별자, 예를 들면 com.apple.Safari. 그 측정을 꺼두었거나, 화면이 잠겨 있었거나, 앞에 아무것도 없었을 때는 비어 있어요. 창 제목은 절대 들어가지 않아요. (app_id)
  • app_switches — 정수. 이 1분 동안 앞에 있는 앱이 바뀐 횟수. (app_switches)
  • active_seconds — 0에서 60. 직전 15초 안에 키보드나 마우스를 건드린 초. 마지막 입력 뒤로 지난 시간만 읽고, 어떤 키인지는 절대 읽지 않아요. 그 측정을 꺼두었을 때는 비어 있어요. (active_s)
  • call_seconds — 0에서 60. 회의 앱이 앞에 있었거나, 한 앱이 마이크와 스피커를 함께 열고 있던 초. 재지 않았을 때는 비어 있고, Deskami가 이것을 재기 전에 기록된 1분도 모두 비어 있어요. (meeting_s)

JSON

JSON 파일은 객체 하나예요. 먼저 머리 부분이 와요. export_version, app_version, exported_at, time_zone(내보낸 시점의 것), database_schema_version, range(kind, from, to), 그리고 setups(id, camera_name, created_at).

그다음에 days가 오는데, 범위 안에서 기록이 있는 날마다 객체가 하나씩 있어요. 날마다 자기 요약, 1분 단위 기록, 알림을 담고 있어요.

  • local_day와 minutes_at_desk. 뒤의 것은 seconds_at_desk의 합을 60으로 나눈 값이에요.
  • breaks: 책상 앞에 있던 두 구간 사이에서 5분 이상 2시간 미만 책상을 떠나 있던 구간. 카메라가 꺼져 있던 시간은 어느 쪽으로도 세지 않아요.
  • posture_fine_minutes(posture_deviation이 1 미만)와 posture_attention_minutes(1 이상).
  • blink_rate: 눈을 지켜본 시간 동안의 1분당 깜박임. 지켜본 시간이 1분이 안 되면 null.
  • incomplete_blink_ratio: 판단할 수 있던 깜박임이 너무 적으면 null.
  • reminders_by_signal: 보여준 알림을 신호별로 센 수.
  • minutes: 위의 1분 단위 열. 1분에 객체 하나.
  • reminders: 알림 하나에 객체 하나. time_utc, local_day, setup_id, signal(posture, distance, blink, incompleteBlink, gaze 중 하나), build_up_seconds(알림 전에 문턱값을 넘어 있던 시간), recover_seconds(다시 문턱값 아래로 돌아오기까지 걸린 시간. 그 전에 측정이 멈췄으면 null), asked(기준에 대한 질문을 보여줬는지), answer(묻지 않았으면 null, 물었으면 true 또는 false)가 들어 있어요.

PDF

PDF는 표가 아니에요. 요약 그 자체 — 하루 요약, 주, 또는 월 — 를 화면에 보이는 모습 그대로 한 페이지에 인쇄한 거예요. 그 안의 숫자는 모두 화면의 숫자와 같아요.

원본 파일

설정 › 일반 › 데이터 › Finder에서 보기를 누르면 history.sqlite가 history.sqlite-wal, history.sqlite-shm과 나란히 보여요. Deskami가 실행 중일 때는 가장 최근의 1분 단위 기록이 아직 -wal 파일에 있을 수 있어요. 세 파일을 모두 복사하거나, 먼저 Deskami를 종료하세요. Deskami가 실행 중일 때 이 파일들을 지우면 몇 초 안에 비어 있는 새 기록이 시작돼요. 내보내기는 언제나 빠짐없는 스냅샷을 써요. 데이터베이스에 무엇이 들어 있는지는 개인정보 보호 페이지에 나열돼 있어요.