English

꼼꼬미 개인정보 처리방침

시행일: 2026년 10월 7일

개인정보 보호책임자와 연락처: 유동민, ydm2790@gmail.com

이 방침은 꼼꼬미 앱과 웹 보고서 페이지(kkomkkomi.web.app)가 어떤 정보를 어디에 두고, 누구에게 보이며, 언제 지우는지 설명합니다. 앱과 서버 설정의 실제 동작을 기준으로 썼습니다.

1. 휴대폰에 저장하는 정보

앱은 다음 정보를 휴대폰 안의 앱 전용 데이터베이스와 앱 폴더에 저장합니다.

사업자 전화번호는 운영자의 서버로 보내지 않습니다. 직접 관찰한 촬영 시각도 운영자의 서버로 보내지 않습니다. 나머지 정보는 사용자가 보고서를 링크로 공유하기 전까지 운영자의 서버로 보내지 않습니다. 다만 휴대폰의 백업 기능(Android 자동 백업, iCloud 백업)이 켜져 있으면, 휴대폰 운영체제가 이 정보를 사용자 본인의 Google 계정이나 Apple 계정에 백업할 수 있습니다. 운영자는 이 백업을 볼 수 없습니다.

PDF 보고서는 휴대폰에서 만들고, 운영체제의 공유 창으로 사용자가 고른 앱에 보냅니다. 운영자의 서버로는 보내지 않습니다. 공유한 PDF 파일은 Android에서는 앱의 캐시 폴더에, iPhone에서는 앱의 임시 폴더에 남고, 운영체제가 정리하거나 앱을 삭제할 때 지워집니다. 앱은 사진을 PDF에 넣기 전에도 3항에서 설명한 정보를 지웁니다. 입력한 사업자 전화번호는 PDF에 표시되므로 공유한 파일의 수신자가 볼 수 있습니다. 공개 웹 보고서에는 전화번호가 표시되지 않습니다.

카메라로 찍거나 갤러리에서 고른 사진은 사진 선택 도구가 먼저 Android에서는 앱의 캐시 폴더에, iPhone에서는 앱의 임시 폴더에 파일로 만들고, 앱은 그 파일에서 3항에서 설명한 정보를 지운 사본을 저장합니다. 캐시 폴더와 임시 폴더의 파일에는 이 정보가 남을 수 있고, 이 파일은 운영체제가 정리하거나 앱을 삭제할 때 지워집니다.

앱을 삭제하면 휴대폰에 저장한 정보도 함께 지워집니다. 백업에 들어간 사본은 사용자의 계정에 남습니다. 앱 안에서 정보를 지우는 방법은 6항에 있습니다.

갤러리 사진은 미리보기, PDF, 웹 보고서에 출처를 표시하며 촬영 시각을 추정하지 않습니다. 지원하는 PNG 파일은 저장 전에 JPEG로 바꾸고, 지원하지 않는 파일은 저장하지 않습니다.

앱 내부 카메라가 직접 관찰한 촬영 시각을 제공하면 휴대폰에 UTC로 저장하고 미리보기와 공유한 PDF에 현재 휴대폰의 현지 시각으로 표시합니다. 이 시각은 휴대폰 시계의 관찰값이며 운영자의 서버로 보내지 않습니다. 현재 사진 선택 도구로 찍은 사진, 갤러리 사진, 복구한 사진과 기존 사진에는 촬영 시각이 없고, 파일 시각이나 사진 선택 시각으로 추정하지 않습니다.

2. 익명 로그인과 사용자 ID

앱은 실행될 때 Firebase Authentication에 익명으로 로그인합니다. 이름, 이메일, 전화번호는 묻지 않습니다. 로그인하면 Firebase가 무작위 사용자 ID를 만들고, 이 ID가 그 휴대폰에서 게시한 페이지의 주인이 됩니다.

Firebase Authentication은 로그인을 처리하면서 IP 주소와 사용자 에이전트(기기와 앱 정보)를 처리하고, 기록한 IP 주소를 몇 주 동안 보관합니다.

익명 계정은 사용자가 앱에서 모든 데이터를 지울 때 함께 삭제됩니다(6항). 앱을 삭제하는 등으로 계정을 잃으면, 사용자와 앱은 그 계정으로 게시한 페이지와 보고서를 더 이상 수정하거나 닫거나 지울 수 없고, 링크는 운영자가 닫기 전까지 계속 열립니다(7항). 운영자는 요청을 받으면 이 페이지를 닫거나 지울 수 있으며, 요청 방법은 12항에 있습니다.

3. 링크로 공유할 때 보내는 정보

방문 보고서 화면에서 "링크로 공유하기"를 누르면, 앱은 그 방문을 Firebase에 올린 뒤 링크를 공유합니다. 거래처마다 고정된 페이지가 하나 있고, 페이지 ID는 128비트 무작위 값입니다. 올리는 정보는 다음과 같습니다.

카메라 앱은 사진 파일에 촬영 시각, 기기 모델 같은 정보를 기록하고, 설정에 따라 촬영 위치도 기록합니다. 앱은 사진을 저장할 때 이 정보를 지우고, 사진을 바르게 보여 주는 데 필요한 정보(사진의 방향, 색 정보 같은 것)는 남깁니다. 앱의 이전 버전이 저장한 사진은 휴대폰 안의 파일에 이 정보가 남아 있지만, 앱은 그런 사진도 올리기 전에 이 정보를 지웁니다. 다만 앱의 이전 버전이 이미 서버에 올린 사진 파일은 이 정보를 가진 채 남고, 같은 방문을 다시 올려도 바뀌지 않습니다.

앱은 공유 창을 열기 전에 올리기를 마칩니다. 그래서 공유 창을 닫고 링크를 보내지 않아도, 올린 정보는 서버에 남고 링크로 열립니다. 인터넷 연결이 없어 올리지 못한 요청은 앱을 다시 열 때와 연결이 돌아올 때 다시 시도합니다.

같은 방문을 다시 올리면 보고서를 새 내용으로 바꾸고, 보고서에 더 이상 없는 사진은 서버에서 지웁니다.

4. 볼 수 있는 사람

링크를 가진 사람은 누구나 로그인 없이, 링크가 닫히지 않은 동안 다음을 볼 수 있습니다.

링크는 추측하기 어렵지만 비밀은 아닙니다. 링크를 전달받은 사람도 열 수 있습니다. 링크로 들어온 사람은 페이지 ID를 모르는 다른 거래처의 페이지를 찾거나 목록으로 볼 수 없습니다.

웹 보고서 페이지를 여는 요청은 Firebase Hosting으로, 보고서와 사진을 읽는 요청은 Cloud Firestore와 Cloud Storage로, 모두 Google의 서버로 갑니다. Firebase Hosting은 페이지를 연 사람의 IP 주소를 몇 달 동안 보관합니다. 운영자는 Firebase 프로젝트의 관리자로서 서버에 저장된 정보에 접근할 수 있습니다.

5. 링크 닫기

거래처 화면의 "보고서 링크"에서 그 거래처 하나의 링크를 닫거나 새 링크로 바꿀 수 있습니다. 이 버튼은 그 거래처에 열린 링크가 있을 때만 보입니다.

이 버튼은 현재 링크에만 적용됩니다. 삭제 요청은 기록됐지만 확인되지 않은 이전 페이지에는 다시 적용하지 않으며, 이전 링크가 아직 열릴 수 있습니다. 앱은 그 링크의 경고를 유지하고 확인창에도 안내합니다. 이런 페이지까지 지우려면 6항의 "모든 데이터 지우기"를 다시 실행해 주세요.

공유한 모든 링크를 닫고 서버의 정보를 지우려면 6항의 "모든 데이터 지우기"를 쓰거나, 12항의 연락처로 운영자에게 요청해 주세요. 운영자는 요청을 받은 날부터 10일 안에 처리한 결과를 알려 드립니다.

링크를 닫으면 앱은 다음과 같이 처리합니다.

6. 앱에서 모든 데이터 지우기

회사 정보 화면에서 "모든 데이터 지우기"를 누르고 한 번 더 확인하면, 앱은 다음 순서로 지웁니다.

  1. 앱이 서버에 올렸거나 올리기 시작한 사진 파일(Cloud Storage). 닫은 링크의 사진도 포함합니다.
  2. 방문 보고서 문서, 그다음 거래처 페이지 문서(Cloud Firestore). 닫은 페이지도 포함합니다.
  3. 익명 계정(Firebase Authentication)
  4. 휴대폰의 데이터베이스(회사 이름, 거래처, 구역, 방문 기록, 메모, 청소 상태와 사유, 게시 기록)와 앱 폴더의 사진 파일

한 단계가 실패하면 그 뒤 단계는 진행하지 않고, 화면에 어느 단계가 실패했는지 보여 줍니다. 서버의 정보와 계정을 모두 지운 뒤에만 휴대폰의 정보를 지우기 시작합니다. 기기 정리는 데이터베이스의 행을 지운 뒤 파일을 다시 쓰거나 로그를 비우거나 사진 파일을 지우는 중에도 실패할 수 있습니다. 모든 데이터 지우기를 다시 시도할 수 있습니다. 개발용과 시험용 앱에는 서버가 없어서 휴대폰의 정보만 지웁니다.

서버의 정보를 지우기 시작하기 전에, 앱은 아직 올리지 못하고 기다리던 보고서 올리기와 링크 닫기를 멈춥니다. 지우기가 중간에 멈추거나 앱이 다시 시작되어도 멈춘 보고서는 다시 올라가지 않고, 사용자가 링크로 공유하기를 다시 누를 때만 올라갑니다.

각 거래처 페이지의 삭제를 서버에 요청하기 직전에 휴대폰에 요청 시각을 기록하고, 서버가 삭제에 응답한 뒤에만 확인 시각을 기록합니다. 어느 기록이든 있으면 앱을 다시 열어도 그 페이지로 보고서를 올리거나 링크 닫기를 다시 실행하지 않습니다. 요청만 있고 확인이 없으면 링크가 닫혔다고 단정할 수 없습니다. 서버가 지웠지만 응답이 오지 않았거나, 삭제가 실패했을 수 있습니다. 앱을 다시 열 때 모든 데이터 지우기를 자동으로 이어서 진행하지 않으므로, 다시 실행해 주세요.

페이지 삭제를 요청한 뒤 방문을 다시 링크로 공유하면 새 링크로 그 방문만 올립니다. 새 링크를 만들거나 공유해도 확인되지 않은 이전 링크는 닫히지 않습니다. 이전 링크의 삭제가 확인될 때까지 경고가 남습니다. 다음 모든 데이터 지우기에는 이 휴대폰에 기록된 새 페이지도 포함합니다. 삭제 요청과 확인 기록은 데이터베이스의 행을 지울 때까지 남습니다. 계정 삭제 실패 시에는 남지만, 기기 정리는 이 기록이 지워진 뒤에도 실패할 수 있습니다.

다 지우면 공유한 링크는 더 이상 열리지 않고, 앱은 처음 설치한 상태로 돌아갑니다. 앱은 다음에 실행되거나, 보고서를 링크로 공유하거나, 정식 버전 앱에서 요금제 화면을 열거나 보관하지 않은 거래처가 2곳 이상인 상태에서 "거래처 추가하기"를 누를 때 새 익명 계정으로 로그인합니다(2항).

지운 뒤에도 다음은 남을 수 있습니다.

7. 앱을 삭제하면

앱을 삭제하면 휴대폰에 있던 게시 기록이 지워지고, 익명 계정도 잃을 수 있지만, 서버에 올린 정보와 계정은 지워지지 않습니다. 다시 설치한 앱은 백업에서 데이터를 되살리지 않았다면 이전에 게시한 페이지를 알지 못하고, 새로 만들어진 익명 계정은 이전 계정의 페이지를 수정하거나 닫거나 지울 수 없습니다. 그래서 닫지 않은 링크는 운영자가 닫기 전까지 계속 열리고, 앱에서는 그 링크를 닫을 수 없습니다. 앱을 삭제하기 전에 6항의 "모든 데이터 지우기"를 쓰면 서버의 정보와 계정도 지울 수 있습니다. 이미 삭제했다면 12항의 연락처로 운영자에게 요청해 주세요.

8. 보관 기간

9. 저장 위치, 처리 위탁, 국외 이전

서버 쪽 정보는 Google이 운영하는 Firebase가 처리합니다. Cloud Firestore(페이지와 보고서 문서)와 Cloud Storage(사진)는 서울 리전(asia-northeast3)에 있습니다. Firebase Authentication은 미국의 데이터 센터에서만 운영되므로, 익명 계정 정보는 미국에서 처리됩니다. Firebase Hosting은 Google의 전 세계 인프라에서 운영되므로, 페이지를 연 사람의 IP 주소는 한국 밖에서 처리될 수 있습니다.

운영자는 앱과 웹 보고서를 제공하는 데 필요한 처리를 Google에 맡기고, 개인정보 보호법 제28조의8 제1항 제3호에 따라 국외 이전에 관한 아래 사항을 이 방침에 공개합니다.

이전되는 항목
익명 계정의 사용자 ID, 로그인 때의 IP 주소와 사용자 에이전트, 새 로그인 토큰을 요청할 때의 IP 주소, 웹 페이지를 연 사람의 IP 주소
이전되는 국가
미국(Firebase Authentication), Google 데이터 센터가 있는 국가(Firebase Hosting)
이전 시기와 방법
앱이 로그인할 때(2항, 6항), 앱이 방문 보고서 화면을 열어 유료 요금제인지 알려 주는 새 로그인 토큰을 요청할 때, 앱이 보고서를 링크로 공유하려고 올리면서(3항) 같은 이유로 새 로그인 토큰을 요청할 때, 그리고 웹 페이지를 열 때 인터넷으로 전송
이전받는 자
Google LLC. 연락처: Firebase 지원 문의 (firebase.google.com/support/troubleshooter/contact)
이용 목적과 보유 기간
로그인과 페이지 제공. 보유 기간은 8항과 같습니다.
거부하는 방법과 효과
앱은 실행될 때 로그인하므로, 앱을 쓰면서 이 이전을 거부하는 방법은 지금 없습니다. 앱을 쓰지 않으면 이전되지 않습니다.

운영자는 구독 확인, 판매, 복원에 필요한 처리를 RevenueCat에 맡깁니다. RevenueCat은 처리한 정보를 미국의 Amazon Web Services에 저장합니다. 국외 이전에 관한 사항은 다음과 같습니다.

이전되는 항목
익명 계정의 사용자 ID(RevenueCat의 앱 사용자 ID로 씁니다), 스토어의 구입 내역(Apple 영수증 파일이나 Google 구매 토큰), 기기 종류와 운영체제, 앱을 마지막으로 쓴 시각
이전되는 국가
미국
이전 시기와 방법
정식 버전 앱에서 요금제 화면을 열 때, 보관하지 않은 거래처가 2곳 이상인 상태에서 "거래처 추가하기"를 누를 때, 구독을 사거나 복원할 때 인터넷으로 전송. 이 중 하나로 RevenueCat에 한 번 연결한 뒤에는 앱이 완전히 종료될 때까지 RevenueCat SDK가 주기적으로, 그리고 앱이 다시 화면에 나타날 때마다 구독 상태를 동기화하며 전송
이전받는 자
RevenueCat, Inc. 연락처: compliance@revenuecat.com
이용 목적과 보유 기간
구독 확인, 판매, 복원과 부정 결제 방지, 구독 통계. 보유 기간은 8항과 같습니다.
거부하는 방법과 효과
요금제 화면을 열지 않고, 보관하지 않은 거래처가 2곳 이상인 상태에서 "거래처 추가하기"를 누르지 않고, 구독을 사지 않으면 이전되지 않습니다. 모든 데이터 지우기(6항)는 RevenueCat에 연결하지 않습니다. 이전된 정보의 삭제는 12항의 연락처로 요청할 수 있습니다.

10. 분석 도구, 진단 정보, 위치, 쿠키

11. 사진에 담길 수 있는 정보

청소 전·후 사진에는 사람의 얼굴, 모니터 화면, 문서가 찍힐 수 있습니다. 지금 앱에는 촬영 안내나 사진 일부를 가리는 기능이 없습니다. 사진을 올리기 전에 이런 내용이 찍혔는지 확인해 주세요.

사진을 찍고 올리는 청소 회사가 사진에 담긴 사람의 개인정보를 처리하는 쪽으로서 책임을 집니다. 앱 운영자는 그 사진을 저장하고 보여 주는 앱과 서버를 제공합니다.

12. 정보주체의 권리와 요청 방법

자신의 정보를 열람하거나 고치거나 지우거나 처리를 멈추도록 요청할 수 있습니다. 앱에서는 6항의 "모든 데이터 지우기"로 서버와 휴대폰의 정보를 직접 지울 수 있습니다. 그 밖의 요청은 아래 연락처로 이메일을 보내 주세요. 앱의 익명 계정에는 이름이나 연락처가 없으므로, 요청할 때 거래처 페이지 링크처럼 대상 정보를 찾을 수 있는 정보를 함께 보내 주세요.

운영자는 요청을 받은 날부터 10일 안에 열람할 수 있게 하거나, 처리한 결과를 알려 드립니다(개인정보 보호법 시행령 제41조 제4항·제5항, 제43조 제3항, 제44조 제2항).

개인정보 보호책임자: 유동민, ydm2790@gmail.com