아잉체크

근무 시간을 재고 팀 현황을 보는 맥·아이폰 앱

View the Project on GitHub yehsung/check

개인정보 원칙

aing-check는 근무 시작/종료 기록과 팀 상태 표시, 앱 사용자가 함께 보는 AI 도구 사용량 숫자, 콕 찌르기, 그리고 미니게임 순위를 다룹니다. 내 근무 시작/종료 시각·근무 시간·근무 기록은 같은 팀 안에서만 보입니다. 다만 콕 찌르기 대상 목록·AI 토큰 순위판·미니게임 순위표는 팀 단위가 아니라 같은 앱을 쓰는 모든 사용자가 서로 보는 화면입니다 — 무엇이 어디까지 보이는지는 아래 “누가 무엇을 볼 수 있나”에 적었습니다.

수집하는 데이터

로그인 비밀번호는 Supabase Auth 요청에만 사용하며 앱 저장소에 저장하지 않습니다. 다음 실행 때 편하게 이어 쓰도록 이메일·별명·사용자 식별자 UUID는 이 Mac의 사용자 기본값(UserDefaults)에, 로그인 세션 토큰(액세스/리프레시)은 macOS 로그인 키체인에 저장됩니다. 로그아웃하거나 세션이 만료되어 재로그인이 필요해지면 저장된 토큰은 지워집니다.

수집하지 않는 데이터

자동 근무 시작(넛지) 기능

쉬는 중에 컴퓨터를 한동안 쓰고 있으면 앱이 근무를 자동으로 시작합니다. 이 기능은 시스템이 알려 주는 “마지막 입력 후 경과 시간” 숫자 하나만 확인하며(운영체제가 권한 없이 제공하는 값), 무엇을 입력했는지·화면에 무엇이 있는지는 전혀 접근하지 않습니다. 이 기능이 보는 숫자 자체는 로컬에서만 쓰입니다. 다만 근무 중에는 그 숫자에서 계산한 “마지막으로 만진 시각” 하나를 서버로 보냅니다(아래 문단).

자동 시작은 몰래 일어나지 않습니다. 시작하는 순간 캐릭터가 말풍선으로 알려 주며(캐릭터를 숨겨 둔 경우에는 메뉴바 아이콘이 근무중으로 바뀝니다), 원치 않으면 메뉴바 팝오버에서 근무 종료 를 누르면 됩니다.

자리 비움 자동 근무종료

근무를 켜 둔 채 잠들거나 잊고 자리를 뜨는 일이 있어서, 오래 아무것도 만지지 않으면 앱이 근무를 자동으로 마감하도록 만들어져 있습니다. 마감 시각은 마지막으로 만진 시각이며, 자리를 비운 뒤의 시간은 근무로 세지 않습니다. 마감 임계는 서버가 정하는데, 지금은 그 값을 보정하는 중이라 무입력만으로는 마감되지 않고 잠자기(뚜껑 닫음)·신호 끊김에 의한 자동 마감만 동작합니다 — 그동안에도 아래의 시각 전송과 순위판 반영은 그대로입니다.

이 판단에 쓰는 것은 시각 하나뿐입니다.

잠깐 비운 것이면 돌아왔을 때 자동으로 이어집니다. 자동 마감 뒤 복원할 수 있는 동안에는 내 메뉴바가 “오프” 대신 자리비움으로 바뀌어 알려 주고, 다시 컴퓨터를 만지면 버튼을 누르지 않아도 그 근무가 재개됩니다. 되살아나는 시간은 마감 시각 기준 30분까지입니다 — 그보다 오래 비운 시간은 근무로 복구되지 않습니다(v0.2.46 에서 최대 6시간 되돌리기를 이 방식으로 바꿨습니다. 잠든 시간이 근무로 되살아나는 경우가 실제로 있었기 때문입니다).

팀원에게는 자동 마감과 직접 누른 근무종료가 구분되어 보이지 않습니다(마감 사유는 팀 화면에 내려 주지 않습니다). 다만 자리를 비운 것이 팀에 전혀 안 보이는 것은 아닙니다 — 있는 그대로 적습니다.

누가 무엇을 볼 수 있나

로그인하지 않은 사람은 아래 어느 목록·숫자도 볼 수 없습니다(예외는 아바타 이미지 파일 하나 — 공개 버킷에 저장되므로 주소를 아는 사람은 로그인 없이 열 수 있습니다). 로그인한 사용자 기준으로, 보이는 범위는 셋으로 나뉩니다.

같은 팀 안에서만 보이는 것 — 내 근무 시작/종료 시각, 근무 시간과 지난 근무 기록, 팀원 목록에 보이는 각자의 상태, 그리고 “마지막으로 만진 시각”(아래). 팀 밖의 사람에게는 이런 개인별 숫자가 내려가지 않습니다. 팀별 현황(순위판)은 여러 팀을 나란히 놓는 리그라 앱 사용자 전체가 보지만, 거기 오르는 것은 팀 이름·주간 목표·팀 합계 시간·근무 중 인원수·인원수와, 팀원 전원이 같은 센터일 때만 붙는 그 팀의 센터 표시뿐이고 개인별 숫자는 없습니다(센터가 섞인 팀이나 값이 없는 팀원이 있는 팀에는 표시하지 않습니다).

같은 앱을 쓰는 모든 사용자에게 보이는 것 — 팀과 무관하며, 팀에 아직 들어가지 않은 사용자도 포함됩니다.

나만 보는 것 — 루비 잔량과 재화 기록, 캐릭터 소유 기록, 그리고 내가 차단한 사람 목록입니다. 다른 사용자에게는 목록에도 오르지 않습니다. 다만 착용 캐릭터는 나만 보는 값이 아닙니다 — 착용값은 프로필 사진을 올렸는지와 상관없이 같은 앱을 쓰는 모든 사용자의 앱에 전달되고, 프로필 사진을 올리지 않았거나 올린 사진을 불러오지 못하면 위 목록·순위표의 아바타 자리에 내 착용 캐릭터가 뜹니다. 또 내가 울트라 찌르기를 보낸 상대의 화면에는 그 5초 동안 내 캐릭터가 뜹니다.

본인과 운영자만 보는 것 — 버그·요청사항 제보와 신고입니다. 본문·앱/OS 버전·보낸 시각은 쓴 사람과 운영자에게만 보이고, 팀원에게도 다른 사용자에게도 보이지 않습니다. 운영자에게는 제보자의 별명·아바타가 함께 보입니다 — 누구에게 답할지 알아야 하기 때문입니다. 계정이 지워진 뒤에는 작성자 연결이 끊겨 아무의 것도 아닌 글이 되고, 그때부터는 운영자만 봅니다. 신고도 같습니다 — 사유·자유 입력·신고된 메시지 본문은 신고한 사람과 운영자에게만 보이고, 신고당한 사람에게는 보이지 않습니다.

“마지막으로 만진 시각”

근무 중 서버로 보내는 “마지막으로 만진 시각”은 팀 단위로 열람되는 표에 저장됩니다. 앱 화면은 이 값을 어디에도 보여 주지 않지만, 같은 팀에 있는 사람이 API를 직접 호출하면 이 시각을 조회할 수 있습니다(30초 해상도). 팀 밖의 사람이나 로그인하지 않은 사람은 볼 수 없습니다.

이 칸만 팀원에게 가리는 것은 기술적으로 막혀 있습니다 — 열람 권한이 행 단위(팀)라서, 칸 하나를 가리면 앱 자신의 갱신까지 함께 깨집니다. 그래서 기술로 가리는 대신 여기 사실대로 적습니다. 담기는 것은 시각 하나뿐이고(무엇을 입력했는지는 없습니다), 근무 중이 아닐 때는 보내지 않으며, 쓰임새는 자리 비움 판정과 순위판 반영 두 가지입니다.

개인 기록(근무 리듬·주간 회고·12주 잔디)

요일별·시간대별 근무 리듬과 지난주 회고는 이미 저장된 내 근무 시작/종료 기록만으로 내 Mac에서 계산해 보여 주는 화면입니다. 이를 위해 새로 수집하거나 서버에 저장하는 데이터는 없으며, 팀 안팎 누구에게도 보이지 않습니다. 최근 12주의 날짜별 근무 잔디도 같은 기록에서 같은 방식으로 내 Mac이 계산하며, 본인만 볼 수 있습니다.

요청하지 않는 권한

앱은 Accessibility, Screen Recording, Camera, Microphone, Location 권한을 요청하지 않아야 합니다.

아이폰 앱

아이폰 앱(aing-check, iOS)은 Mac 앱과 같은 계정·같은 서버를 쓰는 동반 앱입니다. 위 “수집하는 데이터”의 메시지·읽음 기록·오늘 할 일·주간 목표·미니게임 기록·루비·캐릭터·프로필·제보는 폰에서도 같은 규칙으로 보이고 쓰입니다. 폰에서 따로 더하거나 빼는 것은 아래뿐입니다.

폰이 하지 않는 것

폰에서도 하는 것 (2026-09-18 추가)

폰에서 더 저장하는 것

폰이 요청하는 권한

알림 권한 하나뿐입니다(처음 로그인한 뒤 설명 화면을 먼저 보여 주고 묻습니다). 카메라·마이크·위치·연락처·사진 권한은 요청하지 않습니다 — 프로필 사진은 사진 전체 접근 권한 없이 시스템 사진 선택 화면에서 고른 한 장만 받습니다.

계정 삭제

아이폰 앱에서 직접 지웁니다 — 나 → 설정 → 계정 삭제. 본인 확인을 위해 비밀번호를 한 번 더 받고, 확인하면 바로 지웁니다.

지워지는 것: 계정(로그인 자체)·프로필(별명·사진·센터)·근무 기록·메시지와 읽음 위치·할 일·캐릭터와 루비·상점 구매 내역· 미니게임 기록·오목 기록과 채팅·AI 토큰 기록·기기 등록과 알림 설정. 되돌릴 수 없고, 맥 앱도 같이 로그아웃됩니다.

같이 처리되는 것:

맥 앱에는 아직 삭제 버튼이 없습니다 — 맥만 쓰는 분은 제보(설정 → 제보)로 요청하면 운영자가 서버에서 같은 처리를 합니다.