Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package UMC.career_mate.domain.member.service;

import UMC.career_mate.domain.chatgpt.GptAnswer;
import UMC.career_mate.domain.chatgpt.repository.GptAnswerRepository;
import UMC.career_mate.domain.job.Job;
import UMC.career_mate.domain.job.Service.JobService;
Expand All @@ -14,13 +13,10 @@
import UMC.career_mate.domain.recruit.enums.RecruitKeyword;
import UMC.career_mate.global.response.exception.GeneralException;
import UMC.career_mate.global.response.exception.code.CommonErrorCode;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
Expand All @@ -40,7 +36,7 @@ public Member makeProfile(CreateProfileDTO request,Member member) {
profileMember.createProfile(request, job);
profileMember.completeProfile();

plannerService.savePlanner(profileMember);
plannerService.initPlanner(profileMember);

return profileMember;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,20 @@ public class PlannerController {
private final PlannerCommandService plannerCommandService;
private final PlannerQueryService plannerQueryService;

@PostMapping
@Operation(
summary = "플래너 생성(TEST용)",
description = """
[프로필 작성 완료시 플래너가 자동 생성되기 때문에, PATCH API를 사용해주시면 되겠습니다]
요청한 멤버에 해당하는 빈 플래너를 생성합니다.
```
""")

public ApiResponse<String> initPlanner(@LoginMember Member member) {
plannerCommandService.initPlanner(member);
return ApiResponse.onSuccess("플래너 생성 완료");
}

@PatchMapping
@Operation(
summary = "플래너 수정",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,27 @@ public static Planner toPlanner(Member member, CreatePlannerDTO createPlannerDTO
.build();
}

public static List<Planner> toPlannerList(Member member, List<CreatePlannerDTO> createPlannerDTOList){
return createPlannerDTOList.stream().map(createPlannerDTO -> PlannerConverter.toPlanner(member, createPlannerDTO)).toList();
public static Planner toInitialPlanner(Member member){
return Planner
.builder()
.activityName("")
.startTime(null)
.endTime(null)
.specifics("")
.measurable("")
.achievable("")
.relevant("")
.timeBound("")
.otherPlans("")
.member(member)
.build();
}
Comment on lines +29 to +43
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

초기 플래너 생성 메소드의 개선이 필요합니다.

다음과 같은 개선사항을 제안드립니다:

  1. 빈 문자열 대신 의미 있는 기본값 설정이 필요합니다.
  2. member 파라미터에 대한 null 체크가 필요합니다.
  3. JavaDoc을 추가하여 초기 상태의 목적과 사용법을 문서화해주세요.
+    /**
+     * 회원의 초기 플래너를 생성합니다.
+     * @param member 플래너를 생성할 회원 (null이 아니어야 함)
+     * @return 기본값으로 초기화된 플래너
+     * @throws IllegalArgumentException member가 null인 경우
+     */
     public static Planner toInitialPlanner(Member member){
+        if (member == null) {
+            throw new IllegalArgumentException("회원 정보는 필수입니다.");
+        }
         return Planner
                 .builder()
-                .activityName("")
+                .activityName("새로운 활동")
                 .startTime(null)
                 .endTime(null)
-                .specifics("")
-                .measurable("")
-                .achievable("")
-                .relevant("")
-                .timeBound("")
-                .otherPlans("")
+                .specifics("구체적인 계획을 입력해주세요")
+                .measurable("측정 가능한 목표를 설정해주세요")
+                .achievable("달성 가능한 목표를 설정해주세요")
+                .relevant("관련성 있는 목표를 설정해주세요")
+                .timeBound("기한이 있는 목표를 설정해주세요")
+                .otherPlans("추가 계획을 입력해주세요")
                 .member(member)
                 .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
public static Planner toInitialPlanner(Member member){
return Planner
.builder()
.activityName("")
.startTime(null)
.endTime(null)
.specifics("")
.measurable("")
.achievable("")
.relevant("")
.timeBound("")
.otherPlans("")
.member(member)
.build();
}
/**
* 회원의 초기 플래너를 생성합니다.
* @param member 플래너를 생성할 회원 (null이 아니어야 )
* @return 기본값으로 초기화된 플래너
* @throws IllegalArgumentException member가 null인 경우
*/
public static Planner toInitialPlanner(Member member){
if (member == null) {
throw new IllegalArgumentException("회원 정보는 필수입니다.");
}
return Planner
.builder()
.activityName("새로운 활동")
.startTime(null)
.endTime(null)
.specifics("구체적인 계획을 입력해주세요")
.measurable("측정 가능한 목표를 설정해주세요")
.achievable("달성 가능한 목표를 설정해주세요")
.relevant("관련성 있는 목표를 설정해주세요")
.timeBound("기한이 있는 목표를 설정해주세요")
.otherPlans("추가 계획을 입력해주세요")
.member(member)
.build();
}


public static List<Planner> toInitialPlannerList(Member member){
return List.of(
PlannerConverter.toInitialPlanner(member),
PlannerConverter.toInitialPlanner(member)
);
}
Comment on lines +45 to 50
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

초기 플래너 리스트 생성 로직 개선이 필요합니다.

현재 구현의 잠재적인 문제점들:

  1. 플래너 개수가 하드코딩되어 있습니다.
  2. 두 개의 플래너가 동일한 내용으로 생성됩니다.
  3. List.of()는 불변 리스트를 반환하여 추후 수정이 필요한 경우 문제가 될 수 있습니다.

다음과 같이 개선하는 것을 제안드립니다:

 public static List<Planner> toInitialPlannerList(Member member){
-    return List.of(
-            PlannerConverter.toInitialPlanner(member),
-            PlannerConverter.toInitialPlanner(member)
-    );
+    List<Planner> planners = new ArrayList<>();
+    
+    Planner firstPlanner = PlannerConverter.toInitialPlanner(member);
+    firstPlanner.setActivityName("첫 번째 활동");
+    planners.add(firstPlanner);
+    
+    Planner secondPlanner = PlannerConverter.toInitialPlanner(member);
+    secondPlanner.setActivityName("두 번째 활동");
+    planners.add(secondPlanner);
+    
+    return planners;
 }

또한, 초기 플래너의 개수를 설정 파일이나 상수로 관리하는 것을 고려해보세요.

📝 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
public static List<Planner> toInitialPlannerList(Member member){
return List.of(
PlannerConverter.toInitialPlanner(member),
PlannerConverter.toInitialPlanner(member)
);
}
public static List<Planner> toInitialPlannerList(Member member){
- return List.of(
- PlannerConverter.toInitialPlanner(member),
- PlannerConverter.toInitialPlanner(member)
- );
+ List<Planner> planners = new ArrayList<>();
+
+ Planner firstPlanner = PlannerConverter.toInitialPlanner(member);
+ firstPlanner.setActivityName("첫 번째 활동");
+ planners.add(firstPlanner);
+
+ Planner secondPlanner = PlannerConverter.toInitialPlanner(member);
+ secondPlanner.setActivityName("두 번째 활동");
+ planners.add(secondPlanner);
+
+ return planners;
}


public static PlannerResponseDTO toPlannerResponseDTO(Planner planner){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,17 @@ public class PlannerCommandService {

private final PlannerRepository plannerRepository;

public void savePlanner(Member member){
public void initPlanner(Member member){

if(member == null){
throw new GeneralException(CommonErrorCode.NOT_FOUND_BY_MEMBER_ID);
}

if(plannerRepository.existsByMember(member)){
throw new GeneralException(CommonErrorCode.PLANNER_EXISTS);
}

List<CreatePlannerDTO> createPlannerDTOList = List.of(
CreatePlannerDTO.builder().build(),
CreatePlannerDTO.builder().build()
);

plannerRepository.saveAll(PlannerConverter.toPlannerList(member, createPlannerDTOList));
plannerRepository.saveAll(PlannerConverter.toInitialPlannerList(member));
}

public void editPlanner(Member member, CreatePlannerListDTO createPlannerListDTO){
Expand Down