mealbulk 개인정보처리방침 v1
개인정보처리방침
[시행일: YYYY-MM-DD]
mealbulk는 레시피 기준 장보기 체크리스트와 주간 계획 공유 기능을 제공하기 위해 필요한 최소한의 개인정보를 처리합니다. L0 단계에는 일반 이용자 계정이 없지만, 세션 로그, 장보기 클릭 로그, 익명 계획 키, 매직링크 복구 이메일, 관리자/감사 로그, 크리에이터 계약 자료가 처리될 수 있습니다.
1. 처리 항목과 목적
| 구분 | 처리 항목 | 목적 |
|---|---|---|
| 앱 이벤트 | app_event, page_view, checklist_open, copy_action, item_checked, return_visit, share_open, session_key | 서비스 이용 흐름 분석, 체크리스트 품질 개선, 장애 진단. session_key는 무작위 1차 쿠키이며 이름, 이메일, 전화번호, 광고식별자, 지문정보를 담지 않습니다. |
| 클릭 이벤트 | click_event, entry_click, 링크 ID, 클릭 시각, 유입 화면, handoff_result, is_suspect, session_key | 쿠팡 이동 실패 진단, 수수료 정산 대조, 부정 클릭 제외, 크리에이터 성과 산정. subId는 coarse campaign/creator cohort 코드만 사용하고 개인, 세션, 식재료, 건강 정보를 넣지 않습니다. |
| 주간 계획 | plan_week owner_key_hash, 읽기 전용 share_token, 계획 스냅샷, 레시피/인분/옵션, 생성/만료 시각 | 이용자가 만든 장보기 계획을 기기와 카카오톡 WebView 경계 너머에서 이어 쓰고, 공유받은 사람이 원본 계획을 읽기 전용으로 볼 수 있게 하기 위함입니다. owner key는 해시 저장하고 share token은 쓰기 권한이 없습니다. |
| 매직링크 계획 복구 | 이메일 주소 또는 카카오 식별자, 복구 토큰, 발송/만료 시각 | 계정 없이도 본인 계획 owner key를 재발급하기 위한 단일 목적의 복구 토큰으로만 사용합니다. |
| 관리자/감사 | 관리자 계정 식별자, 역할, WebAuthn/MFA 상태, 승인/변경 이력, audit_log, break-glass Studio 사용 기록 | 링크 상태 변경, 공개 문구 변경, kill switch, 계약/증빙 접근의 권한 통제, 2인 승인, 보안 감사. |
| 크리에이터/거래처 | 실명, 연락처, 계약서 PDF, 대금/권리 증빙, 개인정보 처리 동의 및 DPA 기록 | C0 크리에이터 계약, 권리 확인, 세무/정산, 공개 콘텐츠 관련 분쟁 대응. 계약 전 별도 개인정보 안내와 DPA를 제공합니다. |
| 운영/오류 로그 | Vercel/Supabase/Sentry 로그, job_run, job_queue, api_call_log의 메타데이터 | 장애 대응, 보안 점검, 배치 작업 확인. IP, User-Agent, 전체 URL, 쿼리 파라미터, 서명, 원문 payload는 수집하지 않거나 저장 전 제거합니다. |
2. 보유 및 파기 기간
법령상 보존 의무가 있는 경우를 제외하고 아래 기간이 지나면 삭제하거나 개인을 알아볼 수 없는 통계로 집계합니다.
| 분류 | 보유 기간 | 파기 방식 |
|---|---|---|
| app_event 원시 이벤트 | 13개월 | 일 단위 rollup으로 집계 후 원시 row 삭제 |
| click_event / entry_click | 24개월 | 수수료 정산 대조 후 집계값만 보관 |
| platform/error 로그 | 최대 90일 | 스크러빙된 로그를 기간 만료 후 삭제 |
| api_call_log | 최대 90일 | 메타데이터만 보관 후 삭제 |
| plan_week owner key와 계획 스냅샷 | 계획 TTL 만료 또는 이용자 삭제 요청 시까지 | owner_key_hash 기준 삭제, 연관 share_token 무효화 |
| plan_week share_token | 최대 90일 | 만료 sweep으로 토큰 삭제 및 noindex 공유 URL 비활성화 |
| 매직링크 복구 이메일/토큰 | 복구 목적 달성, 토큰 만료, 또는 삭제 요청 시까지 | 토큰 폐기 및 이메일 연결 삭제 |
| 백업 | 35일 | Supabase PITR/managed backup 및 KMS 암호화 object-store lifecycle 삭제. 삭제 요청 반영 절차를 문서화합니다. |
| 관리자 audit_log | 보안 감사와 법적 의무 이행에 필요한 기간 | append-only로 보관하며 보존 필요성이 끝나면 접근 제한 후 파기 |
| 크리에이터/거래처 계약 자료 | 계약 및 법령상 보존 의무 기간 | private-contracts 버킷에서 접근 로그와 함께 보관 후 파기 |
3. 처리위탁 및 수령자
| 업체 | 국가/지역 | 역할 | 처리 항목 | 보유 기간 |
|---|---|---|---|---|
| Vercel Inc. | 미국 법인, icn1 서울 실행 영역 | Next.js 호스팅, edge/function 로그 | 요청 메타데이터, 배포/운영 로그 | 로그 최대 90일 |
| Supabase, Inc. | 미국 법인, ap-northeast-2 서울 DB/Storage/Auth | Postgres, Storage, Auth, PITR/managed backup | 서비스 DB, private bucket 자료, 관리자 인증 정보 | 각 항목별 보유 기간 및 백업 35일 |
| Sentry | 미국 | 오류 수집과 장애 분석 | 스크러빙된 오류 이벤트 | 최대 90일 |
| Kakao | 대한민국 | 카카오톡 공유 SDK, 채널 관련 이용자 동의 화면 | 공유 실행에 필요한 브라우저/SDK 상호작용 정보 | 카카오 정책에 따름 |
| GitHub Actions | 미국 | Lane-B 배치 runner | 백업 작업 메타데이터, YouTube 재검증 작업 로그 | 작업 로그 최대 90일 |
| AWS S3 ap-northeast-2 또는 동등한 백업 object store | 대한민국 서울 | KMS 암호화 주간 논리 백업 저장 | pg_dump 백업 파일. L1 Coupang cache 테이블은 제외 | 35일 lifecycle |
| YouTube / Google | 미국 등 | 공식 YouTube 영상 embed와 주간 embed 상태 확인 | embed 로드에 따른 브라우저 요청 정보, videos.list 확인 결과 | YouTube/Google 정책에 따름 |
| Coupang | 대한민국 등 | L1 이후 Partners subId metadata 수령자 | coarse subId, 클릭 이동 맥락. 개인/세션/건강 정보 제외 | Coupang 정책에 따름. L0에는 API 수령 없음 |
4. 국외 이전에 관한 사항
개인정보보호법 제28조의8에 따라 국외 이전 항목, 국가, 일시와 방법, 이전받는 자, 목적 및 보유 기간을 아래와 같이 고지합니다. Vercel, Supabase, Sentry, GitHub 등 주요 처리자는 DPA 또는 이에 준하는 계약 조건으로 처리합니다.
| 이전받는 자 | 국가 | 이전 항목 | 일시 및 방법 | 목적 | 보유 기간 |
|---|---|---|---|---|---|
| Vercel Inc. | 미국 | 스크러빙된 요청/배포/함수 로그 | 서비스 요청 처리 및 로그 생성 시 네트워크 전송 | 호스팅, 장애 대응, 보안 점검 | 최대 90일 |
| Supabase, Inc. | 미국 법인, 서울 리전 저장 | DB/Storage/Auth 운영에 필요한 서비스 데이터와 관리자 인증 정보 | 서비스 이용 및 관리 작업 시 암호화 전송 | Postgres, Storage, Auth, PITR/managed backup 제공 | 항목별 보유 기간, 백업 35일 |
| Sentry | 미국 | beforeSend로 IP, User-Agent, URL parameter를 제거한 오류 이벤트 | 오류 발생 시 SDK/서버 전송 | 오류 추적과 장애 재현 | 최대 90일 |
| GitHub, Inc. | 미국 | Lane-B runner 작업 로그와 백업/검증 작업 메타데이터 | 예약 작업 실행 시 암호화 전송 | 주간 pg_dump, YouTube embed 재검증, disclosure assertion crawl | 작업 로그 최대 90일 |
| YouTube / Google LLC | 미국 등 | 공식 embed 로드 요청 정보, 영상 상태 확인 결과 | 이용자가 embed가 있는 페이지를 열거나 주간 검증 시 전송 | 공식 영상 재생, embeddable/public 상태 확인 | YouTube/Google 정책에 따름 |
5. 안전성 확보 조치
- Sentry beforeSend와 edge log redaction middleware로 IP, User-Agent, 전체 URL, URL parameter, headers, signatures, payload fragments를 저장 전 제거합니다.
- private-contracts, private-audit, private-provenance 버킷은 기본 비공개, 짧은 TTL signed URL, 접근 로그를 사용합니다.
- plan owner token은 httpOnly cookie 저장을 원칙으로 하고 DB에는 owner_key_hash만 저장합니다. localStorage에는 민감 정보를 저장하지 않습니다.
- 관리자 콘솔은 Supabase Auth, WebAuthn MFA, RBAC/RLS, 2인 승인, append-only audit_log를 적용합니다. Supabase Studio는 break-glass로만 사용하고 별도 기록합니다.
- Wayback 등 공개 아카이브는 개인정보가 포함될 수 있는 페이지에 적용하지 않고, 출처 스냅샷은 private-provenance에 저장합니다.
6. 이용자 권리와 행사 방법
이용자는 본인의 개인정보에 대해 열람, 정정, 삭제, 처리정지, 동의 철회를 요청할 수 있습니다. L0에서는 계정이 없으므로 session_key 또는 plan owner token을 기준으로 내보내기와 삭제를 처리합니다.
- 셀프서비스: 앱의 개인정보 도구에서 session_key 또는 plan owner token을 입력해 관련 이벤트와 plan_week 데이터를 내보내거나 삭제할 수 있게 제공합니다.
- 공유 계획 삭제: owner token으로 삭제하면 연결된 share_token을 함께 무효화합니다. 수신자의 읽기 전용 공유 URL에는 쓰기 권한이 없습니다.
- 매직링크 복구 삭제: 복구 이메일 또는 카카오 식별자와 연결된 토큰은 요청 시 폐기하고 계획 owner key와의 연결을 삭제합니다.
- 크리에이터/거래처: 계약 패킷의 개인정보 안내에 적힌 연락처 또는 아래 DSR contact로 요청할 수 있습니다.
7. 개인정보 보호책임자 및 DSR contact
개인정보 열람, 삭제, 처리정지, 침해 신고, 크리에이터 DSR 요청은 아래 연락처로 보낼 수 있습니다.
mealbulk 개인정보 보호 담당자이메일: privacy@mealbulk.example
사업자 정보 및 전화번호: [사업자등록 후 기재]
8. 아동, 민감정보, 선택 추적
mealbulk는 L0에서 행동 기반 식이/건강 추론을 하지 않습니다. 이벤트에는 건강, 종교, 식습관 등 민감한 카테고리를 넣지 않고, 기능은 이용자의 명시적 행동에 의해 동작합니다. 계정 또는 복구 연락처를 통한 개인정보 수집이 필요한 경우 만 14세 미만 이용자는 법정대리인 동의 또는 차단 정책을 적용합니다.
L0는 선택적 광고/분석 쿠키를 사용하지 않습니다. 향후 별도 analytics tracker를 도입하려면 사전 opt-in 동의 UI를 먼저 제공합니다. 쿠팡의 24시간 attribution cookie는 쿠팡 사이트 이동 후 쿠팡 측 도메인에서 설정되며, 쿠팡 개인정보처리방침이 적용됩니다.
9. 고지 변경
이 방침은 L0 공개 전 법률 검토와 실제 processor 확정에 따라 수정될 수 있습니다. 시행일, 사업자 정보, 백업 object-store 사업자, DSR 셀프서비스 URL은 launch gate에서 확정해 반영합니다.