Skip to content

[docs] 피드(Feed) 도메인 PRD 역설계 (specs/001-feed-features)#354

Open
buzz0331 wants to merge 2 commits into
chore/spec-kit-setupfrom
001-feed-features
Open

[docs] 피드(Feed) 도메인 PRD 역설계 (specs/001-feed-features)#354
buzz0331 wants to merge 2 commits into
chore/spec-kit-setupfrom
001-feed-features

Conversation

@buzz0331
Copy link
Copy Markdown
Contributor

Summary

운영 중인 피드 도메인을 사용자 관점에서 역설계해 PRD로 정형화한 첫 산출물.
신규 기능 정의가 아닌 기존 구현을 "이래야 한다"로 문서화하는 작업.

Depends on #353 (Spec Kit 셋업 + 헌법 v1.0.0 비준). #353 머지 후 base를 develop으로 retarget 예정.

무엇이 추가되는가

파일 내용
specs/001-feed-features/spec.md 피드 도메인 PRD (한국어, 237 줄)
specs/001-feed-features/checklists/requirements.md 사양 품질 체크리스트 (15/15 통과)

PRD 구성

  • User Stories 5건 (우선순위)
    • P1: 책 감상을 피드로 남기고 관리하기 (작성/수정/삭제, 공개·비공개)
    • P1: 피드 둘러보기와 발견 (전체/내/타인/책별 커서 페이지)
    • P2: 좋아요·저장으로 반응 (토글, 동시성 정합)
    • P2: 피드 작성을 위한 컨텍스트 제공 (카테고리·태그·이미지 업로드)
    • P3: 개인화된 피드 추천
  • Functional Requirements 25건 — 작성·수정·삭제, 조회·발견, 반응·저장, 작성 보조, 노출 정책, 안전성·정합성으로 분류
  • Success Criteria 7건 — 기술 비종속 / 사용자 관찰 가능한 측정치
  • Edge Cases 8건 — 비공개/카운트 정합/언더플로우/이미지 소유권 등

핵심 결정

노출 모드 선택 규칙 (FR-022)

본 PRD는 코드에 공존하는 세 노출 서비스를 비즈니스 어휘로 명문화하고 코드 클래스명을 병기.

비즈니스 용어 코드 클래스 적용 조건
기본 노출 모드 `Basic` 팔로잉 < 임계치 N
팔로잉 우선 노출 모드 `FollowingPriority` 팔로잉 ≥ 임계치 N
개인화 노출 모드 `Personalized` 활동 누적치(좋아요·저장·체류 등) ≥ 별도 임계치

우선순위: 개인화 > 팔로잉 우선 > 기본. 구체 임계치는 운영 튜닝 대상.

신고 누적 시 노출 정책 (FR-023, Edge Cases)

임계 도달 → 즉시 일반 노출 숨김 + 운영자 검수 큐 진입 → 검수 결과에 따라 (a) 노출 복원 또는 (b) 영구 숨김. 작성자 통지. 신고 트리거 API 자체는 본 PRD 범위 외 (별도 신고 도메인 PRD).

범위 외 (의도적)

  • 책(Book) 도메인 — ISBN으로 참조만, 별도 PRD에서 정의
  • 알림 발화 흐름 — 별도 알림 도메인 PRD
  • 신고 트리거 API — 별도 신고 도메인 PRD
  • 인증/인가 — 별도 PRD (모든 시나리오는 인증된 사용자 가정)
  • 백엔드 응답 시간/RPS 등 기술 임계치 — 헌법의 성능 가드 원칙 + 별도 부하 시나리오에서 정의

후속

  • 본 PR 머지 후, follow / post 등 핵심 도메인 역설계 PRD 순차 진행
  • PRD가 현재 구현을 충족하지 못하는 부분(gap)이 발견되면 별도 fix/feature PR로 분리

Test plan

  • PRD 본문이 비즈니스 어휘로 읽히는지 (구현 디테일 누출 점검)
  • 노출 모드 / 신고 정책 결정이 합리적인지 (특히 신고 정책의 "즉시 숨김 → 검수 큐" 하이브리드)
  • User Story 우선순위(P1~P3)가 팀 인식과 일치하는지
  • Edge Cases가 현재 구현된 비즈니스 룰을 모두 커버하는지
  • Success Criteria가 "기술 임계치 없이 사용자 관찰 가능한지" 점검
  • 누락된 시나리오(예: 멘션, 해시태그, 검색 등)가 있는지 검토

- 운영 중인 피드 도메인을 사용자 관점으로 정형화 (신규 기능 정의 아님)
- User Story 5건 (P1: 작성/관리·둘러보기, P2: 반응/저장·작성 보조, P3: 개인화 추천)
- Functional Requirements 25건 (FR-001 ~ FR-025)
- 측정 가능한 Success Criteria 7건, Edge Cases 8건, Assumptions 8건
- 노출 모드 선택 규칙 명문화: 개인화 > 팔로잉 우선 > 기본
  (코드 클래스명 Personalized / FollowingPriority / Basic 병기)
- 신고 누적 시 노출 정책 명문화: 즉시 숨김 → 검수 큐 → 복원/영구 숨김
  (신고 트리거 자체는 별도 신고 도메인 PRD에서 정의)
- 책 도메인, 알림, 신고 트리거는 명시적으로 범위 외 처리
- 헌법 v1.0.0의 "API 계약 안정성" 원칙 반영 (#336 컨텍스트)
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 17, 2026

Warning

Rate limit exceeded

@buzz0331 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 45 minutes and 37 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: bafe1843-af9d-4d36-bf43-ebdb53becfe5

📥 Commits

Reviewing files that changed from the base of the PR and between 2277cb3 and 7c8b71d.

📒 Files selected for processing (2)
  • specs/001-feed-features/checklists/requirements.md
  • specs/001-feed-features/spec.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 001-feed-features

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

- "팔로잉한 사용자가 새 피드를 작성함" 트리거를 본 도메인 책임으로 명시
  (공개 피드 생성 성공 시 작성자의 팔로워들에게 발화,
  비공개·수정·삭제는 미발화)
- 좋아요·댓글로 인한 알림 트리거의 책임 분리 명확화
  (좋아요 공통 도메인, 댓글 도메인 책임)
- 알림 도메인 PRD(#359)의 트리거 카탈로그(FEED 6종)와 정합
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant