From bc11f2300cdcf05bd7197701edf7ed3c6ec18001 Mon Sep 17 00:00:00 2001 From: leeesooha Date: Wed, 9 Jul 2025 19:26:21 +0900 Subject: [PATCH 01/13] =?UTF-8?q?chore:=20=EB=8F=84=EC=BB=A4=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EC=A6=88=20=ED=8C=8C=EC=9D=BC=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=8A=A4=ED=94=84=EB=A7=81=20=EC=BB=A8=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=84=88,=20=EA=B7=B8=EB=9D=BC=ED=8C=8C=EB=82=98=20=ED=8F=AC?= =?UTF-8?q?=ED=8A=B8=20=EB=B3=80=EA=B2=BD=20(#348)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 3f4415c5..28983a71 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -6,7 +6,7 @@ services: dockerfile: docker/Dockerfile container_name: mywork-application ports: - - "8080:8080" + - "8081:8080" environment: - SPRING_PROFILES_ACTIVE=local deploy: @@ -66,7 +66,7 @@ services: image: grafana/grafana:11.5.6 container_name: grafana ports: - - "3000:3000" + - "3001:3000" volumes: - ../grafana-data:/var/lib/grafana environment: From bd5ad3e3ded63985e845eb83efd99f00b801f5ae Mon Sep 17 00:00:00 2001 From: leeesooha Date: Wed, 9 Jul 2025 19:26:39 +0900 Subject: [PATCH 02/13] =?UTF-8?q?chore:=20Dockerfile=20base=20image?= =?UTF-8?q?=EB=A5=BC=20openjdk:17-jdk-slim=EC=9C=BC=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20(#348)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 1bb641cb..479df083 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,5 +1,5 @@ # 베이스 이미지 -FROM openjdk:17-jdk-alpine +FROM openjdk:17-jdk-slim # 작업 디렉토리 설정 WORKDIR /app From 6392d0bcbbeb001516415c7b239e80eb128078ac Mon Sep 17 00:00:00 2001 From: leeesooha Date: Wed, 9 Jul 2025 19:27:38 +0900 Subject: [PATCH 03/13] =?UTF-8?q?chore:=20k6=20=EB=B6=80=ED=95=98=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20?= =?UTF-8?q?=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8=EB=A5=BC=201234=EB=A1=9C?= =?UTF-8?q?=20=ED=95=98=EB=93=9C=EC=BD=94=EB=94=A9=20(DB=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EA=B3=84=EC=A0=95=EA=B3=BC=20=EC=9D=BC?= =?UTF-8?q?=EC=B9=98)=20(#348)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k6/member/MemberLoadTest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k6/member/MemberLoadTest.js b/k6/member/MemberLoadTest.js index fad7ee1a..77f3c48b 100644 --- a/k6/member/MemberLoadTest.js +++ b/k6/member/MemberLoadTest.js @@ -19,7 +19,7 @@ export default function() { let response = loginMember({ email: user.email, - password: user.password + password: '1234' }); check(response, { From 0b4b3ab9d149e8f4bd0839311b45ce54090e3212 Mon Sep 17 00:00:00 2001 From: leeesooha Date: Thu, 10 Jul 2025 15:15:11 +0900 Subject: [PATCH 04/13] =?UTF-8?q?chore:=20.DS=5FStore=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=9D=84=20git=20ignore=EC=97=90=20=EC=B6=94=EA=B0=80=20(#351)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 561da450..a4ecbc2f 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,5 @@ out/ /sample_data/** !/sample_data/.gitkeep + +.DS_Store From 2665ccb07911d8c350357f4a53d35d8bde3c90ff Mon Sep 17 00:00:00 2001 From: HMHMHMJUN Date: Thu, 10 Jul 2025 15:42:06 +0900 Subject: [PATCH 05/13] =?UTF-8?q?feat=20:=20=EC=97=85=EC=B2=B4=20=EB=82=B4?= =?UTF-8?q?=20=EC=82=AC=EC=9B=90=20=EC=9D=B4=EB=A6=84=20=EA=B2=80=EC=83=89?= =?UTF-8?q?=20=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=B6=94=EA=B0=80=20#350?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/repository/MemberRepository.java | 12 ++++---- .../domain/member/service/MemberService.java | 29 +++++++++---------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/main/java/kr/mywork/domain/member/repository/MemberRepository.java b/src/main/java/kr/mywork/domain/member/repository/MemberRepository.java index 8252a878..76c7996f 100644 --- a/src/main/java/kr/mywork/domain/member/repository/MemberRepository.java +++ b/src/main/java/kr/mywork/domain/member/repository/MemberRepository.java @@ -1,19 +1,19 @@ package kr.mywork.domain.member.repository; -import java.util.List; -import java.util.Optional; -import java.util.UUID; - import kr.mywork.domain.company.service.dto.response.MemberDetailResponse; import kr.mywork.domain.member.model.Member; import kr.mywork.domain.member.service.dto.response.MemberSelectResponse; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + public interface MemberRepository { Optional findByEmailAndDeletedFalse(String email); - List findMemberByCompanyId(UUID companyId, int page, int memberPageSize); + List findMemberByCompanyId(UUID companyId, int page, int memberPageSize, String memberName); - long countByCompanyIdAndDeletedFalse(UUID companyId); + long countByCompanyIdAndDeletedFalse(UUID companyId,String memberName); Member save(Member member); diff --git a/src/main/java/kr/mywork/domain/member/service/MemberService.java b/src/main/java/kr/mywork/domain/member/service/MemberService.java index 48063db7..99e2acb8 100644 --- a/src/main/java/kr/mywork/domain/member/service/MemberService.java +++ b/src/main/java/kr/mywork/domain/member/service/MemberService.java @@ -1,16 +1,5 @@ package kr.mywork.domain.member.service; -import java.time.format.DateTimeFormatter; -import java.util.List; -import java.util.UUID; -import java.util.stream.Collectors; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationEventPublisher; -import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - import kr.mywork.common.auth.components.dto.LoginMemberDetail; import kr.mywork.domain.activityLog.listener.eventObject.ActivityLogCreateEvent; import kr.mywork.domain.activityLog.listener.eventObject.ActivityLogDeleteEvent; @@ -25,6 +14,16 @@ import kr.mywork.domain.member.service.dto.response.MemberSelectResponse; import kr.mywork.interfaces.member.controller.dto.request.ResetPasswordWebRequest; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -38,9 +37,9 @@ public class MemberService { private final ApplicationEventPublisher eventPublisher; @Transactional - public List findMemberByCompanyId(UUID companyId, int page) { + public List findMemberByCompanyId(UUID companyId, int page, String memberName) { - return memberRepository.findMemberByCompanyId(companyId, page, memberPageSize) + return memberRepository.findMemberByCompanyId(companyId, page, memberPageSize, memberName) .stream() .map(CompanyMemberResponse::fromEntity) .collect(Collectors.toList()); @@ -48,8 +47,8 @@ public List findMemberByCompanyId(UUID companyId, int pag } @Transactional - public long countMembersByCompanyId(UUID companyId) { - return memberRepository.countByCompanyIdAndDeletedFalse(companyId); + public long countMembersByCompanyId(UUID companyId, String memberName) { + return memberRepository.countByCompanyIdAndDeletedFalse(companyId,memberName); } @Transactional From 2d2f535dd782e25eaf1ecc2145b898d88c78e0ed Mon Sep 17 00:00:00 2001 From: HMHMHMJUN Date: Thu, 10 Jul 2025 15:46:48 +0900 Subject: [PATCH 06/13] =?UTF-8?q?feat=20:=20=EC=97=85=EC=B2=B4=20=EB=82=B4?= =?UTF-8?q?=20=EC=82=AC=EC=9B=90=20=EC=9D=B4=EB=A6=84=20=EA=B2=80=EC=83=89?= =?UTF-8?q?=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=20#350?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../company/controller/CompanyController.java | 40 ++++++------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/src/main/java/kr/mywork/interfaces/company/controller/CompanyController.java b/src/main/java/kr/mywork/interfaces/company/controller/CompanyController.java index 3da32255..e57f85f3 100644 --- a/src/main/java/kr/mywork/interfaces/company/controller/CompanyController.java +++ b/src/main/java/kr/mywork/interfaces/company/controller/CompanyController.java @@ -1,19 +1,5 @@ package kr.mywork.interfaces.company.controller; -import java.util.List; -import java.util.UUID; - -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - import jakarta.validation.constraints.Min; import jakarta.validation.constraints.Pattern; import kr.mywork.common.api.support.response.ApiResponse; @@ -29,18 +15,15 @@ import kr.mywork.domain.member.service.dto.response.CompanyMemberResponse; import kr.mywork.interfaces.company.controller.dto.request.CompanyCreateWebRequest; import kr.mywork.interfaces.company.controller.dto.request.CompanyUpdateWebRequest; -import kr.mywork.interfaces.company.controller.dto.response.CompanyCreateWebResponse; -import kr.mywork.interfaces.company.controller.dto.response.CompanyDeleteWebResponse; -import kr.mywork.interfaces.company.controller.dto.response.CompanyDetailWebResponse; -import kr.mywork.interfaces.company.controller.dto.response.CompanyIdCreateWebResponse; -import kr.mywork.interfaces.company.controller.dto.response.CompanyListWebResponse; -import kr.mywork.interfaces.company.controller.dto.response.CompanyNameWebResponse; -import kr.mywork.interfaces.company.controller.dto.response.CompanyNamesWebResponse; -import kr.mywork.interfaces.company.controller.dto.response.CompanySelectWebResponse; -import kr.mywork.interfaces.company.controller.dto.response.CompanyUpdateWebResponse; +import kr.mywork.interfaces.company.controller.dto.response.*; import kr.mywork.interfaces.member.controller.dto.response.CompanyMemberListWebResponse; import kr.mywork.interfaces.member.controller.dto.response.CompanyMemberWebResponse; import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.UUID; @RestController @RequiredArgsConstructor @@ -141,11 +124,14 @@ public ApiResponse companyListOnlyIdNameWebResponseApiR } @GetMapping("/{companyId}/members") - public ApiResponse getCompanyMember(@PathVariable(name = "companyId") UUID companyId, - @RequestParam(defaultValue = "1") @Min(value = 1, message = "{invalid.page-size}") int page) { - List companyMemberResponses = memberService.findMemberByCompanyId(companyId, page); + public ApiResponse getCompanyMember( + @PathVariable(name = "companyId") UUID companyId, + @RequestParam(defaultValue = "1") @Min(value = 1, message = "{invalid.page-size}") int page, + @RequestParam(name = "memberName", required = false) final String memberName + ) { + List companyMemberResponses = memberService.findMemberByCompanyId(companyId, page,memberName); - long total = memberService.countMembersByCompanyId(companyId); + long total = memberService.countMembersByCompanyId(companyId,memberName); List companyMemberWebResponses = companyMemberResponses.stream() .map(CompanyMemberListWebResponse::fromService) From 45a63e0883b76d37c2e0bd0b491fa588055d246c Mon Sep 17 00:00:00 2001 From: HMHMHMJUN Date: Thu, 10 Jul 2025 15:47:13 +0900 Subject: [PATCH 07/13] =?UTF-8?q?feat=20:=20=EC=97=85=EC=B2=B4=20=EB=82=B4?= =?UTF-8?q?=20=EC=82=AC=EC=9B=90=20=EC=9D=B4=EB=A6=84=20=EA=B2=80=EC=83=89?= =?UTF-8?q?=20=EC=BF=BC=EB=A6=AC=20#350?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/rdb/QueryDslMemberRepository.java | 41 ++++++++++++++----- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/src/main/java/kr/mywork/infrastructure/member/rdb/QueryDslMemberRepository.java b/src/main/java/kr/mywork/infrastructure/member/rdb/QueryDslMemberRepository.java index cf0100c8..c33b0243 100644 --- a/src/main/java/kr/mywork/infrastructure/member/rdb/QueryDslMemberRepository.java +++ b/src/main/java/kr/mywork/infrastructure/member/rdb/QueryDslMemberRepository.java @@ -2,6 +2,7 @@ import com.querydsl.core.BooleanBuilder; import com.querydsl.core.types.Projections; +import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.jpa.impl.JPAQueryFactory; import kr.mywork.domain.company.service.dto.response.MemberDetailResponse; import kr.mywork.domain.member.model.Member; @@ -31,23 +32,41 @@ public Optional findByEmailAndDeletedFalse(String email) { } @Override - public List findMemberByCompanyId(UUID companyId, int page, int memberPageSize) { + public List findMemberByCompanyId(UUID companyId, int page, int memberPageSize,String memberName) { final int offset = (page - 1) * memberPageSize; return queryFactory - .selectFrom(member) - .where( - member.companyId.eq(companyId), - member.deleted.eq(false)) - .orderBy(member.name.asc()) - .offset(offset) - .limit(memberPageSize) - .fetch(); + .selectFrom(member) + .where( + member.companyId.eq(companyId), + member.deleted.eq(false), + memberNameCondition(memberName) + ) + .orderBy(member.name.asc()) + .offset(offset) + .limit(memberPageSize) + .fetch(); + } + + private BooleanExpression memberNameCondition(String memberName) { + if (memberName == null || memberName.trim().isEmpty()) { + return null; + } + return member.name.containsIgnoreCase(memberName); } @Override - public long countByCompanyIdAndDeletedFalse(UUID companyId) { - return memberRepository.countByCompanyIdAndDeletedFalse(companyId); + public long countByCompanyIdAndDeletedFalse(UUID companyId,String memberName) { + Long result = queryFactory + .select(member.count()) + .from(member) + .where( + member.companyId.eq(companyId), + member.deleted.eq(false), + memberNameCondition(memberName) // 부분 검색 조건 + ) + .fetchOne(); + return result != null ? result : 0L; } @Override From 3d1f032060294272beddd57a4d4b77575237651d Mon Sep 17 00:00:00 2001 From: HMHMHMJUN Date: Thu, 10 Jul 2025 15:47:27 +0900 Subject: [PATCH 08/13] =?UTF-8?q?feat=20:=20=EC=97=85=EC=B2=B4=20=EB=82=B4?= =?UTF-8?q?=20=EC=82=AC=EC=9B=90=20=EC=9D=B4=EB=A6=84=20=EA=B2=80=EC=83=89?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20#350?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mywork/docs/CompanyDocumentationTest.java | 37 ++++++++----------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/src/test/java/kr/mywork/docs/CompanyDocumentationTest.java b/src/test/java/kr/mywork/docs/CompanyDocumentationTest.java index a1f1377f..0cc65d26 100644 --- a/src/test/java/kr/mywork/docs/CompanyDocumentationTest.java +++ b/src/test/java/kr/mywork/docs/CompanyDocumentationTest.java @@ -1,19 +1,11 @@ package kr.mywork.docs; -import static com.epages.restdocs.apispec.MockMvcRestDocumentationWrapper.document; -import static com.epages.restdocs.apispec.ResourceDocumentation.headerWithName; -import static com.epages.restdocs.apispec.ResourceDocumentation.parameterWithName; -import static com.epages.restdocs.apispec.ResourceDocumentation.resource; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.delete; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.put; -import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import java.util.UUID; - +import com.epages.restdocs.apispec.ResourceSnippet; +import com.epages.restdocs.apispec.ResourceSnippetParameters; +import com.fasterxml.uuid.Generators; +import kr.mywork.common.api.support.response.ResultType; +import kr.mywork.interfaces.company.controller.dto.request.CompanyCreateWebRequest; +import kr.mywork.interfaces.company.controller.dto.request.CompanyUpdateWebRequest; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; @@ -23,13 +15,14 @@ import org.springframework.test.context.jdbc.Sql; import org.springframework.test.web.servlet.ResultActions; -import com.epages.restdocs.apispec.ResourceSnippet; -import com.epages.restdocs.apispec.ResourceSnippetParameters; -import com.fasterxml.uuid.Generators; +import java.util.UUID; -import kr.mywork.common.api.support.response.ResultType; -import kr.mywork.interfaces.company.controller.dto.request.CompanyCreateWebRequest; -import kr.mywork.interfaces.company.controller.dto.request.CompanyUpdateWebRequest; +import static com.epages.restdocs.apispec.MockMvcRestDocumentationWrapper.document; +import static com.epages.restdocs.apispec.ResourceDocumentation.*; +import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.*; +import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; public class CompanyDocumentationTest extends RestDocsDocumentation { @@ -464,6 +457,7 @@ private ResourceSnippet findAllCompanyListSuccessResource() { final ResultActions result = mockMvc.perform( get("/api/companies/{companyId}/members", id) .param("page", "1") + .param("memberName","김민수") .contentType(MediaType.APPLICATION_JSON) .header(HttpHeaders.AUTHORIZATION, toBearerAuthorizationHeader(accessToken))); @@ -483,7 +477,8 @@ private ResourceSnippet CompanyMemberGetSuccess() { .summary("회사의 직원 목록 조회 API") .description("회사의 직원 목록을 조회한다.") .queryParameters( - parameterWithName("page").description("페이지 번호")) + parameterWithName("page").description("페이지 번호"), + parameterWithName("memberName").optional().description("이름 검색어 (부분 일치 검색)")) .requestHeaders( headerWithName(HttpHeaders.CONTENT_TYPE).description("컨텐츠 타입"), headerWithName(HttpHeaders.AUTHORIZATION).description("엑세스 토큰")) From ac68f96c8ff459bac1bba0363aaff8b0301de3bb Mon Sep 17 00:00:00 2001 From: leeesooha Date: Fri, 11 Jul 2025 12:30:08 +0900 Subject: [PATCH 09/13] =?UTF-8?q?bug:=20=ED=8A=B8=EB=9E=9C=EC=9E=AD?= =?UTF-8?q?=EC=85=98=20=EC=96=B4=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98?= =?UTF-8?q?=EC=97=90=20readOnly=20=EC=98=B5=EC=85=98=20=EC=A0=9C=EA=B1=B0?= =?UTF-8?q?=20(#355)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/mywork/domain/company/service/CompanyImageService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/kr/mywork/domain/company/service/CompanyImageService.java b/src/main/java/kr/mywork/domain/company/service/CompanyImageService.java index 3a8f6174..55d276f8 100644 --- a/src/main/java/kr/mywork/domain/company/service/CompanyImageService.java +++ b/src/main/java/kr/mywork/domain/company/service/CompanyImageService.java @@ -29,7 +29,7 @@ public class CompanyImageService { private final CompanyRepository companyRepository; private final CompanyImageFileHandler companyImageFileHandler; - @Transactional(readOnly = true) + @Transactional public CompanyImageUploadUrlIssueResponse issueCompanyImageUploadUrl(final UUID companyId, final String fileName) { final Optional companyOptional = companyRepository.findById(companyId); From a14d37ca3c8c3388efd59f8dab16d7492b867c46 Mon Sep 17 00:00:00 2001 From: cooper Date: Fri, 11 Jul 2025 12:40:13 +0900 Subject: [PATCH 10/13] =?UTF-8?q?fix:=20=EC=B2=B4=ED=81=AC=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=8A=B9=EC=9D=B8/=EB=B0=98=EB=A0=A4=20?= =?UTF-8?q?=EC=9E=98=EB=AA=BB=EB=90=9C=20actorName=20=EB=85=B8=EC=B6=9C=20?= =?UTF-8?q?=EC=9D=B4=EC=8A=88=20(#354)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 원인 : authorName 이 추가된 이슈 - 해결 : memberName 으로 변경 --- .../listener/CheckListNotificationTxListener.java | 4 ++-- .../listener/event/CheckListApprovalNotificationEvent.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/kr/mywork/domain/project_checklist/listener/CheckListNotificationTxListener.java b/src/main/java/kr/mywork/domain/project_checklist/listener/CheckListNotificationTxListener.java index 7872521b..d2bbb14f 100644 --- a/src/main/java/kr/mywork/domain/project_checklist/listener/CheckListNotificationTxListener.java +++ b/src/main/java/kr/mywork/domain/project_checklist/listener/CheckListNotificationTxListener.java @@ -33,8 +33,8 @@ private void saveNotification(final CheckListApprovalNotificationEvent event) { event.authorId(), event.authorName(), event.checkListTitle(), - event.authorName(), - event.memberId(), + event.actorName(), + event.actorId(), event.targetType(), event.checkListId(), event.notificationActionType(), diff --git a/src/main/java/kr/mywork/domain/project_checklist/listener/event/CheckListApprovalNotificationEvent.java b/src/main/java/kr/mywork/domain/project_checklist/listener/event/CheckListApprovalNotificationEvent.java index c452430b..bf38f49b 100644 --- a/src/main/java/kr/mywork/domain/project_checklist/listener/event/CheckListApprovalNotificationEvent.java +++ b/src/main/java/kr/mywork/domain/project_checklist/listener/event/CheckListApprovalNotificationEvent.java @@ -7,7 +7,7 @@ import kr.mywork.domain.notification.model.TargetType; public record CheckListApprovalNotificationEvent(UUID authorId, String authorName, String checkListTitle, - String memberName, UUID memberId, TargetType targetType, + String actorName, UUID actorId, TargetType targetType, UUID checkListId, NotificationActionType notificationActionType, LocalDateTime modifiedAt, UUID projectId, UUID projectStepId) { From c5e34c9343883b37953ed626eb1521760682da21 Mon Sep 17 00:00:00 2001 From: cooper Date: Fri, 11 Jul 2025 12:40:41 +0900 Subject: [PATCH 11/13] =?UTF-8?q?refactor:=20=EB=B3=80=EC=88=98=EB=AA=85?= =?UTF-8?q?=20memberName=20->=20actorName=20=EB=B3=80=EA=B2=BD=20(#354)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../post/listener/PostApprovalNotificationTxListener.java | 2 +- .../post/listener/event/PostApprovalNotificationEvent.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/kr/mywork/domain/post/listener/PostApprovalNotificationTxListener.java b/src/main/java/kr/mywork/domain/post/listener/PostApprovalNotificationTxListener.java index b71fbcc2..cc9975df 100644 --- a/src/main/java/kr/mywork/domain/post/listener/PostApprovalNotificationTxListener.java +++ b/src/main/java/kr/mywork/domain/post/listener/PostApprovalNotificationTxListener.java @@ -30,7 +30,7 @@ public void handlePostApprovalAlarmEvent(final PostApprovalNotificationEvent eve private void saveNotification(final PostApprovalNotificationEvent event) { notificationService.save( - event.authorId(), event.authorName(), event.postTitle(), event.memberName(), event.memberId(), + event.authorId(), event.authorName(), event.postTitle(), event.actorName(), event.actorId(), event.targetType(), event.postId(), event.notificationActionType(), event.modifiedAt(), event.projectId(), event.projectStepId()); } diff --git a/src/main/java/kr/mywork/domain/post/listener/event/PostApprovalNotificationEvent.java b/src/main/java/kr/mywork/domain/post/listener/event/PostApprovalNotificationEvent.java index 39481a75..f970df68 100644 --- a/src/main/java/kr/mywork/domain/post/listener/event/PostApprovalNotificationEvent.java +++ b/src/main/java/kr/mywork/domain/post/listener/event/PostApprovalNotificationEvent.java @@ -6,8 +6,8 @@ import kr.mywork.domain.notification.model.NotificationActionType; import kr.mywork.domain.notification.model.TargetType; -public record PostApprovalNotificationEvent(UUID authorId, String authorName, String postTitle, UUID memberId, - String memberName, TargetType targetType, UUID postId, +public record PostApprovalNotificationEvent(UUID authorId, String authorName, String postTitle, UUID actorId, + String actorName, TargetType targetType, UUID postId, NotificationActionType notificationActionType, LocalDateTime modifiedAt, UUID projectId, UUID projectStepId) { } From 03915edd246d962b4a74cedc581b68073a86cd4f Mon Sep 17 00:00:00 2001 From: Yeju-Kang Date: Mon, 14 Jul 2025 04:34:19 +0900 Subject: [PATCH 12/13] =?UTF-8?q?feat:=20CompanyMemberResponse=20=EB=B0=8F?= =?UTF-8?q?=20CompanyMemberListWebResponse=EC=97=90=20role,=20email=20?= =?UTF-8?q?=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80(#359)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/dto/response/CompanyMemberResponse.java | 8 ++++++-- .../dto/response/CompanyMemberListWebResponse.java | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/kr/mywork/domain/member/service/dto/response/CompanyMemberResponse.java b/src/main/java/kr/mywork/domain/member/service/dto/response/CompanyMemberResponse.java index b07d9f4b..40ee301f 100644 --- a/src/main/java/kr/mywork/domain/member/service/dto/response/CompanyMemberResponse.java +++ b/src/main/java/kr/mywork/domain/member/service/dto/response/CompanyMemberResponse.java @@ -9,7 +9,9 @@ public record CompanyMemberResponse( String name, String phoneNumber, String position, - String department + String department, + String role, + String email ){ public static CompanyMemberResponse fromEntity(Member member) { @@ -18,6 +20,8 @@ public static CompanyMemberResponse fromEntity(Member member) { member.getName(), member.getPhoneNumber(), member.getPosition(), - member.getDepartment()); + member.getDepartment(), + member.getRole().name(), + member.getEmail()); } } diff --git a/src/main/java/kr/mywork/interfaces/member/controller/dto/response/CompanyMemberListWebResponse.java b/src/main/java/kr/mywork/interfaces/member/controller/dto/response/CompanyMemberListWebResponse.java index 48ca566d..c2033bfa 100644 --- a/src/main/java/kr/mywork/interfaces/member/controller/dto/response/CompanyMemberListWebResponse.java +++ b/src/main/java/kr/mywork/interfaces/member/controller/dto/response/CompanyMemberListWebResponse.java @@ -2,12 +2,12 @@ import kr.mywork.domain.member.service.dto.response.CompanyMemberResponse; -public record CompanyMemberListWebResponse(String id, String name, String phoneNumber, String position, String department) { +public record CompanyMemberListWebResponse(String id, String name, String phoneNumber, String position, String department, String role, String email) { /** * 서비스-레벨 DTO(CompanyMemberResponse)를 웹-레벨 DTO로 변환 */ public static CompanyMemberListWebResponse fromService(CompanyMemberResponse response) { return new CompanyMemberListWebResponse(response.id().toString(), response.name(), response.phoneNumber(), - response.position(), response.department()); + response.position(), response.department(), response.role(), response.email()); } } From 3c67b3c99f590bc85d078d7294c6b837544e7a40 Mon Sep 17 00:00:00 2001 From: Yeju-Kang Date: Mon, 14 Jul 2025 04:46:05 +0900 Subject: [PATCH 13/13] =?UTF-8?q?[chore]=20=ED=9A=8C=EC=82=AC=20=EC=A7=81?= =?UTF-8?q?=EC=9B=90=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20API=20?= =?UTF-8?q?=EB=AC=B8=EC=84=9C=EC=97=90=20email=20=EB=B0=8F=20role=20?= =?UTF-8?q?=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80(#359)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/kr/mywork/docs/CompanyDocumentationTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/java/kr/mywork/docs/CompanyDocumentationTest.java b/src/test/java/kr/mywork/docs/CompanyDocumentationTest.java index 0cc65d26..502bbb5f 100644 --- a/src/test/java/kr/mywork/docs/CompanyDocumentationTest.java +++ b/src/test/java/kr/mywork/docs/CompanyDocumentationTest.java @@ -490,6 +490,8 @@ private ResourceSnippet CompanyMemberGetSuccess() { fieldWithPath("data.members[].phoneNumber").type(JsonFieldType.STRING).description("멤버 전화번호"), fieldWithPath("data.members[].position").type(JsonFieldType.STRING).description("멤버 직급"), fieldWithPath("data.members[].department").type(JsonFieldType.STRING).description("멤버 부서"), + fieldWithPath("data.members[].email").type(JsonFieldType.STRING).description("멤버 이메일"), + fieldWithPath("data.members[].role").type(JsonFieldType.STRING).description("멤버 권한"), fieldWithPath("error").type(JsonFieldType.NULL).description("에러 정보")) .build() );