Skip to content

Conversation

@lepitaaar
Copy link
Contributor

@lepitaaar lepitaaar commented Jan 18, 2026

BE v1.1.1 릴리즈

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능
    • 클럽 지원 양식을 복제할 수 있는 기능이 추가되었습니다.
    • 외부 애플리케이션 URL로 "https://everytime.kr"이 새롭게 허용되었습니다.

✏️ Tip: You can customize this high-level summary in your review settings.

@lepitaaar lepitaaar self-assigned this Jan 18, 2026
@lepitaaar lepitaaar added 💾 BE Backend 📈 release 릴리즈 배포 labels Jan 18, 2026
@vercel
Copy link

vercel bot commented Jan 18, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
moadong Ready Ready Preview, Comment Jan 18, 2026 6:35am

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 18, 2026

Warning

.coderabbit.yaml has a parsing error

The CodeRabbit configuration file in this repository has a parsing error and default settings were used instead. Please fix the error(s) in the configuration file. You can initialize chat with CodeRabbit to get help with the configuration file.

💥 Parsing errors (1)
Validation error: Invalid regex pattern for base branch. Received: "**" at "reviews.auto_review.base_branches[0]"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Walkthrough

클럽 신청 폼 복제 기능을 추가하고 외부 신청 URL 허용 도메인을 확장합니다. 컨트롤러에 새 엔드포인트, 서비스에 복제 로직, 도메인 화이트리스트를 각각 구현합니다.

Changes

코호트 / 파일(들) 변경 요약
Club Application Form 복제 기능
backend/src/main/java/moadong/club/controller/ClubApplyAdminController.java
새 POST 엔드포인트 {applicationFormId}/duplicate 추가. 현재 사용자와 애플리케이션 ID를 받아 복제 서비스 호출
Club Application Form 복제 기능
backend/src/main/java/moadong/club/service/ClubApplyAdminService.java
duplicateClubApplicationForm() 메서드 추가. 기존 신청 폼을 조회하여 제목을 "무제"로 설정한 새 폼으로 복제 후 저장. 와일드카드 import를 명시적 import로 변경
도메인 허용 목록 업데이트
backend/src/main/java/moadong/club/entity/ClubApplicationForm.java
외부 신청 URL 허용 목록에 "https://everytime.kr" 도메인 추가

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • oesnuj
  • seongwon030
  • suhyun113
  • PororoAndFriends
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive PR 제목은 '릴리즈' 태그를 사용하고 있지만, 실제 변경사항은 동아리 지원 양식 복제 기능 추가와 허용 도메인 추가이며, 제목은 이러한 구체적인 변경사항을 반영하지 않고 너무 일반적입니다. PR 제목을 더 구체적으로 수정하세요. 예: '[feat] 동아리 지원 양식 복제 기능 및 에브리타임 도메인 추가' 또는 '[release] 동아리 관리 기능 개선 v1.1.1'
✅ Passed checks (2 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@backend/src/main/java/moadong/club/service/ClubApplyAdminService.java`:
- Around line 137-144: The new ClubApplicationForm is being built using
oldApplicationForm.getQuestions() which shares the same List reference and can
be cleared by ClubApplicationForm.updateQuestions(); change the builder step
that sets questions in ClubApplicationForm to pass a new copy of the list (e.g.,
new ArrayList<>(oldApplicationForm.getQuestions())) or perform a deep copy of
individual question objects if they are mutable, so newApplicationForm has its
own independent questions collection.
🧹 Nitpick comments (1)
backend/src/main/java/moadong/club/controller/ClubApplyAdminController.java (1)

83-91: 복제된 폼의 ID 반환 고려

현재 구현은 성공 메시지만 반환합니다. 클라이언트가 복제된 폼으로 바로 이동하거나 편집할 수 있도록 새 폼의 ID를 반환하면 UX가 개선될 수 있습니다.

♻️ 새 폼 ID 반환 예시

서비스 메서드가 새 폼 ID를 반환하도록 수정:

-    public void duplicateClubApplicationForm(String applicationFormId, CustomUserDetails user) {
+    public String duplicateClubApplicationForm(String applicationFormId, CustomUserDetails user) {
         // ... 기존 로직 ...
-        clubApplicationFormsRepository.save(newApplicationForm);
+        ClubApplicationForm saved = clubApplicationFormsRepository.save(newApplicationForm);
+        return saved.getId();
     }

컨트롤러에서 ID 반환:

     public ResponseEntity<?> duplicateClubApplicationForm(`@PathVariable` String applicationFormId,
                                                           `@CurrentUser` CustomUserDetails user) {
-        clubApplyAdminService.duplicateClubApplicationForm(applicationFormId, user);
-        return Response.ok("success duplicate application");
+        String newFormId = clubApplyAdminService.duplicateClubApplicationForm(applicationFormId, user);
+        return Response.ok(Map.of("message", "success duplicate application", "newFormId", newFormId));
     }

Comment on lines +137 to +144
ClubApplicationForm newApplicationForm = ClubApplicationForm.builder()
.title("무제")
.clubId(oldApplicationForm.getClubId())
.description(oldApplicationForm.getDescription())
.formMode(oldApplicationForm.getFormMode())
.questions(oldApplicationForm.getQuestions())
.externalApplicationUrl(oldApplicationForm.getExternalApplicationUrl())
.build();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

얕은 복사로 인한 데이터 손상 위험

oldApplicationForm.getQuestions()를 직접 전달하면 두 폼이 동일한 리스트 참조를 공유합니다. ClubApplicationForm.updateQuestions()this.questions.clear()를 호출하므로, 한 폼의 질문을 수정하면 다른 폼의 질문도 함께 삭제됩니다.

🐛 새 리스트로 복사하여 수정
         ClubApplicationForm newApplicationForm = ClubApplicationForm.builder()
                 .title("무제")
                 .clubId(oldApplicationForm.getClubId())
                 .description(oldApplicationForm.getDescription())
                 .formMode(oldApplicationForm.getFormMode())
-                .questions(oldApplicationForm.getQuestions())
+                .questions(new ArrayList<>(oldApplicationForm.getQuestions()))
                 .externalApplicationUrl(oldApplicationForm.getExternalApplicationUrl())
                 .build();
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
ClubApplicationForm newApplicationForm = ClubApplicationForm.builder()
.title("무제")
.clubId(oldApplicationForm.getClubId())
.description(oldApplicationForm.getDescription())
.formMode(oldApplicationForm.getFormMode())
.questions(oldApplicationForm.getQuestions())
.externalApplicationUrl(oldApplicationForm.getExternalApplicationUrl())
.build();
ClubApplicationForm newApplicationForm = ClubApplicationForm.builder()
.title("무제")
.clubId(oldApplicationForm.getClubId())
.description(oldApplicationForm.getDescription())
.formMode(oldApplicationForm.getFormMode())
.questions(new ArrayList<>(oldApplicationForm.getQuestions()))
.externalApplicationUrl(oldApplicationForm.getExternalApplicationUrl())
.build();
🤖 Prompt for AI Agents
In `@backend/src/main/java/moadong/club/service/ClubApplyAdminService.java` around
lines 137 - 144, The new ClubApplicationForm is being built using
oldApplicationForm.getQuestions() which shares the same List reference and can
be cleared by ClubApplicationForm.updateQuestions(); change the builder step
that sets questions in ClubApplicationForm to pass a new copy of the list (e.g.,
new ArrayList<>(oldApplicationForm.getQuestions())) or perform a deep copy of
individual question objects if they are mutable, so newApplicationForm has its
own independent questions collection.

@seongwon030 seongwon030 changed the title [release] BE [release] BE v1.1.1 릴리즈 Jan 18, 2026
@seongwon030 seongwon030 merged commit b4266ae into main Jan 18, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💾 BE Backend 📈 release 릴리즈 배포

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants