Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
5155ff7
CLAP-110 Feature : 담당자별 작업 처리량 조회 API 구현
hyoseong-Choi Jan 23, 2025
b7f2c2a
CLAP-111 Refactor : 통계 조회 API 리팩토링 및 기능 수정
hyoseong-Choi Jan 23, 2025
87d0fdb
내 작업한 내용에 대한 설명
nano-mm Jan 23, 2025
534aa24
담당자 조회 API 구현
nano-mm Jan 24, 2025
2b7f448
CLAP-111 Refactor : 통계 조회 API 주소 통합, 리팩토링, 예외처리
hyoseong-Choi Jan 24, 2025
72a66e4
Bug : 프로퍼티파일 수정
hyoseong-Choi Jan 24, 2025
8458cbd
CLAP-104 CI/CD : CI에서 s3.yml 파일 생성하도록 수정
hyoseong-Choi Jan 26, 2025
eb34ee8
CLAP-146 Feature : 카테고리 목록 조회 API 구현
hyoseong-Choi Jan 26, 2025
8146776
CLAP-147 Feature : 카테고리 수정 API 구현
hyoseong-Choi Jan 26, 2025
d24fdf8
CLAP-147 Feature : 카테고리 추가, 수정 API 리뷰반영 수정
hyoseong-Choi Jan 28, 2025
a0ebd44
CLAP-148 Feature : 카테고리 삭제 API 구현
hyoseong-Choi Jan 28, 2025
5fcc496
Merge branch 'develop' into CLAP-148
hyoseong-Choi Jan 28, 2025
0ff4b3b
CLAP-148 Feature : 카테고리 삭제 API 수정
hyoseong-Choi Jan 28, 2025
eefe6ee
CLAP-148 Docs : 카테고리 API 스웨거 수정
hyoseong-Choi Jan 28, 2025
b30cdde
CLAP-107 Bug : CI test yml파일 key 중복 수정
hyoseong-Choi Jan 29, 2025
c3292fe
CLAP-148 Feature : 카테고리 CUD 리뷰 반영 수정, 조회 반환 양식 수정
hyoseong-Choi Jan 30, 2025
2d63e7e
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Jan 30, 2025
5085370
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 2, 2025
915e6f9
CLAP-214 Cleanup : 통계, 카테고리 미흡한부분 리팩토링
hyoseong-Choi Feb 2, 2025
27e09cc
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 2, 2025
68c9f08
CLAP-214 Fix : 통계조회 API 파라미터 바인딩 오류 수정
hyoseong-Choi Feb 2, 2025
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
Expand Up @@ -3,7 +3,8 @@
import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.admin.AddMainCategoryRequest;
import clap.server.adapter.inbound.web.dto.admin.AddSubCategoryRequest;
import clap.server.application.port.inbound.admin.AddCategoryUsecase;
import clap.server.application.port.inbound.admin.AddMainCategoryUsecase;
import clap.server.application.port.inbound.admin.AddSubCategoryUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
Expand All @@ -20,20 +21,21 @@
@RequiredArgsConstructor
@RequestMapping("/api/managements")
public class AddCategoryController {
private final AddCategoryUsecase addCategoryUsecase;
private final AddMainCategoryUsecase addMainCategoryUsecase;
private final AddSubCategoryUsecase addSubCategoryUsecase;

@Operation(summary = "1차 카테고리 추가")
@PostMapping("/main-category")
@Secured("ROLE_ADMIN")
public void addMainCategory(@AuthenticationPrincipal SecurityUserDetails userInfo, @Valid @RequestBody AddMainCategoryRequest addMainCategoryRequest) {
addCategoryUsecase.addMainCategory(userInfo.getUserId(), addMainCategoryRequest.code(), addMainCategoryRequest.name());
addMainCategoryUsecase.addMainCategory(userInfo.getUserId(), addMainCategoryRequest.code(), addMainCategoryRequest.name());
}

@Operation(summary = "2차 카테고리 추가")
@PostMapping("/sub-category")
@Secured("ROLE_ADMIN")
public void addSubCategory(@AuthenticationPrincipal SecurityUserDetails userInfo, @Valid @RequestBody AddSubCategoryRequest addCategoryRequest) {
addCategoryUsecase.addSubCategory(userInfo.getUserId(), addCategoryRequest.mainCategoryId(), addCategoryRequest.code(), addCategoryRequest.name());
addSubCategoryUsecase.addSubCategory(userInfo.getUserId(), addCategoryRequest.mainCategoryId(), addCategoryRequest.code(), addCategoryRequest.name());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import java.util.List;

@Tag(name = "카테고리 조회")
@Tag(name = "02. Task [카테고리]", description = "카테고리 조회 API")
@WebAdapter
@RequiredArgsConstructor
@RequestMapping("/api")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import clap.server.common.annotation.architecture.WebAdapter;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.annotation.Secured;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
Expand All @@ -25,7 +26,7 @@ public class UpdateCategoryController {
@PatchMapping("/categories/{categoryId}")
@Secured("ROLE_ADMIN")
public void updateCategory(@AuthenticationPrincipal SecurityUserDetails userInfo, @PathVariable Long categoryId,
@RequestBody UpdateCategoryRequest updateCategoryRequest) {
@Valid @RequestBody UpdateCategoryRequest updateCategoryRequest) {
updateCategoryUsecase.updateCategory(userInfo.getUserId(), categoryId, updateCategoryRequest.name(), updateCategoryRequest.code());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@
import clap.server.adapter.inbound.web.dto.statistics.PeriodType;
import clap.server.adapter.inbound.web.dto.statistics.StatisticsResponse;
import clap.server.adapter.inbound.web.dto.statistics.StatisticsType;
import clap.server.application.port.inbound.statistics.*;
import clap.server.application.port.inbound.statistics.FindSubCategoryTaskRequestUsecase;
import clap.server.application.port.inbound.statistics.FindTaskProcessUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
import clap.server.exception.StatisticsException;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.annotation.Secured;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
Expand All @@ -20,7 +22,7 @@
import static clap.server.exception.code.StatisticsErrorCode.STATISTICS_BAD_REQUEST;
import static io.swagger.v3.oas.annotations.enums.ParameterIn.QUERY;

@Tag(name = "02. Task [담당자]", description = "작업 통계 API")
@Tag(name = "02. Task [통계]", description = "작업 통계 API")
@WebAdapter
@RequiredArgsConstructor
@RequestMapping("/api/tasks/statistics")
Expand All @@ -33,6 +35,7 @@ public class FindStatisticsController {
@Parameter(name = "periodType", description = "day, week, month", required = true, in = QUERY)
@Parameter(name = "statisticsType", description = "request-by-period, process-by-period, request-by-category, process-by-manager", required = true, in = QUERY)
@GetMapping
@Secured("ROLE_MANAGER")
public ResponseEntity<List<StatisticsResponse>> aggregateTaskStatistics(@RequestParam PeriodType periodType, @RequestParam StatisticsType statisticsType) {
switch (statisticsType) {
case REQUEST_BY_PERIOD ->
Expand All @@ -51,6 +54,7 @@ public ResponseEntity<List<StatisticsResponse>> aggregateTaskStatistics(@Request
@Parameter(name = "periodType", description = "day, week, month", required = true, in = QUERY)
@Parameter(name = "mainCategory", description = "1차 카테고리 이름", required = true, in = QUERY)
@GetMapping("/subcategory")
@Secured("ROLE_MANAGER")
public ResponseEntity<List<StatisticsResponse>> aggregateSubCategoryTaskRequest(@RequestParam PeriodType periodType, @RequestParam String mainCategory) {
return ResponseEntity.ok(findSubCategoryTaskRequestUsecase
.aggregateSubCategoryTaskRequest(periodType.getType(), mainCategory));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package clap.server.application.port.inbound.admin;

public interface AddMainCategoryUsecase {
void addMainCategory(Long adminId, String code, String name);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package clap.server.application.port.inbound.admin;

public interface AddCategoryUsecase {
void addMainCategory(Long adminId, String code, String name);
public interface AddSubCategoryUsecase {
void addSubCategory(Long adminId, Long mainCategoryId, String code, String name);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package clap.server.application.service.admin;

import clap.server.application.port.inbound.admin.AddCategoryUsecase;
import clap.server.application.port.inbound.admin.AddMainCategoryUsecase;
import clap.server.application.port.inbound.admin.AddSubCategoryUsecase;
import clap.server.application.port.outbound.member.LoadMemberPort;
import clap.server.application.port.outbound.task.CommandCategoryPort;
import clap.server.application.port.outbound.task.LoadCategoryPort;
Expand All @@ -17,7 +18,7 @@

@ApplicationService
@RequiredArgsConstructor
public class AddCategoryService implements AddCategoryUsecase {
public class AddCategoryService implements AddMainCategoryUsecase, AddSubCategoryUsecase {
private final CommandCategoryPort commandCategoryPort;
private final LoadCategoryPort loadCategoryPort;
private final LoadMemberPort loadMemberPort;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package clap.server.common.utils;

import clap.server.adapter.inbound.web.dto.statistics.PeriodType;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

@Component
public class StringToPeriodTypeConverter implements Converter<String, PeriodType> {
@Override
public PeriodType convert(String source) {
return PeriodType.from(source);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package clap.server.common.utils;

import clap.server.adapter.inbound.web.dto.statistics.StatisticsType;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

@Component
public class StringToStatisticsTypeConverter implements Converter<String, StatisticsType> {
@Override
public StatisticsType convert(String source) {
return StatisticsType.from(source);
}
}
23 changes: 23 additions & 0 deletions src/main/java/clap/server/config/web/WebConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package clap.server.config.web;

import clap.server.common.utils.StringToPeriodTypeConverter;
import clap.server.common.utils.StringToStatisticsTypeConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ConversionServiceFactoryBean;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.Set;

@Configuration
public class WebConfig implements WebMvcConfigurer {
@Bean
public ConversionServiceFactoryBean conversionService() {
ConversionServiceFactoryBean conversionService = new ConversionServiceFactoryBean();
conversionService.setConverters(Set.of(
new StringToStatisticsTypeConverter(),
new StringToPeriodTypeConverter()
));
return conversionService;
}
}
Loading