From be67deecce482c0d0557a311f76016308b3676cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=8C=E1=85=B5=E1=84=92?= =?UTF-8?q?=E1=85=A7=E1=86=A8?= Date: Wed, 13 Nov 2024 21:53:59 +0900 Subject: [PATCH 1/8] =?UTF-8?q?Test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=9A=A9=20application.yml=20=ED=8C=8C=EC=9D=BC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/resources/application.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/test/resources/application.yml diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml new file mode 100644 index 0000000..aefd119 --- /dev/null +++ b/src/test/resources/application.yml @@ -0,0 +1,20 @@ +# 테스트용 환경 세팅 +spring: + h2: + console: + enabled: true + datasource: + driver-class-name: org.h2.Driver + url: jdbc:h2:mem:testdb + data: + redis: + host: localhost + port: 6379 + jpa: + hibernate: + ddl-auto: create + show-sql: true +JWT: + ACCESS_SECRET_KEY: "testAccessSecretKey" + REFRESH_SECRET_KEY: "testRefreshSecretKey" + ISSUER: "pjh5365" From 79b24c5099aba0e293cff4cf3b2deb3c848e043c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=8C=E1=85=B5=E1=84=92?= =?UTF-8?q?=E1=85=A7=E1=86=A8?= Date: Wed, 13 Nov 2024 21:54:41 +0900 Subject: [PATCH 2/8] =?UTF-8?q?Feat:=20Dockerfile=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..76d419e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +# Build +FROM eclipse-temurin:17-jdk AS build +LABEL authors="pjh5365" + +WORKDIR /src +COPY . /src +RUN ./gradlew build + +# Run +FROM eclipse-temurin:17-jre +EXPOSE 8080 +COPY --from=build /src/build/libs/*SNAPSHOT.jar work-plate.jar + +ENTRYPOINT ["java", "-jar", "work-plate.jar"] From 60316bf022c0962fb0f083bf638d55adbe872469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=8C=E1=85=B5=E1=84=92?= =?UTF-8?q?=E1=85=A7=E1=86=A8?= Date: Fri, 15 Nov 2024 20:16:11 +0900 Subject: [PATCH 3/8] =?UTF-8?q?Refactor:=20AI=20=EC=9A=94=EA=B5=AC?= =?UTF-8?q?=EC=82=AC=ED=95=AD=EC=97=90=20=EB=A7=9E=EA=B2=8C=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/domain/Experience.java | 18 --- .../auth/domain/MainExperience.java | 28 +++++ .../auth/domain/PhysicalStatus.java | 5 +- .../auth/domain/Preference.java | 18 --- .../auth/domain/SubExperience.java | 119 ++++++++++++++++++ .../auth/domain/dto/request/JoinRequest.java | 2 + .../dto/request/MemberDetailRequest.java | 14 ++- .../auth/domain/entity/MemberDetail.java | 27 ++-- .../auth/service/MemberService.java | 4 +- .../credit/domain/dto/CreditRequest.java | 3 +- .../work/domain/dto/WorkJoinRequest.java | 2 + src/main/resources/static/docs/index.html | 80 +++++++----- .../auth/controller/MemberControllerTest.java | 28 +++-- .../MemberDetailRepositoryTest.java | 23 ++-- .../auth/service/MemberServiceTest.java | 14 ++- 15 files changed, 274 insertions(+), 111 deletions(-) delete mode 100644 src/main/java/workplate/workplateserver/auth/domain/Experience.java create mode 100644 src/main/java/workplate/workplateserver/auth/domain/MainExperience.java delete mode 100644 src/main/java/workplate/workplateserver/auth/domain/Preference.java create mode 100644 src/main/java/workplate/workplateserver/auth/domain/SubExperience.java diff --git a/src/main/java/workplate/workplateserver/auth/domain/Experience.java b/src/main/java/workplate/workplateserver/auth/domain/Experience.java deleted file mode 100644 index f6436e5..0000000 --- a/src/main/java/workplate/workplateserver/auth/domain/Experience.java +++ /dev/null @@ -1,18 +0,0 @@ -package workplate.workplateserver.auth.domain; - -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -/** - * 기존 경력 enum - * - * @author : parkjihyeok - * @since : 2024/11/03 - */ -@Getter -@RequiredArgsConstructor -public enum Experience { - // TODO: 2024/11/3 타입에 맞게 추가하기 - TEST("테스트용"); - private final String experience; -} diff --git a/src/main/java/workplate/workplateserver/auth/domain/MainExperience.java b/src/main/java/workplate/workplateserver/auth/domain/MainExperience.java new file mode 100644 index 0000000..6ebd11f --- /dev/null +++ b/src/main/java/workplate/workplateserver/auth/domain/MainExperience.java @@ -0,0 +1,28 @@ +package workplate.workplateserver.auth.domain; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 직종 대분류 + * + * @author : parkjihyeok + * @since : 2024/11/03 + */ +@Getter +@RequiredArgsConstructor +public enum MainExperience { + COOKING_SERVING("요리·서빙"), + PRODUCTION_TECHNICAL("생산·기술"), + DRIVING_DELIVERY_LOGISTICS("운전·배달·물류"), + CONSTRUCTION_CIVIL_ENGINEERING_LABOR("건설·토목·노무"), + DISTRIBUTION_SALES("유통·판매"), + CULTURE_LEISURE_LIFESTYLE("문화·여가·생활"), + SERVICE("서비스"), + OFFICE_ACCOUNTING_IT("사무·회계·IT"), + SALES_CONSULTING("영업·상담"), + CAREGIVING_NURSING_MEDICAL("요양·간호·의료"), + EDUCATION_INSTRUCTION("교육·강사"); + + private final String mainExperience; +} diff --git a/src/main/java/workplate/workplateserver/auth/domain/PhysicalStatus.java b/src/main/java/workplate/workplateserver/auth/domain/PhysicalStatus.java index 5b1c9ca..77bb71e 100644 --- a/src/main/java/workplate/workplateserver/auth/domain/PhysicalStatus.java +++ b/src/main/java/workplate/workplateserver/auth/domain/PhysicalStatus.java @@ -12,7 +12,8 @@ @Getter @RequiredArgsConstructor public enum PhysicalStatus { - // TODO: 2024/11/3 타입에 맞게 추가하기 - TEST("테스트용"); + NORMAL("정상"), + PRE_FRAIL("노쇠 전"), + FRAIL("노쇠"); private final String physicalStatus; } diff --git a/src/main/java/workplate/workplateserver/auth/domain/Preference.java b/src/main/java/workplate/workplateserver/auth/domain/Preference.java deleted file mode 100644 index 24c4bf8..0000000 --- a/src/main/java/workplate/workplateserver/auth/domain/Preference.java +++ /dev/null @@ -1,18 +0,0 @@ -package workplate.workplateserver.auth.domain; - -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -/** - * 선호하는 직종 enum - * - * @author : parkjihyeok - * @since : 2024/11/03 - */ -@Getter -@RequiredArgsConstructor -public enum Preference { - // TODO: 2024/11/3 타입에 맞게 추가하기 - TEST("테스트용"); - private final String preference; -} diff --git a/src/main/java/workplate/workplateserver/auth/domain/SubExperience.java b/src/main/java/workplate/workplateserver/auth/domain/SubExperience.java new file mode 100644 index 0000000..e4698f2 --- /dev/null +++ b/src/main/java/workplate/workplateserver/auth/domain/SubExperience.java @@ -0,0 +1,119 @@ +package workplate.workplateserver.auth.domain; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 직종 소분류 + * + * @author : parkjihyeok + * @since : 2024/11/15 + */ +@Getter +@RequiredArgsConstructor +public enum SubExperience { + // Cooking and Serving + CHEF_COOK("주방장·조리사"), + KITCHEN_STAFF("주방·주방보조·설거지"), + SERVING_PACKAGING("서빙·포장"), + COUNTER("카운터"), + STORE_MANAGER("점장·매니저"), + OTHER_COOKING_SERVING("요리·서빙 기타"), + + // Production and Technical + TEXTILE("섬유·재단·미싱"), + PRODUCTION_MANUFACTURING("생산·제조·조립·인쇄"), + PACKAGING_INSPECTION("포장·검사"), + INSTALLATION_REPAIR("설치·수리·정비·AS"), + FARM_AGRICULTURE("농장·농사"), + METALWORK_MOLD("금속·금형"), + AUTO_REPAIR_SHIPBUILDING("자동차정비·조선·선원"), + MACHINERY_EQUIPMENT("기계·설비"), + FOOD_MANUFACTURING("농수산물 가공·식품 제조"), + OTHER_PRODUCTION_TECHNICAL("생산·기술 기타"), + + // Driving and Delivery + PARCEL_DELIVERY("택배·물류"), + CARGO_SPECIAL_VEHICLES("화물·중장비·특수차"), + INDEPENDENT_CONTRACTOR("지입·차량용역"), + BUS_TAXI_VAN("버스·택시·승합차"), + DELIVERY_MOVING("배송·이사"), + QUICK_SERVICE("배달·퀵·이륜차"), + CHAUFFEUR("승용차·대리운전"), + OTHER_DRIVING_DELIVERY("운전·배달 기타"), + + // Construction + CONSTRUCTION_FINISHING("건설마감"), + CONSTRUCTION_STRUCTURE("건설구조"), + WELDING_CUTTING("용접·절단"), + PLUMBING_FACILITIES("배관·설비"), + ELECTRICAL_MANAGEMENT("전기·조명·시설관리"), + CONSTRUCTION_SITE("건설현장"), + OTHER_CONSTRUCTION("건설·토목 기타"), + + // Sales and Distribution + MART_SUPERMARKET("마트·슈퍼"), + CONVENIENCE_STORE("편의점"), + LIVESTOCK_PRODUCE("축산·청과·농수산"), + DEPARTMENT_STORE("백화점·아울렛·쇼핑몰"), + LARGE_RETAIL_STORE("대형마트·유통점"), + CLOTHING_ACCESSORIES("의류·주얼리·잡화"), + FLORIST("꽃·화훼"), + COSMETICS_BEAUTY("화장품·뷰티·헬스스토어"), + OTHER_SALES_DISTRIBUTION("유통·판매 기타"), + + // Culture and Leisure + HOTEL_LODGING("모텔·호텔·숙박"), + SAUNA_SPA("사우나·찜질방"), + HIGHWAY_REST_STOP("고속도로 휴게소"), + SPORTS("당구장·볼링장·스포츠"), + GOLF("골프·스크린골프"), + ARCADE_PC_ROOM("오락실·PC방"), + BEAUTY("헤어·네일·피부·미용"), + PET_SHOP("반려동물·애견샵"), + STUDY_CAFE("독서실·고시원·스터디카페"), + OTHER_LIFESTYLE("문화·여가·생활 기타"), + + // Services + CLEANING_SANITATION("청소·미화·방역"), + SECURITY_GUARD("경비·보안"), + CAR_WASH_REFUELING("세차·주유"), + PARKING_MANAGEMENT("주차관리·주차도우미"), + LAUNDRY_ALTERATION("세탁·수선"), + HOUSEKEEPER_BABYSITTER("가사도우미·베이비시터"), + FUNERAL_WEDDING("상조·웨딩·연회"), + OTHER_SERVICE("서비스 기타"), + + // Office Work + ACCOUNTING_FINANCE("경리·세무·회계"), + OFFICE_PLANNING("사무·기획·관리·홍보"), + GENERAL_AFFAIRS("총무·노무·법무·인사"), + IT_DESIGN("컴퓨터·IT·디자인"), + RECEPTION_SECRETARY("안내·비서"), + OTHER_OFFICE_WORK("사무·회계·IT 기타"), + + // Sales and Consulting + INBOUND_CS("인바운드·CS"), + OUTBOUND_TM("아웃바운드·TM"), + REAL_ESTATE("부동산"), + GENERAL_SALES("일반·기술영업"), + FINANCE_INSURANCE("금융·보험·카드"), + OTHER_SALES_CONSULTING("상담·영업기타"), + + // Medical and Care + ELDERLY_CARE("요양·간병·돌봄"), + NURSING_ASSISTANT("간호조무사·간호사"), + MEDICAL_TECHNICIAN("의료기사·치료사"), + DOCTOR("의사·한의사"), + OTHER_MEDICAL_CARE("요양·간호·의료 기타"), + + // Education and Instruction + DAYCARE("어린이집·유치원"), + ENTRANCE_EXAM("입시·보습·자격증"), + PRIVATE_TUTORING("과외·공부방·학습지"), + SPORTS_INSTRUCTION("생활체육·스포츠"), + MUSIC_ART("음악·피아노·미술"), + OTHER_EDUCATION("교육·강사 기타"); + + private final String subExperience; +} diff --git a/src/main/java/workplate/workplateserver/auth/domain/dto/request/JoinRequest.java b/src/main/java/workplate/workplateserver/auth/domain/dto/request/JoinRequest.java index 583eca4..3e7d40d 100644 --- a/src/main/java/workplate/workplateserver/auth/domain/dto/request/JoinRequest.java +++ b/src/main/java/workplate/workplateserver/auth/domain/dto/request/JoinRequest.java @@ -2,6 +2,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; /** * 회원가입 요청 DTO @@ -10,6 +11,7 @@ * @since : 2024/10/31 */ @Getter +@NoArgsConstructor @AllArgsConstructor public class JoinRequest { diff --git a/src/main/java/workplate/workplateserver/auth/domain/dto/request/MemberDetailRequest.java b/src/main/java/workplate/workplateserver/auth/domain/dto/request/MemberDetailRequest.java index 08066b9..c2d474a 100644 --- a/src/main/java/workplate/workplateserver/auth/domain/dto/request/MemberDetailRequest.java +++ b/src/main/java/workplate/workplateserver/auth/domain/dto/request/MemberDetailRequest.java @@ -1,12 +1,11 @@ package workplate.workplateserver.auth.domain.dto.request; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; import lombok.AllArgsConstructor; import lombok.Getter; -import workplate.workplateserver.auth.domain.Experience; +import lombok.NoArgsConstructor; +import workplate.workplateserver.auth.domain.MainExperience; import workplate.workplateserver.auth.domain.PhysicalStatus; -import workplate.workplateserver.auth.domain.Preference; +import workplate.workplateserver.auth.domain.SubExperience; /** * 회원 상세정보 DTO @@ -15,12 +14,15 @@ * @since : 2024/10/31 */ @Getter +@NoArgsConstructor @AllArgsConstructor public class MemberDetailRequest { private String username; private int age; - private Experience experience; + private MainExperience mainExperience; + private SubExperience subExperience; + private MainExperience mainPreference; + private SubExperience subPreference; private PhysicalStatus physicalStatus; - private Preference preference; } diff --git a/src/main/java/workplate/workplateserver/auth/domain/entity/MemberDetail.java b/src/main/java/workplate/workplateserver/auth/domain/entity/MemberDetail.java index 99f2ba5..c480ccb 100644 --- a/src/main/java/workplate/workplateserver/auth/domain/entity/MemberDetail.java +++ b/src/main/java/workplate/workplateserver/auth/domain/entity/MemberDetail.java @@ -14,9 +14,10 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import workplate.workplateserver.auth.domain.Experience; +import workplate.workplateserver.auth.domain.MainExperience; import workplate.workplateserver.auth.domain.PhysicalStatus; -import workplate.workplateserver.auth.domain.Preference; +import workplate.workplateserver.auth.domain.SubExperience; +import workplate.workplateserver.auth.domain.dto.request.MemberDetailRequest; import workplate.workplateserver.common.BaseEntity; /** @@ -43,21 +44,25 @@ public class MemberDetail extends BaseEntity { private int age; @Enumerated(value = EnumType.STRING) - private Experience experience; + private MainExperience mainExperience; @Enumerated(value = EnumType.STRING) - private PhysicalStatus physicalStatus; + private SubExperience subExperience; + @Enumerated(value = EnumType.STRING) + private MainExperience mainPreference; @Enumerated(value = EnumType.STRING) - private Preference preference; + private SubExperience subPreference; + @Enumerated(value = EnumType.STRING) + private PhysicalStatus physicalStatus; - public static MemberDetail toEntity(Member member, int age, Experience experience, PhysicalStatus physicalStatus, - Preference preference) { + public static MemberDetail toEntity(Member member, MemberDetailRequest request) { return MemberDetail.builder() .member(member) - .age(age) - .experience(experience) - .physicalStatus(physicalStatus) - .preference(preference) + .age(request.getAge()) + .mainPreference(request.getMainPreference()) + .subExperience(request.getSubExperience()) + .subPreference(request.getSubPreference()) + .physicalStatus(request.getPhysicalStatus()) .build(); } } diff --git a/src/main/java/workplate/workplateserver/auth/service/MemberService.java b/src/main/java/workplate/workplateserver/auth/service/MemberService.java index bcb3ef6..09ad4b0 100644 --- a/src/main/java/workplate/workplateserver/auth/service/MemberService.java +++ b/src/main/java/workplate/workplateserver/auth/service/MemberService.java @@ -57,9 +57,7 @@ public void saveMember(JoinRequest joinRequest) { public void saveDetails(MemberDetailRequest request) { Member member = commonService.findByUsername(request.getUsername(), true); Credit credit = Credit.toEntity(member); - MemberDetail memberDetail = MemberDetail.toEntity(member, request.getAge(), request.getExperience(), - request.getPhysicalStatus(), - request.getPreference()); + MemberDetail memberDetail = MemberDetail.toEntity(member, request); memberDetailRepository.save(memberDetail); creditRepository.save(credit); } diff --git a/src/main/java/workplate/workplateserver/credit/domain/dto/CreditRequest.java b/src/main/java/workplate/workplateserver/credit/domain/dto/CreditRequest.java index e4d8323..f646648 100644 --- a/src/main/java/workplate/workplateserver/credit/domain/dto/CreditRequest.java +++ b/src/main/java/workplate/workplateserver/credit/domain/dto/CreditRequest.java @@ -3,6 +3,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; /** * 크레딧 증감 요청 @@ -11,6 +12,7 @@ * @since : 2024/11/13 */ @Getter +@NoArgsConstructor @AllArgsConstructor @Builder public class CreditRequest { @@ -18,5 +20,4 @@ public class CreditRequest { private String username; private Long balance; - } diff --git a/src/main/java/workplate/workplateserver/work/domain/dto/WorkJoinRequest.java b/src/main/java/workplate/workplateserver/work/domain/dto/WorkJoinRequest.java index 67456d2..8cedcc5 100644 --- a/src/main/java/workplate/workplateserver/work/domain/dto/WorkJoinRequest.java +++ b/src/main/java/workplate/workplateserver/work/domain/dto/WorkJoinRequest.java @@ -2,6 +2,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; /** * 소일거리 참가 요청 @@ -10,6 +11,7 @@ * @since : 2024/11/13 */ @Getter +@NoArgsConstructor @AllArgsConstructor public class WorkJoinRequest { diff --git a/src/main/resources/static/docs/index.html b/src/main/resources/static/docs/index.html index f04f70c..88a9a9f 100644 --- a/src/main/resources/static/docs/index.html +++ b/src/main/resources/static/docs/index.html @@ -490,7 +490,7 @@

요청

HTTP request
-
POST /api/join?_csrf=QsE6JKQlHZIiU8HPOYZmNGwJHQc0clQ0ae2hjrzFgOfI3TyXI_kMEJ0QJaQPZKf3CqtSDQhqMD8GQ2QZDN_E7YijtYWs7Vin HTTP/1.1
+
POST /api/join?_csrf=uqGwVr5ZRkFGB1PDZT5OiMVU0jpDbCBYYDbvR2T-R8Q_DWeS3JmIbtg6d3BrYmXxAxN6vKFt_wN3CUN1VgDbJAbJJaVdbgKg HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 75
 Host: localhost:8080
@@ -606,7 +606,7 @@ 

요청

HTTP request
-
POST /api/join?_csrf=U9yI2-54Q6c8Ts98IiUY_jcQcR3l1qwoaYbxhgHhgYRQRACrMOWw7tcaIJQRLKoZEggsmlYkXCSD580FXLbIv2DZ57ZnfTXP HTTP/1.1
+
POST /api/join?_csrf=nHAt8mXu5LrBXuVeaBu2HIYegvQHhqbJ9_PMyGVbGoI4V6oh-kcfkVOM1Ivsad09WjaCL-V_r81iv5LkxcqvqwM5LudeYMgR HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 75
 Host: localhost:8080
@@ -722,17 +722,19 @@ 

요청

HTTP request
-
POST /api/member?_csrf=ypKKXvLvUxriu6QobHxkW-WEvnAQ-pgBTh3lFWvpcmPXMYbB8_O_OpffMSvPiJNOVVFQYoCzk0l0zPwsK3zQd17eFFXmBuT5 HTTP/1.1
+
POST /api/member?_csrf=P36JFwmul7Teu6P8UCzcJ0IGpZJZa_KevzzOcfMTJZpZhciWW0ixLzmY9oHzisfFZgHoF3dkiPA4WMezjAqoE8QmE686tKmg HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Content-Length: 120
+Content-Length: 246
 Host: localhost:8080
 
 {
   "username" : "testId",
   "age" : 70,
-  "experience" : "TEST",
-  "physicalStatus" : "TEST",
-  "preference" : "TEST"
+  "mainExperience" : "OFFICE_ACCOUNTING_IT",
+  "subExperience" : "ACCOUNTING_FINANCE",
+  "mainPreference" : "OFFICE_ACCOUNTING_IT",
+  "subPreference" : "ACCOUNTING_FINANCE",
+  "physicalStatus" : "NORMAL"
 }
@@ -764,19 +766,29 @@
Request fields

나이

-

experience

+

mainExperience

String

-

일 경험

+

일 경험 (대분류)

-

physicalStatus

+

subExperience

String

-

건강 상태

+

일 경험 (소분류)

+ + +

mainPreference

+

String

+

선호 직종 (대분류)

-

preference

+

subPreference

String

-

선호 직종

+

선호 직종 (소분류)

+ + +

physicalStatus

+

String

+

건강 상태

@@ -850,17 +862,19 @@

요청

HTTP request
-
POST /api/member?_csrf=YTAh2WzfOOjSLVashUr_Rip1Y_-_oqUiLFtvbygcWRaQOcmJUQESvV7sXY3_TmKVvGfLJBhCTp2IlpIPG2wLChF_O3ClWqqx HTTP/1.1
+
POST /api/member?_csrf=pZ25SF_D7mKw0dsGee1kXmL8WR_Yu2nru0qP64U_vwS7vPnDlquILDv0i1Od4bkxH8BQOlGddCa6iAjG2im_ieYKjGffiJv0 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Content-Length: 120
+Content-Length: 246
 Host: localhost:8080
 
 {
   "username" : "testId",
   "age" : 70,
-  "experience" : "TEST",
-  "physicalStatus" : "TEST",
-  "preference" : "TEST"
+  "mainExperience" : "OFFICE_ACCOUNTING_IT",
+  "subExperience" : "ACCOUNTING_FINANCE",
+  "mainPreference" : "OFFICE_ACCOUNTING_IT",
+  "subPreference" : "ACCOUNTING_FINANCE",
+  "physicalStatus" : "NORMAL"
 }
@@ -892,19 +906,29 @@
Request fields

나이

-

experience

+

mainExperience

String

-

일 경험

+

일 경험 (대분류)

-

physicalStatus

+

subExperience

String

-

건강 상태

+

일 경험 (소분류)

+ + +

mainPreference

+

String

+

선호 직종 (대분류)

-

preference

+

subPreference

String

-

선호 직종

+

선호 직종 (소분류)

+ + +

physicalStatus

+

String

+

건강 상태

@@ -1485,7 +1509,7 @@

요청

HTTP request
-
PATCH /api/credits/plus?_csrf=p-sx8nx0iFNeVfUDDu9YOv9kAe5_7_Rc2eqMT7vW5sREQQL1lo1QkEQV7GJzN8Y3O8JsXptXLNZIi8Jx7Nq7K4Lg1KFxIDaR HTTP/1.1
+
PATCH /api/credits/plus?_csrf=FTufPolFbnQWgcjDW8jT-Zkka5uhtYIsfBvR-8aKTSGi-mnJJQuoCbgjChI7sK6lY-Xnz6oTRvnHgbABSCrnmv--ekKRzFys HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 47
 Host: localhost:8080
@@ -1608,7 +1632,7 @@ 

요청

HTTP request
-
PATCH /api/credits/minus?_csrf=JKkbsJeB-Sz-w-AC7kxVC2Sk-t2H4JN9m31Sli7D3L8hFxgoRpF9gKW3nU_TptExj2FhM12R1-Xi06ZQoklgpB_wvooWI3tK HTTP/1.1
+
PATCH /api/credits/minus?_csrf=RIhdRhgUX7s9SaRUFcBJ4rkdcDr5ESnv0ZSbEQORawtiuuyFJ-xrdSAjbd0Qe5E2Ie19gY4qXQOaIBrC5_etJzuoXmhRgoq8 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 47
 Host: localhost:8080
@@ -2005,7 +2029,7 @@ 

요청

HTTP request
-
POST /api/works-join?_csrf=Yt9bTYD94jclNSw3axkWxVEAKuhXyyf6cHKZ-iBXsJ4HdKyUW-9tfrjK0A8IVB5VXjQipzI1B4pk80XXR0qrnxJkhak0EJjx HTTP/1.1
+
POST /api/works-join?_csrf=aLTWfYjPQd7xySlQdXuyQQ-JWy5_zEjlcqFBU1-hVLp8xZ2lUdLmTun_cunc_hBoEFaGcWztdk9N-ivIF5YkZm_EMo9Fof6c HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 44
 Host: localhost:8080
@@ -2113,7 +2137,7 @@ 
Response fields
diff --git a/src/test/java/workplate/workplateserver/auth/controller/MemberControllerTest.java b/src/test/java/workplate/workplateserver/auth/controller/MemberControllerTest.java index c661c11..e46b643 100644 --- a/src/test/java/workplate/workplateserver/auth/controller/MemberControllerTest.java +++ b/src/test/java/workplate/workplateserver/auth/controller/MemberControllerTest.java @@ -24,9 +24,9 @@ import com.google.gson.Gson; -import workplate.workplateserver.auth.domain.Experience; +import workplate.workplateserver.auth.domain.MainExperience; import workplate.workplateserver.auth.domain.PhysicalStatus; -import workplate.workplateserver.auth.domain.Preference; +import workplate.workplateserver.auth.domain.SubExperience; import workplate.workplateserver.auth.domain.dto.request.JoinRequest; import workplate.workplateserver.auth.domain.dto.request.MemberDetailRequest; import workplate.workplateserver.auth.domain.jwt.JwtTokenProvider; @@ -141,7 +141,9 @@ void joinFailTest() throws Exception { @WithMockUser void addDetailTest() throws Exception { // Given - MemberDetailRequest request = new MemberDetailRequest("testId", 70, Experience.TEST, PhysicalStatus.TEST, Preference.TEST); + MemberDetailRequest request = new MemberDetailRequest("testId", 70, MainExperience.OFFICE_ACCOUNTING_IT, + SubExperience.ACCOUNTING_FINANCE, MainExperience.OFFICE_ACCOUNTING_IT, SubExperience.ACCOUNTING_FINANCE, + PhysicalStatus.NORMAL); // When mockMvc.perform(post("/api/member") @@ -163,9 +165,11 @@ void addDetailTest() throws Exception { requestFields( fieldWithPath("username").description("가입한 아이디"), fieldWithPath("age").description("나이"), - fieldWithPath("experience").description("일 경험"), - fieldWithPath("physicalStatus").description("건강 상태"), - fieldWithPath("preference").description("선호 직종") + fieldWithPath("mainExperience").description("일 경험 (대분류)"), + fieldWithPath("subExperience").description("일 경험 (소분류)"), + fieldWithPath("mainPreference").description("선호 직종 (대분류)"), + fieldWithPath("subPreference").description("선호 직종 (소분류)"), + fieldWithPath("physicalStatus").description("건강 상태") ), responseFields( fieldWithPath("success").description("성공여부"), @@ -181,7 +185,9 @@ void addDetailTest() throws Exception { @WithMockUser void addDetailFailTest() throws Exception { // Given - MemberDetailRequest request = new MemberDetailRequest("testId", 70, Experience.TEST, PhysicalStatus.TEST, Preference.TEST); + MemberDetailRequest request = new MemberDetailRequest("testId", 70, MainExperience.OFFICE_ACCOUNTING_IT, + SubExperience.ACCOUNTING_FINANCE, MainExperience.OFFICE_ACCOUNTING_IT, SubExperience.ACCOUNTING_FINANCE, + PhysicalStatus.NORMAL); doThrow(new UsernameNotFoundException("회원정보를 찾을 수 없습니다.")).when(memberService).saveDetails(any()); // When @@ -204,9 +210,11 @@ void addDetailFailTest() throws Exception { requestFields( fieldWithPath("username").description("가입한 아이디"), fieldWithPath("age").description("나이"), - fieldWithPath("experience").description("일 경험"), - fieldWithPath("physicalStatus").description("건강 상태"), - fieldWithPath("preference").description("선호 직종") + fieldWithPath("mainExperience").description("일 경험 (대분류)"), + fieldWithPath("subExperience").description("일 경험 (소분류)"), + fieldWithPath("mainPreference").description("선호 직종 (대분류)"), + fieldWithPath("subPreference").description("선호 직종 (소분류)"), + fieldWithPath("physicalStatus").description("건강 상태") ), responseFields( fieldWithPath("success").description("성공여부"), diff --git a/src/test/java/workplate/workplateserver/auth/repository/MemberDetailRepositoryTest.java b/src/test/java/workplate/workplateserver/auth/repository/MemberDetailRepositoryTest.java index 5bfa986..8767836 100644 --- a/src/test/java/workplate/workplateserver/auth/repository/MemberDetailRepositoryTest.java +++ b/src/test/java/workplate/workplateserver/auth/repository/MemberDetailRepositoryTest.java @@ -4,16 +4,16 @@ import java.util.Optional; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.transaction.annotation.Transactional; -import workplate.workplateserver.auth.domain.Experience; +import workplate.workplateserver.auth.domain.MainExperience; import workplate.workplateserver.auth.domain.PhysicalStatus; -import workplate.workplateserver.auth.domain.Preference; +import workplate.workplateserver.auth.domain.SubExperience; +import workplate.workplateserver.auth.domain.dto.request.MemberDetailRequest; import workplate.workplateserver.auth.domain.entity.Member; import workplate.workplateserver.auth.domain.entity.MemberDetail; @@ -37,7 +37,10 @@ class MemberDetailRepositoryTest { @DisplayName("회원 상세정보 저장 테스트") void saveTest() { // Given - MemberDetail md = MemberDetail.toEntity(member, 10, Experience.TEST, PhysicalStatus.TEST, Preference.TEST); + MemberDetailRequest request = new MemberDetailRequest("testId", 70, MainExperience.OFFICE_ACCOUNTING_IT, + SubExperience.ACCOUNTING_FINANCE, MainExperience.OFFICE_ACCOUNTING_IT, SubExperience.ACCOUNTING_FINANCE, + PhysicalStatus.NORMAL); + MemberDetail md = MemberDetail.toEntity(member, request); memberDetailRepository.save(md); // When @@ -46,8 +49,8 @@ void saveTest() { // Then assertAll( () -> assertEquals(md.getAge(), result.getAge()), - () -> assertEquals(md.getPreference(), result.getPreference()), - () -> assertEquals(md.getExperience(), result.getExperience()), + () -> assertEquals(md.getMainExperience(), result.getMainExperience()), + () -> assertEquals(md.getSubExperience(), result.getSubExperience()), () -> assertEquals(md.getPhysicalStatus(), result.getPhysicalStatus()) ); } @@ -56,13 +59,17 @@ void saveTest() { @DisplayName("회원 상세정보 삭제 테스트") void deleteTest() { // Given - MemberDetail md = MemberDetail.toEntity(member, 10, Experience.TEST, PhysicalStatus.TEST, Preference.TEST); + MemberDetailRequest request = new MemberDetailRequest("testId", 70, MainExperience.OFFICE_ACCOUNTING_IT, + SubExperience.ACCOUNTING_FINANCE, MainExperience.OFFICE_ACCOUNTING_IT, SubExperience.ACCOUNTING_FINANCE, + PhysicalStatus.NORMAL); + MemberDetail md = MemberDetail.toEntity(member, request); memberDetailRepository.save(md); // When memberDetailRepository.deleteById(md.getId()); // Then - assertEquals(Optional.empty(), memberDetailRepository.findById(md.getId()));; + assertEquals(Optional.empty(), memberDetailRepository.findById(md.getId())); + ; } } diff --git a/src/test/java/workplate/workplateserver/auth/service/MemberServiceTest.java b/src/test/java/workplate/workplateserver/auth/service/MemberServiceTest.java index 0854146..59688c7 100644 --- a/src/test/java/workplate/workplateserver/auth/service/MemberServiceTest.java +++ b/src/test/java/workplate/workplateserver/auth/service/MemberServiceTest.java @@ -3,8 +3,6 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.BDDMockito.*; -import java.util.Optional; - import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -14,9 +12,9 @@ import org.springframework.security.access.AccessDeniedException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import workplate.workplateserver.auth.domain.Experience; +import workplate.workplateserver.auth.domain.MainExperience; import workplate.workplateserver.auth.domain.PhysicalStatus; -import workplate.workplateserver.auth.domain.Preference; +import workplate.workplateserver.auth.domain.SubExperience; import workplate.workplateserver.auth.domain.dto.request.JoinRequest; import workplate.workplateserver.auth.domain.dto.request.MemberDetailRequest; import workplate.workplateserver.auth.domain.entity.Member; @@ -81,7 +79,9 @@ void saveMemberFailTest() { @DisplayName("회원 상세정보 저장 테스트") void saveDetailsTest() { // Given - MemberDetailRequest memberDetailRequest = new MemberDetailRequest("testId", 10, Experience.TEST, PhysicalStatus.TEST, Preference.TEST); + MemberDetailRequest memberDetailRequest = new MemberDetailRequest("testId", 70, MainExperience.OFFICE_ACCOUNTING_IT, + SubExperience.ACCOUNTING_FINANCE, MainExperience.OFFICE_ACCOUNTING_IT, SubExperience.ACCOUNTING_FINANCE, + PhysicalStatus.NORMAL); Member m = Member.toEntity("testId", "name", "pw"); given(commonService.findByUsername("testId", true)).willReturn(m); @@ -97,7 +97,9 @@ void saveDetailsTest() { @DisplayName("회원 상세정보 저장 실패 테스트") void saveDetailsFailTest() { // Given - MemberDetailRequest memberDetailRequest = new MemberDetailRequest("testId", 10, Experience.TEST, PhysicalStatus.TEST, Preference.TEST); + MemberDetailRequest memberDetailRequest = new MemberDetailRequest("testId", 70, MainExperience.OFFICE_ACCOUNTING_IT, + SubExperience.ACCOUNTING_FINANCE, MainExperience.OFFICE_ACCOUNTING_IT, SubExperience.ACCOUNTING_FINANCE, + PhysicalStatus.NORMAL); Member m = Member.toEntity("testId", "name", "pw"); given(commonService.findByUsername("testId", true)).willThrow(AccessDeniedException.class); From c46795b058ef4ccda01a527c1831473c5d8c842c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=8C=E1=85=B5=E1=84=92?= =?UTF-8?q?=E1=85=A7=E1=86=A8?= Date: Fri, 15 Nov 2024 20:34:23 +0900 Subject: [PATCH 4/8] =?UTF-8?q?Fix:=20H2=20=EA=B4=80=EB=A0=A8=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workplate/workplateserver/config/SecurityConfig.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/workplate/workplateserver/config/SecurityConfig.java b/src/main/java/workplate/workplateserver/config/SecurityConfig.java index 31a9775..d50257b 100644 --- a/src/main/java/workplate/workplateserver/config/SecurityConfig.java +++ b/src/main/java/workplate/workplateserver/config/SecurityConfig.java @@ -46,12 +46,8 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth .requestMatchers("/", "/api/join", "/api/login").permitAll() - // h2 허용 - .requestMatchers(PathRequest.toH2Console()).permitAll() .anyRequest().authenticated() - ) - // h2 허용 - .headers(headers -> headers.frameOptions(HeadersConfigurer.FrameOptionsConfig::sameOrigin)); + ); http .csrf(AbstractHttpConfigurer::disable) .formLogin(AbstractHttpConfigurer::disable) From d798481ed5df3dd3ff71ebe9b5730173debd2529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=8C=E1=85=B5=E1=84=92?= =?UTF-8?q?=E1=85=A7=E1=86=A8?= Date: Fri, 15 Nov 2024 21:41:23 +0900 Subject: [PATCH 5/8] =?UTF-8?q?Refactor:=20=EC=8B=9D=EB=8B=B9=20ID?= =?UTF-8?q?=EB=A5=BC=20=EB=B0=98=ED=99=98=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/dto/RestaurantResponse.java | 2 ++ src/main/resources/static/docs/index.html | 24 ++++++++++++------- .../controller/RestaurantControllerTest.java | 7 +++--- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/main/java/workplate/workplateserver/restaurant/domain/dto/RestaurantResponse.java b/src/main/java/workplate/workplateserver/restaurant/domain/dto/RestaurantResponse.java index 7724373..3a20b3d 100644 --- a/src/main/java/workplate/workplateserver/restaurant/domain/dto/RestaurantResponse.java +++ b/src/main/java/workplate/workplateserver/restaurant/domain/dto/RestaurantResponse.java @@ -17,12 +17,14 @@ @Builder public class RestaurantResponse { + private Long id; private String name; private RestaurantType restaurantType; private String location; public static RestaurantResponse toDto(Restaurant restaurant) { return RestaurantResponse.builder() + .id(restaurant.getId()) .name(restaurant.getName()) .restaurantType(restaurant.getRestaurantType()) .location(restaurant.getLocation()) diff --git a/src/main/resources/static/docs/index.html b/src/main/resources/static/docs/index.html index 88a9a9f..7ccf90f 100644 --- a/src/main/resources/static/docs/index.html +++ b/src/main/resources/static/docs/index.html @@ -490,7 +490,7 @@

요청

HTTP request
-
POST /api/join?_csrf=uqGwVr5ZRkFGB1PDZT5OiMVU0jpDbCBYYDbvR2T-R8Q_DWeS3JmIbtg6d3BrYmXxAxN6vKFt_wN3CUN1VgDbJAbJJaVdbgKg HTTP/1.1
+
POST /api/join?_csrf=-dJzoZRZOcl1jUZhGlz02rdthVfFxZ4PniloKq6CtI9KjTTAm7EQx_ZuDKxYuiRSK3HA645dqG718q0ir08JTpfkg7osuVH1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 75
 Host: localhost:8080
@@ -606,7 +606,7 @@ 

요청

HTTP request
-
POST /api/join?_csrf=nHAt8mXu5LrBXuVeaBu2HIYegvQHhqbJ9_PMyGVbGoI4V6oh-kcfkVOM1Ivsad09WjaCL-V_r81iv5LkxcqvqwM5LudeYMgR HTTP/1.1
+
POST /api/join?_csrf=PWJJKxoqAdveUEd5iHwnB-7oMLuocxIv8U8To0Zz4o-2TwNmXFVxTX9MZe_zMyQb7lETNtzZHYOQFioClC13wSVE1r3XKzRV HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 75
 Host: localhost:8080
@@ -722,7 +722,7 @@ 

요청

HTTP request
-
POST /api/member?_csrf=P36JFwmul7Teu6P8UCzcJ0IGpZJZa_KevzzOcfMTJZpZhciWW0ixLzmY9oHzisfFZgHoF3dkiPA4WMezjAqoE8QmE686tKmg HTTP/1.1
+
POST /api/member?_csrf=CR5ulv898F-KA6KY0_0eZ-iqkZv5jasMl-PifkxMrJoVUCQoPXoNr8YIkmenZsGr4tAqBd7LvKPO7pMhr4bTTS9-nqxwY0VK HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 246
 Host: localhost:8080
@@ -862,7 +862,7 @@ 

요청

HTTP request
-
POST /api/member?_csrf=pZ25SF_D7mKw0dsGee1kXmL8WR_Yu2nru0qP64U_vwS7vPnDlquILDv0i1Od4bkxH8BQOlGddCa6iAjG2im_ieYKjGffiJv0 HTTP/1.1
+
POST /api/member?_csrf=2T9T3-6-DoED7rqX1pr1M9ptQahXXGn-Kw0dI2Titoperiv6711l69eLaLYuiN-j4LfBA78ObJBjaQ_TSjh_QgGH0-s_yB-Z HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 246
 Host: localhost:8080
@@ -1048,21 +1048,24 @@ 
HTTP response
Pragma: no-cache Expires: 0 X-Frame-Options: DENY -Content-Length: 549 +Content-Length: 597 { "success" : true, "message" : "요청이 성공적으로 처리되었습니다.", "data" : { "content" : [ { + "id" : 1, "name" : "가식당", "restaurantType" : "KOREAN_FOOD", "location" : "서울" }, { + "id" : 2, "name" : "나식당", "restaurantType" : "WESTERN_FOOD", "location" : "부산" }, { + "id" : 3, "name" : "다식당", "restaurantType" : "JAPANESE_FOOD", "location" : "울산" @@ -1109,6 +1112,11 @@
Response fields

처리 결과

+

data.content[].id

+

Number

+

식당 ID값

+ +

data.content[].name

String

식당 이름

@@ -1509,7 +1517,7 @@

요청

HTTP request
-
PATCH /api/credits/plus?_csrf=FTufPolFbnQWgcjDW8jT-Zkka5uhtYIsfBvR-8aKTSGi-mnJJQuoCbgjChI7sK6lY-Xnz6oTRvnHgbABSCrnmv--ekKRzFys HTTP/1.1
+
PATCH /api/credits/plus?_csrf=OFFE9v05I9XfORET58w-q3F8VmdrI4jzxi1nZZH7MLTv4I7VW2YlkJ9fFeXyXyQiheEKnxBLewUNRure8k8DBvXPUYLd0-2w HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 47
 Host: localhost:8080
@@ -1632,7 +1640,7 @@ 

요청

HTTP request
-
PATCH /api/credits/minus?_csrf=RIhdRhgUX7s9SaRUFcBJ4rkdcDr5ESnv0ZSbEQORawtiuuyFJ-xrdSAjbd0Qe5E2Ie19gY4qXQOaIBrC5_etJzuoXmhRgoq8 HTTP/1.1
+
PATCH /api/credits/minus?_csrf=LtLFEdWDMRTG_SSim1JWHSNs3d0YB43y2pdfiRShwnyl7TR9HLT1KOW3VyTrmxDGqH9iJBFY8LwgNL3f7K5rvCaU9hrBiAAf HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 47
 Host: localhost:8080
@@ -2029,7 +2037,7 @@ 

요청

HTTP request
-
POST /api/works-join?_csrf=aLTWfYjPQd7xySlQdXuyQQ-JWy5_zEjlcqFBU1-hVLp8xZ2lUdLmTun_cunc_hBoEFaGcWztdk9N-ivIF5YkZm_EMo9Fof6c HTTP/1.1
+
POST /api/works-join?_csrf=AmjKMkGaDULjULqwXDWuc02uO5f9THaGNvtAOcKMQkG2CpKdMFr-V3D_PyTONY2DZBiaEn-bFq_JfkGrBppxDvXtI3WPafCr HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 44
 Host: localhost:8080
diff --git a/src/test/java/workplate/workplateserver/restaurant/controller/RestaurantControllerTest.java b/src/test/java/workplate/workplateserver/restaurant/controller/RestaurantControllerTest.java
index 53d7b99..2a8c7fd 100644
--- a/src/test/java/workplate/workplateserver/restaurant/controller/RestaurantControllerTest.java
+++ b/src/test/java/workplate/workplateserver/restaurant/controller/RestaurantControllerTest.java
@@ -67,9 +67,9 @@ class RestaurantControllerTest {
 	void findAllByPage() throws Exception {
 		// Given
 		Pageable pageable = PageRequest.of(1, 3);
-		RestaurantResponse r1 = new RestaurantResponse("가식당", RestaurantType.KOREAN_FOOD, "서울");
-		RestaurantResponse r2 = new RestaurantResponse("나식당", RestaurantType.WESTERN_FOOD, "부산");
-		RestaurantResponse r3 = new RestaurantResponse("다식당", RestaurantType.JAPANESE_FOOD, "울산");
+		RestaurantResponse r1 = new RestaurantResponse(1L, "가식당", RestaurantType.KOREAN_FOOD, "서울");
+		RestaurantResponse r2 = new RestaurantResponse(2L, "나식당", RestaurantType.WESTERN_FOOD, "부산");
+		RestaurantResponse r3 = new RestaurantResponse(3L, "다식당", RestaurantType.JAPANESE_FOOD, "울산");
 		PageResponse response = new PageResponse<>(List.of(r1, r2, r3));
 		given(restaurantService.findRestaurant(any())).willReturn(response);
 
@@ -92,6 +92,7 @@ void findAllByPage() throws Exception {
 								fieldWithPath("success").description("성공여부"),
 								fieldWithPath("message").description("응답 메시지"),
 								fieldWithPath("data").description("처리 결과"),
+								fieldWithPath("data.content[].id").description("식당 ID값"),
 								fieldWithPath("data.content[].name").description("식당 이름"),
 								fieldWithPath("data.content[].restaurantType").description(
 										"식당 종류 (KOREAN_FOOD, WESTERN_FOOD, JAPANESE_FOOD 등)"),

From ed1231b4bc8b03b5b0611cd5e38540d7de251421 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=8C=E1=85=B5=E1=84=92?=
 =?UTF-8?q?=E1=85=A7=E1=86=A8?= 
Date: Sat, 16 Nov 2024 17:21:45 +0900
Subject: [PATCH 6/8] =?UTF-8?q?Refactor:=20AI=20=EC=9A=94=EA=B5=AC?=
 =?UTF-8?q?=EC=82=AC=ED=95=AD=EC=97=90=20=EB=A7=9E=EC=B6=B0=20=EC=88=98?=
 =?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../work/domain/dto/WorkResponse.java         |  6 +++
 .../work/domain/entity/Work.java              | 15 +++++-
 src/main/resources/static/docs/index.html     | 54 ++++++++++++++-----
 .../work/controller/WorkControllerTest.java   | 16 ++++--
 4 files changed, 72 insertions(+), 19 deletions(-)

diff --git a/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java b/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java
index d5d65dd..5f16c63 100644
--- a/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java
+++ b/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java
@@ -3,6 +3,8 @@
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Getter;
+import workplate.workplateserver.auth.domain.MainExperience;
+import workplate.workplateserver.auth.domain.SubExperience;
 import workplate.workplateserver.work.domain.entity.Work;
 
 /**
@@ -19,12 +21,16 @@ public class WorkResponse {
 	private String workName;
 	private String workDetail;
 	private Long workCredit;
+	private MainExperience mainCategory;
+	private SubExperience subCategory;
 
 	public static WorkResponse toDto(Work work) {
 		return WorkResponse.builder()
 				.workName(work.getWorkName())
 				.workDetail(work.getWorkDetail())
 				.workCredit(work.getWorkCredit())
+				.mainCategory(work.getMainCategory())
+				.subCategory(work.getSubCategory())
 				.build();
 	}
 }
diff --git a/src/main/java/workplate/workplateserver/work/domain/entity/Work.java b/src/main/java/workplate/workplateserver/work/domain/entity/Work.java
index 1a5098b..11f0e6e 100644
--- a/src/main/java/workplate/workplateserver/work/domain/entity/Work.java
+++ b/src/main/java/workplate/workplateserver/work/domain/entity/Work.java
@@ -2,6 +2,8 @@
 
 import jakarta.persistence.Column;
 import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
 import jakarta.persistence.GeneratedValue;
 import jakarta.persistence.GenerationType;
 import jakarta.persistence.Id;
@@ -10,6 +12,8 @@
 import lombok.Builder;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
+import workplate.workplateserver.auth.domain.MainExperience;
+import workplate.workplateserver.auth.domain.SubExperience;
 import workplate.workplateserver.common.BaseEntity;
 
 /**
@@ -35,12 +39,21 @@ public class Work extends BaseEntity {
 	private String workDetail;
 	@Column(name = "work_credit")
 	private Long workCredit;
+	@Column(name = "work_main_category")
+	@Enumerated(EnumType.STRING)
+	private MainExperience mainCategory;
+	@Column(name = "work_sub_category")
+	@Enumerated(EnumType.STRING)
+	private SubExperience subCategory;
 
-	public static Work toEntity(String workName, String workDetail, Long workCredit) {
+	public static Work toEntity(String workName, String workDetail, Long workCredit, MainExperience mainCategory,
+			SubExperience subCategory) {
 		return Work.builder()
 				.workName(workName)
 				.workDetail(workDetail)
 				.workCredit(workCredit)
+				.mainCategory(mainCategory)
+				.subCategory(subCategory)
 				.build();
 	}
 }
diff --git a/src/main/resources/static/docs/index.html b/src/main/resources/static/docs/index.html
index 7ccf90f..2701b94 100644
--- a/src/main/resources/static/docs/index.html
+++ b/src/main/resources/static/docs/index.html
@@ -490,7 +490,7 @@ 

요청

HTTP request
-
POST /api/join?_csrf=-dJzoZRZOcl1jUZhGlz02rdthVfFxZ4PniloKq6CtI9KjTTAm7EQx_ZuDKxYuiRSK3HA645dqG718q0ir08JTpfkg7osuVH1 HTTP/1.1
+
POST /api/join?_csrf=PgIVII1UGSy-VgyBIBIGTa1dWM46uJ4ZGHdIY9I6EJszZnmjBjchRr0yfBuTYW7nRD8yeJw7da9cjq80KUQrUeQNKaJSBUzC HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 75
 Host: localhost:8080
@@ -606,7 +606,7 @@ 

요청

HTTP request
-
POST /api/join?_csrf=PWJJKxoqAdveUEd5iHwnB-7oMLuocxIv8U8To0Zz4o-2TwNmXFVxTX9MZe_zMyQb7lETNtzZHYOQFioClC13wSVE1r3XKzRV HTTP/1.1
+
POST /api/join?_csrf=W-QQiuAMvzJ8R4RLrtawe4gwfv9ZPmY3wgmrj27vemXqocL4aNYm7tE9jFdRJuUvmPuEHexWU8dvWl4a-znOtwyNTVDTxKGd HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 75
 Host: localhost:8080
@@ -722,7 +722,7 @@ 

요청

HTTP request
-
POST /api/member?_csrf=CR5ulv898F-KA6KY0_0eZ-iqkZv5jasMl-PifkxMrJoVUCQoPXoNr8YIkmenZsGr4tAqBd7LvKPO7pMhr4bTTS9-nqxwY0VK HTTP/1.1
+
POST /api/member?_csrf=kmlxlZyRuwrIyGn0zbMmqnILmlAemcnMXx2Qn0BYNeNE5msYqgpE9q2ki2zl-1rB_p4Smhc7t2kprv7hZiz0pnRsVIV0hVJ8 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 246
 Host: localhost:8080
@@ -862,7 +862,7 @@ 

요청

HTTP request
-
POST /api/member?_csrf=2T9T3-6-DoED7rqX1pr1M9ptQahXXGn-Kw0dI2Titoperiv6711l69eLaLYuiN-j4LfBA78ObJBjaQ_TSjh_QgGH0-s_yB-Z HTTP/1.1
+
POST /api/member?_csrf=23Cny2COxXGIMijWKGtj-mXdNUI13SxniQulHeXvQME_TJ0p4kmT-lbrp0WlUR3lTEZXy13rGHsA5RlK6miReIaNdPUHL6RK HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 246
 Host: localhost:8080
@@ -1517,7 +1517,7 @@ 

요청

HTTP request
-
PATCH /api/credits/plus?_csrf=OFFE9v05I9XfORET58w-q3F8VmdrI4jzxi1nZZH7MLTv4I7VW2YlkJ9fFeXyXyQiheEKnxBLewUNRure8k8DBvXPUYLd0-2w HTTP/1.1
+
PATCH /api/credits/plus?_csrf=qmt_Za8wsOh3pBq84WDkNp731oPvmLzVTO5mr8Dx5RfiDEDKz1JNVJxShthanSLZ2U3QAa7F-7rcoYz4ddheyvXB0SSEOyPy HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 47
 Host: localhost:8080
@@ -1640,7 +1640,7 @@ 

요청

HTTP request
-
PATCH /api/credits/minus?_csrf=LtLFEdWDMRTG_SSim1JWHSNs3d0YB43y2pdfiRShwnyl7TR9HLT1KOW3VyTrmxDGqH9iJBFY8LwgNL3f7K5rvCaU9hrBiAAf HTTP/1.1
+
PATCH /api/credits/minus?_csrf=p3QgOoesv8lpAyBdnDtNeGxiJbc16bjauYGOLlwM5weJ3Ic4nkJFDLaZ3KtEYkFlqRZ5HFlWCNUN3933gbG4T2xq3jG-7bEO HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 47
 Host: localhost:8080
@@ -1809,7 +1809,7 @@ 
HTTP response
Pragma: no-cache Expires: 0 X-Frame-Options: DENY -Content-Length: 611 +Content-Length: 833 { "success" : true, @@ -1818,15 +1818,21 @@
HTTP response
"content" : [ { "workName" : "경비", "workDetail" : "병원을 경비합니다.", - "workCredit" : 10000 + "workCredit" : 10000, + "mainCategory" : "SERVICE", + "subCategory" : "SECURITY_GUARD" }, { "workName" : "주간경비", "workDetail" : "병원을 주간에 경비합니다.", - "workCredit" : 11000 + "workCredit" : 11000, + "mainCategory" : "SERVICE", + "subCategory" : "SECURITY_GUARD" }, { "workName" : "야간경비", "workDetail" : "병원을 야간에 경비합니다.", - "workCredit" : 12000 + "workCredit" : 12000, + "mainCategory" : "SERVICE", + "subCategory" : "SECURITY_GUARD" } ], "pageNum" : 0, "pageSize" : 0, @@ -1885,6 +1891,16 @@
Response fields

소일거리 시급

+

data.content[].mainCategory

+

String

+

소일거리 메인카테고리

+ + +

data.content[].subCategory

+

String

+

소일거리 서브카테고리

+ +

data.pageNum

Number

현재 페이지 번호

@@ -1964,7 +1980,7 @@
HTTP response
Pragma: no-cache Expires: 0 X-Frame-Options: DENY -Content-Length: 207 +Content-Length: 277 { "success" : true, @@ -1972,7 +1988,9 @@
HTTP response
"data" : { "workName" : "경비", "workDetail" : "병원을 경비합니다.", - "workCredit" : 10000 + "workCredit" : 10000, + "mainCategory" : "SERVICE", + "subCategory" : "SECURITY_GUARD" } }
@@ -2024,6 +2042,16 @@
Response fields

Number

소일거리 시급

+ +

data.mainCategory

+

String

+

소일거리 메인카테고리

+ + +

data.subCategory

+

String

+

소일거리 서브카테고리

+
@@ -2037,7 +2065,7 @@

요청

HTTP request
-
POST /api/works-join?_csrf=AmjKMkGaDULjULqwXDWuc02uO5f9THaGNvtAOcKMQkG2CpKdMFr-V3D_PyTONY2DZBiaEn-bFq_JfkGrBppxDvXtI3WPafCr HTTP/1.1
+
POST /api/works-join?_csrf=VfS28BzkEMe7ffCLHNMv4hLSGkSzyV528VPtXQigV_4EjobsZMOHliiGJ_CWTcm6JP4bh3bjN32C8TpbxWLVZGyQZs5m6LDY HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 44
 Host: localhost:8080
diff --git a/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java b/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java
index 32c052f..4b38938 100644
--- a/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java
+++ b/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java
@@ -29,6 +29,8 @@
 
 import com.google.gson.Gson;
 
+import workplate.workplateserver.auth.domain.MainExperience;
+import workplate.workplateserver.auth.domain.SubExperience;
 import workplate.workplateserver.auth.domain.entity.Member;
 import workplate.workplateserver.auth.domain.jwt.JwtTokenProvider;
 import workplate.workplateserver.auth.domain.jwt.repository.JwtAccessTokenRepository;
@@ -74,9 +76,9 @@ class WorkControllerTest {
 	@WithMockUser
 	void findAllTest() throws Exception {
 		// Given
-		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L);
-		WorkResponse r2 = new WorkResponse("주간경비", "병원을 주간에 경비합니다.", 11000L);
-		WorkResponse r3 = new WorkResponse("야간경비", "병원을 야간에 경비합니다.", 12000L);
+		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
+		WorkResponse r2 = new WorkResponse("주간경비", "병원을 주간에 경비합니다.", 11000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
+		WorkResponse r3 = new WorkResponse("야간경비", "병원을 야간에 경비합니다.", 12000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
 		PageResponse response = new PageResponse<>(List.of(r1, r2, r3));
 		given(workService.findAll(any())).willReturn(response);
 
@@ -102,6 +104,8 @@ void findAllTest() throws Exception {
 								fieldWithPath("data.content[].workName").description("소일거리 이름"),
 								fieldWithPath("data.content[].workDetail").description("소일거리 상세 내용"),
 								fieldWithPath("data.content[].workCredit").description("소일거리 시급"),
+								fieldWithPath("data.content[].mainCategory").description("소일거리 메인카테고리"),
+								fieldWithPath("data.content[].subCategory").description("소일거리 서브카테고리"),
 								fieldWithPath("data.pageNum").description("현재 페이지 번호"),
 								fieldWithPath("data.pageSize").description("페이지 당 항목 수"),
 								fieldWithPath("data.totalPages").description("총 페이지 수"),
@@ -117,7 +121,7 @@ void findAllTest() throws Exception {
 	@WithMockUser
 	void findByIdTest() throws Exception {
 		// Given
-		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L);
+		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
 		given(workService.findById(1L)).willReturn(r1);
 
 		// When
@@ -140,7 +144,9 @@ void findByIdTest() throws Exception {
 								fieldWithPath("data").description("처리 결과"),
 								fieldWithPath("data.workName").description("소일거리 이름"),
 								fieldWithPath("data.workDetail").description("소일거리 상세 내용"),
-								fieldWithPath("data.workCredit").description("소일거리 시급")
+								fieldWithPath("data.workCredit").description("소일거리 시급"),
+								fieldWithPath("data.mainCategory").description("소일거리 메인카테고리"),
+								fieldWithPath("data.subCategory").description("소일거리 서브카테고리")
 						)));
 		// Then
 	}

From 0e5796fdf06a5fa65120a15be0e575ea258003f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=8C=E1=85=B5=E1=84=92?=
 =?UTF-8?q?=E1=85=A7=E1=86=A8?= 
Date: Mon, 18 Nov 2024 11:28:34 +0900
Subject: [PATCH 7/8] =?UTF-8?q?Refactor:=20AI=20=EC=9A=94=EA=B5=AC?=
 =?UTF-8?q?=EC=82=AC=ED=95=AD=EC=97=90=20=EB=A7=9E=EB=8F=84=EB=A1=9D=20?=
 =?UTF-8?q?=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../restaurant/domain/entity/Restaurant.java      |  1 -
 .../work/domain/dto/WorkResponse.java             |  5 +++++
 .../workplateserver/work/domain/entity/Work.java  | 15 +++++++++++----
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/main/java/workplate/workplateserver/restaurant/domain/entity/Restaurant.java b/src/main/java/workplate/workplateserver/restaurant/domain/entity/Restaurant.java
index 4f8839d..60f3241 100644
--- a/src/main/java/workplate/workplateserver/restaurant/domain/entity/Restaurant.java
+++ b/src/main/java/workplate/workplateserver/restaurant/domain/entity/Restaurant.java
@@ -30,7 +30,6 @@ public class Restaurant extends BaseEntity {
 
 	@Id
 	@GeneratedValue(strategy = GenerationType.IDENTITY)
-	@Column(name = "restaurant_id")
 	private Long id;
 	@Column(name = "restaurant_name")
 	private String name;
diff --git a/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java b/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java
index 5f16c63..6832423 100644
--- a/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java
+++ b/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java
@@ -4,6 +4,7 @@
 import lombok.Builder;
 import lombok.Getter;
 import workplate.workplateserver.auth.domain.MainExperience;
+import workplate.workplateserver.auth.domain.PhysicalStatus;
 import workplate.workplateserver.auth.domain.SubExperience;
 import workplate.workplateserver.work.domain.entity.Work;
 
@@ -21,16 +22,20 @@ public class WorkResponse {
 	private String workName;
 	private String workDetail;
 	private Long workCredit;
+	private String location;
 	private MainExperience mainCategory;
 	private SubExperience subCategory;
+	private PhysicalStatus physicalStatus;
 
 	public static WorkResponse toDto(Work work) {
 		return WorkResponse.builder()
 				.workName(work.getWorkName())
 				.workDetail(work.getWorkDetail())
 				.workCredit(work.getWorkCredit())
+				.location(work.getLocation())
 				.mainCategory(work.getMainCategory())
 				.subCategory(work.getSubCategory())
+				.physicalStatus(work.getPhysicalStatus())
 				.build();
 	}
 }
diff --git a/src/main/java/workplate/workplateserver/work/domain/entity/Work.java b/src/main/java/workplate/workplateserver/work/domain/entity/Work.java
index 11f0e6e..016d29f 100644
--- a/src/main/java/workplate/workplateserver/work/domain/entity/Work.java
+++ b/src/main/java/workplate/workplateserver/work/domain/entity/Work.java
@@ -13,6 +13,7 @@
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import workplate.workplateserver.auth.domain.MainExperience;
+import workplate.workplateserver.auth.domain.PhysicalStatus;
 import workplate.workplateserver.auth.domain.SubExperience;
 import workplate.workplateserver.common.BaseEntity;
 
@@ -39,21 +40,27 @@ public class Work extends BaseEntity {
 	private String workDetail;
 	@Column(name = "work_credit")
 	private Long workCredit;
-	@Column(name = "work_main_category")
+	private String location;
+	@Column(name = "main_category")
 	@Enumerated(EnumType.STRING)
 	private MainExperience mainCategory;
-	@Column(name = "work_sub_category")
+	@Column(name = "sub_category")
 	@Enumerated(EnumType.STRING)
 	private SubExperience subCategory;
+	@Column(name = "physical_status")
+	@Enumerated(EnumType.STRING)
+	private PhysicalStatus physicalStatus;
 
-	public static Work toEntity(String workName, String workDetail, Long workCredit, MainExperience mainCategory,
-			SubExperience subCategory) {
+	public static Work toEntity(String workName, String workDetail, Long workCredit, String location,
+			MainExperience mainCategory, SubExperience subCategory, PhysicalStatus physicalStatus) {
 		return Work.builder()
 				.workName(workName)
 				.workDetail(workDetail)
 				.workCredit(workCredit)
+				.location(location)
 				.mainCategory(mainCategory)
 				.subCategory(subCategory)
+				.physicalStatus(physicalStatus)
 				.build();
 	}
 }

From 0e96d4b2ddaac8899649789b30bcd3cd17bafc3d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=8C=E1=85=B5=E1=84=92?=
 =?UTF-8?q?=E1=85=A7=E1=86=A8?= 
Date: Mon, 18 Nov 2024 13:51:28 +0900
Subject: [PATCH 8/8] =?UTF-8?q?Test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?=
 =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../work/controller/WorkControllerTest.java         | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java b/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java
index 4b38938..71cfb5c 100644
--- a/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java
+++ b/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java
@@ -30,6 +30,7 @@
 import com.google.gson.Gson;
 
 import workplate.workplateserver.auth.domain.MainExperience;
+import workplate.workplateserver.auth.domain.PhysicalStatus;
 import workplate.workplateserver.auth.domain.SubExperience;
 import workplate.workplateserver.auth.domain.entity.Member;
 import workplate.workplateserver.auth.domain.jwt.JwtTokenProvider;
@@ -76,9 +77,9 @@ class WorkControllerTest {
 	@WithMockUser
 	void findAllTest() throws Exception {
 		// Given
-		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
-		WorkResponse r2 = new WorkResponse("주간경비", "병원을 주간에 경비합니다.", 11000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
-		WorkResponse r3 = new WorkResponse("야간경비", "병원을 야간에 경비합니다.", 12000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
+		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L, "서울", MainExperience.SERVICE, SubExperience.SECURITY_GUARD, PhysicalStatus.NORMAL);
+		WorkResponse r2 = new WorkResponse("주간경비", "병원을 주간에 경비합니다.", 11000L, "서울", MainExperience.SERVICE, SubExperience.SECURITY_GUARD, PhysicalStatus.NORMAL);
+		WorkResponse r3 = new WorkResponse("야간경비", "병원을 야간에 경비합니다.", 12000L, "서울", MainExperience.SERVICE, SubExperience.SECURITY_GUARD, PhysicalStatus.NORMAL);
 		PageResponse response = new PageResponse<>(List.of(r1, r2, r3));
 		given(workService.findAll(any())).willReturn(response);
 
@@ -104,6 +105,8 @@ void findAllTest() throws Exception {
 								fieldWithPath("data.content[].workName").description("소일거리 이름"),
 								fieldWithPath("data.content[].workDetail").description("소일거리 상세 내용"),
 								fieldWithPath("data.content[].workCredit").description("소일거리 시급"),
+								fieldWithPath("data.content[].location").description("소일거리 위치"),
+								fieldWithPath("data.content[].physicalStatus").description("소일거리 건강상태"),
 								fieldWithPath("data.content[].mainCategory").description("소일거리 메인카테고리"),
 								fieldWithPath("data.content[].subCategory").description("소일거리 서브카테고리"),
 								fieldWithPath("data.pageNum").description("현재 페이지 번호"),
@@ -121,7 +124,7 @@ void findAllTest() throws Exception {
 	@WithMockUser
 	void findByIdTest() throws Exception {
 		// Given
-		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
+		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L, "서울", MainExperience.SERVICE, SubExperience.SECURITY_GUARD, PhysicalStatus.NORMAL);
 		given(workService.findById(1L)).willReturn(r1);
 
 		// When
@@ -145,6 +148,8 @@ void findByIdTest() throws Exception {
 								fieldWithPath("data.workName").description("소일거리 이름"),
 								fieldWithPath("data.workDetail").description("소일거리 상세 내용"),
 								fieldWithPath("data.workCredit").description("소일거리 시급"),
+								fieldWithPath("data.location").description("소일거리 위치"),
+								fieldWithPath("data.physicalStatus").description("소일거리 건강상태"),
 								fieldWithPath("data.mainCategory").description("소일거리 메인카테고리"),
 								fieldWithPath("data.subCategory").description("소일거리 서브카테고리")
 						)));