Conversation
There was a problem hiding this comment.
Pull request overview
Sets up the Week 5 Spring Boot project skeleton and introduces a unified API response envelope plus a global exception handler (with Swagger/OpenAPI configuration) to standardize success/failure responses across controllers.
Changes:
- Added
ApiResponsewrapper with success/error code abstractions (BaseSuccessCode/BaseErrorCode) and general success/error enums. - Added
@RestControllerAdviceglobal exception handler forProjectExceptionand generic exceptions. - Bootstrapped a new Gradle-based Spring Boot project structure (wrapper/scripts/config) with initial member/mission/review scaffolding.
Reviewed changes
Copilot reviewed 57 out of 58 changed files in this pull request and generated 18 comments.
Show a summary per file
| File | Description |
|---|---|
| Juno/Week5/Week5_Mission/src/test/java/com/example/week5_mission/Week5MissionApplicationTests.java | Spring Boot context-load test scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/global/enums/Address.java | Global enum placeholder used by DTOs |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/global/config/SwaggerConfig.java | OpenAPI/Swagger configuration + JWT security scheme |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/global/apiPayload/handler/GeneralExceptionAdvice.java | Global exception handling returning unified ApiResponse |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/global/apiPayload/exception/ProjectException.java | Base runtime exception carrying BaseErrorCode |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/global/apiPayload/code/GeneralSuccessCode.java | Common success code definition |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/global/apiPayload/code/GeneralErrorCode.java | Common error code definition |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/global/apiPayload/code/BaseSuccessCode.java | Success code interface (status/code/message) |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/global/apiPayload/code/BaseErrorCode.java | Error code interface (status/code/message) |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/global/apiPayload/ApiResponse.java | Unified API response envelope |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/review/service/ReviewService.java | Review service scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/review/repository/ReviewRepository.java | Review repository scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/review/exception/code/ReviewErrorCode.java | Review-domain error code scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/review/exception/ReviewException.java | Review-domain exception type |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/review/entity/ReviewPhoto.java | Review photo entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/review/entity/Review.java | Review entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/review/entity/Reply.java | Reply entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/review/dto/ReviewResDTO.java | Review response DTO scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/review/dto/ReviewReqDTO.java | Review request DTO scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/review/converter/ReviewConverter.java | Review converter scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/review/controller/ReviewController.java | Review endpoints returning ApiResponse |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/service/MissionService.java | Mission service scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/repository/MissionRepository.java | Mission repository scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/exception/code/MissionErrorCode.java | Mission-domain error code scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/exception/MissionException.java | Mission-domain exception type |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/entity/mapping/MemberMission.java | Mapping entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/entity/Store.java | Store entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/entity/Mission.java | Mission entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/entity/Location.java | Location entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/dto/MissionResDTO.java | Mission response DTO scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/dto/MissionReqDTO.java | Mission request DTO scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/converter/MissionConverter.java | Mission converter scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/mission/controller/MissionController.java | Mission endpoints returning ApiResponse |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/service/MemberService.java | Member service scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/repository/MemberRepository.java | Member repository scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/exception/code/MemberErrorCode.java | Member-domain error code scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/exception/MemberException.java | Member-domain exception type |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/enums/Term.java | Member term enum scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/enums/SocialType.java | Social type enum scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/enums/Gender.java | Gender enum scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/entity/mapping/MemberTerm.java | Mapping entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/entity/mapping/MemberFood.java | Mapping entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/entity/Term.java | Term entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/entity/Member.java | Member entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/entity/Food.java | Food entity scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/dto/MemberResDTO.java | Member response DTO scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/dto/MemberReqDTO.java | Member request DTO scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/converter/MemberConverter.java | Member converter scaffold |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/domain/member/controller/MemberController.java | Auth/member endpoints returning ApiResponse |
| Juno/Week5/Week5_Mission/src/main/java/com/example/week5_mission/Week5MissionApplication.java | Spring Boot application entrypoint |
| Juno/Week5/Week5_Mission/settings.gradle | Gradle project name setup |
| Juno/Week5/Week5_Mission/gradlew.bat | Gradle wrapper (Windows) |
| Juno/Week5/Week5_Mission/gradlew | Gradle wrapper (POSIX) |
| Juno/Week5/Week5_Mission/gradle/wrapper/gradle-wrapper.properties | Gradle wrapper distribution pin |
| Juno/Week5/Week5_Mission/gradle/wrapper/gradle-wrapper.jar | Gradle wrapper binary |
| Juno/Week5/Week5_Mission/build.gradle | Gradle build configuration + dependencies |
| Juno/Week5/Week5_Mission/.gitignore | Project gitignore (includes env/yml ignores) |
| Juno/Week5/Week5_Mission/.gitattributes | EOL and binary handling rules |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+30
to
+35
| BaseErrorCode code = GeneralErrorCode.INTERNAL_SERVER_ERROR; | ||
| return ResponseEntity.status(code.getStatus()) | ||
| .body(ApiResponse.onFailure( | ||
| code, | ||
| ex.getMessage() | ||
| ) |
Comment on lines
+23
to
+28
| Components components = new Components() | ||
| .addSecuritySchemes(securityScheme, new SecurityScheme() | ||
| .name(securityScheme) | ||
| .type(SecurityScheme.Type.HTTP) | ||
| .scheme("Bearer") | ||
| .bearerFormat("JWT")); |
Comment on lines
+10
to
+13
| public enum ReviewErrorCode implements BaseErrorCode { | ||
|
|
||
| REVIEW_ERROR_CODE(HttpStatus.NOT_FOUND, "MEMBER404_1", "해당 사용자를 찾을 수 없습니다."); | ||
|
|
| public class MemberResDTO { | ||
|
|
||
| @Getter | ||
| public static class SignUpRequestBody { |
| @@ -0,0 +1,4 @@ | |||
| package com.example.week5_mission.domain.member.enums; | |||
|
|
|||
| public enum Gender { | |||
Comment on lines
+23
to
+28
| implementation 'org.springframework.boot:spring-boot-starter-webmvc' | ||
| compileOnly 'org.projectlombok:lombok' | ||
| runtimeOnly 'com.mysql:mysql-connector-j' | ||
| annotationProcessor 'org.projectlombok:lombok' | ||
| testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa-test' | ||
| testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test' |
Comment on lines
+20
to
+24
| @GetMapping("") | ||
| public ApiResponse<MissionResDTO.MissionList> missions( | ||
| @RequestHeader("Authorization") String auth, | ||
| @RequestBody MissionReqDTO.Missions dto | ||
| ){ |
Comment on lines
+1
to
+4
| package com.example.week5_mission.domain.mission.service; | ||
|
|
||
| public class MissionService { | ||
| } |
Comment on lines
+3
to
+6
| public class ReviewResDTO { | ||
| public static class Review { | ||
| Long reviewId; | ||
| } |
Comment on lines
+3
to
+15
| import com.example.week5_mission.domain.mission.entity.Mission; | ||
| import lombok.Getter; | ||
|
|
||
| public class MissionResDTO { | ||
|
|
||
| @Getter | ||
| public static class MissionList { | ||
| Mission[] missionList; | ||
| } | ||
|
|
||
| @Getter | ||
| public static class Mission { | ||
| int point; |
|
공통 응답/예외 핸들러 모두 적절하게 구현하신 것 같습니다! 고생하셨어요!! |
CokaNuri
reviewed
May 4, 2026
CokaNuri
reviewed
May 4, 2026
CokaNuri
reviewed
May 4, 2026
CokaNuri
reviewed
May 4, 2026
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
✏️ 작업 내용
#️⃣ 연관된 이슈
closes #30
💡 함께 공유하고 싶은 부분
🤔 질문
✅ 워크북 체크리스트
✅ 컨벤션 체크리스트
📌 주안점