diff --git a/AGENTS.md b/AGENTS.md index 4b71ab32..0601612c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -124,6 +124,12 @@ Strong success criteria let you loop independently. Weak criteria ("make it work - 모든 명령은 저장소 루트에서 실행한다. - 요청 범위를 우선 충족하고, 변경은 작고 안전하게 유지한다. +## 작업 절차 핵심 규칙 +- PRD 문서와 구현 계획/TASK 문서 없이 구현하지 않는다. +- 사용자의 프롬프트를 받으면 먼저 PRD 문서를 작성하고, 애매하거나 결정이 필요한 내용은 모호함이 사라질 때까지 사용자와 인터뷰한다. +- 인터뷰 내용을 PRD에 반영한 뒤, PRD를 기준으로 계획/TASK 문서를 작성하고 그 문서에 따라 필요한 내용만 최소 구현한다. +- PRD 문서는 `docs/prd/`, 계획/TASK 문서는 `docs/plan-task/` 아래에 둔다. + ## 상세 참조 문서 - 빌드/린트/테스트/코드 스타일은 `docs/agent-guides/build-test-style.md`를 참고한다. - 작업 절차/docs/커밋 규칙은 `docs/agent-guides/workflow-docs-commits.md`를 참고한다. diff --git a/docs/agent-guides/workflow-docs-commits.md b/docs/agent-guides/workflow-docs-commits.md index 2a4d3f88..0f570c5b 100644 --- a/docs/agent-guides/workflow-docs-commits.md +++ b/docs/agent-guides/workflow-docs-commits.md @@ -20,10 +20,18 @@ - 변경 후: 최소 단일 테스트(`--tests`) 또는 `./gradlew :app:test`를 실행하고 필요 시 `./gradlew :app:ktlintCheck`를 수행한다. ## 작업 계획 문서 규칙 (docs) -- 모든 작업 시작 전에 `docs` 폴더 아래 계획 문서를 먼저 생성하고, 해당 문서를 기준으로 구현한다. -- 연속된 하나의 작업이라면 별도 새 문서를 만들지 말고 기존 계획 문서에 추가 작업으로 이어서 기록한다. -- 계획 문서 파일명은 `[날짜]_구현할내용한글.md` 형식을 사용한다. +- 모든 구현 작업은 PRD 문서와 구현 계획/TASK 문서가 모두 준비된 뒤에 시작한다. +- 사용자가 프롬프트를 입력하면 먼저 PRD 문서를 작성한다. +- PRD 작성 중 애매하거나 더 필요한 내용, 결정해야 하는 사항이 있으면 애매한 사항이 없어질 때까지 사용자와 인터뷰한다. +- 인터뷰로 확정한 내용을 PRD 문서에 보강한 뒤, 해당 PRD를 기준으로 구현 계획/TASK 문서를 작성한다. +- 구현은 계획/TASK 문서를 기준으로 필요한 내용만 최소 범위로 진행한다. +- PRD 문서는 `docs/prd/` 아래에 작성한다. +- 구현 계획/TASK 문서는 `docs/plan-task/` 아래에 작성한다. +- PRD 문서는 `sample-prd.md` 파일에서 작업에 필요한 부분만 발췌해 작성한다. `sample-prd.md`가 없거나 위치가 불명확하면 추측하지 말고 사용자에게 확인한다. +- PRD 문서 파일명은 기존 계획 문서 파일명 규칙을 따르되, 계획 문서와 구분되도록 `prd` 표기를 포함한다. +- 계획/TASK 문서 파일명은 `[날짜]_구현할내용한글.md` 형식을 사용한다. - 날짜는 `YYYYMMDD` 8자리 숫자를 사용한다. +- 연속된 하나의 작업이라면 별도 새 문서를 만들지 말고 기존 PRD와 계획/TASK 문서에 추가 작업으로 이어서 기록한다. - 구현 항목은 기능/작업 단위 체크박스(`- [ ]`)로 작성하고 완료 즉시 `- [x]`로 갱신한다. - 작업 도중 범위가 변경되면 계획 문서 체크리스트를 먼저 업데이트한 뒤 구현한다. - 결과 보고 시 문서 하단에 검증 기록(무엇/왜/어떻게, 실행 명령, 결과)을 한국어로 남긴다. diff --git a/docs/20260224_AGENTS문서정비.md b/docs/plan-task/20260224_AGENTS문서정비.md similarity index 100% rename from docs/20260224_AGENTS문서정비.md rename to docs/plan-task/20260224_AGENTS문서정비.md diff --git a/docs/20260224_유료라이브최소금액30캔검사추가.md b/docs/plan-task/20260224_유료라이브최소금액30캔검사추가.md similarity index 100% rename from docs/20260224_유료라이브최소금액30캔검사추가.md rename to docs/plan-task/20260224_유료라이브최소금액30캔검사추가.md diff --git a/docs/20260224_프로필SNS오픈채팅전환.md b/docs/plan-task/20260224_프로필SNS오픈채팅전환.md similarity index 100% rename from docs/20260224_프로필SNS오픈채팅전환.md rename to docs/plan-task/20260224_프로필SNS오픈채팅전환.md diff --git a/docs/20260225_사용자차단다이얼로그문구수정.md b/docs/plan-task/20260225_사용자차단다이얼로그문구수정.md similarity index 100% rename from docs/20260225_사용자차단다이얼로그문구수정.md rename to docs/plan-task/20260225_사용자차단다이얼로그문구수정.md diff --git a/docs/20260225_채널후원영역및전체보기구현.md b/docs/plan-task/20260225_채널후원영역및전체보기구현.md similarity index 100% rename from docs/20260225_채널후원영역및전체보기구현.md rename to docs/plan-task/20260225_채널후원영역및전체보기구현.md diff --git a/docs/20260225_크리에이터상세정보다이얼로그구현.md b/docs/plan-task/20260225_크리에이터상세정보다이얼로그구현.md similarity index 100% rename from docs/20260225_크리에이터상세정보다이얼로그구현.md rename to docs/plan-task/20260225_크리에이터상세정보다이얼로그구현.md diff --git a/docs/20260225_후원UI비밀문구국제화수정.md b/docs/plan-task/20260225_후원UI비밀문구국제화수정.md similarity index 100% rename from docs/20260225_후원UI비밀문구국제화수정.md rename to docs/plan-task/20260225_후원UI비밀문구국제화수정.md diff --git a/docs/20260226_시리즈상세오류시이전페이지이동.md b/docs/plan-task/20260226_시리즈상세오류시이전페이지이동.md similarity index 100% rename from docs/20260226_시리즈상세오류시이전페이지이동.md rename to docs/plan-task/20260226_시리즈상세오류시이전페이지이동.md diff --git a/docs/20260226_채널후원버튼노출조건수정.md b/docs/plan-task/20260226_채널후원버튼노출조건수정.md similarity index 100% rename from docs/20260226_채널후원버튼노출조건수정.md rename to docs/plan-task/20260226_채널후원버튼노출조건수정.md diff --git a/docs/20260304_커뮤니티전체아이템텍스트수정.md b/docs/plan-task/20260304_커뮤니티전체아이템텍스트수정.md similarity index 100% rename from docs/20260304_커뮤니티전체아이템텍스트수정.md rename to docs/plan-task/20260304_커뮤니티전체아이템텍스트수정.md diff --git a/docs/20260305_라이브룸팔로우버튼룩앤필개선.md b/docs/plan-task/20260305_라이브룸팔로우버튼룩앤필개선.md similarity index 100% rename from docs/20260305_라이브룸팔로우버튼룩앤필개선.md rename to docs/plan-task/20260305_라이브룸팔로우버튼룩앤필개선.md diff --git a/docs/20260305_라이브룸팔로우버튼추가.md b/docs/plan-task/20260305_라이브룸팔로우버튼추가.md similarity index 100% rename from docs/20260305_라이브룸팔로우버튼추가.md rename to docs/plan-task/20260305_라이브룸팔로우버튼추가.md diff --git a/docs/20260305_종료라이브상대시간국제화적용.md b/docs/plan-task/20260305_종료라이브상대시간국제화적용.md similarity index 100% rename from docs/20260305_종료라이브상대시간국제화적용.md rename to docs/plan-task/20260305_종료라이브상대시간국제화적용.md diff --git a/docs/20260305_크리에이터커뮤니티전체보기그리드리스트구현.md b/docs/plan-task/20260305_크리에이터커뮤니티전체보기그리드리스트구현.md similarity index 100% rename from docs/20260305_크리에이터커뮤니티전체보기그리드리스트구현.md rename to docs/plan-task/20260305_크리에이터커뮤니티전체보기그리드리스트구현.md diff --git a/docs/20260306_딥링크스플래시우회및라이브룸확인다이얼로그.md b/docs/plan-task/20260306_딥링크스플래시우회및라이브룸확인다이얼로그.md similarity index 100% rename from docs/20260306_딥링크스플래시우회및라이브룸확인다이얼로그.md rename to docs/plan-task/20260306_딥링크스플래시우회및라이브룸확인다이얼로그.md diff --git a/docs/20260306_유저프로필라이브상세페이지이동수정.md b/docs/plan-task/20260306_유저프로필라이브상세페이지이동수정.md similarity index 100% rename from docs/20260306_유저프로필라이브상세페이지이동수정.md rename to docs/plan-task/20260306_유저프로필라이브상세페이지이동수정.md diff --git a/docs/20260306_커뮤니티그리드패딩배경동일화.md b/docs/plan-task/20260306_커뮤니티그리드패딩배경동일화.md similarity index 100% rename from docs/20260306_커뮤니티그리드패딩배경동일화.md rename to docs/plan-task/20260306_커뮤니티그리드패딩배경동일화.md diff --git a/docs/20260309_DataStore전환및SharedPreferences마이그레이션.md b/docs/plan-task/20260309_DataStore전환및SharedPreferences마이그레이션.md similarity index 100% rename from docs/20260309_DataStore전환및SharedPreferences마이그레이션.md rename to docs/plan-task/20260309_DataStore전환및SharedPreferences마이그레이션.md diff --git a/docs/20260311_ide테스트결과파일gitignore추가.md b/docs/plan-task/20260311_ide테스트결과파일gitignore추가.md similarity index 100% rename from docs/20260311_ide테스트결과파일gitignore추가.md rename to docs/plan-task/20260311_ide테스트결과파일gitignore추가.md diff --git a/docs/20260312_알림리스트구현.md b/docs/plan-task/20260312_알림리스트구현.md similarity index 100% rename from docs/20260312_알림리스트구현.md rename to docs/plan-task/20260312_알림리스트구현.md diff --git a/docs/20260313_알림수신설정페이지개발.md b/docs/plan-task/20260313_알림수신설정페이지개발.md similarity index 100% rename from docs/20260313_알림수신설정페이지개발.md rename to docs/plan-task/20260313_알림수신설정페이지개발.md diff --git a/docs/20260313_예약라이브알림딥링크분기수정.md b/docs/plan-task/20260313_예약라이브알림딥링크분기수정.md similarity index 100% rename from docs/20260313_예약라이브알림딥링크분기수정.md rename to docs/plan-task/20260313_예약라이브알림딥링크분기수정.md diff --git a/docs/20260313_커뮤니티댓글알림딥링크포스트아이디연결구현.md b/docs/plan-task/20260313_커뮤니티댓글알림딥링크포스트아이디연결구현.md similarity index 100% rename from docs/20260313_커뮤니티댓글알림딥링크포스트아이디연결구현.md rename to docs/plan-task/20260313_커뮤니티댓글알림딥링크포스트아이디연결구현.md diff --git a/docs/20260313_푸시메시지터치딥링크우선처리.md b/docs/plan-task/20260313_푸시메시지터치딥링크우선처리.md similarity index 100% rename from docs/20260313_푸시메시지터치딥링크우선처리.md rename to docs/plan-task/20260313_푸시메시지터치딥링크우선처리.md diff --git a/docs/20260316_그리드_유료게시물_보조메뉴_제한.md b/docs/plan-task/20260316_그리드_유료게시물_보조메뉴_제한.md similarity index 100% rename from docs/20260316_그리드_유료게시물_보조메뉴_제한.md rename to docs/plan-task/20260316_그리드_유료게시물_보조메뉴_제한.md diff --git a/docs/20260316_커뮤니티_고정게시물_핀표시_그리드전용_수정.md b/docs/plan-task/20260316_커뮤니티_고정게시물_핀표시_그리드전용_수정.md similarity index 100% rename from docs/20260316_커뮤니티_고정게시물_핀표시_그리드전용_수정.md rename to docs/plan-task/20260316_커뮤니티_고정게시물_핀표시_그리드전용_수정.md diff --git a/docs/20260317_프로필후원순위왕관UI동일화.md b/docs/plan-task/20260317_프로필후원순위왕관UI동일화.md similarity index 100% rename from docs/20260317_프로필후원순위왕관UI동일화.md rename to docs/plan-task/20260317_프로필후원순위왕관UI동일화.md diff --git a/docs/20260318_라이브룸채팅왕관표시수정.md b/docs/plan-task/20260318_라이브룸채팅왕관표시수정.md similarity index 100% rename from docs/20260318_라이브룸채팅왕관표시수정.md rename to docs/plan-task/20260318_라이브룸채팅왕관표시수정.md diff --git a/docs/20260319_라이브룸채팅삭제기능구현계획.md b/docs/plan-task/20260319_라이브룸채팅삭제기능구현계획.md similarity index 100% rename from docs/20260319_라이브룸채팅삭제기능구현계획.md rename to docs/plan-task/20260319_라이브룸채팅삭제기능구현계획.md diff --git a/docs/20260319_라이브룸채팅얼림터치동작수정.md b/docs/plan-task/20260319_라이브룸채팅얼림터치동작수정.md similarity index 100% rename from docs/20260319_라이브룸채팅얼림터치동작수정.md rename to docs/plan-task/20260319_라이브룸채팅얼림터치동작수정.md diff --git a/docs/20260319_라이브룸채팅창얼리기기능구현계획.md b/docs/plan-task/20260319_라이브룸채팅창얼리기기능구현계획.md similarity index 100% rename from docs/20260319_라이브룸채팅창얼리기기능구현계획.md rename to docs/plan-task/20260319_라이브룸채팅창얼리기기능구현계획.md diff --git a/docs/20260320_라이브룸채팅창얼리기국제화.md b/docs/plan-task/20260320_라이브룸채팅창얼리기국제화.md similarity index 100% rename from docs/20260320_라이브룸채팅창얼리기국제화.md rename to docs/plan-task/20260320_라이브룸채팅창얼리기국제화.md diff --git a/docs/20260320_채팅창얼림아이콘이동및문구정리.md b/docs/plan-task/20260320_채팅창얼림아이콘이동및문구정리.md similarity index 100% rename from docs/20260320_채팅창얼림아이콘이동및문구정리.md rename to docs/plan-task/20260320_채팅창얼림아이콘이동및문구정리.md diff --git a/docs/20260320_채팅창얼림온오프수정.md b/docs/plan-task/20260320_채팅창얼림온오프수정.md similarity index 100% rename from docs/20260320_채팅창얼림온오프수정.md rename to docs/plan-task/20260320_채팅창얼림온오프수정.md diff --git a/docs/20260324_라이브룸캡처녹화정합개선.md b/docs/plan-task/20260324_라이브룸캡처녹화정합개선.md similarity index 100% rename from docs/20260324_라이브룸캡처녹화정합개선.md rename to docs/plan-task/20260324_라이브룸캡처녹화정합개선.md diff --git a/docs/20260324_라이브룸화면캡쳐녹화차단처리.md b/docs/plan-task/20260324_라이브룸화면캡쳐녹화차단처리.md similarity index 100% rename from docs/20260324_라이브룸화면캡쳐녹화차단처리.md rename to docs/plan-task/20260324_라이브룸화면캡쳐녹화차단처리.md diff --git a/docs/20260324_라이브상세sns아이콘변경.md b/docs/plan-task/20260324_라이브상세sns아이콘변경.md similarity index 100% rename from docs/20260324_라이브상세sns아이콘변경.md rename to docs/plan-task/20260324_라이브상세sns아이콘변경.md diff --git a/docs/20260326_멤버정보응답확장및콘텐츠보기설정동기화.md b/docs/plan-task/20260326_멤버정보응답확장및콘텐츠보기설정동기화.md similarity index 100% rename from docs/20260326_멤버정보응답확장및콘텐츠보기설정동기화.md rename to docs/plan-task/20260326_멤버정보응답확장및콘텐츠보기설정동기화.md diff --git a/docs/20260327_연령제한표시조건수정.md b/docs/plan-task/20260327_연령제한표시조건수정.md similarity index 100% rename from docs/20260327_연령제한표시조건수정.md rename to docs/plan-task/20260327_연령제한표시조건수정.md diff --git a/docs/20260327_콘텐츠보기설정파라미터전송정리.md b/docs/plan-task/20260327_콘텐츠보기설정파라미터전송정리.md similarity index 100% rename from docs/20260327_콘텐츠보기설정파라미터전송정리.md rename to docs/plan-task/20260327_콘텐츠보기설정파라미터전송정리.md diff --git a/docs/20260328_라이브룸방장캡쳐녹화허용.md b/docs/plan-task/20260328_라이브룸방장캡쳐녹화허용.md similarity index 100% rename from docs/20260328_라이브룸방장캡쳐녹화허용.md rename to docs/plan-task/20260328_라이브룸방장캡쳐녹화허용.md diff --git a/docs/20260328_라이브룸캡쳐녹화차단점검.md b/docs/plan-task/20260328_라이브룸캡쳐녹화차단점검.md similarity index 100% rename from docs/20260328_라이브룸캡쳐녹화차단점검.md rename to docs/plan-task/20260328_라이브룸캡쳐녹화차단점검.md diff --git a/docs/20260328_마이페이지본인인증버튼숨김정렬유지.md b/docs/plan-task/20260328_마이페이지본인인증버튼숨김정렬유지.md similarity index 100% rename from docs/20260328_마이페이지본인인증버튼숨김정렬유지.md rename to docs/plan-task/20260328_마이페이지본인인증버튼숨김정렬유지.md diff --git a/docs/20260328_멤버정보응답하위호환수정.md b/docs/plan-task/20260328_멤버정보응답하위호환수정.md similarity index 100% rename from docs/20260328_멤버정보응답하위호환수정.md rename to docs/plan-task/20260328_멤버정보응답하위호환수정.md diff --git a/docs/20260329_라이브룸_UI미갱신_버그수정.md b/docs/plan-task/20260329_라이브룸_UI미갱신_버그수정.md similarity index 100% rename from docs/20260329_라이브룸_UI미갱신_버그수정.md rename to docs/plan-task/20260329_라이브룸_UI미갱신_버그수정.md diff --git a/docs/20260330_라이브룸스탭해제미갱신수정.md b/docs/plan-task/20260330_라이브룸스탭해제미갱신수정.md similarity index 100% rename from docs/20260330_라이브룸스탭해제미갱신수정.md rename to docs/plan-task/20260330_라이브룸스탭해제미갱신수정.md diff --git a/docs/20260330_라이브룸캡쳐녹화스탭권한확장.md b/docs/plan-task/20260330_라이브룸캡쳐녹화스탭권한확장.md similarity index 100% rename from docs/20260330_라이브룸캡쳐녹화스탭권한확장.md rename to docs/plan-task/20260330_라이브룸캡쳐녹화스탭권한확장.md diff --git a/docs/20260330_라이브캡쳐녹화가능여부반영.md b/docs/plan-task/20260330_라이브캡쳐녹화가능여부반영.md similarity index 100% rename from docs/20260330_라이브캡쳐녹화가능여부반영.md rename to docs/plan-task/20260330_라이브캡쳐녹화가능여부반영.md diff --git a/docs/20260402_오디션배너숨기기.md b/docs/plan-task/20260402_오디션배너숨기기.md similarity index 100% rename from docs/20260402_오디션배너숨기기.md rename to docs/plan-task/20260402_오디션배너숨기기.md diff --git a/docs/20260402_쿠폰등록해외사용자본인인증예외.md b/docs/plan-task/20260402_쿠폰등록해외사용자본인인증예외.md similarity index 100% rename from docs/20260402_쿠폰등록해외사용자본인인증예외.md rename to docs/plan-task/20260402_쿠폰등록해외사용자본인인증예외.md diff --git a/docs/20260413_라이브룸방장부재중복조회방지.md b/docs/plan-task/20260413_라이브룸방장부재중복조회방지.md similarity index 100% rename from docs/20260413_라이브룸방장부재중복조회방지.md rename to docs/plan-task/20260413_라이브룸방장부재중복조회방지.md diff --git a/docs/20260420_BlurTransformation오류수정.md b/docs/plan-task/20260420_BlurTransformation오류수정.md similarity index 100% rename from docs/20260420_BlurTransformation오류수정.md rename to docs/plan-task/20260420_BlurTransformation오류수정.md diff --git a/docs/20260420_DARO광고제거.md b/docs/plan-task/20260420_DARO광고제거.md similarity index 100% rename from docs/20260420_DARO광고제거.md rename to docs/plan-task/20260420_DARO광고제거.md diff --git a/docs/20260421_YandexMobileAdsSDK설정.md b/docs/plan-task/20260421_YandexMobileAdsSDK설정.md similarity index 100% rename from docs/20260421_YandexMobileAdsSDK설정.md rename to docs/plan-task/20260421_YandexMobileAdsSDK설정.md diff --git a/docs/20260421_라이브룸무료방전면광고추가.md b/docs/plan-task/20260421_라이브룸무료방전면광고추가.md similarity index 100% rename from docs/20260421_라이브룸무료방전면광고추가.md rename to docs/plan-task/20260421_라이브룸무료방전면광고추가.md diff --git a/docs/20260421_마이페이지Yandex인라인배너추가.md b/docs/plan-task/20260421_마이페이지Yandex인라인배너추가.md similarity index 100% rename from docs/20260421_마이페이지Yandex인라인배너추가.md rename to docs/plan-task/20260421_마이페이지Yandex인라인배너추가.md diff --git a/docs/20260424_Yandex광고추가구현계획.md b/docs/plan-task/20260424_Yandex광고추가구현계획.md similarity index 100% rename from docs/20260424_Yandex광고추가구현계획.md rename to docs/plan-task/20260424_Yandex광고추가구현계획.md diff --git a/docs/20260424_커뮤니티시리즈알림Yandex배너광고추가계획.md b/docs/plan-task/20260424_커뮤니티시리즈알림Yandex배너광고추가계획.md similarity index 100% rename from docs/20260424_커뮤니티시리즈알림Yandex배너광고추가계획.md rename to docs/plan-task/20260424_커뮤니티시리즈알림Yandex배너광고추가계획.md diff --git a/docs/20260427_무료라이브_마이페이지_광고제거.md b/docs/plan-task/20260427_무료라이브_마이페이지_광고제거.md similarity index 100% rename from docs/20260427_무료라이브_마이페이지_광고제거.md rename to docs/plan-task/20260427_무료라이브_마이페이지_광고제거.md diff --git a/docs/20260427_채팅탭Yandex배너광고추가.md b/docs/plan-task/20260427_채팅탭Yandex배너광고추가.md similarity index 100% rename from docs/20260427_채팅탭Yandex배너광고추가.md rename to docs/plan-task/20260427_채팅탭Yandex배너광고추가.md diff --git a/docs/20260429_AGENTS정리.md b/docs/plan-task/20260429_AGENTS정리.md similarity index 100% rename from docs/20260429_AGENTS정리.md rename to docs/plan-task/20260429_AGENTS정리.md diff --git a/docs/20260429_채팅룸액티비티분석정리.md b/docs/plan-task/20260429_채팅룸액티비티분석정리.md similarity index 100% rename from docs/20260429_채팅룸액티비티분석정리.md rename to docs/plan-task/20260429_채팅룸액티비티분석정리.md diff --git a/docs/20260430_채팅쿼터충전확장계획.md b/docs/plan-task/20260430_채팅쿼터충전확장계획.md similarity index 100% rename from docs/20260430_채팅쿼터충전확장계획.md rename to docs/plan-task/20260430_채팅쿼터충전확장계획.md diff --git a/docs/prd/sample-prd.md b/docs/prd/sample-prd.md new file mode 100644 index 00000000..3136d742 --- /dev/null +++ b/docs/prd/sample-prd.md @@ -0,0 +1,106 @@ +# PRD: [제품명] + +## 1. Overview +이 제품이 무엇인지 한 줄 설명 + +--- + +## 2. Problem +어떤 문제를 해결하는가? + +- 현재 사용자의 불편 +- 기존 방식의 한계 +- 왜 지금 필요한가 + +--- + +## 3. Goals +성공 기준 + +예: +- 가입 전환율 20% +- 작업 시간 50% 감소 + +--- + +## 4. Non-Goals +이번에 하지 않을 것 + +매우 중요함. + +예: +- 모바일 앱 지원 안 함 +- 실시간 협업 제외 +- 다국어 제외 + +--- + +## 5. Target Users +누가 사용하는가? + +- 초보 개발자 +- PM +- 디자이너 + +--- + +## 6. User Stories +사용자 행동 시나리오 + +예: +- 사용자는 버튼 하나로 요약하고 싶다 +- 사용자는 로그인 없이 체험하고 싶다 + +--- + +## 7. Core Features + +### Feature A +설명 + +#### Requirements +- must +- should +- constraints + +#### Edge Cases +- 빈 입력 +- timeout +- 중복 요청 + +--- + +## 8. UX / UI Expectations + +- 반응속도 +- 클릭 수 +- 모바일 대응 +- 접근성 + +--- + +## 9. Technical Constraints + +- Next.js 사용 +- PostgreSQL 사용 +- API latency 2초 이하 + +--- + +## 10. Metrics + +무엇을 측정할 것인가? + +- retention +- DAU +- conversion + +--- + +## 11. Open Questions + +아직 결정 안 된 것 + +- OAuth 제공? +- pricing? +- offline mode?