Skip to content

T-08 WHAT WE STUDY - #62

Open
ff1451 wants to merge 1 commit into
feat/t07-admin-track-crudfrom
feat/t08-study-points
Open

T-08 WHAT WE STUDY#62
ff1451 wants to merge 1 commit into
feat/t07-admin-track-crudfrom
feat/t08-study-points

Conversation

@ff1451

@ff1451 ff1451 commented Aug 19, 2026

Copy link
Copy Markdown

Refs #20
Base: feat/t07-admin-track-crud (#61)

변경

  • TrackStudyPoint — 하위 트리라 soft delete 없이 on delete cascade로 물리 삭제(스키마 그대로).
  • PUT /v1/admin/track-pages/{id}/study-points전체 교체. 기존 행을 전부 지우고 요청 배열 순서대로 0..n-1 display_order를 부여해 새로 저장한다. 개별 CRUD로 만들지 않은 이유는 05-api-spec.md 공통 규약대로다 — 항목이 최대 4개고 화면이 "추가·삭제·드래그 후 저장" 한 덩어리라서.
  • StudyPointsReplaceRequest@Size(max = 4) — INV-14, AC-1.6.
  • TrackDetailResponse(공개 GET /v1/tracks/{slug})에 studyPoints 필드 추가 — T-06에서 미리 만들어 둔 확장 지점("각 도메인 티켓이 이 레코드에 필드를 추가하는 방식으로 확장한다")을 그대로 썼다.

테스트

TrackStudyPointIntegrationTest(신규):

  • AC-1.7 전체 교체 후 display_order가 0, 1로 재부여
  • AC-1.6 5개 전송 시 400이고 아무것도 저장되지 않음
  • 전체 교체가 기존 항목을 대체(누적 아님), 빈 배열 전송 시 전부 삭제
  • 공개 응답(GET /v1/tracks/{slug})에 studyPoints가 순서대로 포함

./gradlew test를 2회 연속 돌려 전체 통과(55개, 실패 0) 확인 — T-07에서 발견한 공유 컨테이너 플레이키니스 이후로 계속 반복 실행하고 있다.

TrackStudyPoint 전체 교체 API + 공개 응답 결합.

- TrackStudyPoint — 하위 트리라 soft delete 없이 on delete cascade로 물리 삭제
- PUT /v1/admin/track-pages/{id}/study-points — 기존 행을 전부 지우고 요청
  배열 순서대로 0..n-1 display_order를 부여해 새로 저장한다(개별 CRUD가 아닌
  전체 교체 — 항목이 최대 4개고 화면이 한 덩어리라서)
- StudyPointsReplaceRequest에 @SiZe(max=4) — INV-14, AC-1.6
- TrackDetailResponse(공개 GET /v1/tracks/{slug})에 studyPoints 필드 추가.
  T-06에서 미리 만든 확장 지점을 그대로 썼다

테스트: TrackStudyPointIntegrationTest(신규) —
- AC-1.7 전체 교체 후 display_order 0,1 재부여
- AC-1.6 5개 전송 시 400이고 아무것도 저장되지 않음
- 전체 교체가 기존 항목을 대체함(누적 아님), 빈 배열이면 전부 삭제
- 공개 응답에 studyPoints가 순서대로 포함

./gradlew test 2회 연속 전체 통과(55개, 실패 0).

Refs #20
@coderabbitai

coderabbitai Bot commented Aug 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 3fe20f2a-e675-4ba8-abb8-7da5d77ef44d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@ff1451 ff1451 mentioned this pull request Aug 19, 2026
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