-
Notifications
You must be signed in to change notification settings - Fork 3
[release] 모아동 BE ver 1.0.3 #503
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
f40680a
b26f57d
1eebdc0
8c4b123
fdaec60
430dfa5
53f162e
b6c7ddf
e154747
8b6fdca
78d781e
a03eb87
0c883d5
6fe33cc
5c1739d
7ddff6b
e3c7d12
135b2e3
793c11f
5a8081e
67b4342
ddd39ea
1bd03f2
44eb918
bc6cf7a
aecaa78
f413416
7305dfc
096c103
bd6ad7e
372b78d
4330166
86eef41
596c098
a116b02
e3472eb
d4ac223
cf4669e
95bbbd6
d869022
b6fd42e
1a267ae
b357485
ee3ad32
07088d6
fcd17ec
71c6d2f
93862da
65e64b5
1761642
7e56421
0d47e8f
9c27303
e13ff04
252b491
499953b
3736417
94fcf7f
01b5897
dada4c9
a1561fb
6a2db6a
e1eeaaf
66a1f31
29325a1
9971091
7cc95a4
6567d0a
e807524
1c4755d
9d16c44
0bcf9fb
78abab0
e93fc59
e6a7f34
46884ad
cad6de3
ffb8ccc
1aa49e3
dfd152e
c473f73
dd01b9f
db71eec
9c1e24b
0085593
61756cd
b958462
9a0c759
59d14e2
36cedf1
ce3a1e0
61dbcb0
838277f
060cf30
d37cd5c
97be0bf
329bfb8
2505382
24e743b
4045aa3
88dc703
126d542
ce9532e
3d8d291
7a961df
ab1d6bf
60efce2
ba29008
eb2aa7c
4c083fc
fba2532
b7342a2
135fb54
106963e
cd8d200
9705172
d1d9bc5
f708e12
7052c46
4e5a834
96244f4
63eb1a0
754a997
35cbd39
0f878d3
7ab5869
929aa80
3252065
53ab3ba
5287186
deda997
8e54ef9
1df9d49
9abfff3
51911f3
b432c1b
deaf819
7748b9f
04fb0eb
b256731
873584f
a41465e
3399010
987b059
a4cbf47
5499319
476e50b
dd81a72
b1d9601
a79977b
e8ca199
7eecc55
6b63016
69e2df0
b7b2aad
2e36e93
228f7a6
a5c6a16
4ea79f5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -38,4 +38,4 @@ out/ | |
|
|
||
|
|
||
| application.properties | ||
| moadong.json | ||
| moadong.json | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,63 @@ | ||||||||||||||||||||||||
| package moadong.club.controller; | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| import io.swagger.v3.oas.annotations.Operation; | ||||||||||||||||||||||||
| import io.swagger.v3.oas.annotations.security.SecurityRequirement; | ||||||||||||||||||||||||
| import io.swagger.v3.oas.annotations.tags.Tag; | ||||||||||||||||||||||||
| import lombok.AllArgsConstructor; | ||||||||||||||||||||||||
| import moadong.club.payload.request.ClubApplicationCreateRequest; | ||||||||||||||||||||||||
| import moadong.club.payload.request.ClubApplicationEditRequest; | ||||||||||||||||||||||||
| import moadong.club.payload.request.ClubApplyRequest; | ||||||||||||||||||||||||
| import moadong.club.service.ClubApplyService; | ||||||||||||||||||||||||
| import moadong.global.payload.Response; | ||||||||||||||||||||||||
| import moadong.user.annotation.CurrentUser; | ||||||||||||||||||||||||
| import moadong.user.payload.CustomUserDetails; | ||||||||||||||||||||||||
| import org.springframework.http.ResponseEntity; | ||||||||||||||||||||||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||||||||||||||||||||||
| import org.springframework.validation.annotation.Validated; | ||||||||||||||||||||||||
| import org.springframework.web.bind.annotation.*; | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| @RestController | ||||||||||||||||||||||||
| @RequestMapping("/api/club/{clubId}") | ||||||||||||||||||||||||
| @AllArgsConstructor | ||||||||||||||||||||||||
| @Tag(name = "Club_Apply", description = "클럽 지원서 API") | ||||||||||||||||||||||||
| public class ClubApplyController { | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| private final ClubApplyService clubApplyService; | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| @PostMapping("/application") | ||||||||||||||||||||||||
| @Operation(summary = "클럽 지원서 생성", description = "클럽 지원서를 생성합니다") | ||||||||||||||||||||||||
| @PreAuthorize("isAuthenticated()") | ||||||||||||||||||||||||
| @SecurityRequirement(name = "BearerAuth") | ||||||||||||||||||||||||
| public ResponseEntity<?> createClubApplication(@PathVariable String clubId, | ||||||||||||||||||||||||
| @CurrentUser CustomUserDetails user, | ||||||||||||||||||||||||
| @RequestBody @Validated ClubApplicationCreateRequest request) { | ||||||||||||||||||||||||
| clubApplyService.createClubApplication(clubId, user, request); | ||||||||||||||||||||||||
| return Response.ok("success create application"); | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| @PutMapping("/application") | ||||||||||||||||||||||||
| @Operation(summary = "클럽 지원서 수정", description = "클럽 지원서를 수정합니다") | ||||||||||||||||||||||||
| @PreAuthorize("isAuthenticated()") | ||||||||||||||||||||||||
| @SecurityRequirement(name = "BearerAuth") | ||||||||||||||||||||||||
| public ResponseEntity<?> editClubApplication(@PathVariable String clubId, | ||||||||||||||||||||||||
| @CurrentUser CustomUserDetails user, | ||||||||||||||||||||||||
| @RequestBody @Validated ClubApplicationEditRequest request) { | ||||||||||||||||||||||||
| clubApplyService.editClubApplication(clubId, user, request); | ||||||||||||||||||||||||
| return Response.ok("success edit application"); | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| @GetMapping("/apply") | ||||||||||||||||||||||||
| @Operation(summary = "클럽 지원서 불러오기", description = "클럽 지원서를 불러옵니다") | ||||||||||||||||||||||||
| public ResponseEntity<?> getClubApplication(@PathVariable String clubId) { | ||||||||||||||||||||||||
| return clubApplyService.getClubApplication(clubId); | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
Comment on lines
+49
to
+53
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 인증 요구사항 불일치 지원서 조회( 지원서 조회와 제출에도 적절한 인증이 필요한지 검토해야 합니다: @GetMapping("/apply")
@Operation(summary = "클럽 지원서 불러오기", description = "클럽 지원서를 불러옵니다")
+@PreAuthorize("isAuthenticated()")
+@SecurityRequirement(name = "BearerAuth")
public ResponseEntity<?> getClubApplication(@PathVariable String clubId) {
@PostMapping("/apply")
@Operation(summary = "클럽 지원", description = "클럽에 지원합니다")
+@PreAuthorize("isAuthenticated()")
+@SecurityRequirement(name = "BearerAuth")
public ResponseEntity<?> applyToClub(@PathVariable String clubId,
+ @CurrentUser CustomUserDetails user,
@RequestBody @Validated ClubApplyRequest request) {Also applies to: 55-61 🤖 Prompt for AI Agents |
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| @PostMapping("/apply") | ||||||||||||||||||||||||
| @Operation(summary = "클럽 지원", description = "클럽에 지원합니다") | ||||||||||||||||||||||||
| public ResponseEntity<?> applyToClub(@PathVariable String clubId, | ||||||||||||||||||||||||
| @RequestBody @Validated ClubApplyRequest request) { | ||||||||||||||||||||||||
| clubApplyService.applyToClub(clubId, request); | ||||||||||||||||||||||||
| return Response.ok("success apply"); | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
Comment on lines
+57
to
+61
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 클럽 지원 시 사용자 정보 누락 클럽 지원 시 어떤 사용자가 지원했는지 식별할 수 있는 정보가 전달되지 않습니다. 지원자 정보를 서비스 레이어에 전달해야 합니다: public ResponseEntity<?> applyToClub(@PathVariable String clubId,
+ @CurrentUser CustomUserDetails user,
@RequestBody @Validated ClubApplyRequest request) {
- clubApplyService.applyToClub(clubId, request);
+ clubApplyService.applyToClub(clubId, user, request);
return Response.ok("success apply");
}📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,38 @@ | ||||||||||||||||||||||||
| package moadong.club.entity; | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| import jakarta.persistence.EnumType; | ||||||||||||||||||||||||
| import jakarta.persistence.Enumerated; | ||||||||||||||||||||||||
| import jakarta.persistence.Id; | ||||||||||||||||||||||||
| import lombok.AllArgsConstructor; | ||||||||||||||||||||||||
| import lombok.Builder; | ||||||||||||||||||||||||
| import lombok.Getter; | ||||||||||||||||||||||||
| import moadong.club.enums.ApplicationStatus; | ||||||||||||||||||||||||
| import org.springframework.data.mongodb.core.mapping.Document; | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| import java.time.LocalDateTime; | ||||||||||||||||||||||||
| import java.time.ZoneId; | ||||||||||||||||||||||||
| import java.time.ZonedDateTime; | ||||||||||||||||||||||||
| import java.util.ArrayList; | ||||||||||||||||||||||||
| import java.util.List; | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| @Document("club_applications") | ||||||||||||||||||||||||
| @AllArgsConstructor | ||||||||||||||||||||||||
| @Getter | ||||||||||||||||||||||||
| @Builder(toBuilder = true) | ||||||||||||||||||||||||
| public class ClubApplication { | ||||||||||||||||||||||||
|
Comment on lines
+18
to
+22
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion MongoDB 엔티티에 기본 생성자가 필요할 수 있습니다. MongoDB의 역직렬화를 위해 @Document("club_applications")
+@NoArgsConstructor
@AllArgsConstructor
@Getter
@Builder(toBuilder = true)
public class ClubApplication {📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| @Id | ||||||||||||||||||||||||
| private String id; | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| private String questionId; | ||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 지원서에 사용자 정보가 누락되었습니다. 클럽 지원서에는 지원한 사용자의 정보가 포함되어야 합니다. private String questionId;
+
+private String userId; // 지원자 ID 추가 필요📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| @Enumerated(EnumType.STRING) | ||||||||||||||||||||||||
| @Builder.Default | ||||||||||||||||||||||||
| ApplicationStatus status = ApplicationStatus.SUBMITTED; | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| @Builder.Default | ||||||||||||||||||||||||
| private List<ClubQuestionAnswer> answers = new ArrayList<>(); | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| @Builder.Default | ||||||||||||||||||||||||
| LocalDateTime createdAt = ZonedDateTime.now(ZoneId.of("Asia/Seoul")).toLocalDateTime(); | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,37 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| package moadong.club.entity; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import jakarta.persistence.EnumType; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import jakarta.persistence.Enumerated; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import jakarta.validation.constraints.NotNull; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import lombok.AllArgsConstructor; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import lombok.Builder; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import lombok.Getter; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import moadong.club.enums.ClubApplicationQuestionType; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import java.util.List; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @AllArgsConstructor | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Getter | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Builder(toBuilder = true) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| public class ClubApplicationQuestion { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+13
to
+16
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 직렬화를 위한 기본 생성자 추가를 권장합니다. JSON 직렬화/역직렬화나 MongoDB 매핑을 위해 기본 생성자가 필요할 수 있습니다. +@NoArgsConstructor
@AllArgsConstructor
@Getter
@Builder(toBuilder = true)
public class ClubApplicationQuestion {📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents💡 Verification agent 🧩 Analysis chain엔티티의 사용 목적을 명확히 해주세요. 이 클래스가 독립적인 MongoDB 엔티티인지 임베디드 객체인지 명확하지 않습니다. 만약 독립적인 엔티티라면 다음 스크립트로 이 클래스의 사용처를 확인해보겠습니다: 🏁 Script executed: #!/bin/bash
# ClubApplicationQuestion 클래스의 사용처 확인
rg -A 3 -B 3 "ClubApplicationQuestion"Length of output: 13581 🏁 Script executed: #!/bin/bash
# Check for JPA @Entity annotations
rg "@Entity" -n src/main/java
# Check for MongoDB @Document annotations
rg "@Document" -n src/main/java
# Check for repository interfaces
rg "interface .*Repository" -n src/main/javaLength of output: 270 🏁 Script executed: #!/bin/bash
# Spring Data 리포지토리 인터페이스 확인
rg -n "@Repository" -n backend
rg -n "interface .*Repository" -n backend
rg -n "MongoRepository" -n backend
rg -n "JpaRepository" -n backend
# 엔티티 및 MongoDB Document 어노테이션 확인
rg -n "@Entity" -n backend
rg -n "@Document" -n backendLength of output: 3381 임베디드 서브도큐먼트임을 명시해주세요. 현재
위 내용을 반영하여 임베디드 객체임을 명시해주세요. 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @NotNull | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private Long id; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @NotNull | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private String title; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @NotNull | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private String description; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Enumerated(EnumType.STRING) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @NotNull | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private ClubApplicationQuestionType type; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @NotNull | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private ClubQuestionOption options; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @NotNull | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private List<ClubQuestionItem> items; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+18
to
+35
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 모든 필드에 @NotNull이 과도하게 적용되었습니다. 모든 필드를 필수로 설정하는 것이 비즈니스 요구사항에 맞는지 검토가 필요합니다. 특히 @NotNull
private String title;
-@NotNull
private String description; // 설명은 선택적일 수 있음📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| package moadong.club.entity; | ||
|
|
||
| import jakarta.persistence.Id; | ||
| import jakarta.validation.constraints.NotBlank; | ||
| import lombok.AllArgsConstructor; | ||
| import lombok.Builder; | ||
| import lombok.Getter; | ||
| import org.springframework.data.mongodb.core.mapping.Document; | ||
|
|
||
| import java.time.LocalDateTime; | ||
| import java.time.ZoneId; | ||
| import java.time.ZonedDateTime; | ||
| import java.util.ArrayList; | ||
| import java.util.List; | ||
|
|
||
| @Document("club_questions") | ||
| @AllArgsConstructor | ||
| @Getter | ||
| @Builder(toBuilder = true) | ||
| public class ClubQuestion { | ||
|
|
||
| @Id | ||
| private String id; | ||
|
|
||
| private String clubId; | ||
|
|
||
| @NotBlank | ||
| @Builder.Default | ||
| private String title = ""; | ||
|
|
||
| @Builder.Default | ||
| private List<ClubApplicationQuestion> questions = new ArrayList<>(); | ||
|
|
||
| @Builder.Default | ||
| private LocalDateTime createdAt = ZonedDateTime.now(ZoneId.of("Asia/Seoul")).toLocalDateTime(); | ||
|
|
||
| @Builder.Default | ||
| private LocalDateTime editedAt = ZonedDateTime.now(ZoneId.of("Asia/Seoul")).toLocalDateTime(); | ||
|
Comment on lines
+35
to
+38
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 타임존 설정을 외부 설정으로 분리하세요. 하드코딩된 "Asia/Seoul" 타임존을 설정 파일로 외부화하는 것을 권장합니다. 이렇게 하면 다른 지역에서의 배포나 테스트 시 유연성이 향상됩니다. +@Value("${app.timezone:Asia/Seoul}")
+private String timezone;
-private LocalDateTime createdAt = ZonedDateTime.now(ZoneId.of("Asia/Seoul")).toLocalDateTime();
+private LocalDateTime createdAt = ZonedDateTime.now(ZoneId.of(timezone)).toLocalDateTime();
-private LocalDateTime editedAt = ZonedDateTime.now(ZoneId.of("Asia/Seoul")).toLocalDateTime();
+private LocalDateTime editedAt = ZonedDateTime.now(ZoneId.of(timezone)).toLocalDateTime();
🤖 Prompt for AI Agents |
||
|
|
||
| public void updateFormTitle(String title) { | ||
| this.title = title; | ||
| } | ||
|
|
||
| public void updateQuestions(List<ClubApplicationQuestion> newQuestions) { | ||
| this.questions.clear(); | ||
| this.questions.addAll(newQuestions); | ||
| } | ||
|
|
||
| public void updateEditedAt() { | ||
| this.editedAt = ZonedDateTime.now(ZoneId.of("Asia/Seoul")).toLocalDateTime(); | ||
| } | ||
|
|
||
| } | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,16 @@ | ||||||||||||||||||||||||||||||||
| package moadong.club.entity; | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| import lombok.AllArgsConstructor; | ||||||||||||||||||||||||||||||||
| import lombok.Builder; | ||||||||||||||||||||||||||||||||
| import lombok.Getter; | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| @AllArgsConstructor | ||||||||||||||||||||||||||||||||
| @Getter | ||||||||||||||||||||||||||||||||
| @Builder(toBuilder = true) | ||||||||||||||||||||||||||||||||
|
Comment on lines
+7
to
+9
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 기본 생성자 누락 – 프레임워크 호환성 보강 필요 import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
import lombok.Builder;
import lombok.Getter;
@AllArgsConstructor
+@NoArgsConstructor
@Getter
@Builder(toBuilder = true)
public class ClubQuestionAnswer { ... }📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||
| public class ClubQuestionAnswer { | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| private Long id; | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| private String value; | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,14 @@ | ||||||||||||||||||||||||||||||||
| package moadong.club.entity; | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| import lombok.AllArgsConstructor; | ||||||||||||||||||||||||||||||||
| import lombok.Builder; | ||||||||||||||||||||||||||||||||
| import lombok.Getter; | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| @AllArgsConstructor | ||||||||||||||||||||||||||||||||
| @Getter | ||||||||||||||||||||||||||||||||
| @Builder(toBuilder = true) | ||||||||||||||||||||||||||||||||
|
Comment on lines
+7
to
+9
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 기본 생성자 누락 – 역직렬화 안정성 확보 필요 import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
import lombok.Builder;
import lombok.Getter;
@AllArgsConstructor
+@NoArgsConstructor
@Getter
@Builder(toBuilder = true)
public class ClubQuestionItem { ... }📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||
| public class ClubQuestionItem { | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| private String value; | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| package moadong.club.entity; | ||
|
|
||
| import lombok.AllArgsConstructor; | ||
| import lombok.Builder; | ||
| import lombok.Getter; | ||
|
|
||
| @AllArgsConstructor | ||
| @Getter | ||
| @Builder(toBuilder = true) | ||
| public class ClubQuestionOption { | ||
|
|
||
| private Boolean required; | ||
|
|
||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
새로운 의존성들이 잘 구성되어 있습니다.
Google Drive API, AWS S3, Thumbnailator 등의 의존성이 기능별로 잘 분류되어 추가되었습니다. 주석을 통한 그룹화도 명확합니다.
다만, 의존성 버전이 최신인지 확인해주세요. 특히 보안 업데이트가 있는지 검토가 필요할 수 있습니다.
🏁 Script executed:
Length of output: 654
의존성 버전 업데이트 필요
다음 주요 라이브러리들이 현재 코드에 지정된 버전보다 최신 버전이 릴리즈되어 있으니 업데이트를 권장합니다:
• com.google.api-client:google-api-client
– 현재: 2.0.0 → 최신: 2.8.0
• software.amazon.awssdk:bom
– 현재: 2.25.8 → 최신: 2.31.57
• net.coobird:thumbnailator
– 현재: 0.4.14 → 최신: 0.4.20
• com.google.oauth-client:google-oauth-client-jetty (현재 1.34.1)
• com.google.apis:google-api-services-drive (현재 v3-rev20220815-2.0.0)
추천 변경 예시:
📝 Committable suggestion
🤖 Prompt for AI Agents