골목 · 단골의 이름 — 동의 설계

이름은 넘기는 데이터가 아니라
손님이 건네는 인사다

"하은님이 3번째 — 오늘 단골이 됐습니다"를 되살리는 길. 알리지 않고 넘기면 동의 없는 제공이라 이름을 뺐고, 그래서 제품의 심장이 빠졌다. 이 문서는 이름이 합법적으로, 그리고 더 따뜻하게 주인에게 도착하는 순서를 정한다.

페이블 설계 · 2026-08-06 · 오퍼스 의뢰 — 코드 변경 없음, 문안은 전부 실사용 한국어

동의를 "고지"로 짓지 않고 "인사"로 짓는다.

3번째 발걸음의 선물이 먼저 도착하고, 그 다음에 손님이 스스로 이름을 내민다. 시스템이 가져가는 게 아니라 손님이 건네는 것 — 그래서 묻는 문장이 경고문이 아니라 초대장이 된다.


A · 다섯 질문에 대한 답

결정 다섯 개

1 · 손님에게 언제, 어떤 말로 알리나

1·2번째에는 아무 말도 하지 않는다. 이름이 안 가는 동안엔 알릴 것도 없다 — 고지는 제공이 생길 때 하는 것이다. 묻는 순간은 가게당 딱 한 번, 3번째 선물 시트 안, 축하가 먼저 도착한 뒤다. 문장이 예고("한 번 더 오면…")가 아니라 회고("지금까지 가게는 발걸음 숫자만 알아요")라서 3번째의 선물이 깨지지 않는다. 한 번 건네면 그 가게엔 계속 유효하고, 언제든 거둘 수 있다.

2 · 무엇까지 주인이 보나

부르는 이름 + 발걸음 횟수. 끝. 기본값은 표시 이름에서 성을 뗀 "하은"이고 손님이 고칠 수 있다. 사진·실명·전화번호·소속은 안 간다 — 얼굴은 앱이 아니라 가게 문 앞에서 보는 것이고, 앱이 줄 것은 얼굴이 아니라 부를 이름이다. 주인 화면에서 손님 이름도 가게 문패와 같은 한글 도장 원으로 그린다 — 덜 주면서 더 따뜻해지는 지점이 정확히 여기다.

3 · 손님에게 무엇이 돌아오나

할인이 아니다. 맡긴 마음과는 절대 결합하지 않는다 — 동의를 돈으로 사는 순간 그건 동의가 아니고, 교회 예산이 동의 매수에 쓰이는 그림이 된다. 돌아오는 건 대칭이다: 이름을 건넨 단골의 가게 화면엔 "소반식당이 하은님을 기억해요" 한 줄이 상시로 남는다 — 가게가 나를 아는 골목의 감각. 단골 혜택 자체(한마디 먼저 옴 · 골목 맨 앞)는 이름과 무관하게 전원에게 간다. 인사의 대가는 인사다.

4 · 비로그인 손님은 어떻게 나타나나

안 나타난다 — 그리고 그게 정직이다. 계정 없는 발걸음은 손님 폰(localStorage)에만 있고 서버엔 개인 단위 데이터가 아예 없다. 없는 데이터를 익명 줄로 그려 넣는 것이 바로 가짜 활기다. 대신 주인 빈 상태 문안이 사실을 설명한다: 폰이 세고 있고, 그분이 우벨에 들어오는 날 visit_merge로 발걸음이 한꺼번에 도착한다고. 숫자가 어느 날 갑자기 뛰어도 주인이 놀라지 않게.

5 · 거절할 자유는 어떻게 보이나

이름 없이도 완전한 단골이다. 주인 화면엔 "조용한 단골 N분" 집계 한 줄로만 — 사람 목록에 유령 행을 만들지 않는다. 주인이 먼저 이름을 청할 버튼도 없다: 거절에 비용이 붙는 순간 동의는 강요가 된다. 마음이 바뀌면 손님이 가게 화면에서 언제든 건네고, 건넨 뒤에도 언제든 거둔다. 조용한 단골이라는 말 자체가 답이다 — 실제 골목에도 목례만 하고 다니는 단골이 있다.


B · 손님 쪽 — 인사를 건네는 순서

선물이 먼저, 이름은 그 다음

1·2번째는 지금 라이브 그대로 한 글자도 안 바뀐다 — 이름이 안 가니 알릴 것이 없고, 예고가 없으니 3번째가 선물로 남는다. 바뀌는 화면은 3번째 시트 하나다.

B-12번째 발걸음 — 변화 없음 (현행 라이브 그대로)/madang/market/[shop]

소반식당 · 가게 단면 위

소반

두 번째 발걸음이에요

이쯤이면 소반식당도 얼굴을 익힐 때죠

왜 그대로 두는가

· "한 번 더 오면 단골"이라 말하지 않는 원칙은 이 설계에서도 산다. 동의 문안조차 여기 두지 않는다 — 2번째에 "단골이 되면 이름이…"라고 말하는 순간 그게 곧 예고가 된다.

· 법적으로도 문제없다: 이 시점까지 주인에게 가는 개인 데이터가 0이므로 고지 의무 자체가 발생하지 않는다.

B-23번째 — 선물 시트에 인사 카드가 붙는다 (핵심)/madang/market/[shop] · 로그인 손님
소반

이제 소반식당의 단골이에요

세 번의 발걸음이 그렇게 만들었어요.
이제 소반식당의 한마디가 먼저 들러요.

가게에 인사를 건넬까요?

지금까지 소반식당은 발걸음 숫자만 알아요. 인사를 건네면 가게에 딱 두 가지가 보여요 — 부르는 이름발걸음 횟수. 전화번호도, 소속도 가지 않아요.

하은고치기

건네지 않아도 단골은 그대로예요.
마음이 바뀌면 가게 화면에서 언제든 건네거나 거둘 수 있어요.

금색 점선 = 이번에 새로 붙는 부분 · 그 위는 현행 라이브 그대로

왜 이렇게 했는가

· 순서가 곧 윤리다. 축하(단골 선언)가 먼저 완결되고, 인사 카드는 그 아래 붙는다. 선물을 조건부로 만들지 않는다 — "이름을 줘야 단골"로 읽히는 배치는 실패다.

· 문장에 "동의·제공·개인정보"가 한 번도 안 나온다. 대신 무엇이 가는지 전부, 안 가는 것까지 말한다 — 이게 고지의 실질이고, PIPA가 요구하는 항목(받는 자·항목·목적)이 세 문장 안에 다 있다.

· 거절 버튼이 회색 글씨 한 줄이 아니라 같은 폭의 버튼이다. "조용히 다닐게요"는 부끄러운 선택이 아니라 하나의 단골 방식이다.

· 비로그인 손님의 3번째 시트는 현행 그대로(가입 문장 유지) — 계정이 없으면 건넬 이름도 없다. 가입·visit_merge 후 이미 단골이면, 다음 "다녀왔어요" 시트에 이 카드가 처음 나타난다.

B-3건넨 뒤 — 기억의 줄, 그리고 거두기/madang/market/[shop] · 단골+이름 건넨 손님
소반

소반식당 신원 확인된 이웃

양림동에서 12년째 백반 짓는

단골 4번째 · 소반식당이 하은님을 기억해요

이름 거두기

"오늘은 제육이 잘 됐어요. 12시 전에 오면 자리 있어요." — 은주

이름을 거둘까요?

가게에는 더 이상 이름이 보이지 않아요.
발걸음과 단골은 그대로 남아요.

↑ "이름 거두기"를 눌렀을 때의 확인 시트

왜 이렇게 했는가

· "기억해요" 한 줄이 3번 질문의 답이다 — 이름을 내준 대가는 할인이 아니라 가게가 나를 아는 상태가 화면에 상시로 남는 것. 네이버 플레이스엔 이 줄이 존재할 수 없다.

· 거두기는 숨기지 않고 기억의 줄 바로 옆에 둔다 — 철회가 쉬워 보여야 건네기도 가벼워진다. 거두면 주인 화면에서 즉시 조용한 단골로 돌아가고, 판정도 문책도 없다.


C · 주인 쪽 — 내 가게 칸의 두 얼굴

기본은 빈 상태다 — 실측 발걸음 0건

좌판 10곳 전부 발걸음 0. 그래서 C-1이 기본 얼굴이고, C-2는 첫 이름이 도착한 날의 얼굴이다. 숫자는 파일럿 규모 그대로 작게 그린다 — 화면에 활기를 그려 넣지 않는다.

C-1아직 아무도 없을 때 (기본 상태)/my · 내 가게 칸

내 가게

소반

소반식당

아직 첫 발걸음을 기다려요

문패는 이미 골목에 서 있어요 — 오늘 한마디를 적어두면 지나가던 이웃이 멈춥니다.
계정 없이 다녀간 발걸음은 손님의 폰이 세고 있어요. 그분이 우벨에 들어오는 날, 그동안의 발걸음이 함께 도착합니다.

왜 이렇게 했는가

· 0 세 개를 세우지 않는 현행 원칙 유지. 더한 것은 마지막 문장 하나 — 비로그인 발걸음의 사실관계다. 이 줄이 있어야 어느 날 발걸음이 3씩 뛰어 들어와도(merge 소급) 주인이 조작을 의심하지 않는다.

· "아직 아무도 없다"를 미안해하지 않는다. 빈 골목에 가짜 손님을 세우는 순간 이 제품의 정직 전체가 무너진다.

C-2첫 이름이 도착한 날 — 심장이 돌아온 문장/my · 내 가게 칸

내 가게

소반

소반식당

발걸음 11 · 도장 2 · 단골 1

오늘 단골 +1

하은님이 3번째 — 오늘 단골이 됐습니다. 인사를 건네왔어요.

단골 명부 보기 →

이름 문장은 인사를 건넨 단골에만 뜬다 · 조용한 단골이 늘면 "조용한 단골 한 분이 늘었어요"

왜 이렇게 했는가

· 설계 원문의 심장 문장이 그대로 돌아온다 — 단, "인사를 건네왔어요" 다섯 글자가 붙는다. 주인에게도 이 이름이 시스템이 준 데이터가 아니라 손님이 건넨 것임을 문장 자체가 말한다.

· 숫자는 발걸음 11 · 단골 1 — 파일럿 첫 주에 실제로 있을 법한 크기다. 목업이 9명의 단골을 그리면 그 목업이 곧 가짜 활기다.


D · 거절이 보이는 화면 — 우벨의 정직

조용한 단골도 단골이다

단골 명부는 이름을 건넨 사람과 건네지 않은 사람이 한 화면에 있다. 여기서 우벨이 정직한지가 드러난다 — 유령 행도, 이름을 조르는 버튼도 없다.

D-1단골 명부 — 이름 건넨 단골과 조용한 단골/my/shop/[slug] · 단골 명부

우리 단골 3

인사를 건넨 단골 2 · 조용한 단골 1

하은

하은님

8월부터 단골 · 발걸음 3번

오늘
정우

정우님

8월부터 단골 · 발걸음 5번

·

조용한 단골 1분

발걸음은 셌지만, 이름은 건네지 않으셨어요

이름은 손님이 건네는 인사라, 가게에서 먼저 청할 수 없어요. 조용한 단골도 똑같은 단골입니다.
여기 보이는 건 부르는 이름과 발걸음뿐이에요 — 전화번호·실명·소속은 우벨도 가게에 주지 않습니다.

왜 이렇게 했는가

· 조용한 단골은 목록의 사람 행이 아니라 집계 한 줄이다. "익명1" 같은 유령 행을 만들면 주인은 그 행을 추적하고 싶어진다 — 추적할 대상 자체를 화면에 안 만든다.

· 주인 쪽에 "이름 요청" 버튼이 없는 것이 이 화면의 가장 큰 설계다. 없는 버튼이 곧 손님의 자유다.

· 이름을 거둔 손님도 이 줄로 조용히 돌아온다 — 별도 표시 없음. "떠난 사람" 목록을 만들면 철회에 비용이 생긴다.

E · 이 설계가 지키는 선

이름은 시스템이 넘기는 데이터가 아니라 손님이 건네는 인사다 —
건네지 않아도 단골이고, 건넨 뒤에도 언제든 거둘 수 있으며,
가게도 우벨도 먼저 청하지 않는다.


부록 · 오퍼스가 결정할 것

남은 판단과 최소 구현 메모

판단페이블 제안
1 · 기본 이름의 범위표시 이름에서 성을 뗀 "하은"을 기본값으로. 성+이름 전체가 기본이면 과제공이고, 빈칸이 기본이면 마찰이다. 손님이 "하은맘"처럼 바꿔도 그대로 존중.
2 · 거둔 뒤의 과거 소식이름 거두기 시점 이후 주인 화면에서 이름이 즉시 사라진다. 이미 지나간 "단골이 됐습니다" 소식까지 소급 삭제할지는 오너 판단 — 페이블은 소급 삭제를 권한다(거두기의 약속이 완전해진다).
3 · merge 단골의 인사 시점가입 직후가 아니라 다음 "다녀왔어요" 시트에서. 가입 플로우에 카드를 끼우면 온보딩이 무거워지고, 발걸음의 맥락 안에서 물어야 인사가 자연스럽다.
4 · 도장(마음 얹기) 흐름의 이름이 설계 범위 밖. 도장 요청은 손님이 주인에게 직접 보내는 행위라 고지가 내재하지만, 그 문안은 도장 게이트 빌드 때 별도 검수.

골목 · 단골 동의 설계 — 페이블 · 2026-08-06 · 짝 문서: golmok-market-design.md §4-C