Skip to content

chore: 핫픽스 v1.1.1 dev 역머지 - #109

Merged
hyxklee merged 10 commits into
devfrom
chore/backmerge-hotfix-v1.1.1
Sep 20, 2026
Merged

hyxklee merged 10 commits into
devfrom
chore/backmerge-hotfix-v1.1.1

Conversation

@hyxklee

@hyxklee hyxklee commented Sep 19, 2026

Copy link
Copy Markdown
Member

목적

핫픽스 v1.1.1(#108)이 main에 먼저 나갔으므로 dev에 역머지합니다.
안 하면 다음 정규 릴리즈(dev→main)에서 동일 충돌이 그대로 재발합니다.

충돌 처리

충돌 14건이 발생했는데 전부 핫픽스와 무관한 기존 divergence였습니다.
핫픽스가 건드린 파일(Event.kt, Session.kt, FileType.kt, DTO, 마이그레이션)은 깨끗하게 머지됐습니다.

원인은 릴리즈 1.1.0(#95)이 squash 형태로 main에 들어가면서 git 조상 관계가 끊긴 것입니다.
그 결과 동일 내용 파일이 양쪽에서 각각 추가된 것으로 인식됐습니다(add/add).

판단 근거: main 쪽 내용이 dev 이력의 특정 커밋과 바이트 단위로 일치함을 13개 파일 전수 확인했습니다.

파일 main 내용과 일치하는 dev 커밋
AttendanceReader, PostRepository, GetUserPostQueryService(+Test) 68298a4 WTH-451 (#93)
ClubMapper, ClubMemberController, ClubResponseCode 4632a8a WTH-433
UserMyPage* , ClubMemberMyPageController(+Test), UserResponseCode eab363c WTH-454 (#94)

dev가 그 위에 더 진행된 상태(#98 등)이므로 dev 버전을 취했습니다.

별도 처리: AttendanceRepository.kt

충돌 없이 자동 머지됐으나 양쪽 추가분이 모두 남아 메서드가 중복됐습니다 (Conflicting overloads 4건, 198줄 → 231줄).
dev 버전이 main의 모든 메서드를 포함함을 확인하고 dev 버전으로 복원했습니다.

자동 머지라 충돌 표시가 없어 컴파일 전까지 드러나지 않는 유형입니다.

검증

  • ktlintCheck / compileKotlin / compileTestKotlin / test 전체 통과
  • 핫픽스 변경 유지 확인: FileType PPTX·DOCX, Event/Session content TEXT, V12~V15
  • dev 최신 작업 유지 확인: ClubMemberMyPageControllerorigin/dev와 동일

참고

WTH-495 브랜치의 V13__add_notion_calendar_import.sqlV16으로 변경이 필요합니다
(devV13__add_user_privacy_settings, 핫픽스의 V15와 충돌).

🤖 Generated with Claude Code

https://claude.ai/code/session_01FUfuUw4qjjHWfZKiyqgADJ

Summary by CodeRabbit

  • 새로운 기능

    • PPTX 및 DOCX 파일 형식을 지원합니다.
    • 파일 형식 안내에 WebP, PPTX, DOCX가 반영되었습니다.
  • 개선 사항

    • 일정 및 세션 내용 입력 가능 길이가 500자에서 1,000자로 확대되었습니다.
    • 일정 및 세션 내용 저장 용량이 확장되었습니다.
  • 테스트

    • PPTX·DOCX 형식 인식과 지원되지 않는 파일 형식의 처리를 검증했습니다.

hyxklee and others added 10 commits May 9, 2026 01:04
* [WTH-433] 마이페이지 UI 변경에 맞춰 멀티프로필 api 구현 (#90)

* feat: 유저 프로필 엔티티 추가

* feat: 유저 프로필 레포 추가

* feat: 멀티프로필 DTO

* feat: 유저 프로필 Mapper

* feat: 유저 프로필 파일 타입 추가

* feat: 멀티프로필 생성, 조회 API 추가

* feat: 멀티프로필 생성, 조회 API 추가

* feat: 멀티프로필 수정 API 추가

* feat: 동아리별 멀티프로필 로직 추가

* feat: 동아리별 멀티프로필 API 추가

* feat: 멀티프로필 삭제 및 동시성 제어 추가

* feat: 내 동아리 목록에 사용 프로필 추가

* feat: 게시글 작성자 프로필을 멀티프로필에 맞춰 변경

* feat: 댓글 작성자 프로필을 멀티프로필에 맞춰 변경

* refactor: 작성자 프로필 매핑 중복 제거

* feat: 대시보드 게시글 작성자 정보 멀티프로필로 변경

* feat: 마이페이지 요약 조회 API 추가

* feat: 마이페이지 요약 조회 API 추가

* feat: 내가 쓴 글 조회 API 추가

* feat: 출석한 세션 조회 API 추가

* docs: 기존 동아리 프로필 API deprecated 표시

* refactor: 마이그레이션 쿼리 추가

* refactor: 기존 기능 삭제

* refactor: 리뷰 반영

* refactor: 리뷰 반영

* refactor: 리뷰 반영

* refactor: 무한스크롤로 변경

* refactor: 마이페이지 동아리 목록 기본값 제거

* refactor: 마이페이지 이미지 삭제 API 분리

* refactor: 멀티프로필 마이그레이션 버전 수정

* [WTH-450]  v11 마이그레이션 수정 (#92)

* fix: v11 마이그레이션 수정

* refactor: 게시글 조회 생성시간 응답

* refactor: 멀티프로필 생성시 동아리 필수 선택

* [WTH-451] 마이페이지 api 수정 (#93)

* refactor: 멀티프로필 응답 usingClubs 수정

* refactor: 마이페이지 게시글 isNew 응답 추가

* refactor: 마이페이지 활동을 동아리 기준으로 조회

* refactor: 홈 대시보드 사용자 정보 멀티프로필로 수정

* refactor: 게시글 조회 시간 Clock 주입으로 변경

* [WTH-454] 마이페이지 수정사항 반영 (#94)

* refactor: 마이페이지 요약에 현재 사용 중인 멀티프로필 추가

* refactor: 마이페이지 통계 현재 동아리 기준으로 수정

* feat: 프로필 사용 가능 동아리 목록 조회 추가

* refactor: 멤버 카운트 n+1 방지
정규 릴리즈에 포함될 V12~V14를 핫픽스에 함께 담는다.
핫픽스가 먼저 나가는데 V15만 적용하면 운영 이력이 V1~V11, V15가 되어
이후 정규 릴리즈에서 V12~V14가 out-of-order로 판정돼 기동에 실패한다
(spring.flyway.out-of-order 미설정, 기본 false).

파일은 dev에서 그대로 가져와 체크섬이 동일하다.
세 마이그레이션 모두 기본값을 가진 컬럼 추가/확장이라
해당 기능 코드가 없어도 무해하다.

Refs: WTH-508

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FUfuUw4qjjHWfZKiyqgADJ
V3 마이그레이션 대상 데이터의 event.content 최대 길이가 632자로
기존 varchar(500) 한도를 초과해 잘림이 발생한다.
session.content(최대 431자)도 여유가 적어 함께 TEXT로 통일한다.

Refs: WTH-508

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FUfuUw4qjjHWfZKiyqgADJ
(cherry picked from commit d17ce27)
엔티티 컬럼을 TEXT로 넓혔으나 요청 DTO가 500자로 막고 있어,
마이그레이션된 632자 일정을 수정할 때 검증에 걸린다.
V3는 해당 필드에 길이 제약이 없었다.

Refs: WTH-508

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FUfuUw4qjjHWfZKiyqgADJ
(cherry picked from commit 39fc573)
Flyway로 스키마를 관리하므로 엔티티 변경에 대응하는 V15를 추가한다.
prod는 ddl-auto가 validate라 마이그레이션 없이는 기동에 실패한다.

Refs: WTH-508

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FUfuUw4qjjHWfZKiyqgADJ
(cherry picked from commit 6b780d8)
V3 마이그레이션 대상에 세션 자료(pptx 27건)와 문서(docx 2건)가 있어
현행 허용 목록(jpg/jpeg/png/webp/pdf)으로는 이전할 수 없다.

FileContentType이 @JvmInline value class의 init에서 검증하므로
별도 컨버터 없이 조회 시점에도 생성자를 통과한다. 즉 이 변경이
배포되기 전에 pptx/docx 행을 넣으면 해당 게시글 조회에서 예외가 난다.
마이그레이션보다 먼저 나가야 하는 이유다.

svg는 추가하지 않는다. XML이라 <script>를 품을 수 있어
인라인 서빙 시 XSS 벡터가 된다. mp4도 용량·전송비·Range 요청
문제로 제외한다. 두 건은 UNSUPPORTED_TYPE으로 남는다.

Refs: WTH-508

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FUfuUw4qjjHWfZKiyqgADJ
[HOTFIX][WTH-508] V3 마이그레이션 수용을 위한 스키마·검증 완화
핫픽스 v1.1.1(#108)을 dev에 반영한다.

충돌 14건은 모두 핫픽스와 무관한 기존 divergence였다. 릴리즈 1.1.0(#95)이
squash 형태로 main에 들어가면서 git 조상 관계가 끊겨, 동일 내용 파일이
양쪽에서 각각 추가된 것으로 인식된 결과다(add/add).

main 쪽 내용이 dev 이력의 특정 커밋(#93/#94/#433)과 바이트 단위로
일치함을 전 파일 확인했고, dev가 그 위에 더 진행된 상태이므로 dev 버전을 취했다.

AttendanceRepository.kt는 충돌 없이 자동 머지됐으나 양쪽 추가분이 모두
남아 메서드가 중복(Conflicting overloads)됐다. dev 버전이 main의 모든
메서드를 포함함을 확인하고 dev 버전으로 복원했다.

핫픽스 변경(Event/Session content TEXT, FileType pptx·docx, V12~V15)과
dev 최신 작업(#98 등) 양쪽 모두 유지됨을 확인했다.

검증: ktlintCheck, compileKotlin, compileTestKotlin, test 전체 통과

Refs: WTH-508

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FUfuUw4qjjHWfZKiyqgADJ
@coderabbitai

coderabbitai Bot commented Sep 19, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 096e8c25-4221-4ee5-811f-7152cb78fef6

📥 Commits

Reviewing files that changed from the base of the PR and between 7691ac5 and cbb2571.

📒 Files selected for processing (10)
  • src/main/kotlin/com/weeth/domain/file/application/dto/request/FileSaveRequest.kt
  • src/main/kotlin/com/weeth/domain/file/domain/vo/FileType.kt
  • src/main/kotlin/com/weeth/domain/schedule/application/dto/request/ScheduleSaveRequest.kt
  • src/main/kotlin/com/weeth/domain/schedule/application/dto/request/ScheduleUpdateRequest.kt
  • src/main/kotlin/com/weeth/domain/schedule/domain/entity/Event.kt
  • src/main/kotlin/com/weeth/domain/session/application/dto/request/SessionCreateRequest.kt
  • src/main/kotlin/com/weeth/domain/session/application/dto/request/SessionUpdateRequest.kt
  • src/main/kotlin/com/weeth/domain/session/domain/entity/Session.kt
  • src/main/resources/db/migration/V15__alter_event_session_content_to_text.sql
  • src/test/kotlin/com/weeth/domain/file/domain/vo/FileTypeTest.kt

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

파일 업로드 형식에 PPTX와 DOCX를 추가했습니다. 이벤트와 세션 콘텐츠의 요청 길이 제한을 1000자로 늘렸습니다. 관련 데이터베이스 컬럼을 TEXT 타입으로 변경했습니다.

Changes

파일 형식 지원

Layer / File(s) Summary
PPTX 및 DOCX 파일 형식 지원
src/main/kotlin/com/weeth/domain/file/..., src/test/kotlin/com/weeth/domain/file/...
FileType에 PPTX와 DOCX를 추가했습니다. 확장자와 MIME 타입 조회를 지원합니다. SVG와 MP4 등 허용되지 않은 형식은 null을 반환하는지 테스트합니다. 업로드 API 설명에도 지원 형식을 추가했습니다.

콘텐츠 길이 확장

Layer / File(s) Summary
요청 콘텐츠 검증 한도 확장
src/main/kotlin/com/weeth/domain/schedule/application/dto/request/..., src/main/kotlin/com/weeth/domain/session/application/dto/request/...
이벤트와 세션 콘텐츠의 @Size 최대값을 500에서 1000으로 변경했습니다.
콘텐츠 저장 컬럼 확장
src/main/kotlin/com/weeth/domain/schedule/domain/entity/Event.kt, src/main/kotlin/com/weeth/domain/session/domain/entity/Session.kt, src/main/resources/db/migration/V15__alter_event_session_content_to_text.sql
이벤트와 세션 콘텐츠의 JPA 컬럼 매핑을 TEXT로 변경했습니다. 마이그레이션에서 기존 컬럼을 TEXT로 변경합니다.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Other

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed 제목은 v1.1.1 핫픽스를 dev로 역머지하는 주요 변경을 정확히 설명합니다. 짧고 구체적입니다.
Description check ✅ Passed 설명은 역머지 목적, 충돌 원인과 처리 방법, 검증 결과, 추가 마이그레이션 참고사항을 포함합니다. 템플릿의 고정 섹션과 체크리스트는 없지만 핵심 정보는 대부분 충족합니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 9…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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

토끼가 PPTX와 DOCX를 들고 뛴다
긴 문장도 이제 넉넉히 담긴다
TEXT 기둥이 조용히 서고
SVG 문은 굳게 닫힌다
깡충, 새 형식과 길이를 축하한다

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

@hyxklee
hyxklee merged commit c2da1ba into dev Sep 20, 2026
2 checks passed
@hyxklee
hyxklee deleted the chore/backmerge-hotfix-v1.1.1 branch September 20, 2026 08:15
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.

2 participants