Skip to content

[docs] 방 게시글(RoomPost) - 기록·투표 도메인 PRD 역설계#357

Open
buzz0331 wants to merge 2 commits into
chore/spec-kit-setupfrom
004-roompost-domain
Open

[docs] 방 게시글(RoomPost) - 기록·투표 도메인 PRD 역설계#357
buzz0331 wants to merge 2 commits into
chore/spec-kit-setupfrom
004-roompost-domain

Conversation

@buzz0331
Copy link
Copy Markdown
Contributor

Summary

운영 중인 방 게시글(RoomPost) 도메인을 사용자 관점에서 역설계해 PRD로 정형화한 네 번째 산출물.
본 PRD는 RoomPost 중 기록(Record)·투표(Vote) 두 종류만 다룬다.
같은 컨트롤러에 라우팅되는 "오늘의 한마디(AttendanceCheck)"는 사용자 정의에 따라 별도 도메인으로 분리(범위 외).

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

무엇이 추가되는가

파일 내용
specs/004-roompost-domain/spec.md RoomPost 도메인 PRD (한국어, 246 줄)
specs/004-roompost-domain/checklists/requirements.md 사양 품질 체크리스트 (15/15 통과)

PRD 구성

  • User Stories 5건 (우선순위)
    • P1: 기록 작성·수정·삭제 (작성자만, 총평은 마지막 페이지에서만)
    • P1: 투표 만들기/수정/삭제 + 투표하기/취소/항목 변경 (진행 중 방에서만, 총평은 진행률 80%+)
    • P1: 방의 게시글 목록 둘러보기 (group/mine, 정렬·페이지 필터·총평 필터, 커서)
    • P2: 기록을 피드로 핀하기 (작성자만, 책 정보 단일 응답 제공)
    • P2: AI 독후감 생성 + 사용량 안내
  • Functional Requirements 25건 — 공통/기록/투표/목록/핀/AI 분류
  • Success Criteria 7건 — 기술 비종속, 사용자 관찰 가능 측정치
  • Edge Cases 9건 — 비참여자·만료 방·소속 불일치·페이지 위반·총평 조건·카운트 정합성 등

핵심 결정

총평(isOverview) 조건이 기록투표에서 다름 (FR-007, FR-012)

종류 총평 작성 조건
기록 (Record) 책의 마지막 페이지에서만
투표 (Vote) 책 진행률 80% 이상에서만

코드 상 실제 정책이 서로 다르다는 점을 PRD에 명문화. 의도된 차이인지 팀 확인 필요(체크리스트 Notes에 메모).

투표 참여 정합성 (FR-014 ~ FR-017)

  • 한 사용자는 한 투표에 정확히 하나의 선택지만 활성 참여
  • 다른 선택지로 "투표하기" → 이전 항목 카운트 회수 + 새 항목 카운트 증가 + 참여 기록 갱신
  • 참여 안 한 선택지에 대한 "취소" → 거부
  • 진행 중인 방에서만 참여 가능

방-게시글 소속 검증 (FR-002)

수정·삭제·핀 요청 시 요청에 포함된 방 ID와 게시글이 실제 속한 방 ID가 일치해야 함(불일치 시 거부). 우회 시도 차단.

AI 사용량 한도 정책 (FR-023 ~ FR-025)

항목
한도 5회
적용 단위 전역 (사용자의 모든 방을 합산)
리셋 없음 (평생 누적)
기록 작성 횟수 안내용만 (한도 산정 미사용)

한도 도달 후 추가 요청은 거부 + 명확한 안내. 운영 초기 정책이며 후속 차등화(멤버십 등) 시 PRD 개정 트리거.

범위 외 (의도적)

누적 PRD 진행 상황

# 도메인 PR
001 피드(Feed) #354
002 팔로우(Follow) #355
003 책(Book) #356
004 방 게시글(RoomPost) — 기록·투표 본 PR

Test plan

  • PRD 본문이 비즈니스 어휘로 읽히는지 (Spring AI 등 구현 디테일 누출 점검)
  • 총평 조건이 기록·투표에서 다른 점이 의도된 차이인지 팀 확인 (코드 vs PRD 정정 필요할 수 있음)
  • AI 한도 "전역 평생 누적 5회 / 리셋 없음"이 현재 구현·운영 의도와 일치하는지
  • 목록 조회 모드(group/mine) 정렬 정책 차이가 클라이언트와 합의된 사용자 기대와 일치하는지
  • "오늘의 한마디"를 별도 도메인으로 분리하는 결정에 대한 팀 합의
  • 누락된 시나리오(예: 기록 신고, 투표 결과 공개 조건, 댓글 흐름 등)가 있는지 검토

…ain)

- 운영 중인 RoomPost 도메인(기록·투표 한정)을 사용자 관점으로 정형화
- 오늘의 한마디(AttendanceCheck)는 사용자 정의에 따라 별도 도메인으로
  명시적 범위 외 처리
- User Story 5건 (P1: 기록 작성·투표 만들기/참여·목록 조회,
  P2: 피드 핀·AI 독후감)
- Functional Requirements 25건 (FR-001 ~ FR-025)
- 측정 가능한 Success Criteria 7건, Edge Cases 9건, Assumptions 10건
- 총평 조건 차이 명문화: 기록은 책 마지막 페이지에서만,
  투표는 책 진행률 80% 이상에서만 (코드 상 실제 차이)
- 투표 참여 정합성: 한 사용자가 한 투표에 정확히 한 선택지,
  항목 변경 시 카운트 이동, 진행 중 방에서만 참여 가능
- 방-게시글 소속 검증: 수정·삭제·핀 시 방 ID와 게시글 방 ID 일치 필수
- AI 사용량 한도 정책 명문화:
  전역(모든 방 합산) 평생 누적 5회, 리셋 없음
  기록 작성 횟수는 안내용 (한도 게이트 아님)
- 방·책·피드·댓글/좋아요·신고·알림은 명시적 범위 외
@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 10 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: e1da931a-baac-4330-be20-4e191b4806d4

📥 Commits

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

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

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.

- "새 기록 작성됨" 트리거: 기록 작성 성공 시 같은 방의 다른 참여자
  (작성자 제외)에게 발화. 수정·삭제는 미발화
- "새 투표 시작됨" 트리거: 투표 생성 성공 시 같은 방의 다른 참여자
  (작성자 제외)에게 발화. 참여·취소·항목 변경·수정·삭제는 미발화
  (생성 1회당 1건)
- 댓글·좋아요로 인한 알림 트리거 책임 분리 명확화
  (댓글 도메인, 좋아요 공통 도메인 책임)
- 알림 도메인 PRD(#359)의 트리거 카탈로그와 정합
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