끼리 (KKIRI) — 유저 플로우

작성: 페이블 · 2026-09-04
기준: 목업 OUTBOX/KKIRI/mockup/app.js 의 실제 화면 전환 코드(go() 호출과 advance() 마감 규칙)를 그대로 옮겼다. 화면 ID는 목업 코드의 state.screen 값이고, 괄호 안 S번호는 화면 시나리오 문서의 번호다. 스크린샷 번호는 검증 로그의 shots/ 파일과 같다.
※ 목업은 단일 브라우저 시뮬레이션이다. "서버"로 적은 부분은 실제 서비스에서 서버가 맡을 일이며 목업에서는 localStorage 와 시뮬레이터 패널이 대신한다.

0. 화면 ID 대응표1. 전체 흐름 한눈에2. 역할별 스윔레인 — 방장 · 참가자 · 시스템3. 방 상태 머신 — 타임아웃 규칙4. 질문 6문항 세부 — 상한 토글과 구조화 확인5. 초대 링크 발송 — 공용 링크 vs 개인 링크6. 답변 마감 타임라인7. 최종 재확인 — 추천이 아니라 합의로 끝내기8. 예외 흐름 3종9. 검증된 시나리오 경로10. 다이어그램이 코드와 다른 곳 (미구현 · 가정)

0. 화면 ID 대응표

화면 ID (코드)시나리오역할스크린샷다음으로 갈 수 있는 곳
homeS0방장01setup
setupS1방장02invite
inviteS2방장03 · 20join / waiting(이미 답변함)
joinS3전원04questions
questions (q0~q5)S4전원05 · 06 · 07waiting / join(첫 문항에서 이전)
waitingS5전원08 · 21 · 22negotiating / questions(답변 고치기) / expired
negotiatingS6전원09 · 24 · 29result / noCandidate
resultS7전원10 · 25 · 27receipt / ratify
receiptS8본인만11ratify / result
ratifyS7-b (쏠 S09)전원12 · 13 · 14 · 26 · 28done(방장) / negotiating(재조율 1회) / result
doneS9전원15home
expired예외방장23waiting 또는 invite(연장) / home(방 닫기)
noCandidate예외전원30home

1. 전체 흐름 한눈에

해피패스는 굵은 선, 예외는 점선. 마름모는 사람이 고르는 분기, 육각형은 시스템이 자동으로 정하는 분기.

워크숍 카드초대방 만들기 답변 시작하기약속 확인 대리인 보내기답변 고치기 (시작 전) · 3초 자동아니오확인 모달 · 미응답 조건 미반영기다림답변 3명 · 자동 시작답변 < 3명24h 연장 (최대 2회) 닫기아니오상한 완화 익명 동의 요청 / 닫기 대리인 리포트 (본인만)최종 의견 보내기최종 의견 보내기 · 방당 1회아니오 · 전원 응답 또는 24h 마감 결정 시작하기

home · S0
랜딩 · 주제 선택

setup · S1
인원 3~8 · 마감 · 초대 방식 · 방장 이름

invite · S2
링크 · 코드 · 공유 시트 · 참여 현황

join · S3
비공개 약속 · 이름

questions · S4
6문항 (상한 토글 · 1·2순위 · 자유서술)

waiting · S5
내 대리인 카드 · 참여 현황 · 마감

전원 답변?

negotiating · S6
4단계 + 익명 발언 로그

방장:
지금 협상 시작?

답변 마감 도달

expired
아직 시작할 수 없어요

거부권 통과
후보 ≥ 1?

result · S7
최종안 · 이유 · 양보 · 공정성 · 차선

noCandidate
모든 조건을 지키는 안이 없어요

receipt · S8
지켜진 조건 · 양보 · 내 만족도

ratify
동의 / 조건부 / 재조율 → 익명 집계

재조율 요청 있음?

방장:
결정 확정

done · S9
확정 카드 · 공유 · .ics · 실행 체크

다이어그램 1 · Mermaid 원본 보기

2. 역할별 스윔레인 — 방장 · 참가자 · 시스템

방장은 방을 만들고 시작·확정을 결정한다. 참가자는 답변과 최종 의견만 낸다. 시스템은 마감·리마인드·협상·집계를 맡는다. 방장도 참가자 열의 일을 그대로 한다(자기 답변).

시스템참가자 (방장 포함)방장아니오≥3명<3명재조율 1회

주제 선택

인원 · 마감 · 초대 방식 · 이름

초대 링크 공유
카톡 · 슬랙 · 문자 · QR · 복사 · 캘린더

참여 현황 확인

전원 완료 전
시작할까?

확인 모달 → 시작

미응답자 다시 알림
(30분 쿨다운)

재확인 집계 확인

결정 확정하기

링크 · 코드로 입장

비공개 약속 · 이름

6문항 답변
상한 = 거부권

자유서술 구조화 확인

대기실
내 대리인 카드

결과 열람

내 리포트 (본인만)

최종 의견
동의 / 조건부 / 재조율

방 · 링크 · 코드 생성

리마인드
남은 시간 절반 · 마감 1h 전

마감 도달

협상 시작
익명 구조화 → 거부권 → 최저 만족도 → 설명

연장 제안 (최대 2회)

합의 제안 + 개인 리포트

재확인 집계 · 24h 마감
미응답 = 기권

다이어그램 2 · Mermaid 원본 보기

3. 방 상태 머신 — 타임아웃 규칙

방 하나의 수명. 모든 시간은 목업 상수(app.js 상단)와 같다.

주제 선택초대방 만들기마감 = 3h / 자정 / 24h(기본) /48h 전원 답변 3초 자동 방장 조기 시작 (미응답 조건미반영 모달) 마감 도달 · 답변 3명 자동시작 배너마감 도달 · 답변 < 3명24h 연장(최대 2회) 닫기거부권 통과 후보 1LLM 설명 30초 초과 규칙 문장폴백후보 0개 닫기 / 상한 완화 요청재확인 시작 (마감 24h)동의 · 조건부 · 재조율 (익명 집계)재조율 요청 (방당 1회)방장 확정조건 = 재조율 0 (전원 응답24h 경과)7일 읽기 전용 원문 삭제 기간미확정

Draft

Collecting

참가자 입장 · 답변 수집
자동 리마인드 2회 (T/2, T-1h)
수동 리마인드 (30분 쿨다운)

Negotiating

Expired

Closed

Proposed

NoCandidate

Ratifying

Confirmed

다이어그램 3 · Mermaid 원본 보기

4. 질문 6문항 세부 — 상한 토글과 구조화 확인

questions 화면 안의 흐름. 5·6번이 거부권을 만드는 자리라서 가장 세밀하다.

성공실패다시 쓰기건너뛰기 대리인 보내기비워 두고 건너뛰기 이전 이전 (선택 유지)답변 고치기 (협상 시작 전)

join · 이름 입력

1/6 방식
실내 · 야외 · 반반

2/6 시간
반나절 · 하루 · 1박 2일
☐ 이 이상은 어려워요 (거부권)

3/6 목적 1·2순위
팀워크 · 재충전 · 아이디어

4/6 지역
도심 · 근교 · 무관

5/6 1인 예산
3만 · 5만 · 10만 · 상관없음
☐ 이 금액 넘으면 어려워요 (거부권)

6/6 이것만은 피하고 싶어요
자유서술 1줄 (선택)

구조화
(목업: 키워드 규칙 · 실제: LLM)

이렇게 이해했어요:
운전 없는 동선 · 맞나요?

이 문장은 조건으로 바꾸지 못했어요
다음 버튼 비활성

waiting · 대기실

다이어그램 4 · Mermaid 원본 보기

5. 초대 링크 발송 — 공용 링크 vs 개인 링크

방 만들기에서 고른 초대 방식에 따라 입장·리마인드·미응답 표시가 달라진다.

초대 채널카톡 · 슬랙 · 문자서버 (목업: localStorage)초대 채널카톡 · 슬랙 · 문자서버 (목업: localStorage)미입장자는 "참가자 N"으로만 표시같은 사람 재입장은 코드로 막지 못함방장은 "누가 미응답"까지 앎답변 내용은 여전히 못 봄토큰은 내 리포트 접근 인증에도 사용alt[공용 링크 + 입장 코드 (친구 · 가족 · 카톡)][이름별 개인 링크 (직장 팀 · 슬랙 · 메일)]loop[마감까지]방장참가자초대방 만들기 (인원 N, 마감 T, 초대 방식)1r/{room} + 6자리 코드2링크 + 코드 한 번 공지3링크 확인4코드 입력 · 닉네임5입장 (정원 차면 닫힘)6이름 N-1개 입력7r/{room}/p/{token} 사람마다8각자에게 개인 링크 전송9토큰으로 입장 (중복 불가)106문항 답변 제출11참여 현황 갱신 (✓ 완료 · ● 작성 중 · ○ 미접속)12자동 리마인드 (T/2, T-1h) → 미응답자만13수동 리마인드 (30분 쿨다운)14링크 만료 = 답변 마감 시각15방장참가자
다이어그램 5 · Mermaid 원본 보기

6. 답변 마감 타임라인

24시간 마감(기본)을 예로 든 시간축. 목업 시뮬레이터의 +1h / +6h / 마감 1시간 전 / 마감 버튼이 이 지점들을 밟는다.

답변 3답변 < 3연장 1회 T+24h 3< 3 · 연장 2회 소진방장 수동 알림언제든 · 30분 간격24h 경과

T0 09:00
방 생성 · 링크 공유

T/2 21:00
자동 리마인드 1
미응답자만

T-1h 08:00
자동 리마인드 2

T 09:00 마감

자동 협상 시작
결과에 미응답 N명 배너

expired 화면

리마인드 다시 계산
(T'/2, T'-1h)

T' 마감

방 닫기

result → ratify
재확인 마감 +24h

미응답 = 기권 집계
방장 확정 가능

다이어그램 6 · Mermaid 원본 보기

7. 최종 재확인 — 추천이 아니라 합의로 끝내기

결과 화면은 "합의 제안"일 뿐이다. 확정은 전원 재확인 뒤 방장이 누른다.

동의해요조건부로 동의해요공개 가능한 실행 조건 1줄다시 조율해야 해요 조건 비공개 추가 · 요청자 익명 · 방당 1회아니오아니오24h 경과

result · 합의 제안

내 최종 의견

보내기

응답 현황 (이름 없이 합계)
동의 · 조건부 · 재조율 · 미응답

재조율 요청 ≥ 1?

negotiating 재실행
새 조건 합쳐 재계산

result · 재조율 1회 반영 배너
이후 재조율 버튼 비활성

전원 응답?

방장: 결정 확정하기

재확인 마감까지 대기
참가자 화면: 방장의 확정을 기다리는 중

미응답 = 기권 집계 배너

done · 확정 카드
실행 조건 체크리스트 포함

다이어그램 7 · Mermaid 원본 보기

8. 예외 흐름 3종

검증 로그의 흐름 B·C에서 실제로 밟은 예외 경로.

LLM 타임아웃 (shots 29)

설명 생성 30초 초과

규칙 기반 문장으로 대체
로그에 시스템 줄

result 배지
설명은 간략하게 제공돼요

합의 불가 (shots 30)상한 완화 익명 동의 요청 닫기

반나절 상한 + 새벽 출발 금지

거부권 통과 후보 0개

noCandidate
제외 사유는 주제만 표시

상한 낸 사람 전원 동의 시 재계산 ※ 목업은 토스트

home

마감 미달 (shots 23)24h 연장 닫기

마감 도달
답변 2명

expired

방장

waiting 복귀 · 연장 기록

home

다이어그램 8 · Mermaid 원본 보기

9. 검증된 시나리오 경로

검증 로그(VERIFY_LOG.md)의 세 흐름을 화면 ID 열로 적은 것. 각 화살표는 위 다이어그램의 간선 하나에 대응한다.

흐름조건경로
A 해피패스4명 · 공용 링크 · 전원 답변home → setup → invite → join → questions(q0~q5, 구조화 확인) → waiting → negotiating(3초 자동) → result → receipt → ratify(동의 → 미응답 1 → 24h 마감 → 기권 집계) → done
B 타임아웃·재조율8명 · 개인 링크home → setup → invite(리마인드 2회 + 수동 쿨다운) → join → questions → waiting → expired(답변 2명) → 연장 → waiting → negotiating(답변 4명 마감 자동 시작) → result(미응답 4명 배너) → ratify(재조율) → negotiating → result(재조율 1회 반영) → ratify(조건부 집계) → done
C 합의 불가3명 · 반나절 상한 · 새벽 출발 금지 · LLM 타임아웃 토글home → setup → invite → join → questions → waiting → negotiating(폴백 시스템 줄) → noCandidate

10. 다이어그램이 코드와 다른 곳 (미구현 · 가정)