패턴
로그인과 데이터 동의 분리
로그인은 openid·email·profile만. 데이터 접근은 3줄 범위 시트 뒤 별도 동의. 거절해도 계정은 남고, 끊기·멈추기·지우기는 서로 다른 버튼.
두 번의 동의
로그인과 데이터 접근 동의를 분리한다. 수집은 사용자가 승인한 범위와 저장 조건에서만 시작한다.
| 로그인 | 데이터 접근 | |
|---|---|---|
| 언제 | 가입 /signup | 첫 연결 /start, 범위 시트 뒤 |
| Google 범위 | openid email profile | 읽기 전용 Calendar(증분 동의) |
| 거절하면 | 가입 안 됨(이메일 가입은 가능) | 계정은 남는다. 홈은 not-collected + CTA 1개 |
묶어 두면 첫 화면에 민감 범위 동의가 뜨고, 여기서 이탈하면 계정도 남지 않는다. 탭 하나가 늘지만 거절한 사용자도 계정이 남는다.
범위 시트
- 세 줄만: 읽는 것 / 하지 않는 것(쓰기·발송) / 기간. 네 번째 줄은 없다.
- Google로 넘어가기 전 한 줄: Google 화면에는 위보다 넓은 권한이 표시될 수 있다.
- 버튼은 누른 뒤 일어날 일을 말한다: “Google로 이동”. 보조는 “나중에”.
- 시트는 불투명하고 빛이 없다. 시트·대화상자는 짧은 작업에만.
실제 컴포넌트: 실제 ConsentSheet
- 일정의 제목과 시간만 읽어요.
- 일정을 만들거나 바꾸지 않아요. 참석자·장소·설명은 읽지 않아요.
- 지난 30일만 가져와요. 언제든 연결을 끊고 지울 수 있어요.
Google 화면에는 위보다 넓은 권한이 표시돼요. 가져오는 것은 위 범위뿐이에요.
거절해도 계정은 남는다
Google에서 동의 없이 돌아오면 오류가 아니다. 시트 없이 한 줄만 보여주고, 초점은 “가져오기”로 돌아온다.
실제 컴포넌트: ConsentSheet state="declined-return"
연결하지 않았어요. 계정은 그대로이고, 나중에 나 탭에서 연결할 수 있어요.
멈추기·끊기·지우기
수집 중단, 접근 철회 후 보관본 유지, 완전 삭제는 서로 다르다. 그래서 결과 문장이 붙은 세 개의 다른 버튼이고, 메뉴 한 줄로 숨기지 않는다. 센트럴바이에서 지워도 원래 메일·문서는 지워지지 않는다.
실제 컴포넌트: 실제 DataControls
데이터 관리
새 기록을 읽지 않아요. 읽어 온 기록은 남아요.
Google Calendar 접근을 끊어요. 읽어 온 기록은 센트럴바이에 남아요.
센트럴바이의 기록을 모두 지워요. 원래 메일과 문서는 지워지지 않아요.
Google Calendar 연결을 해제할까요?
Google Calendar 접근을 끊어요. 읽어 온 기록은 센트럴바이에 남아요.
- 이렇게① 읽기 일시 중지(기록 유지, 되돌릴 수 있음) ② 연결 해제(보관본은 남음, 되돌릴 수 있음) ③ 완전 삭제(되돌릴 수 없음, 확인 대화상자는 위험 색).
- 이렇게 하지 않기“연결 해제”를 삭제처럼 말하지 않는다. 완전 삭제가 센트럴바이의 유일한 파괴 동사다.
- 이렇게 하지 않기외부 AI는 서버 설정, 사용자 동의, 자료 범위와 비용 조건을 모두 충족할 때만. 기본 정리는 외부 AI 없이 된다.