서비스 이용 조건은 이용약관에서 확인하실 수 있습니다.
광고 식별자를 쓰지 않고, 제3자 분석·광고·크래시 리포팅 SDK를 하나도 넣지 않았으며, 어떤 데이터도 제3자에게 팔거나 제공하지 않습니다. 오류 리포트는 외부 업체를 거치지 않고 우리 서버로만 갑니다.
Android에서는 Apple 건강이 아니라 Health Connect에서 읽습니다. 읽는 항목이 iOS보다 적고(읽기 11종), Health Connect에 쓰는 것은 여러분이 직접 입력하신 낮잠 하나뿐입니다. 자세한 것은 §3-A에 있습니다.
| 항목 | 필수/선택 | 수집 시점 | 목적 | 보관 기간 |
|---|---|---|---|---|
| 이메일 주소 | 계정 생성 시 필수 | 회원가입 | 계정 식별, 로그인, 비밀번호 재설정 메일 발송 | 탈퇴 시까지 |
| 비밀번호 | 계정 생성 시 필수 | 회원가입 | 로그인 인증 | 탈퇴 시까지 (해시로만 저장 — 원문을 저장하지 않으며, 저장된 값에서 비밀번호를 복원할 수 없습니다) |
표시 언어 (ko/en/ja/es 중 하나) |
필수 (기기 언어로 자동 설정, 변경 가능) | 회원가입·설정 변경 | 앱 화면과 인증 이메일을 같은 언어로 보여주기 | 탈퇴 시까지 |
| 계정 식별자(UUID), 가입 시각, 이메일 확인 시각, 마지막 로그인 시각 | 필수 (자동 생성) | 회원가입·로그인 | 계정 관리, 부정 사용 확인 | 탈퇴 시까지 |
계정을 만들지 않으면 위 항목은 하나도 수집되지 않습니다.
| 항목 | 필수/선택 | 목적 |
|---|---|---|
| Apple 건강(HealthKit, iOS) 또는 Health Connect(Android)에서 읽는 건강 데이터 | 선택 — 권한을 허용하지 않아도 앱은 실행됩니다 (점수만 계산되지 않습니다) | 회복 점수·컨디션 단계·운동 추천 계산. Android에서 읽는 항목은 iOS보다 적습니다 — §3-A |
| 위 데이터에서 계산한 파생값 (일별 요약, 점수, 기준선) | 선택 (건강 권한을 허용한 경우 자동) | 계산 재현, 지난 7일 기록 표시 |
| 기기 동작 센서로 센 오늘의 걸음 수 (iOS) | 선택 — 동작 및 피트니스 권한을 허용하신 경우에만 | 건강 앱에서 오늘 걸음 수를 받지 못할 때 걸음 수 카드에 보여 드리기. 기기에 저장하지 않고 점수에도 넣지 않습니다 (§3 «자체 만보기») |
| 직접 입력한 낮잠 (시작·종료 시각), 카페인 (mg), 음주 (잔 수) | 선택 — 입력한 경우에만 | 낮잠은 수면 시간에, 카페인·음주는 그날의 생활 기록에 반영. Apple 건강 쓰기 권한을 허용한 항목은 Apple 건강에 저장되고, 허용하지 않은 항목은 기기 안에만 저장됩니다 (쓰기 권한은 처음 안내에서 세 항목을 함께 여쭤보고, 그 전에 안내를 마치신 기기에서는 처음 저장하실 때 그 항목만 여쭤봅니다 — §3) |
| 생년월일(연·월·일)과 성별 | 선택 — 없어도 앱은 동작합니다 (나이에 맞춘 안내만 빠집니다) | 나이에 맞는 주간 운동량 권고 구간과 목표 심박대 계산. 생년월일은 오늘의 사주풀이를 켜신 경우 그 계산에도 씁니다 (§3-B) |
| 태어난 시각(시:분), 태어난 나라와 시간대 | 선택 — 오늘의 사주풀이를 켜신 경우에만 여쭤보며, 시각은 «모름»으로 넘기실 수 있습니다 | 오늘의 사주풀이 계산 (§3-B). 나라와 시간대는 태어난 시기의 표준시를 맞추는 데에만 씁니다 |
| 앱 설정 (표시 언어, 알림 시각, 수면 목표 시간, 온보딩 완료 여부, 축하 카드 표시 상태, 안내를 다시 묻지 않기 위한 표시) | 필수 (앱 동작에 필요) | 앱 동작 |
| 목표 취침 시각 (직접 정하신 경우) | 선택 — 정하지 않으셔도 앱은 동작합니다 | 낮잠이 목표 취침 시각에 가까워 그날 밤 잠에 영향을 줬는지 보는 계산에만 씁니다. 기기 안에만 저장되고 서버로 보내지 않습니다 |
| 아침 컨디션 기록 — 일어났을 때 개운한 정도(1~5)와 오후 졸림 (답하신 경우) | 선택 — 넘기셔도 앱은 동작합니다 | 지난 기록을 날짜별로 보여 드리는 데 씁니다. 기기 안에만 저장되고 서버로 보내지 않습니다. 직접 '파일로 내보내기'를 누르시면 답만 담은 파일을 여러분이 고른 곳으로 넘깁니다 |
| 기기 시간대 | 필수 | "오늘"의 기준 날짜 계산. 기기 시간대가 두 시간 이상 바뀌면 앱이 여행·시차로 보고 자동으로 판정합니다 — 최근 28일의 시간대 차이(도시 이름이 아니라 UTC와의 시차)만 기기 안에 보관하고, 서버로 보내지 않으며, 설정에서 언제든 끌 수 있습니다 |
| 로그인 세션 토큰 | 계정을 만든 경우 | 매번 로그인하지 않아도 되게 하기 |
생년월일·성별은 Apple 건강 프로필에서 먼저 찾습니다. 건강 앱에 이미 적혀 있으면 그 값을 읽어 오고(같은 것을 두 번 적게 하지 않기 위해서입니다), 없거나 권한을 허용하지 않으셨으면 그 값이 실제로 쓰이는 자리에서 한 번 여쭤봅니다. 답하지 않으셔도 되고, 거절하시면 다시 조르지 않습니다. 어느 쪽이든 이 값은 기기 밖으로 나가지 않습니다.
위치 권한을 요청하지 않습니다. 시간대는 iOS가 알려주는 시간대 설정값만 읽으며, 위치를 조회하지 않습니다. 연락처·사진·마이크·카메라 권한도 요청하지 않습니다.
앱이 멈추거나 화면이 잘못 뜰 때 무엇이 잘못됐는지 알기 위한 기록입니다. 처음 실행할 때 한 번 여쭤보고, 켜지 않으면 아무것도 전송되지 않습니다 — 기기 안에 쌓아 두지도 않습니다. 설정 → 오류 리포트에서 언제든 끄실 수 있고, 끄면 그 즉시 전송이 멈추고 기기에 남은 기록도 지워집니다.
보내는 것
| 항목 | 예 |
|---|---|
| 화면·동작 | 어떤 화면을 열었는지, 어떤 버튼을 눌렀는지, 온보딩 몇 번째 단계인지 |
| 앱 상태 | 분석이 성공했는지·데이터가 없었는지·권한이 없었는지, 오늘의 점수가 화면에 떴는지 여부 |
| 오류 내용 | 오류 종류·코드·메시지, 크래시 시점의 함수 호출 순서, 직전에 한 동작 20개의 이름 |
| 기기·앱 | iOS 버전, 기기 모델명(예: iPhone16,2), 앱 버전과 빌드 번호, 표시 언어 |
| 설치 식별자 | 이 설치를 구분하기 위해 앱이 만든 무작위 값(UUID)과, 그 식별자가 이 설치의 것임을 확인하는 무작위 비밀값. 서버에는 비밀값 자체가 아니라 되돌릴 수 없게 바꾼 값(해시)만 저장합니다. 둘 다 기기 고유번호도, 광고 식별자도 아닙니다 |
보내지 않는 것
수면 시간·심박·심박변이도·손목 온도·호흡수·체중·걸음 수·운동 기록·낮잠 시각 등 모든 건강 수치와, 그것으로 계산한 오늘의 점수·컨디션 단계. 이메일 주소, 비밀번호, 여러분이 입력한 자유 텍스트도 보내지 않습니다.
점수와 관련해서는 값이 아니라 상태만 남습니다. "점수가 나왔음 / 아직 계산 중 / 데이터 없음 / 권한 없음" 네 가지 중 하나이며, 몇 점인지는 전송되지 않습니다. 시간이 담기는 항목은 실제 값 대신 구간(예: "0.5~2초")으로 바꾼 뒤 보냅니다.
오류 메시지와 호출 순서에서 이메일 주소·파일 경로·긴 임의 문자열은 전송 전에 기기 안에서 자리표시자로 바꿉니다.
계정과의 연결: 로그인 상태에서 보낸 기록은 계정에 연결됩니다. 로그인하지 않았다면 설치 식별자만 남고 누구인지 알 수 없습니다. 탈퇴하면 계정에 연결된 기록도 함께 삭제됩니다.
삭제: 설정 → 오류 리포트 → "보낸 기록 삭제"를 누르면 서버에 있는 이 기기의 기록이 삭제되고, 이후 기록은 새 설치 식별자로 남습니다.
보낸 기록을 지우거나 이어 쓸 수 있는 것은 이 기기뿐입니다. 설치 식별자만 안다고 해서 그 기록을 지우거나 그 이름으로 기록을 보낼 수 없습니다 — 전송과 삭제에는 위의 비밀값이 함께 있어야 합니다. 식별자와 비밀값은 오류 리포트를 켜시면 만들어져 이 기기의 iOS 키체인에 보관됩니다. 오류 리포트를 끄셔도 이미 보낸 기록을 지우실 수 있도록 남겨 두며, 키체인에 있으므로 앱을 지웠다 다시 설치해도 남을 수 있습니다.
지운 뒤에 남는 것: 서버에서 이 기기의 기록이 지워지면(보낸 기록 삭제·탈퇴·보관 기간 만료 모두) 지운 설치 식별자를 되돌릴 수 없게 바꾼 값(해시)과 지운 시각이 남고, 직접 삭제하신 경우에는 그 삭제가 끝났음을 다시 확인하는 데 쓰는 검증값이 함께 남습니다. 지운 식별자로 기록이 다시 쌓이지 않게 하고 삭제가 끝났음을 확인하기 위한 것이며, 계정·IP 주소·기록 내용·비밀값은 담지 않습니다. 이 값은 지우지 않고 보관합니다 (§9).
IP 주소: 지나치게 많은 요청을 막기 위해 요청을 보낸 IP 주소를 쓰지만 원문은 저장하지 않습니다. 서버가 되돌릴 수 없는 값으로 바꿔 5분 단위 요청 수를 세는 데에만 쓰고, 하루가 지난 집계는 지웁니다 (§9).
앱은 여러분이 Apple 건강 권한 화면에서 명시적으로 허용한 범위 안에서만 아래 데이터를 읽습니다. 읽은 데이터는 기기 안에서 회복 점수를 계산하는 데에만 씁니다.
Apple 건강에 쓰는 것은 여러분이 앱에서 직접 입력하신 세 가지입니다 — 낮잠, 카페인, 음주.
| 여러분이 입력하신 것 | Apple 건강에 저장되는 항목 | 값의 단위 |
|---|---|---|
| 낮잠 (시작·종료 시각) | 수면 분석(sleepAnalysis) |
시각 구간 |
| 카페인 | 카페인 섭취량(dietaryCaffeine) |
mg |
| 음주 | 음주 기록(numberOfAlcoholicBeverages) |
잔 수 |
저장은 여러분이 값을 적고 저장을 누르신 그때 일어납니다. 그때 적어 주신 값 그대로 남습니다. 앱이 읽어 온 건강 수치나 계산한 점수를 Apple 건강에 되돌려 쓰는 일은 없습니다.
한 가지 예외가 있고, 그것은 여러분이 켜신 경우에만 동작합니다. 설정의 안 마신 날 자동 기록을 켜 두시면, 하루가 끝났을 때 카페인·음주 기록이 하나도 없는 날에 한해 앱이 그 날 밤 11시 59분으로 0을 대신 적습니다. 이 스위치는 기본으로 꺼져 있고, 켜신 뒤의 날에만 적용되며, 언제든 다시 끄실 수 있습니다.
자동으로 적히는 값은 0뿐입니다. 다른 앱이 이미 적어 둔 날에는 아무것도 얹지 않고, 아직 끝나지 않은 오늘은 건드리지 않으며, 켜기 전의 날은 그대로 둡니다. 이 기능도 Apple 건강 쓰기 권한이 허용된 항목에만 쓰고, 허용하지 않으신 항목은 기기 안에만 남습니다.
왜 0을 적는가: 마시지 않은 날이 기록이 없는 날과 같은 얼굴이 되면, 회복 점수를 계산할 때 절제한 날이 데이터가 없는 날로 묻힙니다. 이 기능은 그 두 가지를 갈라 놓기 위한 것입니다.
쓰기 권한을 여쭤보는 때는 두 가지입니다. 앱을 처음 설치하고 안내를 따라가시면, 읽기 권한과 함께 이 세 항목(낮잠·카페인·음주)의 쓰기 권한을 그 자리에서 한 번에 여쭤봅니다. 이 개정 전에 이미 안내를 마치신 기기에서는 그때 여쭤보지 않았으므로, 그 항목을 처음 저장하려 하실 때 그 항목 하나만 따로 여쭤봅니다 — 낮잠을 적으실 때는 수면 항목 하나만, 카페인을 적으실 때는 카페인 하나만입니다.
어느 쪽이든 여쭤보는 것은 iOS의 권한 창이고, 허용하지 않으실 수 있습니다. 허용하지 않으시면 그 기록은 Apple 건강에 쓰이지 않고 기기 안에만 저장되며, 앱은 그대로 동작합니다. 읽기 허용과 쓰기 허용은 서로 다른 것입니다 — 한쪽을 허용하셨다고 다른 쪽이 함께 허용되지는 않습니다.
직접 입력하지 않으신 기록은 고치거나 지우지 않습니다. 방금 저장하신 기록은 저장 직후 잠깐 "되돌리기"로 지우실 수 있고, 그때 지워지는 것은 그 기록 하나뿐입니다. 그 시간이 지나면 앱에서는 지울 수 없고 Apple 건강에서 지우셔야 합니다.
읽기 대상 (구현 실측 17종 + 사용자 특성 2종):
회복 점수를 만드는 항목:
점수에 거들기만 하는 생활 기록 항목 (없어도 점수는 나옵니다):
점수에는 전혀 들어가지 않고, 안내 문구에만 쓰이는 항목:
Apple 건강 프로필에 적힌 사용자 특성 2종도 읽습니다. 날짜별로 쌓이는 기록이 아니라 프로필에 한 번 적혀 있는 값이라 위 번호 목록과 따로 적습니다.
허용은 항목별로 하실 수 있고, 꺼 두신 항목은 읽히지 않습니다. 10~15번은 회복 점수를 만드는 데 꼭 필요한 항목이 아니라, 이미 만들어진 점수를 조금 올리거나 내리는 데에만 쓰입니다. 16~17번과 사용자 특성 2종은 점수를 전혀 바꾸지 않습니다 — 오늘의 건강 카드 아래에 붙는 안내 한 줄, 운동 추천에 곁들이는 참고 값, 새 측정값이 들어왔을 때의 축하 카드, 그리고 나이에 맞춘 운동량 구간과 목표 심박대를 만드는 데에만 쓰입니다.
기기 안 데이터베이스에 저장되는 것은 파생값과 요약입니다.
이 데이터는 어떤 서버로도 전송되지 않고, iCloud에도 저장되지 않습니다. 계정에 로그인해도 달라지지 않습니다 — 계정과 건강 데이터는 연결되어 있지 않습니다.
건강 앱에서 오늘 걸음 수를 받지 못할 때(건강 앱을 연결하지 않으셨거나 오늘 값이 아직 없을 때), 앱은 iPhone의 동작 센서로 오늘 0시부터의 걸음 수를 세어 오늘 탭의 걸음 수 카드에 보여 드립니다. 이때 iOS가 동작 및 피트니스 권한을 여쭤봅니다.
Android에서는 Apple 건강 대신 Health Connect에서 건강 데이터를 읽습니다. 원칙은 iOS와 같습니다 — 권한 화면에서 명시적으로 허용하신 항목만, 기기 안에서 회복 점수를 계산하는 데에만 씁니다. 읽은 데이터와 그것으로 만든 파생값은 어떤 서버로도 전송되지 않고, 어떤 클라우드에도 저장되지 않으며, 제3자에게 제공·판매되지 않고 광고에 쓰이지 않습니다.
회복 점수를 만드는 항목:
점수에는 들어가지 않고 값만 보여 드리는 항목:
점수에 거들기만 하는 생활 기록 항목 (없어도 점수는 나옵니다):
허용은 항목별로 하실 수 있고, 꺼 두신 항목은 읽히지 않습니다.
Health Connect에 쓰는 것은 여러분이 직접 입력하신 낮잠 하나뿐입니다(수면 세션). 저장을 누르신 그때 쓰고, 적어 주신 시작·종료 시각 그대로 남습니다. 수면 단계를 나누지 않은 한 구간으로, 직접 입력한 기록이라는 표시와 이 앱이 붙인 고유 번호를 달아 씁니다.
쓰기 권한은 처음 연동할 때 읽기 권한과 함께 여쭤봅니다. 그때 허용하지 않으셨으면 낮잠을 저장하려 하실 때 그 자리에서 다시 여쭤봅니다. 허용하지 않으시면 그 낮잠은 Health Connect에 쓰이지 않고 기기 안에만 저장되며, 회복 점수에는 그대로 반영됩니다. 원하실 때 낮잠 기록 화면의 "Health Connect에 다시 저장"으로 같은 기록을 쓸 수 있고, 앱이 알아서 다시 보내지는 않습니다. 설정 화면에서도 쓰기 권한을 켜는 방법을 안내합니다.
기기 안에 남는 낮잠 장부. 저장이 제대로 끝났는지 확인하고, 응답이 끊겼을 때 같은 낮잠을 두 번 쓰지 않고 다시 시도하기 위해 앱은 기기 안 데이터베이스에 두 가지를 둡니다.
Health Connect에서 읽어 온 수면 기록은 이 장부에 담지 않습니다. Health Connect에 쓰였는지 확인되지 않은 낮잠을 쓰였다고 표시하지 않습니다.
180일이 지나면 자동으로 지웁니다. 낮잠이 반영된 날로부터 180일이 지난 장부 항목은 앱이 건강 데이터를 새로 읽을 때 기기에서 지웁니다. 이때 Health Connect에 이미 쓰인 기록은 건드리지 않습니다.
하나씩 되돌릴 수 있습니다. 낮잠 입력 화면의 목록에서 되돌리기를 누르시면 그 낮잠 하나만 지웁니다. Health Connect에서는 앱이 붙여 둔 고유 번호로 그 기록만 찾아 지우고, 시간 범위로 지우지 않으므로 다른 앱이 쓴 수면 기록은 지워지지 않습니다.
앱이 읽어 온 수치나 계산한 점수를 Health Connect에 되돌려 쓰는 일은 없습니다. 직접 입력하지 않으신 기록은 고치거나 지우지 않습니다.
Health Connect에는 데이터 항목과 별개로 요청하는 특수 권한이 있고, 이 앱이 요청하는 것은 과거 데이터 읽기 하나입니다. 허용하지 않으셔도 앱은 동작합니다.
앱을 지웠다 다시 설치하시면 권한이 모두 사라지고, 30일 제한도 다시 처음부터 시작합니다.
이 문서를 iOS 이용자와 Android 이용자가 같이 읽으므로, 무엇이 왜 다른지를 밝힙니다. 다르게 만들고 싶어서 다른 것이 아니라, 두 플랫폼이 주는 것이 다릅니다.
| iOS (§3) | Android (§3-A) | 왜 |
|---|---|---|
| 읽기 17종 + 프로필 2종 | 읽기 11종 | ① Health Connect에 데이터 유형 자체가 없는 것이 있습니다 — 음주, 수면 중 호흡 방해, 햇빛 아래에서 보낸 시간. ② 체성분은 1차 출시 범위에서 뺐습니다. 피부 온도는 2026-09-05에 들어왔습니다(§3-A-1의 8번). ③ 마음챙김은 아직 안정판에서 열려 있지 않습니다. ④ iOS가 심박 간격과 심박변이도(SDNN) 두 타입으로 읽는 것을 Android는 rMSSD 한 타입으로 읽습니다(아래 행) |
| 심박 간격(원자료)을 읽어 앱이 rMSSD를 직접 계산 | 제조사가 계산해 둔 rMSSD를 읽음 | Health Connect는 원시 심박 간격을 주지 않습니다. 이름이 같아도 같은 숫자가 아닙니다 |
| Apple 건강에 쓰기 3종 (낮잠·카페인·음주) | 쓰기 1종 (낮잠) | 음주는 Health Connect에 유형 자체가 없고, 카페인 쓰기는 아직 넣지 않았습니다 |
| 생년월일·성별을 Apple 건강 프로필에서 읽어 옴 | 건강 앱에서 읽지 않습니다. 그 값이 실제로 쓰이는 자리에서 앱이 한 번 여쭤보고, 답하시면 기기 안에만 저장합니다 | Health Connect에는 생년월일·성별 같은 프로필 항목이 없습니다 |
| 읽기 허용 여부를 앱이 알 수 없어 "데이터가 오는지"로 추정 | 앱이 실제 허용 상태를 압니다 | Health Connect가 알려줍니다. 그래서 연동 결과 화면이 추정 대신 사실을 말합니다 |
읽을 수 없는 항목은 점수에서 빠진 채로 나머지를 다시 정규화합니다. 그래서 같은 분이 iPhone과 Android에서 서로 다른 점수를 받으실 수 있습니다. 이건 어느 한쪽이 후하거나 박한 것이 아니라, 그날 무엇을 읽을 수 있었느냐에 따라 방향이 바뀝니다. 앱이 오늘 실제로 무엇을 보고 있는지는 점수 상세 화면에서 확인하실 수 있습니다.
기기 설정 → 보안 및 개인정보 보호 → Health Connect(기기에 따라 Health Connect 앱) → 앱 권한 → 오늘 운동 에서 언제든 회수하실 수 있습니다.
앱을 삭제하면 기기 안의 파생 데이터가 함께 삭제되고, Health Connect에 남아 있는 원본 데이터는 영향받지 않습니다. 그 원본은 Health Connect에서 직접 관리하시면 됩니다.
설정에서 오늘의 사주풀이를 켜시면, 태어난 날(과 아시는 경우 시각)로 사주를 기기 안에서 계산해 오늘의 풀이 카드를 보여 드립니다. 켜지 않으시면 아래의 일은 하나도 일어나지 않습니다. 회복 점수·컨디션 단계·운동 추천에는 영향을 주지 않습니다.
| 무엇을 쓰나 | 생년월일(§2-2 — 나이 계산에 이미 쓰는 값), 그리고 켜실 때 추가로 여쭤보는 태어난 시각(시:분) 과 태어난 나라·시간대. 시각은 «모름»으로 넘기실 수 있고, 그러면 시각 없이 계산합니다. 나라는 직접 고르시는 값이며, 위치 권한을 요청하지 않고 위치를 조회하지 않습니다 |
| 어디서 계산하나 | 기기 안에서만. 계산에 네트워크를 쓰지 않고, 풀이 문장은 앱에 들어 있는 정해진 문구로 만듭니다. 사주 문장을 만들거나 다듬기 위해 서버나 AI 서비스로 보내는 것은 없습니다 |
| 무엇이 기기에 남나 | 태어난 시각·나라·시간대와 켜짐 여부, 사주풀이를 권해 드린 기록(다시 조르지 않기 위한 표시), 피드에 남는 그날의 사주 기록(생년월일에서 계산한 간지 값 — 정수 여섯 개 또는 여덟 개). 홈 화면 위젯에는 오늘의 풀이 한 줄이 들어갑니다 (§12) |
| 기기를 떠나나 | 떠나지 않습니다. 오류 리포트를 켜신 경우에도 사주 설정을 바꿨다는 사실만 남고, 생년월일·태어난 시각·나라·사주 글자는 보내지 않습니다 |
| 끄거나 지우면 | 설정 → 오늘의 사주풀이에서 끄거나 지우실 수 있습니다. 끄시면 지난 사주 기록의 간지 값이 지워지고, 지우시면 태어난 시각·나라·시간대도 함께 지워집니다. 생년월일은 나이에 맞춘 운동량 계산에 쓰이므로 남습니다 |
Android에는 알림이 없습니다 (2026-09-04 기준). 알림 권한을 요청하지 않고, 알림을 만드는 코드도 없습니다. 홈 화면 위젯은 앱이 마지막으로 계산해 기기에 저장해 둔 값을 그리는 것이라, 위젯이 뜬다고 해서 알림이 오는 것은 아닙니다.
계정 기능(회원가입·로그인·비밀번호 재설정·계정 삭제)을 쓰면, 서버 플랫폼이 아래 로그를 자동으로 남깁니다. 우리가 따로 수집하는 것이 아니라 인증 서비스가 자체적으로 기록하는 것이며, 우리는 장애 대응과 부정 사용 확인 목적으로만 봅니다.
| 로그 | 담기는 정보 | 보관 기간 |
|---|---|---|
| 인증 감사 로그 | 이벤트 종류(가입·로그인·재설정 요청 등), 이메일 주소, 접속 시각, 사용자 에이전트(앱·OS 버전), IP 주소 | 7일 (Supabase Pro 플랜의 로그 보존 기간) |
| API 요청 로그 | 요청 경로·메서드·응답 코드·시각 | 7일 (동일) |
건강 데이터는 이 로그에 들어가지 않습니다 — 서버로 전송되지 않으므로 애초에 로그에 남을 수 없습니다.
계정 기능 제공을 위해 아래에 처리를 위탁합니다.
| 수탁자 | 위탁 업무 | 처리 항목 | 위치 |
|---|---|---|---|
| Supabase, Inc. | 계정 인증, 데이터베이스 호스팅, 인증 이메일 발송 | 이메일 주소, 비밀번호 해시, 표시 언어, 계정 식별자, §5의 로그 | AWS 서울 리전(ap-northeast-2) |
| Amazon Web Services, Inc. | 위 서비스가 올라가는 클라우드 인프라 | 동일 | 서울 리전 |
ap-northeast-2)에 있고,
다른 리전으로 복제하지 않습니다. 즉 데이터의 물리적 저장 위치는 국내입니다.| 대상 | 보관 기간 | 파기 방법 |
|---|---|---|
| 계정 정보(이메일, 비밀번호 해시, 언어, 식별자) | 계정을 유지하는 동안. 탈퇴 요청 즉시 삭제 | 데이터베이스에서 즉시 삭제. 운영 백업에는 최대 7일간 남을 수 있고, 백업 만료와 함께 사라집니다 |
| 인증·API 로그 | 7일 | 플랫폼이 자동 삭제 |
| 오류 리포트 — 화면·동작 기록 | 90일 | 매일 자동 삭제 |
| 오류 리포트 — 오류·크래시 | 180일 | 매일 자동 삭제 (같은 오류가 계절을 두고 재발하는지 보려면 이만큼이 필요합니다) |
| 오류 리포트 — 설치 식별자와 기기 정보 | 마지막 활동 후 400일 | 매일 자동 삭제. 설정에서 직접 지우실 수도 있습니다(§2-3) |
| 오류 리포트 — 삭제 확인 장부 (지운 설치 식별자의 해시·지운 시각·검증값) | 계속 보관 | 지우지 않습니다. 원래 식별자로 되돌릴 수 없고, 계정·IP 주소·기록 내용·비밀값을 담지 않습니다 (§2-3) |
| 오류 리포트 — 요청 수 집계 (IP 주소를 되돌릴 수 없게 바꾼 값) | 1일 | IP 주소 원문은 저장하지 않습니다. 하루가 지난 집계는 새 요청을 처리할 때 함께 지웁니다 |
| 기기 안의 건강 파생 데이터 | 여러분이 지울 때까지 | 앱을 삭제하면 함께 삭제됩니다 |
| 시간대 오프셋 기록 (여행·시차 자동 판정용) | 28일 | 여행·시차를 자동으로 판정하는 데에만 쓰고, 28일이 지나면 기기 안에서 자동 삭제합니다. 도시 이름이나 위치는 저장하지 않고, 설정에서 끄시면 즉시 지웁니다 |
| 기기 안의 밤별 세부 지표 기록 (파생 지표의 밤별 값과 그 밤의 단계 판정) | 180일 | 앱이 건강 데이터를 불러올 때마다 180일이 지난 밤의 기록을 기기 안에서 자동 삭제합니다. 회복 점수·수면 기록 등 위 행의 나머지 파생 데이터에는 해당하지 않습니다 |
| Apple 건강 앱의 원본 데이터 | 오늘 운동이 관리하지 않습니다 | Apple 건강 앱에서 직접 관리 |
앱에서 직접: 설정 → 계정 → 계정 삭제 → 확인
누르면 앱이 서버 함수를 호출하고, 그 함수가 로그인 토큰으로 본인임을 확인한 뒤 계정을 삭제합니다. 계정이 삭제되면 프로필 행(이메일·언어)도 데이터베이스 제약에 의해 함께 자동 삭제됩니다. 삭제 후에는 같은 이메일로 새로 가입할 수 있으며, 이전 계정 정보는 복구되지 않습니다.
메일로: contact@apochopo.com 으로 요청하셔도 됩니다. 본인 확인을 위해 가입 이메일 주소에서 보내 주세요.
기기 안의 건강 데이터는 계정 삭제와 무관합니다. 계정을 지워도 기기 데이터는 남고, 반대로 앱을 삭제하면 기기 데이터는 사라지지만 계정은 남습니다. 둘 다 없애려면 계정 삭제 후 앱을 삭제하세요. Apple 건강 앱에 있는 원본 데이터는 어느 쪽에도 영향받지 않습니다.
여러분은 언제든 자신의 개인정보에 대해 열람·정정·삭제·처리정지를 요구할 수 있습니다.
| 하고 싶은 일 | 방법 |
|---|---|
| 저장된 정보 확인(열람) | 설정 → 계정 에서 이메일 주소와 표시 언어를 볼 수 있습니다. 그 외 항목의 사본이 필요하면 메일로 요청하세요 |
| 표시 언어 변경 | 설정 → 언어 |
| 비밀번호 변경 | 로그인 화면 → 비밀번호를 잊으셨나요 → 메일로 받은 링크에서 재설정 |
| 이메일 주소 변경 | 메일로 요청 (앱 내 변경 기능은 준비 중) |
| 계정·개인정보 삭제 | §10 |
| 건강 데이터 접근 차단 | iOS 설정 → 개인정보 보호 및 보안 → 건강 → 오늘 운동 에서 권한 회수 |
| 알림 중단 | iOS 설정 → 알림 → 오늘 운동, 또는 앱 설정 |
법정대리인이나 위임받은 사람도 대리 행사할 수 있으며, 이 경우 위임 사실을 확인할 수 있는 자료가 필요합니다.
Android에서 건강 데이터 접근 차단: 기기 설정 → 보안 및 개인정보 보호 → Health Connect(기기에 따라 Health Connect 앱) → 앱 권한 → 오늘 운동 에서 권한을 회수하세요.
| 저장소 | 저장 내용 |
|---|---|
| 앱 데이터베이스 (앱 전용 영역) | §3의 건강 파생값, 앱 설정, 아침 컨디션 기록(답하신 경우) |
| 앱 그룹 파일 하나 | 위젯에 표시할 오늘의 점수·단계·추천 문구, 오늘의 사주풀이를 켜신 경우 오늘의 풀이 한 줄 |
| iOS 키체인 | 로그인 세션 토큰, 오류 리포트의 설치 식별자와 비밀값 (§2-3). 키체인 항목은 앱을 삭제해도 남을 수 있습니다 |
| 기기 설정 저장소 | 표시 언어 등 화면 설정값 |
이 저장 영역들은 모두 iOS의 앱 샌드박스 안에 있어 다른 앱이 읽을 수 없고, 기기 잠금(암호·Face ID)이 설정되어 있으면 iOS의 파일 보호 기능으로 암호화됩니다. 앱을 삭제하면 앱 데이터베이스·앱 그룹 파일·설정값이 함께 삭제됩니다.
Android에서는 저장 위치가 다릅니다.
| 저장소 | 저장 내용 |
|---|---|
| 앱 전용 데이터베이스 (SQLite) | §3-A에서 만든 파생값과 요약 — 일별 지표, 개인 기준선, 운동 기록, 일별 회복 점수, 피드 기록, 동기화 위치 표시, 아침 컨디션 기록(답하신 경우 — 날짜별 개운한 정도·오후 졸림·넘기셨는지 여부) |
| 앱 전용 설정 파일 | 표시 언어, 생년월일·성별(입력하신 경우), 목표 취침 시각(정하신 경우), 오류 리포트 동의 여부, 안내를 다시 묻지 않기 위한 표시 |
| 같은 데이터베이스 — 앱 사용 기록 (사용 정보 접근을 켜신 경우에만) | 하루 한 행의 합계 — 화면이 켜진 채 잠금이 풀려 있던 초와 횟수, 그중 쇼핑 앱이 앞에 있던 초와 횟수, 측정 품질, 시간대, 실제로 잰 구간. package 이름·화면 클래스 이름·원시 이벤트는 담지 않습니다(§13) |
| 같은 데이터베이스 — 낮잠 장부 (낮잠을 입력하신 경우에만) | 입력하신 낮잠의 시작·종료 시각과 시간대, 저장 진행 기록(Health Connect에 쓰였는지, 돌려받은 기록 번호, 영향받는 날짜, 저장 전후 회복 점수). Health Connect에서 읽어 온 수면 기록은 담지 않고, 180일이 지나면 자동으로 지웁니다(§3-A-2) |
allowBackup="false"). 기기 안의 건강 파생값이 클라우드 백업으로 나가지 않게 하기 위해서입니다.아래는 실제로 적용하고 있는 것만 적었습니다.
docs/SECURITY-TEST.md).Android에 더 적용된 것
android.permission.INTERNET). Android 판은 네트워크를 여는 수단 자체가 없어, 실수로도 데이터를 내보낼 수 없는 구조입니다(§1의 6번). 계정이나 오류 리포트를 싣는 Android 판이 나오면 그 전에 이 문서를 먼저 고칩니다.allowBackup="false"로 앱 데이터가 클라우드 백업에 실리지 않습니다.Android — 앱 사용 기록 (디지털 습관)
Android 판은 위의 Health Connect 권한 외에 사용 정보 접근 권한(android.permission.PACKAGE_USAGE_STATS)을 하나 더 선언합니다. 런타임 권한이 아니라 기기 설정의 「사용 정보 접근」 화면에서 여러분이 직접 켜 주셔야 하는 특수 권한이고, 앱은 그것이 켜져 있는지만 확인합니다. 켜지 않으시면 아래의 일은 하나도 일어나지 않습니다.
| 무엇을 읽나 | 앱이 화면 앞으로 나온 시각과 물러난 시각, 화면이 켜지고 꺼진 시각, 잠금이 걸리고 풀린 시각, 기기가 꺼지고 켜진 시각. 이 이벤트에는 앱의 package 이름과 화면(Activity) 클래스 이름이 함께 들어 있습니다 |
| 무엇을 저장하나 | 하루에 한 행을, 기기 안 앱 전용 데이터베이스에만. 그 행에 담기는 것은 날짜 · 측정 품질 · 화면이 켜진 채 잠금이 풀려 있던 초와 횟수 · 그중 쇼핑 앱이 앞에 있던 초와 횟수 · 쇼핑 앱 목록의 판 · 층의 판 · 시간대 · 그 하루가 닫혔는지 · 실제로 잰 구간의 시작과 끝 · 계산 시각입니다 |
| 무엇을 저장하지 않나 | package 이름 · 화면(Activity) 클래스 이름 · 원시 이벤트는 저장하지 않습니다 — 그것을 담을 열이 표에 아예 없고, 테스트가 표 정의를 훑어 그 사실을 지킵니다. 이벤트는 하루 합계를 세는 동안 메모리에만 있다가 사라집니다. 이 부분을 기록으로 남기는 로그 경로도 없습니다 |
| 얼마나 두나 | 지우실 때까지입니다. 단계 판정에 쓰는 창은 어제까지 이레이지만, 그보다 오래된 하루 행은 추세를 보여 드리기 위해 남기고 앱이 자동으로 지우지는 않습니다 |
| 기기를 떠나나 | 떠나지 않습니다. Android 판은 인터넷 권한 자체를 선언하지 않고(위 첫 항목), 앱 데이터의 자동 백업도 꺼 두었습니다 |
| 지울 수 있나 | 예. 디지털 습관 상세 화면의 삭제가 하루 행·단계 판정 장부·관련 설정을 한 번에 지웁니다. 기기 설정에서 사용 정보 접근을 회수하시면 앱이 그 기록을 스스로 지웁니다. 앱을 삭제해도 함께 지워집니다 |
한 가지는 package 이름이 남습니다. 쇼핑 앱 목록에서 여러분이 직접 켜거나 끄신 앱의 package 이름은 그 선택 자체이므로 앱 전용 설정 파일에 남습니다(§12). 이것도 기기 밖으로 나가지 않고, 위의 삭제로 함께 지워집니다.
iOS 판에는 이 기능이 없습니다. iOS에서는 앱 사용 기록을 읽지 않습니다 — Apple의 Screen Time 자격(entitlement) 승인을 기다리는 중이고, 이 절은 Android에만 해당합니다.
오늘 운동은 의료기기가 아니며, 질병을 진단·치료·예방하지 않습니다. 앱이 보여주는 점수와 안내는 운동 강도와 휴식을 정하는 데 참고하는 정보이고, 의학적 판정이 아닙니다. 건강에 대한 판단이 필요하면 의료 전문가와 상담하세요.
| 버전 | 시행일 | 주요 변경 |
|---|---|---|
| v1 | 2026-08-14 | 최초 초안 |
| v2 | 2026-08-18 | 구현 실측 기반 전면 개편. 표시 언어 항목 추가, 자동 생성 로그·보관 기간·위탁·국외이전·권리 행사 방법·안전성 조치·침해 대응·미성년자 조항 신설. 4개 언어 제공 |
| v3 | 2026-08-20 | 직접 입력한 낮잠 저장 기능 반영. Apple 건강 쓰기가 낮잠(수면 항목) 하나에 한해 일어남을 §3·§13에 명시하고, "쓰기 없음" 표현을 정정 |
| v4 | 2026-08-20 | 읽기 대상에 생활 기록 6종(수면 중 호흡 방해·음주·카페인·마음챙김·혈압·혈당) 추가. 읽기 항목이 늘어난 변경이므로 §3의 목록과 기기 내 저장 항목을 함께 갱신 |
| v5 | 2026-08-30 | 오류 리포트(선택 동의) 신설. 앱이 멈추거나 오류가 났을 때 화면·동작·오류 내용을 서버로 보내는 기능이 추가되어, §1·§2-3·§6·§9·§11을 갱신하고 프라이버시 매니페스트(App Store 표시)도 함께 고쳤습니다. 기본은 꺼짐이며 켜신 경우에도 건강 수치와 점수는 전송되지 않습니다. 시행 7일 전 앱 내 배너로 고지 |
| v6 | 2026-08-30 | 기기에만 저장되는 항목이 늘었습니다. 읽기 대상에 햇빛 아래에서 보낸 시간·체성분(체중·제지방량·체지방률)이 추가되고, Apple 건강 프로필의 성별·생년월일을 읽거나(없으면) 직접 입력받게 되어 §2-2·§3을 갱신했습니다. 서버로 전송되는 항목에는 변화가 없습니다 — 새로 늘어난 값은 전부 기기 안에만 저장되며, 오류 리포트에도 실리지 않습니다. v5와 같은 날 시행합니다(2026-08-27 개정, v5 시행 전) |
| v7 | 2026-09-11 | 읽기 대상에 걸음 수가 추가되고, Apple 건강에 쓰는 항목이 낮잠 하나에서 낮잠·카페인·음주 셋으로 늘었습니다. 걸음 수는 운동으로 기록되지 않은 걷기를 이번 주 운동량에 반영하기 위한 것이고 점수에 들어갑니다(§3의 9번). 카페인·음주는 앱에서 직접 입력하신 값만, 저장을 누르신 그때 Apple 건강에 저장되며 쓰기 권한은 항목별로 따로 여쭤봅니다(§3·§13). 어느 쪽도 서버로 전송되지 않습니다. 이 줄은 시행 전에 확장됐습니다. 2026-08-28 개정 시점에는 걸음 수 하나만 담아 2026-09-06 시행 예정이었습니다. 시행 전인 2026-09-03에 카페인·음주 쓰기(앱의 오늘 탭 직접 입력 기능)가 추가되어 같은 v7에 함께 담고 시행일을 2026-09-11로 옮겼습니다 — 09-06으로 두면 고지까지 사흘뿐이라 §18이 약속한 "시행 7일 전 고지"를 지킬 수 없기 때문입니다 (2026-09-03 개정) (2026-09-03 두 번째 보정: 저장 직후 되돌리기가 같은 빌드에 들어가면서, "이미 있는 기록은 고치거나 지우지 않는다"를 "직접 입력하지 않으신 기록은"으로 고쳤습니다. 원래 문장은 되돌리기가 방금 저장한 기록을 지우는 것과 문자 그대로 어긋납니다. 시행 전 보정입니다.) |
| v8 | 2026-09-21 | 설정 안 마신 날 자동 기록을 켜신 경우, 앱이 저장을 누르지 않으셔도 Apple 건강에 0을 적을 수 있게 됐습니다. 그전까지 이 앱의 모든 쓰기는 사람이 저장을 누른 결과였습니다. 이 스위치는 기본으로 꺼져 있고, 켜신 뒤의 날에만, 카페인·음주 기록이 하나도 없는 날에만, 0이라는 값만 적습니다(§3). 서버로 나가는 것은 없습니다. 같은 판에서 쓰기 권한을 여쭤보는 때의 설명(§2-2·§3·§13)도 고쳤습니다. 2026-09-11부터 앱이 처음 안내(온보딩)에서 읽기 권한과 함께 낮잠·카페인·음주 세 항목의 쓰기 권한을 여쭤봅니다. 그전까지 이 문서는 "그 항목을 처음 저장하려 하실 때 그 항목만 따로 여쭤본다" 는 한쪽 길만 적었는데, 이 개정 전에 안내를 마치신 기기에서는 지금도 그렇게 동작하므로 두 경우를 모두 적었습니다. 여쭤보는 항목의 수와 종류는 그대로 셋이고, 새로 요청하는 권한은 없습니다 |
| v9 | 2026-09-16 | 1.3.0에 맞춰 한 번에 고쳤습니다. ① Android 지원: Apple 건강 대신 Health Connect에서 읽으며, 읽기 11종·쓰기 1종(직접 입력한 낮잠)·특수 권한 1종(과거 데이터 읽기)을 §3-A에 새로 적었습니다. 입력한 낮잠은 기기 안 장부에 남고 180일이 지나면 자동으로 지워지며, 하나씩 되돌릴 수 있습니다. Android 판의 앱 사용 기록(디지털 습관, 사용 정보 접근 권한)을 §13에 적었습니다. Android 판에는 계정·오류 리포트·인터넷 권한이 없습니다. ② iOS 자체 만보기: 건강 앱에서 걸음 수를 받지 못할 때 동작 및 피트니스 권한으로 기기에서 걸음 수를 세어 보여 드립니다 — 저장·전송하지 않습니다 (§3). ③ 오류 리포트의 식별 방식: 설치 식별자에 이 설치만 가진 비밀값을 짝지어 전송·삭제를 보호하고(서버에는 해시만), 삭제 뒤에는 되돌릴 수 없는 삭제 확인 장부가 남으며, IP 주소는 원문 없이 하루 동안만 요청 수 집계에 씁니다 (§2-3·§9·§12). 서버로 보내는 오류 리포트의 내용 항목은 늘지 않았습니다 이 판은 게시한 날(2026-09-16) 시행했고, 이 판부터 고지 방식을 바꿨습니다. 그 밖의 변경은 개정할 때 앱 안에서 알리고 게시한 날부터 시행합니다(§18 첫머리). 그전까지 이 문서는 그 밖의 변경을 시행 7일 전에 알린다고 약속했으나, 이 판에는 그 기간을 두지 않았습니다 — 사용자 규모가 매우 작은 초기 단계라는 운영자 판단입니다. 2026-09-21 시행 예정이던 v8(안 마신 날 자동 기록)의 내용은 이 판에 그대로 들어 있고, 이 판과 함께 시행됩니다. v8은 웹에 게시되지 않았고 따로 시행되지 않았습니다 2026-09-16 추가 — ④ 오늘의 사주풀이(선택, 기본 꺼짐): 켜신 경우 생년월일과 태어난 시각·나라로 기기 안에서 사주를 계산해 보여 드립니다. 서버·AI 서비스로 보내지 않고, 끄시면 지난 사주 기록의 간지 값을 지웁니다 (§2-2·§3-B·§12). 2026-09-17 추가 — ⑤ 목표 취침 시각(선택): 직접 정하신 경우 기기 안에만 저장하고, 목표 취침 시각에 가까운 낮잠이 그날 밤 잠에 영향을 줬는지 보는 계산에만 씁니다. 서버로 보내지 않습니다 (§2-2·§12). 2026-09-16 변경 — Android에서 백그라운드 읽기 권한을 더 이상 요청하지 않습니다. 앱을 열지 않은 동안에는 Health Connect를 읽지 않고, 특수 권한은 과거 데이터 읽기 하나뿐입니다 (§3-A-3·§13). 2026-09-17 변경 — 기기 안의 밤별 세부 지표 기록을 180일까지만 보관하고, 그보다 오래된 밤의 기록은 기기 안에서 자동 삭제합니다. 나머지 파생 데이터의 보관 기간은 그대로입니다 (§9). 2026-09-18 추가 — ⑦ 아침 컨디션 기록(선택): 일어났을 때 개운한 정도(1~5)와 오후 졸림을 답하신 경우 기기 안에만 저장하고, 지난 기록을 보여 드리는 데 씁니다. 서버로 보내지 않습니다 (§2-2·§12). 2026-09-18 추가 — ⑦ 아침 컨디션 기록: 직접 '파일로 내보내기'를 누르신 경우에만 날짜 대신 순번을 붙인 답(개운한 정도·오후 졸림·넘기셨는지)과 기기 종류만 담은 파일을 만들어, 여러분이 고른 앱(파일·메일 등)으로 넘깁니다. 앱이 스스로 보내지 않으며, 넘긴 뒤의 보관은 그 앱의 방식을 따릅니다. 2026-09-19 추가 — ⑨ 여행·시차 자동 판정: 기기 시간대가 두 시간 이상 바뀌면 앱이 여행·시차로 보고 자동으로 판정합니다. 최근 28일의 시간대 차이(도시 이름이 아니라 UTC와의 시차)만 기기 안에 보관하고, 서버로 보내지 않으며, 설정에서 언제든 끄실 수 있습니다 (§2-2·§9). |
| --- |