Skip to content

Commit d42e522

Browse files
committed
CLAP-108 Add: 작업 요청 및 조회에 대한 명세 추가
1 parent e0627ea commit d42e522

File tree

12 files changed

+68
-33
lines changed

12 files changed

+68
-33
lines changed
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
package clap.server.adapter.inbound.web.dto.task;
22

33

4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
46
public record AttachmentRequest(
7+
@Schema(description = "파일 ID", example = "45")
58
Long fileId,
6-
String fileUrl) {
9+
10+
@Schema(description = "파일 URL", example = "https://example.com/file.png")
11+
String fileUrl
12+
) {
713
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
package clap.server.adapter.inbound.web.dto.task;
22

3+
import io.swagger.v3.oas.annotations.media.Schema;
34
import jakarta.validation.constraints.NotBlank;
45
import jakarta.validation.constraints.NotNull;
56

67
import java.util.List;
78

9+
10+
@Schema(description = "작업 생성 요청")
811
public record CreateTaskRequest(
12+
@Schema(description = "카테고리 ID")
913
@NotNull
1014
Long categoryId,
15+
16+
@Schema(description = "메인 카테고리 ID")
1117
@NotNull
1218
Long mainCategoryId,
19+
20+
@Schema(description = "작업 제목")
1321
@NotBlank
1422
String title,
23+
24+
@Schema(description = "작업 설명")
1525
String description,
26+
27+
@Schema(description = "첨부 파일 URL 목록", example = "[\"https://example.com/file1.png\", \"https://example.com/file2.pdf\"]")
1628
List<@NotBlank String> fileUrls
1729
) {
1830
}

src/main/java/clap/server/adapter/inbound/web/dto/task/FilterTaskListRequest.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,39 @@
22

33

44
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
5+
import io.swagger.v3.oas.annotations.media.Schema;
56
import jakarta.validation.constraints.NotNull;
67
import org.springframework.beans.factory.annotation.Value;
78

89
import java.util.List;
910

10-
11+
@Schema(description = "작업 필터링 요청")
1112
public record FilterTaskListRequest(
1213

14+
@Schema(description = "검색 기간 (단위: 시간)", example = "1, 24, 168, 730, 2190 (1시간, 24시간, 1주일, 1개월, 3개월)")
1315
Integer term,
16+
17+
@Schema(description = "카테고리 ID 목록", example = "[1, 2, 3]")
1418
@NotNull
1519
List<Long> categoryIds,
20+
21+
@Schema(description = "메인 카테고리 ID 목록", example = "[10, 20, 30]")
1622
@NotNull
1723
List<Long> mainCategoryIds,
24+
25+
@Schema(description = "작업 제목", example = "작업 제목")
1826
@NotNull
1927
String title,
28+
29+
@Schema(description = "사용자 닉네임", example = "atom.park")
2030
@NotNull
2131
String nickName,
32+
33+
@Schema(description = "작업 상태 목록", example = "[\"REQUESTED\", \"IN_PROGRESS\"]")
2234
@NotNull
2335
List<TaskStatus> taskStatus,
36+
37+
@Schema(description = "정렬 기준", implementation = OrderRequest.class)
2438
@NotNull
2539
OrderRequest orderRequest
2640
) {
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package clap.server.adapter.inbound.web.dto.task;
22

3-
import jakarta.validation.constraints.NotNull;
3+
import io.swagger.v3.oas.annotations.media.Schema;
44

55
public record OrderRequest(
6-
@NotNull
7-
String target,
8-
@NotNull
9-
String type
6+
@Schema(description = "정렬 기준 (REQUESTED_AT/FINISHED_AT)", example = "REQUESTED_AT")
7+
String sortBy,
8+
9+
@Schema(description = "정렬 방향 (ASC/DESC)", example = "ASC")
10+
String sortDirection
1011
) {}
Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,34 @@
11
package clap.server.adapter.inbound.web.dto.task;
22

3+
import io.swagger.v3.oas.annotations.media.Schema;
34
import jakarta.validation.constraints.NotBlank;
45
import jakarta.validation.constraints.NotNull;
56

67
import java.util.List;
78

9+
@Schema(description = "작업 업데이트 요청")
810
public record UpdateTaskRequest(
11+
12+
@Schema(description = "작업 ID", example = "123")
913
@NotNull
1014
Long taskId,
15+
16+
@Schema(description = "카테고리 ID", example = "1")
1117
@NotNull
1218
Long categoryId,
19+
20+
@Schema(description = "메인 카테고리 ID", example = "10")
1321
@NotNull
1422
Long mainCategoryId,
23+
24+
@Schema(description = "작업 제목", example = "업데이트된 제목")
1525
@NotBlank
1626
String title,
27+
28+
@Schema(description = "작업 설명", example = "업데이트된 설명.")
1729
String description,
30+
31+
@Schema(description = "첨부 파일 요청 목록", implementation = AttachmentRequest.class)
1832
List<AttachmentRequest> attachmentRequests
19-
) {
20-
}
33+
) {}
34+

src/main/java/clap/server/adapter/inbound/web/task/FindTaskController.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,11 @@
2727
@RestController
2828
@RequiredArgsConstructor
2929
@RequestMapping("/api/tasks")
30-
@Slf4j
3130
public class FindTaskController {
3231
private final FindTaskDetailsUsecase taskDetailsUsecase;
3332
private final FindTaskListUsecase taskListUsecase;
3433

35-
@Operation(summary = "내가 요청한 작업 목록 조회 (filtering, paging, sorting")
34+
@Operation(summary = "사용자 요청 작업 목록 조회")
3635
@Secured({"ROLE_USER"})
3736
@GetMapping("/requests")
3837
public ResponseEntity<Page<FindTaskListResponse>> getRequestedTaskList(
@@ -41,18 +40,6 @@ public ResponseEntity<Page<FindTaskListResponse>> getRequestedTaskList(
4140
@ModelAttribute FilterTaskListRequest filterTaskListRequest,
4241
@AuthenticationPrincipal SecurityUserDetails userInfo){
4342
Pageable pageable = PageRequest.of(page, pageSize);
44-
45-
log.info("요청된 파라미터 - page: {}, pageSize: {}, userId: {}", page, pageSize, userInfo.getUserId());
46-
log.info("FilterTaskListRequest - term: {}, categoryIds: {}, mainCategoryIds: {}, title: {}, nickName: {}, taskStatus: {}, orderRequest: {}",
47-
filterTaskListRequest.term(),
48-
filterTaskListRequest.categoryIds(),
49-
filterTaskListRequest.mainCategoryIds(),
50-
filterTaskListRequest.title(),
51-
filterTaskListRequest.nickName(),
52-
filterTaskListRequest.taskStatus(),
53-
filterTaskListRequest.orderRequest());
54-
log.info("isEmpty={}", filterTaskListRequest.nickName().isEmpty());
55-
5643
return ResponseEntity.ok(taskListUsecase.findRequestedTaskList(userInfo.getUserId(), pageable, filterTaskListRequest));
5744
}
5845
@Operation(summary = "요청한 작업 상세 조회")

src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepositoryImpl.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ public Page<TaskEntity> findRequestedTaskList(Long requesterId, Pageable pageabl
3636
String nickName = findTaskListRequest.nickName();
3737
List<TaskStatus> taskStatuses = findTaskListRequest.taskStatus();
3838
Integer termHours = findTaskListRequest.term();
39-
String sortTarget = findTaskListRequest.orderRequest().target();
40-
String sortType = findTaskListRequest.orderRequest().type();
39+
String sortBy = findTaskListRequest.orderRequest().sortBy();
40+
String sortDirection = findTaskListRequest.orderRequest().sortDirection();
4141

4242
if (termHours != null) {
4343
LocalDateTime fromDate = LocalDateTime.now().minusHours(termHours);
@@ -59,7 +59,7 @@ public Page<TaskEntity> findRequestedTaskList(Long requesterId, Pageable pageabl
5959
whereClause.and(taskEntity.taskStatus.in(taskStatuses));
6060
}
6161

62-
OrderSpecifier<?> orderSpecifier = getOrderSpecifier(sortTarget, sortType);
62+
OrderSpecifier<?> orderSpecifier = getOrderSpecifier(sortBy, sortDirection);
6363

6464
List<TaskEntity> result = queryFactory
6565
.selectFrom(taskEntity)
@@ -75,13 +75,13 @@ public Page<TaskEntity> findRequestedTaskList(Long requesterId, Pageable pageabl
7575
return new PageImpl<>(result, pageable, total);
7676
}
7777

78-
private OrderSpecifier<?> getOrderSpecifier(String sortTarget, String sortType) {
79-
DateTimePath<LocalDateTime> sortColumn = switch (sortTarget) {
78+
private OrderSpecifier<?> getOrderSpecifier(String sortBy, String sortDirection) {
79+
DateTimePath<LocalDateTime> sortColumn = switch (sortBy) {
8080
case "REQUESTED_AT" -> taskEntity.updatedAt;
8181
case "FINISHED_AT" -> taskEntity.completedAt;
8282
default -> taskEntity.updatedAt;
8383
};
84-
return "ASC".equalsIgnoreCase(sortType)
84+
return "ASC".equalsIgnoreCase(sortDirection)
8585
? new OrderSpecifier<>(ASC, sortColumn)
8686
: new OrderSpecifier<>(DESC, sortColumn);
8787
}

src/main/java/clap/server/application/Task/CreateTaskService.java renamed to src/main/java/clap/server/application/service/Task/CreateTaskService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package clap.server.application.Task;
1+
package clap.server.application.service.Task;
22

33
import clap.server.adapter.inbound.web.dto.task.CreateTaskRequest;
44
import clap.server.adapter.inbound.web.dto.task.CreateTaskResponse;

src/main/java/clap/server/application/Task/FindTaskDetailsService.java renamed to src/main/java/clap/server/application/service/Task/FindTaskDetailsService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package clap.server.application.Task;
1+
package clap.server.application.service.Task;
22

33
import clap.server.adapter.inbound.web.dto.task.FindTaskDetailsResponse;
44
import clap.server.adapter.outbound.persistense.entity.task.TaskEntity;

src/main/java/clap/server/application/Task/FindTaskListService.java renamed to src/main/java/clap/server/application/service/Task/FindTaskListService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package clap.server.application.Task;
1+
package clap.server.application.service.Task;
22

33
import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest;
44
import clap.server.adapter.inbound.web.dto.task.FindTaskListResponse;

0 commit comments

Comments
 (0)