Conversation
ManageBoardUseCase의 private const MAX_BOARD_COUNT = 4 는 application 계층 상수라 club별로 다르게 줄 수 없고 요금제 차등도 불가능하다. Club에 maxBoardCount 필드를 두고 canAddBoard() 로 판정을 옮긴다. 아키텍처 규칙상 비즈니스 판단은 Entity 책임이며, Club은 이미 warningEnabled / penaltyRule 같은 club별 정책 필드를 갖고 있다. 기본값은 기존과 동일한 4라 회귀가 없다. 상한 조정은 changeMaxBoardCount() 로만 가능하며 1~30 범위를 강제한다. 운영 leets club은 V3 마이그레이션(WTH-508)으로 활성 게시판이 5개가 되어 이미 상한을 초과한 상태다. V17에서 12로 조정한다. Refs: WTH-509 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FUfuUw4qjjHWfZKiyqgADJ
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
hyxklee
left a comment
There was a problem hiding this comment.
관리자 게시판 목록 API가 현재 List<BoardDetailResponse>만 반환해서, 동아리별 maxBoardCount를 FE가 알 수 없습니다. 화면 하단 안내와 생성 버튼 상태를 정확히 처리할 수 있도록 boards, activeBoardCount, maxBoardCount, canCreateBoard를 묶은 목록 응답 DTO가 필요합니다. 현재 목록에는 가상 전체 게시판과 삭제된 게시판도 포함되므로 FE가 목록 길이로 활성 개수를 계산하면 안 됩니다.
또한 V17은 예정된 WTH-495(V16), #105의 마이그레이션과 채번 충돌 가능성이 있으므로 머지 순서 확정 후 재채번이 필요합니다. 특정 club ID의 상한 보정은 일회성 운영 데이터 변경이므로 스키마 Flyway와 분리해 운영 SQL로 처리하는 편이 안전합니다.
soo0711
left a comment
There was a problem hiding this comment.
그대로 머지 해도 될 것 같습니다!!
수고하셨습니당~~
배경
게시판 개수 상한이
ManageBoardUseCase의 상수로 박혀 있습니다.application 계층 상수라 club별로 다르게 줄 수 없고, 요금제 차등도 불가능합니다.
WTH-508(V3 → V4 마이그레이션) 중에 드러났습니다. 마이그레이션이 SQL로 게시판을 직접 생성하면서
운영 leets club이 활성 게시판 5개로 이미 상한을 초과한 상태입니다.
조회·사용에는 영향이 없지만(상한은 생성 시점에만 검사) 관리자가 게시판을 추가하려 하면 막힙니다.
또 V3 게시글에는 파트 구분(BE/FE/D/PM)이 있었고, 이를 게시판으로 분리하려면 11~12개가 필요해
현행 상한으로는 불가능합니다.
변경 내용
판정을 Entity로 이동 —
.claude/rules/architecture.md의 "business decisions belong to the Entity"를 따릅니다.Club에는 이미warningEnabled/penaltyRule같은 club별 정책 필드가 있어 일관됩니다.club은 이미getClubByIdForUpdate로 락을 걸고 읽고 있어 추가 조회가 없습니다.기본값은 4로 유지해 기존 동작에 회귀가 없습니다.
마이그레이션
V17버전 채번 주의 —
dev기준 최신은 V14이지만, V15는 핫픽스(#108)로main에 이미 나갔고,V16은 WTH-495(노션 캘린더)가 사용할 예정이라 V17로 잡았습니다.
제외 범위
Plan,Subscription) 도메인 — 아직 개념 자체가 없습니다테스트
ClubTest6건 추가 — 기본값, 경계, 이미 초과한 상태에서도 차단, 조정 후 적용, 범위 검증ManageBoardUseCaseTest— 기존 "4개 이상이면 예외"를Club.DEFAULT_MAX_BOARD_COUNT기준으로 바꾸고,"상한을 올리면 기본값을 넘겨도 생성된다" 케이스를 추가했습니다. 상수였다면 성립하지 않는 테스트라
club별 동작을 실제로 검증합니다.
ktlintCheck/compileKotlin/compileTestKotlin/ 해당 테스트 통과.열린 질문
관련
docs/plan/v3-to-v4-migration-plan.md🤖 Generated with Claude Code
https://claude.ai/code/session_01FUfuUw4qjjHWfZKiyqgADJ