# 법 문서 만들기

앱 스토어와 결제 서비스는 개인정보 처리방침 주소가 없으면 앱이나 가입을 받지 않아요. allob 은 제품에 대해 이미 아는 사실로 개인정보 처리방침과 이용약관을 만들고, allob 주소에 띄워 줘요. 판매 나라마다 걸리는 규칙과 곧 시행되는 법도 알려 주고, 스토어 설문 답 초안도 만들어요. 에이전트는 초안까지만 만들고, 게시는 사람이 화면에서 해요.

## 에이전트에게 맡기기

:::prompt
https://allob.app/docs/legal.md 를 읽고 이 제품의 법 문서 초안을 만들어 줘.
1. allob legal scan --write legal.json 으로 이 프로젝트가 쓰는 외부 업체와 앱 권한을 찾고, 코드를 읽어 모으는 개인정보(계정·이용 기록·결제 등)와 보관 기간을 legal.json 에 추가해. 사람이 읽는 말로 쓰고, AI 모델 이름·저장소·코드 이름은 쓰지 마.
2. legal.json 을 나한테 보여 주고, 내가 괜찮다고 하면 allob legal facts set --file @legal.json 으로 넣어.
3. allob legal plan 으로 판매 나라마다 걸리는 규칙을 보고, allob 문서가 맡지 않는 것(제품이 할 일·스토어 설문·내가 정할 것)을 정리해 줘.
4. allob legal release 로 새 버전 게시를 요청하고, 화면 주소를 나한테 알려 줘. 고칠 것이 나오면 고치고, 사업자 정보나 할 일의 답(`allob step answer`)처럼 내가 정할 것은 물어봐. 게시는 내가 할게.
:::

## allob 이 이미 아는 것

다시 적지 않아도 되는 사실이에요. 여기 값을 바꾸면 다음 확인 때 문서에 그대로 들어가요.

| 사실 | 어디서 |
|---|---|
| 상호, 대표자 이름, 사업자등록번호, 공개 주소, 이메일, 전화, 통신판매업 신고번호 | 내 사업 › 사업자 정보. 주소는 공개 주소만 쓰고, 대표자 이름은 법이 요구하는 사업자 정보·特商法 표기에만 나와요 |
| 판매 지역, 플랫폼, 수익 방식, 로그인 같은 기능 | `allob step answer`([사업 가이드 › 제품 정하기](/docs/journey-product)) |
| 공개 주소에 호수까지 적을지, EU 대리인 | `allob step answer`([사업 가이드 › 법 문서](/docs/journey-legal)) |
| 개인정보를 받는 업체 | 제품 연결(Google Analytics, RevenueCat, Dodo Payments, AdMob), 스키마의 Meta·TikTok 픽셀, 스키마 `apps.measurement` 로 켠 앱 도구(Google 애널리틱스·Meta 앱 이벤트·AdMob·미디에이션 네트워크 — [앱 측정 모듈](/docs/app#광고분석-도구google-애널리틱스meta-붙이기)), 앱 스토어 결제, allob(측정) |
| 보낸 의견(피드백) | allob 이 피드백을 받은 제품이면 처리방침에 **보낸 의견** 항목이 들어가요([앱 안 피드백 받기](/docs/feedback)) |

## 1. 사실 채우기

먼저 코드에서 쓰는 업체를 찾아요. `allob legal scan` 은 이 컴퓨터의 파일만 읽어요 — `package.json`, `Podfile.lock`, `build.gradle`, 앱 설정(`app.json`·`Info.plist`·`AndroidManifest.xml`)과 소스 코드의 https 주소에서 알려진 업체 SDK 와 앱 권한(카메라·위치 등)을 찾아요. 아무것도 올리지 않아요.

```bash
allob legal scan --write legal.json
```

`legal.json` 에는 지금 넣어 둔 사실에 새로 찾은 업체가 추가돼요. 읽어 보고 고친 뒤 직접 넣어요. 위치·푸시·로그인처럼 할 일의 답을 바꿔야 하면 그것도 알려 줘요.

연결로 보이지 않는 것만 `legal.json` 에 적어요.

```json
{
  "data": [
    {
      "id": "account",
      "name": { "ko": "계정 정보", "en": "Account" },
      "items": { "ko": "이메일", "en": "Email" },
      "purposes": { "ko": "로그인, 문의 답변", "en": "Sign-in, support" },
      "retention": { "kind": "account" },
      "basis": "contract"
    }
  ],
  "vendors": ["openai"],
  "deletion": { "inApp": true }
}
```

| 필드 | 무엇 |
|---|---|
| `data` | 모으는 정보 묶음. `retention.kind` 는 `account`(탈퇴할 때까지)·`days`(정한 날 수)·`session`(이용하는 동안만)·`law`(법이 정한 기간 — `note` 에 어떤 법인지) |
| `basis` | EU 에 팔 때 처리 근거 — `contract`·`consent`·`legitimate`·`law`. `legitimate` 이면 그 이익을 `interest` 에 적어요 |
| `vendors` | 연결로 보이지 않는 업체. allob 이 아는 업체는 id 만(`openai`·`anthropic`·`google-gemini`·`openrouter`·`cloudflare`·`firebase-messaging`·`expo-push`·`google-signin`·`apple-signin`·`kakao-login` 등), 모르는 업체는 `name`·`legalName`·`country`·`role`(`processor` 맡긴 업체·`recipient` 스스로 받는 회사·`merchant` 결제 주체)·`category`·`task`·`items`, 그리고 `contact`(개인정보 문의 메일이나 주소 — 국외 이전 표에 나가요), `privacy`, `tracking`(쿠키·픽셀로 행태정보를 모으나), `shares`(맞춤 광고로 공유하나 — 미국), `jpExternal`(이용자 기기에서 바로 보내나 — 일본 外部送信) |
| `minAge` | 쓸 수 있는 최소 나이 |
| `deletion` | 계정을 지우는 방법 — 앱 안(`inApp`), 웹 주소(`url`), 그 밖의 안내(`how`) |
| `officer` | 개인정보 문의를 받는 사람·부서. 없으면 "개인정보 보호 담당" |
| `data[].declare` | 스토어 설문 답 — `kinds`(데이터 종류, 예: `email`·`user-id`·`photos`·`purchase-history`), `purposes`(목적, 예: `app-functionality`·`analytics`), `optional`(이용자가 고를 때만 모으면 `true`). 문서 글에는 쓰지 않고, 바꿔도 새 버전이 생기지 않아요 |

일본 特商法 표기의 운영 책임자는 사업자 정보의 **대표자 이름(영문)** 을 먼저 써요.

글은 한국어 한 줄이나 `{ "ko": …, "en": …, "ja": … }` 로 적어요. 한국 밖에도 팔면 영어 글이 있어야 해요.

## 2. 확인하고 초안 만들기

```bash
allob legal check
```

막는 것이 있으면 초안을 만들지 않아요. 예를 들면 이런 것이에요.

- 사업자 정보에 빈 값이 있어요(유료면 통신판매업 신고번호, 일본에 유료로 팔면 전화번호).
- 아직 답하지 않은 할 일이 있어요(판매 지역, 주소 범위, EU 대리인 — `allob path view` 에 보여요).
- 법이 요구하지 않는 약속을 적었어요 — "3영업일 안에 답변", "직접 환불", "메일로 알려 드려요".
- 내부 정보가 보여요 — AI 모델 이름, 저장소 이름, 코드 이름, 파일 경로.

막지는 않지만 확인할 것도 같이 보여요. 예를 들어 EU 에 팔면서 광고 픽셀을 쓰면 동의를 받은 뒤에 켜야 해요.

## 3. 게시하기

에이전트는 `allob legal release` 로 게시를 요청해요. 확인하고 초안을 만들고, 바뀐 점과 공지 기간을 계산해 게시를 요청하는 일을 한 번에 해요.

```bash
allob legal release -m "푸시 알림 업체 추가"
```

제품 › **법 문서**에서 초안을 미리 보고, 시행일을 고른 뒤 **게시하기**를 눌러요. 게시를 기다리는 초안은 **금고**의 승인을 기다리는 요청 목록에도 보여요. 게시하면 allob 이 이 주소에 문서를 띄워요.

```text
https://allob.app/legal/<이름>/privacy
https://allob.app/legal/<이름>/terms
```

`<이름>` 은 첫 게시 때 정해요. 비워 두면 추측하기 어려운 이름을 allob 이 정하고, 한 번 정하면 바뀌지 않아요.

일본에 유료로 팔면 `/tokushoho`(특정상거래법 표기), 로그인이 있으면 `/account-deletion`(계정 삭제 안내)도 생겨요. 이 주소를 App Store Connect, Google Play Console, 결제 서비스의 개인정보 처리방침·이용약관 입력란에 넣어요. 주소는 제품 이름을 바꿔도 그대로예요.

게시하면 `allob path` 의 법 문서 할 일(이용약관·처리방침, 계정 삭제, 특정상거래법 표기, 나라별 절)이 자동으로 끝나요.

## 바꿀 때

사실이 바뀌면 다시 `allob legal release` 를 실행해요. 새 버전 초안에는 바뀐 점이 같이 적히고, 공지 기간이 끝나는 가장 이른 시행일이 정해져요. 더 늦게 시행하려면 `--effective 2026-12-15` 처럼 날짜를, 이용자에게 불리한 변경이면 `--unfavorable` 을 붙여요. 게시 화면에 그 날짜와 메모가 미리 채워져 있어요. 아직 시행 전인 버전이 있으면 그 날이 지난 뒤에 새 버전을 낼 수 있어요.

| 바뀐 것 | 시행일 |
|---|---|
| 첫 버전 | 바로 |
| 처리방침만 좁아지는 변경(업체 삭제, 계정 삭제 방법, 보호책임자) | 바로 |
| 운영자 연락처(주소·메일·전화)·표기(비어 있던 정보를 처음 채움, 영문 표기, 통신판매업 번호) | 바로 — 같은 운영자의 버전에는 지금 연락처가 보여요 |
| 약관에 닿는 변경(운영자의 상호·대표자·사업자번호가 다른 값으로 바뀔 때, 쓸 수 있는 나이, 로그인, 유료 서비스, 판매 지역, 결제·환불 받는 곳, AI 업체가 처음 생기거나 모두 빠질 때), 모으는 정보·업체 추가 | 7일 뒤부터 |
| 이용자에게 불리한 약관 변경(화면에서 고름) | 30일 뒤부터 |

시행일 전까지는 지금 문서 위에 바뀌는 날과 바뀐 점이 보여요. 지난 버전은 `…/privacy/v1` 같은 주소에 남아요. 알림은 페이지 게시로 하고, 메일은 보내지 않아요.

## 판매 지역마다 붙는 것

| 지역 | 붙는 것 |
|---|---|
| 한국 | 처리방침의 법정 항목(목적·항목·보관·파기·위탁·국외 이전·권리·안전조치·보호책임자·구제 방법), 약관의 사업자 정보와 청약철회 |
| 일본 | 특정상거래법 표기 페이지(유료일 때), 처리방침의 외부 전송 표 |
| EU | 처리 근거, 권리, EU 밖 이전, 대리인(둔다면) |
| 미국 | Do Not Track 안내. 주법(CCPA 등) 기준을 넘는다고 `allob step answer` 로 답했고 광고 픽셀로 공유하면 Your Privacy Choices·GPC |

## 판매 나라마다 걸리는 규칙 보기

allob 은 나라별 규칙을 법 원문과 공식 안내에 맞춰 두고 있어요. 규칙마다 누가 맡는지가 정해져 있어요 — allob 문서의 절, 제품이 할 일(예: EU 이용자는 동의한 뒤에 분석 도구 켜기, 앱 안 계정 삭제), 스토어 설문·입력란, 사업자가 정할 것이에요.

```bash
allob legal plan            # 이 제품에 걸리는 규칙과 맡는 쪽
allob legal rules --country DE   # 한 나라의 규칙과 근거(로그인 없이)
allob legal upcoming        # 120일 안에 시행되는 법과 이 제품의 다음 버전
```

`plan` 은 allob 문서가 맡는 것, allob 문서에 아직 없는 절(직접 확인할 것), 제품이 할 일, 스토어, 사업자가 정할 것으로 나눠 보여 줘요. "그런 기능이 있으면"처럼 allob 이 사실로 알 수 없는 조건이 붙은 규칙과, 판매 지역 "그 밖"의 나라 규칙은 따로 모아요. 규칙마다 근거 주소와 확인 정도(법령·공식 원문, 공식 도움말, 확인 못 함)가 있어요.

## 스토어 설문 답 초안

Google Play **데이터 보안**, App Store **앱 개인정보**, 연령 등급 설문에 넣을 답을 사실에서 만들어요. 읽기만 하는 초안이고, 스토어에는 직접 넣어요.

```bash
allob legal declarations
```

- 데이터 묶음의 `declare` 와 업체(광고·분석·로그인·결제 SDK)에서 데이터 종류·목적·신원 연결·추적·공유를 채워요. 업체에서 온 줄은 그 SDK 의 공식 데이터 안내와 한 번 더 맞춰 봐요.
- 웹에서만 도는 픽셀은 앱 설문에 넣지 않아요.
- 사실로 알 수 없는 답(전송 중 암호화, 폭력·채팅 같은 연령 등급 질문)은 "you decide" 로 남겨요. 앱이 실제로 하는 대로 답해요.
- 게시한 뒤에는 처리방침·계정 삭제 주소가 같이 들어가요.

:::warning
allob 의 확인은 법률 자문이 아니에요. 새 나라에 팔기 전이나 규정이 걸린 기능(아동 대상, 위치 정보, 건강 정보)을 넣기 전에는 그 나라 규정을 한 번 더 확인하세요.
:::

## 직접 정할 것

allob 이 정하지 않는 것이 있어요. 공개 주소에 호수까지 적을지, EU 대리인을 둘지, 미국 주법 기준을 넘는지, 이용자에게 불리한 변경인지는 사업자가 `allob step answer` 와 게시 화면에서 골라요. 픽셀·광고처럼 스스로 받는 회사로 정보가 가면 한국에선 제3자 제공·국외 이전 동의가 필요할 수 있어서, 확인이 알려 주면 동의 화면을 직접 정해요.

## 공식 안내

- 개인정보보호위원회 — [개인정보 처리방침 작성지침](https://www.pipc.go.kr)
- 공정거래위원회 — [통신판매사업자 정보 공개](https://www.ftc.go.kr/www/bizCommList.do?key=232)
- 消費者庁 — [特定商取引法ガイド（通信販売）](https://www.no-trouble.caa.go.jp/what/mailorder/)
- 総務省 — [外部送信規律](https://www.soumu.go.jp/main_sosiki/joho_tsusin/d_syohi/gaibusoushin_kiritsu.html)
- GDPR — [제13조(정보 제공)](https://gdpr-info.eu/art-13-gdpr/)

## 문서를 직접 띄우고 있다면

자기 사이트에 처리방침을 이미 띄웠다면 그 주소로 할 일을 끝낼 수 있어요(`allob step done <할 일> --url …`).

```bash
allob path check legal.docs --url https://example.com/privacy
```
