diff --git a/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberCsvController.java b/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberCsvController.java index b0a982a3..457a84c2 100644 --- a/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberCsvController.java +++ b/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberCsvController.java @@ -7,8 +7,11 @@ import clap.server.exception.AdapterException; import clap.server.exception.code.FileErrorcode; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.security.access.annotation.Secured; import org.springframework.security.core.annotation.AuthenticationPrincipal; @@ -31,6 +34,7 @@ public class RegisterMemberCsvController { @Secured("ROLE_ADMIN") public ResponseEntity registerMembersFromCsv( @AuthenticationPrincipal SecurityUserDetails userInfo, + @Parameter(description = "csv, 엑셀 포맷 파일만 입력 가능합니다.", content = @Content(mediaType = MediaType.MULTIPART_FORM_DATA_VALUE)) @RequestParam("file") MultipartFile file) throws IOException { if (!FileTypeValidator.validCSVFile(file.getInputStream())) { throw new AdapterException(FileErrorcode.UNSUPPORTED_FILE_TYPE);} diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/admin/request/FindMemberRequest.java b/src/main/java/clap/server/adapter/inbound/web/dto/admin/request/FindMemberRequest.java index 5fa2249c..84a3b37a 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/admin/request/FindMemberRequest.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/admin/request/FindMemberRequest.java @@ -3,7 +3,9 @@ import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; +import org.springdoc.core.annotations.ParameterObject; +@ParameterObject public record FindMemberRequest( @NotNull @Schema(description = "회원 이름", example = "양시훈") diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/log/request/FilterLogRequest.java b/src/main/java/clap/server/adapter/inbound/web/dto/log/request/FilterLogRequest.java index 6685d933..cbdea698 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/log/request/FilterLogRequest.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/log/request/FilterLogRequest.java @@ -3,9 +3,11 @@ import clap.server.adapter.outbound.persistense.entity.log.constant.LogStatus; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; +import org.springdoc.core.annotations.ParameterObject; import java.util.List; +@ParameterObject public record FilterLogRequest( @Schema(description = "검색 기간 (단위: 시간)", example = "1, 24, 168, 730, 2190 (1시간, 24시간, 1주일, 1개월, 3개월)") diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTaskBoardRequest.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTaskBoardRequest.java index 758e8720..9ba6fc4d 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTaskBoardRequest.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTaskBoardRequest.java @@ -2,9 +2,11 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; +import org.springdoc.core.annotations.ParameterObject; import java.util.List; +@ParameterObject public record FilterTaskBoardRequest( @Schema(description = "라벨 ID") Long labelId, diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTaskListRequest.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTaskListRequest.java index eb7f3527..07d0edc5 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTaskListRequest.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTaskListRequest.java @@ -4,9 +4,11 @@ import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; +import org.springdoc.core.annotations.ParameterObject; import java.util.List; +@ParameterObject public record FilterTaskListRequest( @Schema(description = "검색 기간 (단위: 시간)", example = "1, 24, 168, 730, 2190 (1시간, 24시간, 1주일, 1개월, 3개월)") diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTeamStatusRequest.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTeamStatusRequest.java index 91524ffc..5c73089b 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTeamStatusRequest.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/task/request/FilterTeamStatusRequest.java @@ -3,9 +3,11 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import org.springdoc.core.annotations.ParameterObject; import java.util.List; +@ParameterObject public record FilterTeamStatusRequest( @Schema(description = "정렬 기준 (기여도순, 기본)", example = "DEFAULT") @NotNull diff --git a/src/main/java/clap/server/adapter/inbound/web/history/PostCommentController.java b/src/main/java/clap/server/adapter/inbound/web/history/PostCommentController.java index 18b020ec..a4998c77 100644 --- a/src/main/java/clap/server/adapter/inbound/web/history/PostCommentController.java +++ b/src/main/java/clap/server/adapter/inbound/web/history/PostCommentController.java @@ -10,6 +10,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.enums.ParameterIn; +import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; @@ -47,6 +48,7 @@ public void createComment( public void createAttachmentComment( @AuthenticationPrincipal SecurityUserDetails userInfo, @PathVariable Long taskId, + @Parameter(content = @Content(mediaType = MediaType.MULTIPART_FORM_DATA_VALUE)) @RequestPart(name = "attachment") @NotNull MultipartFile attachment) { saveCommentAttachmentUsecase.saveCommentAttachment(userInfo.getUserId(), taskId, attachment); } diff --git a/src/main/java/clap/server/adapter/inbound/web/member/MemberInfoController.java b/src/main/java/clap/server/adapter/inbound/web/member/MemberInfoController.java index b82a0863..45863739 100644 --- a/src/main/java/clap/server/adapter/inbound/web/member/MemberInfoController.java +++ b/src/main/java/clap/server/adapter/inbound/web/member/MemberInfoController.java @@ -12,6 +12,8 @@ import clap.server.exception.ApplicationException; import clap.server.exception.code.FileErrorcode; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; @@ -50,6 +52,7 @@ public ResponseEntity getMemberDetailInfo(@Authenticat @PatchMapping(value = "/info", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_JSON_VALUE}) public void updateMemberDetailInfo( @RequestPart(name = "memberInfo") UpdateMemberInfoRequest request, + @Parameter(description = "image/jpeg, image/pjpeg, image/png, image/gif, image/bmp, image/x-windows-bmp 형식만 가능합니다.", content = @Content(mediaType = MediaType.MULTIPART_FORM_DATA_VALUE)) @RequestPart(name = "profileImage", required = false) MultipartFile profileImage, @AuthenticationPrincipal SecurityUserDetails userInfo) throws IOException { if (profileImage !=null && !FileTypeValidator.validImageFile(profileImage.getInputStream())) { diff --git a/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java b/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java index f35fc290..10cb98f0 100644 --- a/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java +++ b/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java @@ -14,8 +14,6 @@ import clap.server.common.annotation.architecture.WebAdapter; import clap.server.common.annotation.log.LogType; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/clap/server/adapter/inbound/web/task/ManagementTaskController.java b/src/main/java/clap/server/adapter/inbound/web/task/ManagementTaskController.java index b721536e..193c68fe 100644 --- a/src/main/java/clap/server/adapter/inbound/web/task/ManagementTaskController.java +++ b/src/main/java/clap/server/adapter/inbound/web/task/ManagementTaskController.java @@ -12,7 +12,8 @@ import clap.server.exception.AdapterException; import clap.server.exception.code.TaskErrorCode; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; @@ -43,8 +44,9 @@ public class ManagementTaskController { @PostMapping(consumes = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_JSON_VALUE}) @Secured({"ROLE_MANAGER", "ROLE_USER"}) public ResponseEntity createTask( + @Parameter(description = "작업 내용", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE)) @RequestPart(name = "taskInfo") @Valid CreateTaskRequest createTaskRequest, - @Schema(description = "파일은 5개 이하만 업로드 가능합니다.") + @Parameter(description = "파일은 5개 이하만 업로드 가능합니다.", content = @Content(mediaType = MediaType.MULTIPART_FORM_DATA_VALUE)) @RequestPart(name = "attachment", required = false) List attachments, @AuthenticationPrincipal SecurityUserDetails userInfo ) { @@ -60,7 +62,7 @@ public ResponseEntity createTask( public void updateTask( @PathVariable @NotNull Long taskId, @RequestPart(name = "taskInfo") @Valid UpdateTaskRequest updateTaskRequest, - @Schema(description = "하나의 작업에는 총 5개 이하만 업로드 가능합니다.") + @Parameter(description = "파일은 5개 이하만 업로드 가능합니다.", content = @Content(mediaType = MediaType.MULTIPART_FORM_DATA_VALUE)) @RequestPart(name = "attachment", required = false) List attachments, @AuthenticationPrincipal SecurityUserDetails userInfo) { if (attachments != null && attachments.size() > 5) { diff --git a/src/main/java/clap/server/application/service/log/LogService.java b/src/main/java/clap/server/application/service/log/LogService.java index 019ef2ba..b241d521 100644 --- a/src/main/java/clap/server/application/service/log/LogService.java +++ b/src/main/java/clap/server/application/service/log/LogService.java @@ -5,7 +5,6 @@ import clap.server.application.port.outbound.auth.loginLog.LoadLoginLogPort; import clap.server.application.port.outbound.log.CommandLogPort; import clap.server.application.port.outbound.log.LoggingPort; -import clap.server.common.utils.ClientIpParseUtil; import clap.server.domain.model.auth.LoginLog; import clap.server.domain.model.log.AnonymousLog; import clap.server.domain.model.log.MemberLog;