본문 바로가기
끼리KKIRI함께 결정하는 방법을 설계합니다
문서 둘러보기
목업 체험
기획 자료순서대로 읽기

CHAPTER 09 / 13

요구사항 · 정책 정의서

개발자에게 넘길 규칙은 무엇인가?

2026-09-06 확장 안내

아래 본문은 기존 워크숍 목업 기준입니다. 새로 추가한 여행·회식·모임·선물의 질문과 후보는 다섯 가지 결정, 질문 생성과 설정은 AI 고도화에서 확인하세요. 새 체험은 규칙 기반이며 실제 LLM·다기기 응답 수집은 미연결입니다.

읽는 순서 9 / 13 · 요약

개발자에게 넘길 규칙은 무엇인가?

누가 읽나: 개발자 · 정책을 결정할 사람

← 이전: 8. AI 설계다음: 10. 지표 →

원본: KKIRI_REQUIREMENTS_AND_POLICY.md

P0 ④ · 흩어진 규칙을 코드 기준으로 한 곳에 모았다. 같이 보기: ① 문제 정의 · ② AI 설계서 · ③ 심사 대응 · ⑤ 지표 · 안내

작성: 페이블 · 2026-09-06 · P0 산출물 ④
목적: 취합 노트·검토 반영·유저 플로우·엔진 코드에 흩어진 규칙을 한 곳에 모은다. 개발자에게 이 문서 하나로 「무엇을, 어떤 규칙으로」를 넘길 수 있어야 한다.
기준: mockup/engine.js · mockup/app.js 2026-09-06 실행 확인. 「목업」 열의 값은 코드에서 직접 읽었다(상수 이름 표기).

갱신: 2026-09-06 §7 미결 7건을 결정값으로 교체(쏠 결정서 v1, 민수 위임). §3 P-07 · P-17 · P-18 · P-19 행 갱신, P-21 · P-22 추가, §5 방장 이탈 행 갱신.


1. 범위와 역할

항목MVP (발표 데모)NEXT
주제팀 워크숍 1개여행 · 회식
인원3~8명 (방장 포함)9명 이상
질문6문항 고정주제별 문항
후보고정 5개생성 (AI 설계서 §7)
실행단일 브라우저 시뮬레이션서버 · 다기기 · 개인 토큰

역할: 방장(주제·인원·마감·초대 방식 결정, 협상 시작, 결과 확정) · 참가자(답변, 재확인) · 시스템(구조화, 조율, 설명, 알림). 방장도 참가자로서 답변한다. 방장은 남의 답변을 보지 못하고 대신 답하지 못한다.


2. 기능 요구사항 (MoSCoW)

M = Must(MVP 필수) · S = Should(MVP 권장) · C = Could(여유 시) · W = Won't(이번 범위 밖)

ID기능우선목업 상태근거
FR-01방장이 주제(워크숍) · 인원 3~8 · 답변 마감 · 초대 방식 · 방장 이름을 정해 방을 만든다M구현LIMITS, DEADLINES, S1
FR-02공용 링크 + 6자리 입장 코드 또는 이름별 개인 링크를 만든다M구현(시뮬레이션)inviteMode
FR-03참가자가 이름을 입력하고 비공개 약속을 읽은 뒤 답변을 시작한다M구현S3
FR-046문항: 방식 · 시간(선호+상한) · 목적 1·2순위 · 지역 · 예산(선호+상한) · 피할 것(자유서술)M구현QUESTIONS
FR-05자유서술을 조건 태그로 구조화하고, 제출 전에 사용자가 확인·수정한다M구현(키워드 7종) / LLM 미구현structureAvoid, AI 설계서 §4
FR-06협상 시작 전까지 본인 답변을 수정할 수 있다S구현S5 「답변 고치기」
FR-07방장은 누가 답했는지만 본다. 무엇을 답했는지는 못 본다M구현S2 문구, 데이터 경계
FR-08미응답자에게 자동 리마인드 2회 + 방장 수동 리마인드S구현(시뮬레이션)advance(), REMIND_COOLDOWN
FR-09마감 시 응답 3명 이상이면 자동 시작, 미만이면 연장(최대 2회) 또는 방 닫기M구현MAX_EXTENSIONS, EXTENSION_MIN
FR-10방장이 3명 이상 답한 시점에 조기 시작할 수 있다 (미응답 확인 모달)S구현S5
FR-11거부권 필터 → 만족도 → 최저 우선 정렬로 합의안 1개 + 대안 2개를 낸다M구현negotiate, compareRows
FR-12조율 화면에 사람 단위 발언 없이 집계 진행 4단계를 보인다M구현makeLog
FR-13결과: 최종안 · 지켜진 조건 건수 · 공통 이유(2명 이상) · 선호와 다른 지점(집계) · 탈락 후보와 사유 주제 · 공정성 수치(최저/평균)M구현reasons, concessions, kept, dead
FR-14설명 문장을 LLM으로 생성하고, 30초 안에 안 되면 템플릿으로 대체한다S폴백 UI만 구현LLM_TIMEOUT_MS, AI 설계서 §5
FR-15본인만 보는 개인 리포트: 지켜진 조건 · 선호와 다른 지점 · 1순위 반영 여부 · 개인 만족도M구현receipt, selectParticipant
FR-16최종 재확인: 동의 / 조건부 동의(한 줄 필수) / 재조율 요청(방당 1회, 구조화 성공 필수)M구현validateRatify
FR-17재확인 마감 24시간. 미응답은 기권. 재조율 요청 없으면 방장이 확정M구현RATIFY_HOURS
FR-18결정 완료 화면 + 공유(캘린더 초대 포함)S구현S9
FR-19개인 토큰으로 리포트 접근 인증 (URL만 아는 타인은 못 봄)M (제품)미구현취합 노트 §3
FR-20후보 0개일 때 탈락 사유 주제 집계와 재조율 안내M구현negotiate ok:false
FR-21여행·회식 주제W「NEXT」 표시1 Pager
FR-22결정 후 예약·일정 등록 연결W없음1 Pager 약점 4
FR-23대리인 완화 제안 라운드 (후보 0개일 때)W없음AI 설계서 §7

3. 정책 정의

ID정책값목업상태
P-01참여 인원3~8명 (방장 포함). 3 미만·8 초과 불가LIMITS확정 (민수 2026-09-04)
P-02답변 마감 옵션3시간 / 오늘 자정 / 24시간(기본) / 48시간DEADLINES확정
P-03자동 시작 조건마감 시 응답 ≥ 3명advance()확정
P-04마감 연장24시간씩, 최대 2회. 그래도 3명 미만이면 방 닫기EXTENSION_MIN, MAX_EXTENSIONS확정
P-05미응답자계산 · 개인 리포트 · 재확인 모두 제외. 결과 화면에 「미응답 N명 조건 미반영」 명시. 방장 대행 답변 금지eligibleParticipants확정 (검토 반영)
P-06리마인드자동: 남은 시간 절반 지점 · 마감 1시간 전, 미응답자에게만. 수동: 방장, 쿨다운 30분advance(), REMIND_COOLDOWN확정
P-07초대 방식공용 링크 + 6자리 코드(정원 차면 닫힘) 기본. 이름별 개인 링크는 선택. 초대 URL·코드는 입장용이며 답변·리포트 열람 권한이 아님inviteMode확정 (쏠 결정서 v1 2026-09-06, 민수 위임)
P-08링크 만료답변 마감 시각문구확정
P-09재확인 마감결과 후 24시간. 미응답 = 기권RATIFY_HOURS확정
P-10재조율방당 1회. 빈 값 금지, 구조화 성공 뒤에만 제출. 요청자 조건에만 추가. 실패 시 1회 권한 유지validateRatify확정 (검토 반영)
P-11공정성 규칙거부권 → 최저 만족도 ↓ → 평균 ↓ → 비용 ↑ → 일정 짧은 순 → 후보 IDcompareRows확정 (검토 반영)
P-12공개 경계2명 이상 공통인 조건·차이만 구체화. 단독은 건수만. 개인 만족도·정확한 상한은 본인 리포트만. 사람 단위 발언 없음reasons, concessions, makeLog확정 (검토 반영)
P-13만족도 가중목적 40 · 방식 25 · 지역 20 · 시간 15. 예산 선호 초과 1.5배 이내 −5, 초과 −10satisfaction확정
P-14상한(거부권)시간 상한: 선택보다 긴 일정 탈락. 예산 상한: 초과 후보 탈락. 금지 태그: 후보 태그 일치 시 탈락. 한 명만 걸려도 탈락vetoes확정
P-15자유서술 어휘태그 7종 (운전·술·숙박·격한 야외·장거리·날음식·이른 출발). 어휘 밖은 목록 선택AVOID_RULES확정 (확장은 후보 태그와 동시)
P-16설명 생성 타임아웃30초 → 템플릿 폴백, 배지 표기LLM_TIMEOUT_MS확정
P-17원문 보관결정 확정 또는 방 종료 시 원문(피할 것 자유서술·재조율 사유·조건부 동의 문장) 즉시 삭제. 미완료 방은 생성 후 7일(168시간)에 미확정 종료·삭제S3 문구 (「가정」 표기 제거 대상)확정 (쏠 결정서 v1 2026-09-06, 민수 위임)
P-18종료 후 열람확정·종료 시각(closed_at)부터 7일(168시간) 읽기 전용. 이후 결과·구조화 조건·개인 리포트 삭제, 접근 토큰 폐기. 방·참가자에 연결되는 이벤트도 같은 시점에 삭제완료 화면 문구확정 (쏠 결정서 v1 2026-09-06, 민수 위임)
P-19소수 응답 보호실제 계산 참여자가 3명이면(정원과 무관) 공통 선호의 구체 내용·조건별 인원수·단독 조건 건수·후보별 탈락 사유 주제·최저/평균 수치를 숨긴다. 공개 화면은 후보의 장소·비용·일정, 응답 현황, 일반 설명만. 재확인 유형별 인원수도 숨김. 본인 리포트는 유지. 4명 이상은 P-12 유지(「완전 익명」 표현 금지)—확정 (쏠 결정서 v1 2026-09-06, 민수 위임) · 추천값과 다름
P-20예산 선호(상한 OFF)페널티로만 반영 (P-13). 상한 ON만 탈락satisfaction확정 (검토 반영 · 2026-09-06 유지 재확인)
P-21동점 · 근소한 차 표시거부권 통과 1·2위의 최저·평균 차 dMin·dMean(엔진 정렬에 쓴 값, 표시용 반올림 금지). 둘 다 0이면 「만족도 동점」, 둘 다 1 미만(동점 제외)이면 「근소한 차」. 생존 후보 1개면 표시 없음. 정렬은 P-11 그대로미구현 (UC-49)확정 (쏠 결정서 v1 2026-09-06, 민수 위임)
P-22방장 이탈 · 방 수명자동 확정 없음. 재확인 마감 뒤 방장 확정 유예 24시간, 그래도 미확정이면 「미확정 종료」. 방 수명은 생성(created_at) 후 최대 7일(168시간)이며 먼저 오는 시점에 종료. 미확정 종료는 완료·동의 지표에 넣지 않음미구현 (UC-39a)확정 (쏠 결정서 v1 2026-09-06, 민수 위임) · 추천값과 다름

4. 비기능 요구사항

ID항목요구
NF-01접근성모달 role=dialog · aria-modal · 포커스 이동/복귀 · ESC, 선택 버튼 aria-pressed, 본문 대비 AA 4.5:1 (현재 보라색 4.48:1 → 대체색, 디자인 벤치마킹 §P0)
NF-02성능구조화 p95 3s, 설명 p95 10s, 결과 화면 첫 표시 ≤ 1s (규칙 계산은 즉시)
NF-03보안개인 토큰은 추측 불가 길이, 방 URL만으로 리포트 접근 불가, 입장 코드 6자리 + 정원 마감
NF-04데이터원문은 구조화 호출 1회 뒤 만료 시각과 함께 저장, 결정 완료 후 삭제(P-17). 로그에 원문·개인 값 기록 금지
NF-05재현성같은 답변 집합 → 같은 결과. 엔진은 순수 함수 유지, 회귀 테스트(check.mjs, tests/) 통과
NF-06모바일430px 기준 설계, 데스크톱은 중앙 정렬

5. 예외 · 에러 케이스

상황동작화면목업
정원 초과 입장 (공용 링크)거부「정원이 찼어요」문구만
입장 코드 오류재입력오류 문구시뮬레이션
자유서술 구조화 실패제출 차단, 목록 선택 요청「이해하지 못했어요」구현
마감 시 응답 < 3연장 선택 또는 방 닫기방장 선택구현
후보 0개탈락 사유 주제 집계 + 재조율 안내「후보가 없어요」구현
1·2위 동점P-11 후순위 규칙 적용결과에 「근소한 차」 표시 여부 미결규칙만
재조율 2회째차단「방당 한 번만」구현
조건부 동의 빈 값차단「실행 조건을 적어주세요」구현
설명 생성 30초 초과템플릿배지구현(연출)
방장 이탈자동 확정 없음. 재확인 마감 후 24시간 유예 → 미확정 종료. 방 수명 상한 7일—확정 (P-22)

6. 수용 기준 (Given / When / Then) — Must 항목


7. 미결이었던 정책 — 결정 반영 (2026-09-06)

2026-09-06 민수가 wanted 스레드에서 결정을 쏠에게 위임했고(이벤트 f5f5e418…), 쏠이 KKIRI_POLICY_DECISIONS_2026_09_06.md(결정서 v1)로 기록했다. 아래 표는 이 문서가 제시했던 추천값과 실제 결정을 나란히 둔 것이다. 결정값은 §3의 P-07 · P-17 · P-18 · P-19 · P-20 · P-21 · P-22 행에 반영했다. 결정은 설계·개발 적용 기준이며 제품 구현·검증 완료를 뜻하지 않는다. 이 값은 선택한 정책값이지 사용자 조사 측정값이 아니다.

ID쟁점이 문서의 추천(당시)결정 (쏠 결정서 v1)추천과 다른 점
P-07초대 기본값공용공용 링크 + 6자리 코드 기본, 개인 링크는 선택같음
P-17원문 보관 기간결정 완료 즉시 삭제, 태그만 7일확정·방 종료 시 즉시 삭제. 미완료 방도 생성 후 7일에 종료·삭제미완료 방 상한 추가
P-18결정 후 열람7일종료 후 7일 읽기 전용, 이후 삭제·토큰 폐기같음 + 삭제 범위 명시
P-193명 방그대로 + 안내 문구실제 계산 참여자 3명이면 상세 공개 이유·집계 수치 생략다름 — 소수 집계로 개인 조건을 추정할 여지를 줄이려는 결정
P-20예산 선호유지유지 (§3에서 이미 확정이었음)같음
P-21동점 표시1점 미만 차이면 「근소한 차」표시. dMin·dMean 둘 다 0이면 동점, 둘 다 1 미만이면 근소한 차. 생존 후보 1개면 없음판정식을 두 값 모두로 고정
P-22방장 이탈재확인 마감 후 이의 없으면 자동 확정자동 확정 없음. 24시간 유예 뒤 미확정 종료. 방 수명 최대 7일다름 — 무응답·기권을 동의나 방장 결정으로 바꾸지 않음

결정으로 정정해야 할 곳 (이 문서 밖)

남아 있는 미결(정책 아님): 주 버튼 색(검정 vs 보라, 스타일 보드), 대리인 발언 로그 삭제 확정(벤치마킹 통합본 §6), 새 기기에서 개인 리포트 복구 방식(쏠 A-02, E4).