Skip to content

fix: 새 항목의 표시 순서를 개수가 아닌 마지막 순서 + 1로 정한다 - #151

Merged
ff1451 merged 2 commits into
mainfrom
fix/display-order-after-delete
Oct 18, 2026
Merged

ff1451 merged 2 commits into
mainfrom
fix/display-order-after-delete

Conversation

@ff1451

@ff1451 ff1451 commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

요약

10곳이 새 항목의 display_order를 현재 행 수(count() 또는 목록 size())로 정했다. 삭제할 때 순서를 다시 매기지 않으므로 삭제 뒤 새 항목이 기존 항목과 같은 순서를 받았다. 예: 순서 [0, 1, 2]에서 1을 지우면 [0, 2], 새로 추가하면 개수 2 → [0, 2, 2]. 같은 순서끼리는 정렬이 정해지지 않아 공개 페이지(홈 Q&A, 멘토, 트랙, 게임, 커리큘럼 등)의 순서가 흔들릴 수 있었다. display_order에는 유니크 제약이 없어 오류 없이 저장된다.

변경

  • DisplayOrders.next(형제 목록(순서 오름차순), 순서 getter) — 비어 있으면 0, 아니면 마지막 순서 + 1.
  • 적용: 활동 분류, 커리큘럼, 커리큘럼 주차·토픽, 게임, 게임 부원, 트랙 페이지 부원, 멘토 슬롯, Q&A, 트랙 페이지.
  • count()를 쓰던 4곳(게임·Q&A·트랙 페이지·멘토 슬롯)은 이미 있던 정렬 목록 조회를 쓴다(모두 수십 행 이하 테이블).
  • 이미 겹친 운영 데이터는 바꾸지 않는다. 관리자 화면에서 순서를 한 번 저장하면(PATCH .../order) 0부터 다시 매겨진다.

테스트

  • DisplayOrdersTest(단위): 빈 목록 0, 빈 번호가 있어도 마지막 + 1.
  • AdminQnaAndRecruitLinkIntegrationTest: Q&A 3개 생성 → 가운데 삭제 → 새로 생성하면 순서가 겹치지 않고 맨 뒤에 붙는다.
    • 수정 전 코드에서는 Found duplicate(s): [2] in: [0, 2, 2]로 실패함을 확인했다.
  • 로컬 전체 ./gradlew test: 543건 중 542 통과, 1 스킵.

10곳이 새 항목의 display_order를 "현재 행 수"로 정했는데, 삭제가 순서를 다시 매기지 않아
삭제 뒤 새 항목이 기존 항목과 같은 순서를 받았다(예: [0, 2]에 추가하면 2가 겹친다).
같은 순서끼리는 정렬이 정해지지 않아 공개 페이지 순서가 흔들릴 수 있었다.

- DisplayOrders.next(형제 목록, 순서 getter): 비어 있으면 0, 아니면 마지막 순서 + 1.
- 활동 분류, 커리큘럼·주차·토픽, 게임, 게임·트랙 페이지 부원, 멘토 슬롯, Q&A, 트랙 페이지에 적용한다.
@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 27 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a721c1fc-f2e9-4cff-88e5-227135839584
📥 Commits

Reviewing files that changed from the base of the PR and between 4050438 and d1f0550.

📒 Files selected for processing: 12
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/activity/service/AdminActivityCategoryService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/curriculum/service/AdminCurriculumService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/curriculum/service/AdminCurriculumTreeService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/game/service/AdminGameMemberService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/game/service/AdminGameService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/global/util/DisplayOrders.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/home/service/AdminMentorSlotService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/home/service/AdminQnaService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/track/service/AdminTrackPageMemberService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/track/service/AdminTrackPageService.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/global/DisplayOrdersTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/home/AdminQnaAndRecruitLinkIntegrationTest.java
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

# Conflicts:
#	src/main/java/com/bcsdlab/bcsdinternalapiv2/curriculum/service/AdminCurriculumService.java
@ff1451
ff1451 merged commit 8a8f220 into main Oct 18, 2026
2 checks passed
@ff1451
ff1451 deleted the fix/display-order-after-delete branch October 18, 2026 13:51
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