# 끼리 — 제품 정책 결정서 v1

작성: 쏠 · 2026-09-06
상태: 민수의 위임에 따른 **설계·개발 적용 결정**. 제품 구현·배포 완료를 뜻하지 않는다.
위임 근거: wanted 스레드의 민수 요청 「헤드 리스로 스파크가 얘기한거 결정해놔」, 이벤트 `f5f5e418711315ac6ce22dbb81a2c453a563208ce392f213c3311f3537856f2f`.

이 결정서는 요구사항·정책 정의서 §7의 추천값과 충돌하는 경우 우선한다. 기존 문서와 공개 사이트에는 아직 이전 미결 표기가 남아 있을 수 있다. 아래 숫자는 새로 선택한 정책값이며 사용자 조사에서 얻은 측정값이 아니다.

## 1. 결정한 정책

| 항목 | 적용 결정 | 판단 이유 |
|---|---|---|
| P-07 초대 기본값 | **공용 링크 + 6자리 코드**. 이름별 개인 링크는 선택 기능으로 유지. | 현재 초대 흐름을 유지하고 방장 설정 부담을 줄인다. |
| P-17 원문 보관 | **결정 확정 또는 방 종료 시 원문 즉시 삭제**. 미완료 방도 생성 후 **7일**이 되면 미확정 종료하고 삭제한다. | 확정되지 않은 방의 원문도 무기한 남기지 않는다. |
| P-18 종료 후 열람 | **확정·종료 시각부터 7일간 읽기 전용**, 이후 결과·구조화 조건·개인 리포트 삭제 및 접근 토큰 폐기. | 종료 후 확인 시간을 주면서 보관 상한을 명확히 한다. |
| P-19 소수 응답 보호 | **실제 계산 참여자가 3명이면 상세 공개 이유를 생략**한다. 정원이 8명이어도 응답이 3명이면 적용한다. | 본인 답과 소수 집계를 결합해 다른 사람 조건을 추정할 수 있어, 기존의 ‘2명 이상 공통’만으로 충분하다고 보지 않는다. |
| P-20 예산 선호 | **기존 페널티 유지**. 선호 이내 0, 초과~1.5배 이내 −5, 1.5배 초과 −10. 상한 ON일 때만 초과 후보 탈락. | 이미 확정된 선호·필수 조건 분리를 유지한다. 점수 항목 추가는 하지 않는다. |
| 동점·근소한 차 / UC-49 | **표시한다**. 최저·평균 점수가 둘 다 같으면 ‘만족도 동점’. 두 차이가 모두 1점 미만이고 완전 동점이 아니면 ‘근소한 차’. 순위는 기존 P-11을 그대로 따른다. | 동점을 압도적인 추천처럼 보이지 않게 하되 결정 규칙을 바꾸지 않는다. |
| 방장 이탈 / UC-39a | **자동 확정하지 않는다**. 재확인 마감 뒤 방장 확정 유예 **24시간**, 그래도 미확정이면 **미확정 종료**. 생성 후 7일의 방 수명 상한이 먼저 오면 그 시각에 종료한다. | 무응답·기권을 동의 또는 방장 결정으로 바꾸지 않는다. |

정확히는 **새 미결 6건을 결정하고, P-20 1건을 유지 확인**했다. 기존 정의서 §3은 P-20을 이미 ‘확정’으로 표시했지만 §7에서는 선택지로 다시 열어 두고 있었다.

## 2. 구현에서 갈라지면 안 되는 경계

### 초대와 개인 접근

- 공용 초대 URL·입장 코드는 방 입장용이다. 답변·개인 리포트 열람 권한으로 쓰지 않는다.
- 초대는 정원 충족·답변 마감·조기 조율 시작 중 먼저 발생한 시점에 닫는다. 이미 참여한 본인의 인증 세션은 결과 열람 정책에 따라 유지한다.
- 서버가 참가자별 권한을 확인한다. 방장도 다른 사람의 답변·원문·리포트를 볼 수 없다. 클라이언트의 참가자 전환 메뉴는 제품 인증으로 인정하지 않는다.

### 보관과 종료

- 원문에는 피할 것 자유서술, 재조율 사유, 조건부 동의 자유서술이 포함된다. 종료 뒤 개인 리포트에는 필요한 구조화 조건과 계산 결과만 남긴다.
- 종료 시각을 `closed_at`, 생성 시각을 `created_at`으로 삼는다. 미완료 방의 절대 종료는 `created_at + 7일`, 읽기 권한 만료는 `closed_at + 7일`이다. 7일은 각각 168시간이며 날짜 자정으로 반올림하지 않는다.
- 원문 삭제는 종료 처리에 포함한다. 만료 시 접근은 즉시 차단하며, 캐시·검색 인덱스·복구본으로 원문이 다시 노출되지 않는지까지 출시 전에 검증한다. 검증 전에는 ‘삭제 구현 완료’라고 표시하지 않는다.
- 방·참가자에 연결 가능한 이벤트도 종료 후 7일에 삭제한다. 원문·이름·토큰·개인 조건·개인 점수는 이벤트에 넣지 않는다. 개인이나 방으로 되돌릴 수 있는 데이터를 ‘익명’이라고 부르지 않는다.
- 30일 재사용률(K-13)은 현 보관·식별 정책으로 측정 가능한지 별도 설계 전까지 **미계측**이다. 값을 0으로 채우거나 몰래 장기 식별자를 추가하지 않는다.

### 실제 응답자 3명인 방

- 공개 화면에는 추천 후보의 장소·비용·일정, 전체 응답 현황, ‘제출된 필수 조건을 모두 지켰어요’ 또는 ‘현재 조건으로 가능한 후보가 없어요’ 같은 일반 설명만 표시한다.
- 공통 선호의 구체적 내용, 조건별 인원수, 단독 조건 건수, 후보별 탈락 사유 주제, 최저·평균 만족도 수치는 숨긴다. 결과 공유·LLM 설명·후보 없음 화면에도 같은 공개 경계를 적용한다.
- 재확인 선택 유형별 인원수·선택자 연결은 숨기고 진행 현황과 확정 상태를 표시한다. 방장에게도 개인별 선택 내용이나 사유를 공개하지 않는다.
- 본인 리포트의 자기 조건·자기 만족도는 유지한다. 실제 응답자 4명 이상은 기존 P-12를 유지하되 ‘완전 익명 보장’이라고 표현하지 않는다. 후보의 공개 속성으로 발생하는 간접 추정까지 없앴다는 주장은 하지 않는다.

### 동점과 확정

- 비교 대상은 거부권 필터를 통과한 1·2위다. 살아남은 후보가 하나뿐이면 동점·근소한 차 배지는 표시하지 않는다.
- `dMin = abs(1위.min - 2위.min)`, `dMean = abs(1위.mean - 2위.mean)`. 엔진이 실제 정렬에 사용한 값을 비교한다. 화면 표시를 위해 추가 반올림한 값으로 동점을 판정하지 않는다.
- 동점은 `dMin = 0 AND dMean = 0`; 근소한 차는 `dMin < 1 AND dMean < 1`에서 동점을 제외한다. P-11의 최저→평균→낮은 비용→짧은 일정→후보 ID 순서를 바꾸지 않는다. 점수는 내부 규칙의 값이지 실제 만족 확률이 아니다.
- 재확인 대상 전원이 답했거나 재확인 마감이 지나고, **미처리 재조율 요청이 없을 때** 방장이 명시적으로 확정한다. 요청을 무시하고 확정하는 UC-37의 대안 문구는 이 결정과 충돌하므로 정정 대상이다.
- 유효한 재조율을 실행하면 기존처럼 새 결과에 대해 재확인한다. 새 마감도 방 수명 상한을 넘길 수 없다. 조건부 동의는 명시적 동의로 합산하지 않는다.
- 방장 확정과 전원 동의는 별도 상태다. 초기 미응답자가 있으면 ‘응답자 전원 동의 · 미응답 N명 조건 미반영’으로 범위를 밝힌다. 미확정 종료는 완료·동의·전환 성공 지표에 넣지 않는다.

## 3. 남은 작업의 순서도 결정

| 순서 | 실행 범위 | 완료 기준 |
|---|---|---|
| 1 | 이 결정값을 요구사항·UC·A안 화면설계·보관 안내에 맞추고 화면↔UC↔FR/P 대응표를 완성한다. | 같은 상황에 다른 정책이 없고, 기존 미결 표기가 결정서로 연결됨. 정책 결정 상태와 구현 상태를 분리함. |
| 2 | 워크숍 제품의 서버 상태 저장·다기기 동기화·참가자 인증·권한·마감·삭제 처리를 만든다. | 서로 다른 기기에서 방장·참가자가 진행하며, 타인 답변 접근 차단·재접속·만료·중복 제출을 실제 흐름으로 확인함. |
| 3 | 최소 이벤트 수집을 위 상태 전이에 붙인다. | 생성→입장→답변→조율→재확인→확정/미확정 종료 수가 실제 수행 기록과 일치함. 새로고침·재시도로 중복 집계되지 않음. |
| 4 | 제한된 사용자 파일럿으로 비공개 안내·조건 입력·결과 해석·재확인을 검증한다. 인터뷰 준비는 1~3과 함께 진행한다. | 기존 계획의 목표 8명(조율자 4·참가자 4)을 기준으로 실제 관찰·발언·오해·중단 지점을 기록함. 계획 인원을 실적처럼 쓰지 않음. |
| 5 | 실제로 부족한 부분을 확인한 뒤 LLM 구조화·설명과 주제 확장을 진행한다. | 검증된 입력/출력 경계와 폴백을 지키며, 효과를 사용자 관찰로 판단함. |

화면 매핑을 서버 구현 **앞으로** 옮겼다. 화면·요구사항의 충돌을 남긴 채 구현하면 인증·확정 상태를 다시 바꿔야 하기 때문이다. 초기 제품은 **A안·팀 워크숍·3~8명·고정 6문항·고정 후보 5개**로 유지한다. B·C안 확장이나 새 주제 상세설계는 이번 제품 전환의 선행 작업으로 삼지 않는다.

평가자 원문은 확보될 때까지 ‘미확보’, 감점 원인은 ‘추정’으로 유지한다. 원문 확보가 안 됐다는 이유로 제품 파일럿 준비를 멈추지는 않는다. 인터뷰·실사용 정량 결과는 헤드리스 검사로 대신 만들 수 없으므로 후속 실증 작업으로 남긴다. 모델 출력·검증용 가상 답변을 1차 사용자 자료로 사용하지 않는다.

## 4. 이번 작업의 범위와 문서 연결

- 이번 완료 범위는 **정책 결정과 우선순위 기록**이다. 코드 수정·실사용 조사·공개 사이트 배포는 이 결정서 작성으로 완료되지 않는다.
- 민수가 페이블에게 문서 매핑·미결 정책 반영·운영 문서 조치를 별도 요청했다(이벤트 `bd80de1b9cfbb4807dee7fa2917a89e500bb2d94f24802084c7a4eed7f314c97`). 그 원본 파일에 동시 편집을 하지 않고 이 결정서를 별도 기준으로 둔다.
- A안 설계 지시는 이미 있었다(민수 이벤트 `e6b26513d52d68e5b025ea2726257e107875bf0d6043b0140cf841a8367f37e2`). 기존 선택을 다시 승인 대기로 돌리지 않는다.
- 접근성 기준도 이미 [스타일 가이드 §11](KKIRI_DESIGN_STYLE_GUIDE.md)과 [정책 정의서 NF-01](KKIRI_REQUIREMENTS_AND_POLICY.md)에 있다. 새 기준서의 부재로 다루지 않고 실제 화면 적용·키보드·보조기기 검증을 후속 범위로 잡는다.

## 근거

- [요구사항·정책 정의서 §3·§5·§7](KKIRI_REQUIREMENTS_AND_POLICY.md): 기존 정책과 추천값.
- [유즈케이스 UC-37·39·39a·44·49 및 §10](KKIRI_USE_CASE_DIAGRAMS.md): 확정·삭제·동점과 화면 매핑 상태.
- [목업 엔진 satisfaction·vetoes·compareRows](mockup/engine.js): P-20과 순위 규칙의 현재 구현.
- [지표 계획 §3·§4·§7](KKIRI_METRICS_PLAN.md): 계측 항목·미구현 상태·가정 목표.
- [문제 정의서 §5](KKIRI_PROBLEM_DEFINITION.md), [심사 대응서 §2](KKIRI_JUDGE_FEEDBACK_RESPONSE.md): 인터뷰 계획과 원문 미확보.
- [A안 화면 명세](../KKIRI_A_SCREEN_DESIGN_2026_09_06/site/screen-design-a/SCREEN_SPEC.md): 설계와 실제 구현의 경계.
- 사실 대조 기록: `RESEARCH/KKIRI_POLICY_DECISION_EVIDENCE_2026_09_06.md`.
