diff --git a/src/docs/asciidoc/V1_docs.html b/src/docs/asciidoc/V1_docs.html index bd3624c7..64c8a033 100644 --- a/src/docs/asciidoc/V1_docs.html +++ b/src/docs/asciidoc/V1_docs.html @@ -1,780 +1,2472 @@ - - - - -Linkit - - - - - + + + + #content .tablecontainer > table.tableblock { + margin-bottom: 0; + } +
-
-

링킷 개발용 API 서버 도메인 네임 = https://dev.linkit.im

-
+ - + -
-

1. 회원관리

-
-
-

1.2.1. 간편로그인 [각 플랫폼 동일]

-
-

요청

-
-
+
+
+
+

1. 회원관리

+
+
+

1.2.1. 간편로그인 [각 플랫폼 동일] +

+
+

요청

+
+
POST /login/google HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 
 {
   "code" : "code"
 }
-
-
- - ---- - - - - - - - - - - - - -
Table 1. /login/{provider}
ParameterDescription

provider

로그인 유형 (플랫폼 영어 이름)

- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

code

String

인가 코드

문자열

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 1. /login/{provider}
ParameterDescription

provider +

로그인 유형 (플랫폼 영어 이름)

+
+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

code

+

String

+

인가 코드

문자열

+
+
+

응답

+
+
HTTP/1.1 201 Created
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -789,84 +2481,95 @@ 

응답

"existMemberBasicInform" : false, "existDefaultProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

accessToken

String

access token

email

String

소셜 로그인 이메일

existMemberBasicInform

Boolean

기본 정보 기입 여부 (false: 기본 정보 기입하지 않음)

existDefaultProfile

Boolean

이력서 작성 여부 (false: 내 이력서와 팀 소개서 모두 존재 X | true: 내 이력서나 팀 소개서 중 최소 1개 이상 필수 항목 기입 완료)

-
-
-
-

1.2.1. 토큰 재발급

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

accessToken +

String

+

access token

email

+

String

+

소셜 로그인 이메일

existMemberBasicInform +

Boolean

+

기본 정보 기입 여부 (false: 기본 + 정보 기입하지 않음)

existDefaultProfile +

Boolean

+

이력서 작성 여부 (false: 내 이력서와 + 팀 소개서 모두 존재 X | true: 내 이력서나 팀 소개서 중 최소 1개 이상 필수 항목 기입 완료)

+
+
+
+

1.2.1. 토큰 재발급

+
+

요청

+
+
POST /token HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-

요청 쿠키

-
- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

응답

-
-
+
+
+
+

요청 쿠키

+
+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+
+
+

응답

+
+
HTTP/1.1 201 Created
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -880,126 +2583,140 @@ 

응답

"existDefaultProfile" : true, "existNonCheckNotification" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

accessToken

String

access token

existMemberBasicInform

Boolean

기본 정보 기입 여부 (false: 기본 정보 기입하지 않음)

existDefaultProfile

Boolean

이력서 작성 여부 (false: 내 이력서와 팀 소개서 모두 존재 X | true: 내 이력서나 팀 소개서 중 최소 1개 이상 필수 항목 기입 완료)

existNonCheckNotification

Boolean

확인하지 않은 알림의 존재 유무

-
-
-
-

1.2.1. 로그아웃

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

accessToken +

String

+

access token

existMemberBasicInform +

Boolean

+

기본 정보 기입 여부 (false: 기본 + 정보 기입하지 않음)

existDefaultProfile +

Boolean

+

이력서 작성 여부 (false: 내 이력서와 + 팀 소개서 모두 존재 X | true: 내 이력서나 팀 소개서 중 최소 1개 이상 필수 항목 기입 완료)

existNonCheckNotification +

Boolean

+

확인하지 않은 알림의 존재 유무

+
+
+
+
+

1.2.1. 로그아웃

+
+

요청

+
+
DELETE /logout HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-

요청 헤더

-
- ----- - - - - - - - - - - - - - - -
NameDescriptionConstraint

Authorization

access token

문자열(jwt)

-
-

요청 쿠키

-
- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

응답

-
-
+
+
+
+

요청 헤더

+
+ + + + + + + + + + + + + + + + + + + + +
NameDescriptionConstraint

+ Authorization

access token

문자열(jwt)

+
+

요청 쿠키

+
+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+
+
+

응답

+
+
HTTP/1.1 204 No Content
 Vary: Origin
 Vary: Access-Control-Request-Method
 Vary: Access-Control-Request-Headers
-
-
-
-
-
-
- +
+

1.4. 정보 기입

+
+
+

1.4.1. 개인정보 기입 (기본 정보) +

+
+

요청

+
+
POST /members/basic-inform HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1010,118 +2727,129 @@ 

요청

"contact" : "010-3661-4067", "marketingAgree" : true }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

memberName

String

성함

문자열

contact

String

연락처

010-xxxx-xxxx 형태

marketingAgree

Boolean

마케팅 수신 동의 여부

Boolean & Default FALSE

-
-

요청 헤더

-
- ----- - - - - - - - - - - - - - - -
NameDescriptionConstraint

Authorization

access token

문자열(jwt)

-
-

요청 쿠키

-
- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

memberName +

String

+

성함

문자열

contact

+

String

+

연락처

010-xxxx-xxxx 형태

+

+ marketingAgree

Boolean

+

마케팅 수신 동의 여부

Boolean & Default + FALSE

+
+

요청 헤더

+
+ + + + + + + + + + + + + + + + + + + + +
NameDescriptionConstraint

+ Authorization

access token

문자열(jwt)

+
+

요청 쿠키

+
+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+
+
+

응답

+
+
HTTP/1.1 201 Created
 Vary: Origin
 Vary: Access-Control-Request-Method
 Vary: Access-Control-Request-Headers
-
-
-
-
- +
+

1.4.2. 개인정보 조회 (기본 정보) +

+
+

요청

+
+
GET /members/basic-inform HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -1136,71 +2864,81 @@ 

응답

"email" : "kwondm7@naver.com", "marketingAgree" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

멤버 기본 정보 ID

memberName

String

성함

contact

String

연락처

email

String

이메일

marketingAgree

Boolean

마케팅 수신 동의 여부

-
-
-
-
-
-

1.5.1.온보딩 - 내 이력서 - 전체 조회

-
-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

id

Number

+

멤버 기본 정보 ID

memberName +

String

+

성함

contact

+

String

+

연락처

email

+

String

+

이메일

+ marketingAgree

Boolean

+

마케팅 수신 동의 여부

+
+
+
+
+
+

1.5.1.온보딩 - 내 이력서 - 전체 조회 +

+
+
+

요청

+
+
GET /private/onBoarding HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -1263,171 +3001,202 @@ 

응답

"isPrivateSaved" : false } }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

profileTeamBuildingFieldResponse

Object

희망 팀빌딩 분야 항목

profileTeamBuildingFieldResponse.teamBuildingFieldNames

Array

희망 팀빌딩 분야 이름

jobAndSkillResponse

Object

나의 직무/역할 및 보유 기술 정보

jobAndSkillResponse.jobRoleNames

Array

직무/역할 명칭

jobAndSkillResponse.skillNames

Array

보유 기술 명칭

profileRegionResponse

Object

지역 및 위치 항목

profileRegionResponse.cityName

String

시/구 이름

profileRegionResponse.divisionName

String

시/군/구 이름

educationResponses

Array

학력 항목

educationResponses[].id

Number

학력 ID

educationResponses[].admissionYear

Number

입학 연도

educationResponses[].graduationYear

Number

졸업 연도

educationResponses[].universityName

String

학교 이름

educationResponses[].majorName

String

전공 이름

educationResponses[].degreeName

String

학위 이름

antecedentsResponses

Array

이력 항목

antecedentsResponses[].projectName

String

회사 이름

antecedentsResponses[].projectRole

String

포지션

antecedentsResponses[].startDate

String

시작 연도/월

antecedentsResponses[].endDate

String

종료 연도/월

antecedentsResponses[].retirement

Boolean

재직 여부

miniProfileResponse

Object

미니 프로필(내 이력서) 항목

miniProfileResponse.profileTitle

String

프로필의 제목

miniProfileResponse.miniProfileImg

String

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames

Array

나를 소개하는 키워드 목록

miniProfileResponse.isActivate

Boolean

미니 프로필 활성화 여부

miniProfileResponse.memberName

String

회원 이름

miniProfileResponse.jobRoleNames

Array

직무 및 역할

-
-
-

1.5.2. 온보딩 - 내 이력서 - 희망 팀빌딩 분야 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

profileTeamBuildingFieldResponse +

Object

희망 팀빌딩 분야 항목

profileTeamBuildingFieldResponse.teamBuildingFieldNames +

Array

희망 팀빌딩 분야 이름

+ jobAndSkillResponse

Object

나의 직무/역할 및 보유 기술 정보

jobAndSkillResponse.jobRoleNames +

Array

직무/역할 명칭

jobAndSkillResponse.skillNames +

Array

보유 기술 명칭

+ profileRegionResponse

Object

지역 및 위치 항목

profileRegionResponse.cityName +

String

시/구 이름

profileRegionResponse.divisionName +

String

시/군/구 이름

+ educationResponses

Array

학력 항목

educationResponses[].id +

Number

학력 ID

educationResponses[].admissionYear +

Number

입학 연도

educationResponses[].graduationYear +

Number

졸업 연도

educationResponses[].universityName +

String

학교 이름

educationResponses[].majorName +

String

전공 이름

educationResponses[].degreeName +

String

학위 이름

+ antecedentsResponses

Array

이력 항목

antecedentsResponses[].projectName +

String

회사 이름

antecedentsResponses[].projectRole +

String

포지션

antecedentsResponses[].startDate +

String

시작 연도/월

antecedentsResponses[].endDate +

String

종료 연도/월

antecedentsResponses[].retirement +

Boolean

+

재직 여부

+ miniProfileResponse

Object

미니 프로필(내 이력서) 항목

miniProfileResponse.profileTitle +

String

프로필의 제목

miniProfileResponse.miniProfileImg +

String

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames +

Array

나를 소개하는 키워드 목록

miniProfileResponse.isActivate +

Boolean

+

미니 프로필 활성화 여부

miniProfileResponse.memberName +

String

회원 이름

miniProfileResponse.jobRoleNames +

Array

직무 및 역할

+
+
+

1.5.2. + 온보딩 - 내 이력서 - 희망 팀빌딩 분야 생성/수정

+
+

요청

+
+
POST /private/team_building_field HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1436,40 +3205,44 @@ 

요청

{ "teamBuildingFieldNames" : [ "공모전", "대회", "창업" ] }
-
-
- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

teamBuildingFieldNames

Array

희망 팀빋딩 분야(7가지 항목)

문자열의 배열

-
-
-
-

1.5.3. 온보딩 - 내 이력서 - 활동 지역 및 위치 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

teamBuildingFieldNames +

Array

+

희망 팀빋딩 분야(7가지 항목)

+

문자열의 배열

+
+
+
+

1.5.3. + 온보딩 - 내 이력서 - 활동 지역 및 위치 생성/수정

+
+

요청

+
+
POST /private/region HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1479,46 +3252,51 @@ 

요청

"cityName" : "서울특별시", "divisionName" : "강남구" }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

cityName

String

시/구 이름

문자열

divisionName

String

시/군/구 이름

문자열

-
-
-
-

1.5.4. 온보딩 - 내 이력서 - 희망 역할, 보유 기술 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

cityName +

String

+

시/구 이름

문자열

+ divisionName

String

+

시/군/구 이름

문자열

+
+
+
+

1.5.4. + 온보딩 - 내 이력서 - 희망 역할, 보유 기술 생성/수정

+
+

요청

+
+
POST /private/job/skill HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1528,47 +3306,52 @@ 

요청

"jobRoleNames" : [ "공모전, 대회, 창업" ], "skillNames" : [ "Notion, Figma" ] }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

jobRoleNames

Array

희망 직무/역할

문자열의 배열

skillNames

Array

보유 기술

문자열의 배열

-
-
-
-

1.5.5. 온보딩 - 내 이력서 - 학력 생성/수정

-
-

요청

-
-
-
POST /private/education HTTP/1.1
+                        
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ jobRoleNames

Array

+

희망 직무/역할

문자열의 배열

skillNames +

Array

+

보유 기술

문자열의 배열

+
+
+
+

1.5.5. 온보딩 - 내 이력서 - + 학력 생성/수정

+
+

요청

+
+
+
POST /private/profileEducation HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
@@ -1580,64 +3363,75 @@ 

요청

"majorName" : "컴퓨터공학과", "degreeName" : "졸업" }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

admissionYear

Number

입학 연도

4자리 숫자

graduationYear

Number

졸업 연도

4자리 숫자

universityName

String

학교명

문자열

majorName

String

전공명

문자열

degreeName

String

학위명

문자열

-
-
-
-

1.5.6. 온보딩 - 내 이력서 - 경력 생성

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ admissionYear

Number

+

입학 연도

4자리 숫자

+ graduationYear

Number

+

졸업 연도

4자리 숫자

+ universityName

String

+

학교명

문자열

majorName +

String

+

전공명

문자열

degreeName +

String

+

학위명

문자열

+
+
+
+

1.5.6. 온보딩 - 내 이력서 - 경력 + 생성

+
+

요청

+
+
POST /private/antecedent HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1651,70 +3445,84 @@ 

요청

"retirement" : false, "antecedentsDescription" : "경력 설명입니다." }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

projectName

String

기업명(프로젝트명)

문자열

projectRole

String

직무(역할)

문자열

startDate

String

시작 연도.월

4자리 숫자.2자리 숫자

endDate

String

종료 연도.월

4자리 숫자.2자리 숫자

retirement

Boolean

퇴직 여부

false ⇒ 재직 중

antecedentsDescription

String

경력 설명

문자열

-
-
-
-

1.5.6. 온보딩 - 내 이력서 - 미니 프로필 생성

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

projectName +

String

+

기업명(프로젝트명)

문자열

projectRole +

String

+

직무(역할)

문자열

startDate +

String

+

시작 연도.월

4자리 숫자.2자리 숫자

endDate

+

String

+

종료 연도.월

4자리 숫자.2자리 숫자

retirement +

Boolean

+

퇴직 여부

false ⇒ 재직 중

+

antecedentsDescription +

String

+

경력 설명

문자열

+
+
+
+

1.5.6. 온보딩 - 내 + 이력서 - 미니 프로필 생성

+
+

요청

+
+
POST /private/mini-profile HTTP/1.1
 Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
 Accept: application/json
@@ -1732,85 +3540,96 @@ 

요청

{"profileTitle":"시니어 소프트웨어 개발자","myKeywordNames":["2024 레드닷 수상","스타트업 경력","서울대 디자인","대기업 경력 3년"],"isActivate":true} --6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
-
-
- ---- - - - - - - - - - - - - - - - - -
PartDescription

miniProfileRequest

미니 프로필 생성 객체

miniProfileImage

미니 프로필 이미지 파일. 지원되는 형식은 .png, .jpg 등이 있습니다.

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

profileTitle

String

프로필 제목

myKeywordNames

Array

나를 소개하는 키워드 목록

isActivate

Boolean

프로필 활성화 여부

-
-
-
-
-
-

1.5. 팀 소개서 온보딩 가이드 기입

-
-
-

1.5.1. 내 이력서 / 팀 소개서 구분 중 팀 소개서 온보딩 항목 조회

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + +
PartDescription

+ miniProfileRequest

미니 프로필 생성 객체

+ miniProfileImage

미니 프로필 이미지 파일. 지원되는 형식은 + .png, .jpg 등이 있습니다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ profileTitle

String

+

프로필 제목

+ myKeywordNames

Array

+

나를 소개하는 키워드 목록

isActivate +

Boolean

+

프로필 활성화 여부

+
+
+
+
+
+

1.5. 팀 소개서 온보딩 가이드 기입

+
+
+

1.5.1. + 내 이력서 / 팀 소개서 구분 중 팀 소개서 온보딩 항목 조회

+
+

요청

+
+
GET /team/onBoarding HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -1841,117 +3660,155 @@ 

응답

"teamKeywordNames" : [ "재택 가능", "Pre-A", "사수 있음", "스톡 제공" ] } }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

onBoardingFieldTeamInformResponse

Object

희망 팀빌딩 분야 항목과 미니 프로필 일부 정보

onBoardingFieldTeamInformResponse.teamBuildingFieldNames

Array

희망 팀빌딩 분야 이름

onBoardingFieldTeamInformResponse.teamName

String

팀명

onBoardingFieldTeamInformResponse.sectorName

String

팀 분야

onBoardingFieldTeamInformResponse.sizeType

String

팀 규모

activityResponse

Object

활동 방식 및 지역/위치 정보

activityResponse.activityTagName

Array

활동 방식

activityResponse.cityName

String

시/도

activityResponse.divisionName

String

시/군/구

teamMiniProfileResponse

Object

팀 소개서 미니 프로필

teamMiniProfileResponse.sectorName

String

팀 분야

teamMiniProfileResponse.sizeType

String

팀 규모

teamMiniProfileResponse.teamName

String

팀명

teamMiniProfileResponse.teamProfileTitle

String

미니 프로필 제목

teamMiniProfileResponse.isTeamActivate

Boolean

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl

String

팀 미니 프로필 이미지 경로

teamMiniProfileResponse.teamKeywordNames

Array

팀 소개 항목

-
-
-
-

1.5.9. 팀 소개서 희망 팀빌딩 분야 및 팀 기본 정보 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

onBoardingFieldTeamInformResponse +

Object

+

희망 팀빌딩 분야 항목과 미니 프로필 일부 + 정보

onBoardingFieldTeamInformResponse.teamBuildingFieldNames +

Array

+

희망 팀빌딩 분야 이름

onBoardingFieldTeamInformResponse.teamName +

String

+

팀명

onBoardingFieldTeamInformResponse.sectorName +

String

+

팀 분야

onBoardingFieldTeamInformResponse.sizeType +

String

+

팀 규모

+ activityResponse

Object

+

활동 방식 및 지역/위치 정보

+

activityResponse.activityTagName +

Array

+

활동 방식

activityResponse.cityName +

String

+

시/도

activityResponse.divisionName +

String

+

시/군/구

teamMiniProfileResponse +

Object

+

팀 소개서 미니 프로필

teamMiniProfileResponse.sectorName +

String

+

팀 분야

teamMiniProfileResponse.sizeType +

String

+

팀 규모

teamMiniProfileResponse.teamName +

String

+

팀명

teamMiniProfileResponse.teamProfileTitle +

String

+

미니 프로필 제목

teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl +

String

+

팀 미니 프로필 이미지 경로

teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 소개 항목

+
+
+
+

1.5.9. 팀 + 소개서 희망 팀빌딩 분야 및 팀 기본 정보 생성/수정

+
+

요청

+
+
POST /team/team_building_field/basic_inform HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1963,58 +3820,69 @@ 

요청

"sizeType" : "1-5인", "sectorName" : "플랫폼" }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

teamBuildingFieldNames

Array

희망 팀빌딩 분야(7가지 항목)

문자열의 배열

teamName

String

팀이름

문자열

sizeType

String

팀 규모

문자열

sectorName

String

분야 이름

문자열

-
-
-
-

1.5.10. 팀 소개서 활동방식 및 활동 지역 및 위치 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

teamBuildingFieldNames +

Array

+

희망 팀빌딩 분야(7가지 항목)

+

문자열의 배열

teamName +

String

+

팀이름

문자열

sizeType +

String

+

팀 규모

문자열

sectorName +

String

+

분야 이름

문자열

+
+
+
+

1.5.10. 팀 + 소개서 활동방식 및 활동 지역 및 위치 생성/수정

+
+

요청

+
+
POST /team/activity HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -2025,52 +3893,59 @@ 

요청

"cityName" : "서울특별시", "divisionName" : "강남구" }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

activityTagNames

Array

활동 방식

문자열의 배열

cityName

String

시/구

문자열

divisionName

String

시/군/구

문자열

-
-
-
-

1.5.11. 팀 소개서 팀 미니 프로필 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ activityTagNames

Array

+

활동 방식

문자열의 배열

cityName +

String

+

시/구

문자열

+ divisionName

String

+

시/군/구

문자열

+
+
+
+

1.5.11. 팀 소개서 팀 + 미니 프로필 생성/수정

+
+

요청

+
+
POST /team/mini-profile HTTP/1.1
 Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
 Accept: application/json
@@ -2088,85 +3963,95 @@ 

요청

{"teamProfileTitle":"사이드 프로젝트 함께 할 개발자를 찾고 있어요","teamKeywordNames":["재택 가능","Pre-A","사수 있음","스톡 제공"],"isTeamActivate":true} --6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
-
-
- ---- - - - - - - - - - - - - - - - - -
PartDescription

teamMiniProfileCreateRequest

팀 소개서 미니 이력서 생성 객체

teamMiniProfileImage

팀 소개서 미니 프로필 이미지 파일. 지원되는 형식은 .png, .jpg 등이 있습니다.

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

teamProfileTitle

String

팀 소개서 제목

isTeamActivate

Boolean

팀 소개서 활성화 여부

teamKeywordNames

Array

팀 소개 항목

-
-
-
-
-
-

3. 내 이력서

-
-
-

3.0. 내 이력서 - 전체 조회

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + +
PartDescription

teamMiniProfileCreateRequest +

팀 소개서 미니 이력서 생성 객체

+

teamMiniProfileImage +

팀 소개서 미니 프로필 이미지 파일. + 지원되는 형식은 .png, .jpg 등이 있습니다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ teamProfileTitle

String

+

팀 소개서 제목

+ isTeamActivate

Boolean

+

팀 소개서 활성화 여부

+ teamKeywordNames

Array

+

팀 소개 항목

+
+
+
+
+
+

3. 내 이력서

+
+
+

3.0. 내 이력서 - 전체 조회

+
+

요청

+
+
GET /private/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -2187,12 +4072,12 @@ 

응답

}, "completionResponse" : { "completion" : "100.0", - "awards" : true, + "profileAwards" : true, "profileTeamBuildingField" : true, "profileRegion" : true, "introduction" : true, "antecedents" : true, - "education" : true, + "profileEducation" : true, "profileSkill" : true, "attach" : true }, @@ -2272,302 +4157,413 @@

응답

}, "privateProfileEssential" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

privateProfileEssential

Boolean

내 이력서 필수 입력 항목 존재 여부

miniProfileResponse

Object

사용자의 미니 프로필 정보

miniProfileResponse.profileTitle

String

프로필의 제목

miniProfileResponse.miniProfileImg

String

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames

Array

나를 소개하는 키워드 목록

miniProfileResponse.isActivate

Boolean

미니 프로필 활성화 여부

miniProfileResponse.memberName

String

회원 이름

miniProfileResponse.jobRoleNames

Array

직무 및 역할

completionResponse

Object

프로필의 완성도 정보

completionResponse.completion

String

프로필 완성도 (백분율)

completionResponse.introduction

Boolean

소개의 완성 여부

completionResponse.profileSkill

Boolean

스킬 섹션의 완성 여부

completionResponse.profileTeamBuildingField

Boolean

팀 빌딩 필드의 완성 여부

completionResponse.profileRegion

Boolean

지역 정보의 완성 여부

completionResponse.antecedents

Boolean

이력 사항의 완성 여부

completionResponse.education

Boolean

교육 이력의 완성 여부

completionResponse.awards

Boolean

수상 이력의 완성 여부

completionResponse.attach

Boolean

첨부 파일의 유무

profileIntroductionResponse

Object

프로필 소개

profileIntroductionResponse.introduction

String

소개 내용

jobAndSkillResponse

Object

나의 직무/역할 및 보유 기술 정보

jobAndSkillResponse.jobRoleNames

Array

직무/역할 명칭

jobAndSkillResponse.skillNames

Array

보유 기술 명칭

profileTeamBuildingFieldResponse

Object

팀 빌딩 필드 응답

profileTeamBuildingFieldResponse.teamBuildingFieldNames

Array

팀 빌딩 필드 이름

profileRegionResponse

Object

활동 지역 및 위치 응답

profileRegionResponse.cityName

String

시/도 이름

profileRegionResponse.divisionName

String

시/군/구 이름

antecedentsResponse

Array

과거 경력 정보

antecedentsResponse[].id

Number

경력 ID

antecedentsResponse[].projectName

String

프로젝트 이름

antecedentsResponse[].projectRole

String

프로젝트 역할

antecedentsResponse[].startDate

String

시작 연도/월

antecedentsResponse[].endDate

String

종료 연도/월

antecedentsResponse[].retirement

Boolean

퇴직 여부

educationResponse

Array

교육 이력 정보

educationResponse[].id

Number

교육 이력 ID

educationResponse[].admissionYear

Number

입학 연도

educationResponse[].graduationYear

Number

졸업 연도

educationResponse[].universityName

String

대학교 이름

educationResponse[].majorName

String

전공 이름

educationResponse[].degreeName

String

학위명

awardsResponse

Array

수상 이력 정보

awardsResponse[].id

Number

수상 ID

awardsResponse[].awardsName

String

수상 이름

awardsResponse[].ranking

String

수상 순위

awardsResponse[].organizer

String

주최자

awardsResponse[].awardsYear

Number

수상 연도

awardsResponse[].awardsMonth

Number

수상 월

awardsResponse[].awardsDescription

String

수상 내용

attachResponse

Object

첨부 파일 정보

attachResponse.attachUrlResponseList[].id

Number

첨부 URL ID

attachResponse.attachUrlResponseList[].attachUrlName

String

첨부된 URL 이름

attachResponse.attachUrlResponseList[].attachUrlPath

String

첨부된 URL

-
-
-
-

3.1. 내 이력서 - 미니 프로필 수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

privateProfileEssential +

Boolean

+

내 이력서 필수 입력 항목 존재 여부

+

miniProfileResponse +

Object

+

사용자의 미니 프로필 정보

miniProfileResponse.profileTitle +

String

+

프로필의 제목

miniProfileResponse.miniProfileImg +

String

+

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames +

Array

+

나를 소개하는 키워드 목록

miniProfileResponse.isActivate +

Boolean

+

미니 프로필 활성화 여부

miniProfileResponse.memberName +

String

+

회원 이름

miniProfileResponse.jobRoleNames +

Array

+

직무 및 역할

+ completionResponse

Object

+

프로필의 완성도 정보

completionResponse.completion +

String

+

프로필 완성도 (백분율)

completionResponse.introduction +

Boolean

+

소개의 완성 여부

completionResponse.profileSkill +

Boolean

+

스킬 섹션의 완성 여부

completionResponse.profileTeamBuildingField +

Boolean

+

팀 빌딩 필드의 완성 여부

completionResponse.profileRegion +

Boolean

+

지역 정보의 완성 여부

completionResponse.antecedents +

Boolean

+

이력 사항의 완성 여부

completionResponse.profileEducation +

Boolean

+

교육 이력의 완성 여부

completionResponse.profileAwards +

Boolean

+

수상 이력의 완성 여부

completionResponse.attach +

Boolean

+

첨부 파일의 유무

profileIntroductionResponse +

Object

+

프로필 소개

profileIntroductionResponse.introduction +

String

+

소개 내용

jobAndSkillResponse +

Object

+

나의 직무/역할 및 보유 기술 정보

+

jobAndSkillResponse.jobRoleNames +

Array

+

직무/역할 명칭

jobAndSkillResponse.skillNames +

Array

+

보유 기술 명칭

profileTeamBuildingFieldResponse +

Object

+

팀 빌딩 필드 응답

profileTeamBuildingFieldResponse.teamBuildingFieldNames +

Array

+

팀 빌딩 필드 이름

profileRegionResponse +

Object

+

활동 지역 및 위치 응답

profileRegionResponse.cityName +

String

+

시/도 이름

profileRegionResponse.divisionName +

String

+

시/군/구 이름

antecedentsResponse +

Array

+

과거 경력 정보

antecedentsResponse[].id +

Number

+

경력 ID

antecedentsResponse[].projectName +

String

+

프로젝트 이름

antecedentsResponse[].projectRole +

String

+

프로젝트 역할

antecedentsResponse[].startDate +

String

+

시작 연도/월

antecedentsResponse[].endDate +

String

+

종료 연도/월

antecedentsResponse[].retirement +

Boolean

+

퇴직 여부

+ educationResponse

Array

+

교육 이력 정보

educationResponse[].id +

Number

+

교육 이력 ID

educationResponse[].admissionYear +

Number

+

입학 연도

educationResponse[].graduationYear +

Number

+

졸업 연도

educationResponse[].universityName +

String

+

대학교 이름

educationResponse[].majorName +

String

+

전공 이름

educationResponse[].degreeName +

String

+

학위명

+ awardsResponse

Array

+

수상 이력 정보

awardsResponse[].id +

Number

+

수상 ID

awardsResponse[].awardsName +

String

+

수상 이름

awardsResponse[].ranking +

String

+

수상 순위

awardsResponse[].organizer +

String

+

주최자

awardsResponse[].awardsYear +

Number

+

수상 연도

awardsResponse[].awardsMonth +

Number

+

수상 월

awardsResponse[].awardsDescription +

String

+

수상 내용

+ attachResponse

Object

+

첨부 파일 정보

attachResponse.attachUrlResponseList[].id +

Number

+

첨부 URL ID

attachResponse.attachUrlResponseList[].attachUrlName +

String

+

첨부된 URL 이름

attachResponse.attachUrlResponseList[].attachUrlPath +

String

+

첨부된 URL

+
+
+
+

3.1. 내 이력서 - 미니 프로필 수정 +

+
+

요청

+
+
POST /private/mini-profile/update HTTP/1.1
 Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
 Accept: application/json
@@ -2585,69 +4581,79 @@ 

요청

{"profileTitle":"시니어 소프트웨어 개발자","myKeywordNames":["2024 레드닷 수상","스타트업 경력","서울대 디자인","대기업 경력 3년"],"isActivate":true} --6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
-
-
- ---- - - - - - - - - - - - - - - - - -
PartDescription

miniProfileRequest

미니 프로필 생성 객체

miniProfileImage

미니 프로필 이미지 파일. 지원되는 형식은 .png, .jpg 등이 있습니다.

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

profileTitle

String

프로필 제목

myKeywordNames

Array

나를 소개하는 키워드 목록

isActivate

Boolean

프로필 활성화 여부

-
-
-
-

3.4. 내 이력서 - 자기소개 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + +
PartDescription

+ miniProfileRequest

미니 프로필 생성 객체

+ miniProfileImage

미니 프로필 이미지 파일. 지원되는 형식은 + .png, .jpg 등이 있습니다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ profileTitle

String

+

프로필 제목

+ myKeywordNames

Array

+

나를 소개하는 키워드 목록

isActivate +

Boolean

+

프로필 활성화 여부

+
+
+
+

3.4. 내 이력서 - 자기소개 생성/수정 +

+
+

요청

+
+
POST /private/introduction HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -2656,50 +4662,56 @@ 

요청

{ "introduction" : "프로필 자기소개 항목을 입력합니다." }
-
-
- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

introduction

String

자기소개

문자열

-
-
- +
+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ introduction

String

+

자기소개

문자열

+
+
+ - + - + -
-

3.8. 내 이력서 - 경력 단일 생성

-
-
+
+ -
-

3.8. 내 이력서 - 경력 단일 수정

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

projectName

+

String

기업명(프로젝트명)

문자열

projectRole

+

String

직무(역할)

문자열

startDate

+

String

시작 연도.월

4자리 숫자.2자리 숫자

endDate

+

String

종료 연도.월

4자리 숫자.2자리 숫자

retirement

+

Boolean

+

퇴직 여부

false ⇒ 재직 중

+ antecedentsDescription

String

경력 설명

문자열

+
+ -
-

3.8. 내 이력서 - 경력 단일 삭제

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

projectName

+

String

기업명(프로젝트명)

문자열

projectRole

+

String

직무(역할)

문자열

startDate

+

String

시작 연도.월

4자리 숫자.2자리 숫자

endDate

+

String

종료 연도.월

4자리 숫자.2자리 숫자

retirement

+

Boolean

+

퇴직 여부

false ⇒ 재직 중

+ antecedentsDescription

String

경력 설명

문자열

+ + + + + + + + + + + + + + + + + + +
Table 2. /private/antecedents/{antecedentsId}
ParameterDescription

antecedentsId +

경력 항목 ID

+
+
+

3.8. 내 이력서 - 경력 단일 삭제

+
+
DELETE /private/antecedents/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 3. /private/antecedents/{antecedentsId}
ParameterDescription

antecedentsId

경력 항목 ID

-
-
-

3.9. 내 이력서 - 학력 생성

-
-
-
POST /private/education HTTP/1.1
+                    
+
+ + + + + + + + + + + + + + + + + + +
Table 3. /private/antecedents/{antecedentsId}
ParameterDescription

antecedentsId +

경력 항목 ID

+
+ -
-

3.9. 내 이력서 - 학력 수정

-
-
-
POST /private/education/1 HTTP/1.1
+                    
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

admissionYear +

Number

입학 연도

4자리 숫자

graduationYear +

Number

졸업 연도

4자리 숫자

universityName +

String

학교명

문자열

majorName

+

String

전공명

문자열

degreeName

+

String

학위명

문자열

+
+ -
-

3.9. 내 이력서 - 학력 삭제

-
-
-
DELETE /private/education/1 HTTP/1.1
+                    
+
+ + + + + + + + + + + + + + + + + + +
Table 4. /private/profileEducation/{educationId}
ParameterDescription

educationId

+

학력 항목 ID

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

admissionYear +

Number

입학 연도

4자리 숫자

graduationYear +

Number

졸업 연도

4자리 숫자

universityName +

String

학교명

문자열

majorName

+

String

전공명

문자열

degreeName

+

String

학위명

문자열

+
+
+

3.9. 내 이력서 - 학력 삭제

+
+
+
DELETE /private/profileEducation/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 5. /private/education/{educationId}
ParameterDescription

educationId

학력 항목 ID

-
-
-

3.10. 내 이력서 - 수상 단일 생성

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 5. /private/profileEducation/{educationId}
ParameterDescription

educationId

+

학력 항목 ID

+
+ -
-

3.10. 내 이력서 - 수상 단일 수정

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

awardsName

+

String

수상 부문

문자열

ranking

+

String

수상명

문자열

organizer

+

String

주관 기관

문자열

awardsYear

+

Number

수상 연도

양의 정수이자 4자리 수

awardsMonth

+

Number

수상 월

양의 정수이자 1부터 12까지의 숫자

+

+ awardsDescription

String

수상 항목 설명

문자열

+
+ -
-

3.10. 내 이력서 - 수상 단일 삭제

-
-
-
DELETE /private/awards/1 HTTP/1.1
+                    
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

awardsName

+

String

수상 부문

문자열

ranking

+

String

수상명

문자열

organizer

+

String

주관 기관

문자열

awardsYear

+

Number

수상 연도

양의 정수이자 4자리 수

awardsMonth

+

Number

수상 월

양의 정수이자 1부터 12까지의 숫자

+

+ awardsDescription

String

수상 항목 설명

문자열

+ + + + + + + + + + + + + + + + + + +
Table 6. /private/award/{awardsId}
ParameterDescription

awardsId

+

수상 ID

+
+
+

3.10. 내 이력서 - 수상 단일 삭제 +

+
+
+
DELETE /private/profileAwards/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 7. /private/awards/{awardsId}
ParameterDescription

awardsId

수상 ID

-
-
-

3.11. 내 이력서 - 첨부 URL 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 7. /private/profileAwards/{awardsId}
ParameterDescription

awardsId

+

수상 ID

+
+
+

3.11. 내 이력서 - 첨부 URL + 생성/수정

+
+

요청

+
+
POST /private/attach/url HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -3291,95 +5351,101 @@ 

요청

"attachUrlName" : "노션", "attachUrlPath" : "https://www.notion.no" } ]
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

[].attachUrlName

String

웹 링크 이름

문자열

[].attachUrlPath

String

웹 링크 경로

문자열

-
-
-
-

3.11. 내 이력서 - 첨부 URL 삭제

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ [].attachUrlName

String

+

웹 링크 이름

문자열

+ [].attachUrlPath

String

+

웹 링크 경로

문자열

+
+
+
+

3.11. 내 이력서 - 첨부 URL 삭제 +

+
+

요청

+
+
DELETE /private/attach/url/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 8. /private/attach/url/{attachUrlId}
ParameterDescription

attachUrlId

첨부 URL ID

-
-
-
-
-
-

4. 팀 소개서

-
-
-

4.0. 팀 소개서 - 전체 조회

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 8. /private/attach/url/{attachUrlId}
ParameterDescription

attachUrlId +

첨부 URL ID

+
+
+
+
+
+

4. 팀 소개서

+
+
+

4.0. 팀 소개서 - 전체 조회

+
+

요청

+
+
GET /team/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -3477,277 +5543,379 @@ 

응답

}, "teamProfileEssential" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

teamProfileEssential

Boolean

팀 소개서 기본 항목 존재 여부

teamMiniProfileResponse

Object

팀 미니 프로필 응답 객체

teamMiniProfileResponse.sectorName

String

팀 미니 프로필 분야

teamMiniProfileResponse.sizeType

String

팀 미니 프로필 규모

teamMiniProfileResponse.teamName

String

팀 이름

teamMiniProfileResponse.teamProfileTitle

String

팀 미니 프로필 제목

teamMiniProfileResponse.isTeamActivate

Boolean

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl

String

이미지 파일 소스 경로

teamMiniProfileResponse.teamKeywordNames

Array

팀 소개 항목

teamCompletionResponse

Object

팀 소개서 완성도 응답 객체

teamCompletionResponse.teamCompletion

String

팀 소개서 완성도 % 값

teamCompletionResponse.teamProfileTeamBuildingField

Boolean

희망 팀빌딩 분야 기입 여부

teamCompletionResponse.teamMemberAnnouncement

Boolean

팀원 공고

teamCompletionResponse.activity

Boolean

활동 방식 및 활동 지역 및 위치

teamCompletionResponse.teamIntroduction

Boolean

팀 소개

teamCompletionResponse.teamMemberIntroduction

Boolean

팀원 소개

teamCompletionResponse.history

Boolean

연혁

teamCompletionResponse.teamAttach

Boolean

첨부

teamProfileTeamBuildingFieldResponse

Object

희망 팀빌딩 분야 응답 객체

teamProfileTeamBuildingFieldResponse.teamProfileTeamBuildingFieldNames

Array

희망 팀빌딩 분야 이름

teamMemberAnnouncementResponses

Array

팀원 공고 응답 객체

teamMemberAnnouncementResponses[].id

Number

팀원 공고 응답 객체 ID

teamMemberAnnouncementResponses[].teamName

String

팀 이름

teamMemberAnnouncementResponses[].jobRoleName

String

직무, 역할 이름

teamMemberAnnouncementResponses[].mainBusiness

String

팀원 공고 주요 업무

teamMemberAnnouncementResponses[].skillNames

Array

보유 역량 이름 배열

teamMemberAnnouncementResponses[].applicationProcess

String

지원 절차

activityResponse

Object

활동 방식 및 활동 지역 및 위치 응답 객체

activityResponse.activityTagName

Array

활동 방식

activityResponse.cityName

String

시/도 이름

activityResponse.divisionName

String

시/군/구 이름

teamProfileIntroductionResponse

Object

팀 소개 응답 객체

teamProfileIntroductionResponse.teamIntroduction

String

팀 소개 텍스트

teamMemberIntroductionResponses

Array

팀원 소개 응답 객체

teamMemberIntroductionResponses[].id

Number

팀원 소개 응답 객체 ID

teamMemberIntroductionResponses[].teamMemberName

String

팀원 이름

teamMemberIntroductionResponses[].teamMemberRole

String

팀원 직무/역할

teamMemberIntroductionResponses[].teamMemberIntroductionText

String

팀원 소개 텍스트

historyResponses

Array

연혁 응답 객체

historyResponses[].id

Number

연혁 응답 객체 ID

historyResponses[].historyOneLineIntroduction

String

연혁 한 줄 소개

historyResponses[].startYear

Number

시작 연도

historyResponses[].endYear

Number

종료 연도

historyResponses[].historyIntroduction

String

연혁 소개

historyResponses[].inProgress

Boolean

진행 여부

teamAttachResponse

Object

팀 첨부 응답 객체

teamAttachResponse.teamAttachUrlResponseList[].id

Number

첨부 URL 객체 ID

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlName

String

팀 첨부 URL 이름

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlPath

String

팀 첨부 URL 경로

-
-
-
-

4.1. 팀 소개서 - 팀 미니 프로필 수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

teamProfileEssential +

Boolean

+

팀 소개서 기본 항목 존재 여부

+

teamMiniProfileResponse +

Object

+

팀 미니 프로필 응답 객체

teamMiniProfileResponse.sectorName +

String

+

팀 미니 프로필 분야

teamMiniProfileResponse.sizeType +

String

+

팀 미니 프로필 규모

teamMiniProfileResponse.teamName +

String

+

팀 이름

teamMiniProfileResponse.teamProfileTitle +

String

+

팀 미니 프로필 제목

teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl +

String

+

이미지 파일 소스 경로

teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 소개 항목

teamCompletionResponse +

Object

+

팀 소개서 완성도 응답 객체

teamCompletionResponse.teamCompletion +

String

+

팀 소개서 완성도 % 값

teamCompletionResponse.teamProfileTeamBuildingField +

Boolean

+

희망 팀빌딩 분야 기입 여부

teamCompletionResponse.teamMemberAnnouncement +

Boolean

+

팀원 공고

teamCompletionResponse.activity +

Boolean

+

활동 방식 및 활동 지역 및 위치

+

teamCompletionResponse.teamIntroduction +

Boolean

+

팀 소개

teamCompletionResponse.teamMemberIntroduction +

Boolean

+

팀원 소개

teamCompletionResponse.history +

Boolean

+

연혁

teamCompletionResponse.teamAttach +

Boolean

+

첨부

teamProfileTeamBuildingFieldResponse +

Object

+

희망 팀빌딩 분야 응답 객체

teamProfileTeamBuildingFieldResponse.teamProfileTeamBuildingFieldNames +

Array

+

희망 팀빌딩 분야 이름

teamMemberAnnouncementResponses +

Array

+

팀원 공고 응답 객체

teamMemberAnnouncementResponses[].id +

Number

+

팀원 공고 응답 객체 ID

teamMemberAnnouncementResponses[].teamName +

String

+

팀 이름

teamMemberAnnouncementResponses[].jobRoleName +

String

+

직무, 역할 이름

teamMemberAnnouncementResponses[].mainBusiness +

String

+

팀원 공고 주요 업무

teamMemberAnnouncementResponses[].skillNames +

Array

+

보유 역량 이름 배열

teamMemberAnnouncementResponses[].applicationProcess +

String

+

지원 절차

+ activityResponse

Object

+

활동 방식 및 활동 지역 및 위치 응답 + 객체

activityResponse.activityTagName +

Array

+

활동 방식

activityResponse.cityName +

String

+

시/도 이름

activityResponse.divisionName +

String

+

시/군/구 이름

teamProfileIntroductionResponse +

Object

+

팀 소개 응답 객체

teamProfileIntroductionResponse.teamIntroduction +

String

+

팀 소개 텍스트

teamMemberIntroductionResponses +

Array

+

팀원 소개 응답 객체

teamMemberIntroductionResponses[].id +

Number

+

팀원 소개 응답 객체 ID

teamMemberIntroductionResponses[].teamMemberName +

String

+

팀원 이름

teamMemberIntroductionResponses[].teamMemberRole +

String

+

팀원 직무/역할

teamMemberIntroductionResponses[].teamMemberIntroductionText +

String

+

팀원 소개 텍스트

+ historyResponses

Array

+

연혁 응답 객체

historyResponses[].id +

Number

+

연혁 응답 객체 ID

historyResponses[].historyOneLineIntroduction +

String

+

연혁 한 줄 소개

historyResponses[].startYear +

Number

+

시작 연도

historyResponses[].endYear +

Number

+

종료 연도

historyResponses[].historyIntroduction +

String

+

연혁 소개

historyResponses[].inProgress +

Boolean

+

진행 여부

+ teamAttachResponse

Object

+

팀 첨부 응답 객체

teamAttachResponse.teamAttachUrlResponseList[].id +

Number

+

첨부 URL 객체 ID

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlName +

String

+

팀 첨부 URL 이름

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlPath +

String

+

팀 첨부 URL 경로

+
+
+
+

4.1. 팀 소개서 - 팀 미니 프로필 + 수정

+
+

요청

+
+
POST /update/onBoarding/team/mini-profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -3759,56 +5927,66 @@ 

요청

"sizeType" : "1-5인", "sectorName" : "플랫폼" }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

teamBuildingFieldNames

Null

희망 팀빌딩 분야(7가지 항목)

문자열의 배열

teamName

String

팀이름

문자열

sizeType

String

팀 규모

문자열

sectorName

String

분야 이름

문자열

-
-
-
-

4.4. 팀 소개서 - 희망 팀빌딩 분야 생성/수정

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

teamBuildingFieldNames +

Null

+

희망 팀빌딩 분야(7가지 항목)

+

문자열의 배열

teamName +

String

+

팀이름

문자열

sizeType +

String

+

팀 규모

문자열

sectorName +

String

+

분야 이름

문자열

+
+
+ -
-

4.5. 팀 소개서 - 팀원 공고 단일 생성

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ teamBuildingFieldNames

Array

희망 팀빋딩 분야(7가지 항목)

문자열의 배열

+
+ -
-

4.5. 팀 소개서 - 팀원 공고 단일 수정

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

jobRoleName

+

String

직무/역할 (4가지 항목)

문자열

mainBusiness +

String

주요 업무

문자열

skillNames

+

Array

보유 역량

문자열의 배열

+ applicationProcess

String

지원 절차

문자열

+
+ - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

jobRoleName

+

String

직무/역할 (4가지 항목)

문자열

mainBusiness +

String

주요 업무

문자열

skillNames

+

Array

보유 역량

문자열의 배열

+ applicationProcess

String

지원 절차

문자열

+ + + + + + + + + + + + + + + + + + +
Table 9. /team/member/announcement/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+
+ -
-

요청

-
-
+
+
+

요청

+
+
DELETE /team/members/announcements/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 10. /team/members/announcements/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId

팀원 공고 ID

-
- +
+ + + + + + + + + + + + + + + + + + +
Table 10. /team/members/announcements/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+
+ -
-

4.7. 팀 소개서 - 팀 소개 생성/수정/삭제

-
-

요청

-
-
+
+
+

4.7. 팀 소개서 - 팀 소개 + 생성/수정/삭제

+
+

요청

+
+
POST /team/introduction HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -4035,38 +6230,41 @@ 

요청

{ "teamIntroduction" : "팀 소개 항목을 입력합니다." }
-
-
- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

teamIntroduction

String

팀 소개

문자열, 공란이면 삭제

-
-
-
-

4.8. 팀 소개서 - 팀원 소개 단일 생성

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ teamIntroduction

String

+

팀 소개

문자열, 공란이면 삭제

+
+
+ -
-

4.8. 팀 소개서 - 팀원 소개 단일 수정

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

teamMemberName +

String

팀원 이름

문자열

teamMemberRole +

String

팀원 직무/역할

문자열

teamMemberIntroductionText +

String

팀원 소개

문자열

+
+ -
-

4.8. 팀 소개서 - 팀원 소개 단일 삭제

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

teamMemberName +

String

팀원 이름

문자열

teamMemberRole +

String

팀원 직무/역할

문자열

teamMemberIntroductionText +

String

팀원 소개

문자열

+ + + + + + + + + + + + + + + + + + +
Table 11. /team/member/{teamMemberIntroductionId}
ParameterDescription

teamMemberIntroductionId +

팀원 소개 ID

+
+
+

4.8. 팀 소개서 - 팀원 소개 단일 + 삭제

+
+
DELETE /team/members/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 12. /team/members/{teamMemberIntroductionId}
ParameterDescription

teamMemberIntroductionId

팀원 소개 ID

-
-
-

4.9. 팀 소개서 - 팀 연혁 단일 생성

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 12. /team/members/{teamMemberIntroductionId}
ParameterDescription

teamMemberIntroductionId +

팀원 소개 ID

+
+ -
-

4.9. 팀 소개서 - 팀 연혁 단일 수정

-
-
+} +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

historyOneLineIntroduction +

String

연혁 한 줄 소개

문자열

startYear

+

Number

시작 연도

숫자

endYear

+

Number

종료 연도

숫자

inProgress

+

Boolean

+

현재 진행 여부

boolean

+ historyIntroduction

String

연혁 소개 텍스트

문자열

+
+ -
-

4.9. 팀 소개서 - 팀 연혁 단일 삭제

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

historyOneLineIntroduction +

String

연혁 한 줄 소개

문자열

startYear

+

Number

시작 연도

숫자

endYear

+

Number

종료 연도

숫자

inProgress

+

Boolean

+

현재 진행 여부

boolean

+ historyIntroduction

String

연혁 소개 텍스트

문자열

+ + + + + + + + + + + + + + + + + + +
Table 13. /team/history/{historyId}
ParameterDescription

historyId

+

연혁 ID

+
+
+

4.9. 팀 소개서 - 팀 연혁 단일 삭제 +

+
+
DELETE /team/history/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 14. /team/history/{historyId}
ParameterDescription

historyId

연혁 ID

-
-
-

4.10. 팀 소개서 - 팀 첨부 URL 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 14. /team/history/{historyId}
ParameterDescription

historyId

+

연혁 ID

+
+
+

4.10. 팀 소개서 - 팀 첨부 + URL 생성/수정

+
+

요청

+
+
POST /team/attach/url HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -4419,127 +6645,138 @@ 

요청

"teamAttachUrlName" : "노션", "teamAttachUrlPath" : "https://www.notion.no" } ]
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

[].teamAttachUrlName

String

팀 첨부 웹 링크 이름

문자열

[].teamAttachUrlPath

String

팀 첨부 웹 링크 경로

문자열

-
-
-
-

4.10. 팀 소개서 - 팀 첨부 URL 삭제

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

[].teamAttachUrlName +

String

+

팀 첨부 웹 링크 이름

문자열

[].teamAttachUrlPath +

String

+

팀 첨부 웹 링크 경로

문자열

+
+
+
+

4.10. 팀 소개서 - 팀 첨부 URL + 삭제

+
+

요청

+
+
DELETE /team/attach/url/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 15. /team/attach/url/{teamAttachUrlId}
ParameterDescription

teamAttachUrlId

팀 첨부 URL ID

-
-
-
-
-
-

6. 팀원 찾기

-
-
-

6.1. 팀원 찾기 페이지

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 15. /team/attach/url/{teamAttachUrlId}
ParameterDescription

+ teamAttachUrlId

팀 첨부 URL ID

+
+
+
+
+
+

6. 팀원 찾기

+
+
+

6.1. 팀원 찾기 페이지

+
+

요청

+
+
GET /search/private/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-
-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescription

teamBuildingFieldName

희망 팀빌딩 분야 필터

jobRoleName

직무/역할 필터

skillName

보유 역량 필터

cityName

지역 (시/도) 필터

divisionName

지역 (시/군/구) 필터

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription

teamBuildingFieldName +

희망 팀빌딩 분야 필터

jobRoleName +

직무/역할 필터

skillName +

보유 역량 필터

cityName +

지역 (시/도) 필터

+ divisionName

지역 (시/군/구) 필터

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -4573,202 +6810,252 @@ 

응답

"numberOfElements" : 1, "empty" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

content[].id

Number

개인 미니 프로필 ID

content[].profileTitle

String

프로필 제목

content[].miniProfileImg

String

프로필 이미지 URL

content[].isActivate

Boolean

프로필 활성화 여부

content[].myKeywordNames

Array

키워드 목록

content[].memberName

String

회원 이름

content[].jobRoleNames

Array

직무 및 역할 이름 배열

content[].isPrivateSaved

Boolean

찜하기 여부

pageable

String

페이징 처리 객체

sort.empty

Boolean

정렬 규칙이 비어 있는지 여부

sort.unsorted

Boolean

정렬이 적용되지 않았는지 여부

sort.sorted

Boolean

정렬이 적용되었는지 여부

last

Boolean

마지막 페이지 여부

totalPages

Number

전체 페이지 수

totalElements

Number

전체 요소 수

first

Boolean

첫 페이지 여부

size

Number

페이지당 요소 수

number

Number

페이지 번호

numberOfElements

Number

현재 페이지의 요소 수

empty

Boolean

페이지가 비어 있는지 여부

-
-
-
-

6.2. 로그인 이후 팀원 찾기 페이지

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ content[].id

Number

+

개인 미니 프로필 ID

content[].profileTitle +

String

+

프로필 제목

content[].miniProfileImg +

String

+

프로필 이미지 URL

content[].isActivate +

Boolean

+

프로필 활성화 여부

content[].myKeywordNames +

Array

+

키워드 목록

content[].memberName +

String

+

회원 이름

content[].jobRoleNames +

Array

+

직무 및 역할 이름 배열

content[].isPrivateSaved +

Boolean

+

찜하기 여부

pageable +

String

+

페이징 처리 객체

sort.empty +

Boolean

+

정렬 규칙이 비어 있는지 여부

+

+ sort.unsorted

Boolean

+

정렬이 적용되지 않았는지 여부

+

sort.sorted +

Boolean

+

정렬이 적용되었는지 여부

last

+

Boolean

+

마지막 페이지 여부

totalPages +

Number

+

전체 페이지 수

+ totalElements

Number

+

전체 요소 수

first

+

Boolean

+

첫 페이지 여부

size

+

Number

+

페이지당 요소 수

number

+

Number

+

페이지 번호

+ numberOfElements

Number

+

현재 페이지의 요소 수

empty

+

Boolean

+

페이지가 비어 있는지 여부

+
+
+
+

6.2. 로그인 이후 팀원 찾기 페이지 +

+
+

요청

+
+
GET /search/private/profile/login HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

요청 헤더

-
-

include::/Users/gwondongmin/Desktop/Linkit_Dev/linkit/build/generated-snippets/search-controller-test/get-browse-private-mini-profile/request-headers.adoc -==== 요청 쿠키

-
- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescription

teamBuildingFieldName

희망 팀빌딩 분야 필터

jobRoleName

직무/역할 필터

skillName

보유 역량 필터

cityName

지역 (시/도) 필터

divisionName

지역 (시/군/구) 필터

-
-
-

응답

-
-
+
+
+
+
+

요청 헤더

+
+

+ include::/Users/gwondongmin/Desktop/Linkit_Dev/linkit/build/generated-snippets/search-controller-test/get-browse-private-mini-profile/request-headers.adoc + ==== 요청 쿠키

+
+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription

teamBuildingFieldName +

희망 팀빌딩 분야 필터

jobRoleName +

직무/역할 필터

skillName +

보유 역량 필터

cityName +

지역 (시/도) 필터

+ divisionName

지역 (시/군/구) 필터

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -4802,229 +7089,280 @@ 

응답

"numberOfElements" : 1, "empty" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

content[].id

Number

개인 미니 프로필 ID

content[].profileTitle

String

프로필 제목

content[].miniProfileImg

String

프로필 이미지 URL

content[].isActivate

Boolean

프로필 활성화 여부

content[].myKeywordNames

Array

키워드 목록

content[].memberName

String

회원 이름

content[].jobRoleNames

Array

직무 및 역할 이름 배열

content[].isPrivateSaved

Boolean

로그인 사용자가 해당 프로필 찜한 여부

pageable

String

페이징 처리 객체

sort.empty

Boolean

정렬 규칙이 비어 있는지 여부

sort.unsorted

Boolean

정렬이 적용되지 않았는지 여부

sort.sorted

Boolean

정렬이 적용되었는지 여부

last

Boolean

마지막 페이지 여부

totalPages

Number

전체 페이지 수

totalElements

Number

전체 요소 수

first

Boolean

첫 페이지 여부

size

Number

페이지당 요소 수

number

Number

페이지 번호

numberOfElements

Number

현재 페이지의 요소 수

empty

Boolean

페이지가 비어 있는지 여부

-
-
-
-
-
-

7. 팀 찾기

-
-
-

7.1. 팀 찾기 페이지

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ content[].id

Number

+

개인 미니 프로필 ID

content[].profileTitle +

String

+

프로필 제목

content[].miniProfileImg +

String

+

프로필 이미지 URL

content[].isActivate +

Boolean

+

프로필 활성화 여부

content[].myKeywordNames +

Array

+

키워드 목록

content[].memberName +

String

+

회원 이름

content[].jobRoleNames +

Array

+

직무 및 역할 이름 배열

content[].isPrivateSaved +

Boolean

+

로그인 사용자가 해당 프로필 찜한 + 여부

pageable +

String

+

페이징 처리 객체

sort.empty +

Boolean

+

정렬 규칙이 비어 있는지 여부

+

+ sort.unsorted

Boolean

+

정렬이 적용되지 않았는지 여부

+

sort.sorted +

Boolean

+

정렬이 적용되었는지 여부

last

+

Boolean

+

마지막 페이지 여부

totalPages +

Number

+

전체 페이지 수

+ totalElements

Number

+

전체 요소 수

first

+

Boolean

+

첫 페이지 여부

size

+

Number

+

페이지당 요소 수

number

+

Number

+

페이지 번호

+ numberOfElements

Number

+

현재 페이지의 요소 수

empty

+

Boolean

+

페이지가 비어 있는지 여부

+
+
+
+
+
+

7. 팀 찾기

+
+
+

7.1. 팀 찾기 페이지

+
+

요청

+
+
GET /search/team/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-
-
-
-
-

요청 헤더

- ----- - - - - - - - - - - - - - - -
NameDescriptionConstraint

Authorization

access token

문자열(jwt)

-
-
-

요청 쿠키

- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescription

teamBuildingFieldName

희망 팀빌딩 분야 필터

jobRoleName

직무/역할 필터

skillName

보유 역량 필터

cityName

지역 (시/도) 필터

divisionName

지역 (시/군/구) 필터

activityTagName

활동 방식 필터

-
-
-

응답

-
-
+
+
+
+
+

요청 헤더

+ + + + + + + + + + + + + + + + + + + + +
NameDescriptionConstraint

+ Authorization

access token

문자열(jwt)

+
+
+

요청 쿠키

+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription

teamBuildingFieldName +

희망 팀빌딩 분야 필터

jobRoleName +

직무/역할 필터

skillName +

보유 역량 필터

cityName +

지역 (시/도) 필터

+ divisionName

지역 (시/군/구) 필터

+ activityTagName

활동 방식 필터

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -5070,163 +7408,212 @@ 

응답

"numberOfElements" : 1, "empty" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

content[].teamMiniProfileResponse.id

Number

팀 미니 프로필 ID

content[].teamMiniProfileResponse.sectorName

String

부문 이름

content[].teamMiniProfileResponse.sizeType

String

팀 크기 유형

content[].teamMiniProfileResponse.teamName

String

팀 이름

content[].teamMiniProfileResponse.teamProfileTitle

String

팀 소개서 제목

content[].teamMiniProfileResponse.isTeamActivate

Boolean

팀 소개서 활성화 여부

content[].teamMiniProfileResponse.teamLogoImageUrl

String

팀 로고 이미지 URL

content[].teamMiniProfileResponse.teamKeywordNames

Array

팀 키워드

content[].teamMemberAnnouncementResponse.id

Number

팀원 공고 ID

content[].teamMemberAnnouncementResponse.teamLogoImageUrl

String

팀 로고 이미지 경로

content[].teamMemberAnnouncementResponse.teamName

String

팀 이름

content[].teamMemberAnnouncementResponse.jobRoleName

String

팀원 공고 직무 이름

content[].teamMemberAnnouncementResponse.mainBusiness

String

주요 업무

content[].teamMemberAnnouncementResponse.skillNames

Array

요구되는 기술 목록

content[].teamMemberAnnouncementResponse.applicationProcess

String

지원 절차

content[].teamMemberAnnouncementResponse.isTeamSaved

Boolean

로그인 사용자가 해당 팀원 공고 찜한 여부

last

Boolean

마지막 페이지 여부

totalPages

Number

전체 페이지 수

totalElements

Number

전체 요소 수

first

Boolean

첫 페이지 여부

size

Number

페이지당 요소 수

number

Number

페이지 번호

numberOfElements

Number

현재 페이지의 요소 수

empty

Boolean

페이지가 비어 있는지 여부

-
-
-
-

7.2. 로그인 이후 팀 찾기 페이지

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

content[].teamMiniProfileResponse.id +

Number

+

팀 미니 프로필 ID

content[].teamMiniProfileResponse.sectorName +

String

+

부문 이름

content[].teamMiniProfileResponse.sizeType +

String

+

팀 크기 유형

content[].teamMiniProfileResponse.teamName +

String

+

팀 이름

content[].teamMiniProfileResponse.teamProfileTitle +

String

+

팀 소개서 제목

content[].teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 소개서 활성화 여부

content[].teamMiniProfileResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 URL

content[].teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 키워드

content[].teamMemberAnnouncementResponse.id +

Number

+

팀원 공고 ID

content[].teamMemberAnnouncementResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 경로

content[].teamMemberAnnouncementResponse.teamName +

String

+

팀 이름

content[].teamMemberAnnouncementResponse.jobRoleName +

String

+

팀원 공고 직무 이름

content[].teamMemberAnnouncementResponse.mainBusiness +

String

+

주요 업무

content[].teamMemberAnnouncementResponse.skillNames +

Array

+

요구되는 기술 목록

content[].teamMemberAnnouncementResponse.applicationProcess +

String

+

지원 절차

content[].teamMemberAnnouncementResponse.isTeamSaved +

Boolean

+

로그인 사용자가 해당 팀원 공고 찜한 + 여부

last

+

Boolean

+

마지막 페이지 여부

totalPages +

Number

+

전체 페이지 수

+ totalElements

Number

+

전체 요소 수

first

+

Boolean

+

첫 페이지 여부

size

+

Number

+

페이지당 요소 수

number

+

Number

+

페이지 번호

+ numberOfElements

Number

+

현재 페이지의 요소 수

empty

+

Boolean

+

페이지가 비어 있는지 여부

+
+
+
+

7.2. 로그인 이후 팀 찾기 페이지

+
+

요청

+
+
GET /search/team/profile/login HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -5272,186 +7659,236 @@ 

응답

"numberOfElements" : 1, "empty" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

content[].teamMiniProfileResponse.id

Number

팀 미니 프로필 ID

content[].teamMiniProfileResponse.sectorName

String

부문 이름

content[].teamMiniProfileResponse.sizeType

String

팀 크기 유형

content[].teamMiniProfileResponse.teamName

String

팀 이름

content[].teamMiniProfileResponse.teamProfileTitle

String

팀 소개서 제목

content[].teamMiniProfileResponse.isTeamActivate

Boolean

팀 소개서 활성화 여부

content[].teamMiniProfileResponse.teamLogoImageUrl

String

팀 로고 이미지 URL

content[].teamMiniProfileResponse.teamKeywordNames

Array

팀 키워드

content[].teamMemberAnnouncementResponse.id

Number

팀원 공고 ID

content[].teamMemberAnnouncementResponse.teamLogoImageUrl

String

팀 로고 이미지 경로

content[].teamMemberAnnouncementResponse.teamName

String

팀 이름

content[].teamMemberAnnouncementResponse.jobRoleName

String

팀원 공고 직무 이름

content[].teamMemberAnnouncementResponse.mainBusiness

String

주요 업무

content[].teamMemberAnnouncementResponse.skillNames

Array

요구되는 기술 목록

content[].teamMemberAnnouncementResponse.applicationProcess

String

지원 절차

content[].teamMemberAnnouncementResponse.isTeamSaved

Boolean

로그인 사용자가 해당 팀원 공고 찜한 여부

last

Boolean

마지막 페이지 여부

totalPages

Number

전체 페이지 수

totalElements

Number

전체 요소 수

first

Boolean

첫 페이지 여부

size

Number

페이지당 요소 수

number

Number

페이지 번호

numberOfElements

Number

현재 페이지의 요소 수

empty

Boolean

페이지가 비어 있는지 여부

-
-
-
-
-
-

8. 이력서 열람

-
-
-

8.1. 내 이력서 열람

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

content[].teamMiniProfileResponse.id +

Number

+

팀 미니 프로필 ID

content[].teamMiniProfileResponse.sectorName +

String

+

부문 이름

content[].teamMiniProfileResponse.sizeType +

String

+

팀 크기 유형

content[].teamMiniProfileResponse.teamName +

String

+

팀 이름

content[].teamMiniProfileResponse.teamProfileTitle +

String

+

팀 소개서 제목

content[].teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 소개서 활성화 여부

content[].teamMiniProfileResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 URL

content[].teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 키워드

content[].teamMemberAnnouncementResponse.id +

Number

+

팀원 공고 ID

content[].teamMemberAnnouncementResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 경로

content[].teamMemberAnnouncementResponse.teamName +

String

+

팀 이름

content[].teamMemberAnnouncementResponse.jobRoleName +

String

+

팀원 공고 직무 이름

content[].teamMemberAnnouncementResponse.mainBusiness +

String

+

주요 업무

content[].teamMemberAnnouncementResponse.skillNames +

Array

+

요구되는 기술 목록

content[].teamMemberAnnouncementResponse.applicationProcess +

String

+

지원 절차

content[].teamMemberAnnouncementResponse.isTeamSaved +

Boolean

+

로그인 사용자가 해당 팀원 공고 찜한 + 여부

last

+

Boolean

+

마지막 페이지 여부

totalPages +

Number

+

전체 페이지 수

+ totalElements

Number

+

전체 요소 수

first

+

Boolean

+

첫 페이지 여부

size

+

Number

+

페이지당 요소 수

number

+

Number

+

페이지 번호

+ numberOfElements

Number

+

현재 페이지의 요소 수

empty

+

Boolean

+

페이지가 비어 있는지 여부

+
+
+
+
+
+

8. 이력서 열람

+
+
+

8.1. 내 이력서 열람

+
+

요청

+
+
GET /browse/private/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 16. /browse/private/profile/{miniProfileId}
ParameterDescription

miniProfileId

미니 프로필 ID

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 16. /browse/private/profile/{miniProfileId}
ParameterDescription

+ miniProfileId

미니 프로필 ID

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -5473,12 +7910,12 @@ 

응답

}, "completionResponse" : { "completion" : "100.0", - "awards" : true, + "profileAwards" : true, "profileTeamBuildingField" : true, "profileRegion" : true, "introduction" : true, "antecedents" : true, - "education" : true, + "profileEducation" : true, "profileSkill" : true, "attach" : true }, @@ -5557,336 +7994,446 @@

응답

} ] } }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

profileId

Number

타깃 열람 프로필 ID

miniProfileResponse

Object

사용자의 미니 프로필 정보

miniProfileResponse.profileTitle

String

프로필의 제목

miniProfileResponse.miniProfileImg

String

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames

Array

나를 소개하는 키워드 목록

miniProfileResponse.isActivate

Boolean

미니 프로필 활성화 여부

miniProfileResponse.memberName

String

회원 이름

miniProfileResponse.jobRoleNames

Array

직무 및 역할

completionResponse

Object

프로필의 완성도 정보

completionResponse.completion

String

프로필 완성도 (백분율)

completionResponse.introduction

Boolean

소개의 완성 여부

completionResponse.profileSkill

Boolean

스킬 섹션의 완성 여부

completionResponse.profileTeamBuildingField

Boolean

팀 빌딩 필드의 완성 여부

completionResponse.profileRegion

Boolean

지역 정보의 완성 여부

completionResponse.antecedents

Boolean

이력 사항의 완성 여부

completionResponse.education

Boolean

교육 이력의 완성 여부

completionResponse.awards

Boolean

수상 이력의 완성 여부

completionResponse.attach

Boolean

첨부 파일의 유무

profileIntroductionResponse

Object

프로필 소개

profileIntroductionResponse.introduction

String

소개 내용

jobAndSkillResponse

Object

나의 직무/역할 및 보유 기술 정보

jobAndSkillResponse.jobRoleNames

Array

직무/역할 명칭

jobAndSkillResponse.skillNames

Array

보유 기술 명칭

profileTeamBuildingFieldResponse

Object

팀 빌딩 필드 응답

profileTeamBuildingFieldResponse.teamBuildingFieldNames

Array

팀 빌딩 필드 이름

profileRegionResponse

Object

활동 지역 및 위치 응답

profileRegionResponse.cityName

String

시/도 이름

profileRegionResponse.divisionName

String

시/군/구 이름

antecedentsResponse

Array

과거 경력 정보

antecedentsResponse[].id

Number

경력 ID

antecedentsResponse[].projectName

String

프로젝트 이름

antecedentsResponse[].projectRole

String

프로젝트 역할

antecedentsResponse[].startDate

String

시작 연도/월

antecedentsResponse[].endDate

String

종료 연도/월

antecedentsResponse[].retirement

Boolean

퇴직 여부

educationResponse

Array

교육 이력 정보

educationResponse[].id

Number

교육 이력 ID

educationResponse[].admissionYear

Number

입학 연도

educationResponse[].graduationYear

Number

졸업 연도

educationResponse[].universityName

String

대학교 이름

educationResponse[].majorName

String

전공 이름

educationResponse[].degreeName

String

학위명

awardsResponse

Array

수상 이력 정보

awardsResponse[].id

Number

수상 ID

awardsResponse[].awardsName

String

수상 이름

awardsResponse[].ranking

String

수상 순위

awardsResponse[].organizer

String

주최자

awardsResponse[].awardsYear

Number

수상 연도

awardsResponse[].awardsMonth

Number

수상 월

awardsResponse[].awardsDescription

String

수상 내용

attachResponse

Object

첨부 파일 정보

attachResponse.attachUrlResponseList[].id

Number

첨부 URL ID

attachResponse.attachUrlResponseList[].attachUrlName

String

첨부된 URL 이름

attachResponse.attachUrlResponseList[].attachUrlPath

String

첨부된 URL

-
-
-
-
-
-

9. 소개서 열람

-
-
-

9.1. 팀 소개서 열람

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

profileId +

Number

+

타깃 열람 프로필 ID

miniProfileResponse +

Object

+

사용자의 미니 프로필 정보

miniProfileResponse.profileTitle +

String

+

프로필의 제목

miniProfileResponse.miniProfileImg +

String

+

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames +

Array

+

나를 소개하는 키워드 목록

miniProfileResponse.isActivate +

Boolean

+

미니 프로필 활성화 여부

miniProfileResponse.memberName +

String

+

회원 이름

miniProfileResponse.jobRoleNames +

Array

+

직무 및 역할

+ completionResponse

Object

+

프로필의 완성도 정보

completionResponse.completion +

String

+

프로필 완성도 (백분율)

completionResponse.introduction +

Boolean

+

소개의 완성 여부

completionResponse.profileSkill +

Boolean

+

스킬 섹션의 완성 여부

completionResponse.profileTeamBuildingField +

Boolean

+

팀 빌딩 필드의 완성 여부

completionResponse.profileRegion +

Boolean

+

지역 정보의 완성 여부

completionResponse.antecedents +

Boolean

+

이력 사항의 완성 여부

completionResponse.profileEducation +

Boolean

+

교육 이력의 완성 여부

completionResponse.profileAwards +

Boolean

+

수상 이력의 완성 여부

completionResponse.attach +

Boolean

+

첨부 파일의 유무

profileIntroductionResponse +

Object

+

프로필 소개

profileIntroductionResponse.introduction +

String

+

소개 내용

jobAndSkillResponse +

Object

+

나의 직무/역할 및 보유 기술 정보

+

jobAndSkillResponse.jobRoleNames +

Array

+

직무/역할 명칭

jobAndSkillResponse.skillNames +

Array

+

보유 기술 명칭

profileTeamBuildingFieldResponse +

Object

+

팀 빌딩 필드 응답

profileTeamBuildingFieldResponse.teamBuildingFieldNames +

Array

+

팀 빌딩 필드 이름

profileRegionResponse +

Object

+

활동 지역 및 위치 응답

profileRegionResponse.cityName +

String

+

시/도 이름

profileRegionResponse.divisionName +

String

+

시/군/구 이름

antecedentsResponse +

Array

+

과거 경력 정보

antecedentsResponse[].id +

Number

+

경력 ID

antecedentsResponse[].projectName +

String

+

프로젝트 이름

antecedentsResponse[].projectRole +

String

+

프로젝트 역할

antecedentsResponse[].startDate +

String

+

시작 연도/월

antecedentsResponse[].endDate +

String

+

종료 연도/월

antecedentsResponse[].retirement +

Boolean

+

퇴직 여부

+ educationResponse

Array

+

교육 이력 정보

educationResponse[].id +

Number

+

교육 이력 ID

educationResponse[].admissionYear +

Number

+

입학 연도

educationResponse[].graduationYear +

Number

+

졸업 연도

educationResponse[].universityName +

String

+

대학교 이름

educationResponse[].majorName +

String

+

전공 이름

educationResponse[].degreeName +

String

+

학위명

+ awardsResponse

Array

+

수상 이력 정보

awardsResponse[].id +

Number

+

수상 ID

awardsResponse[].awardsName +

String

+

수상 이름

awardsResponse[].ranking +

String

+

수상 순위

awardsResponse[].organizer +

String

+

주최자

awardsResponse[].awardsYear +

Number

+

수상 연도

awardsResponse[].awardsMonth +

Number

+

수상 월

awardsResponse[].awardsDescription +

String

+

수상 내용

+ attachResponse

Object

+

첨부 파일 정보

attachResponse.attachUrlResponseList[].id +

Number

+

첨부 URL ID

attachResponse.attachUrlResponseList[].attachUrlName +

String

+

첨부된 URL 이름

attachResponse.attachUrlResponseList[].attachUrlPath +

String

+

첨부된 URL

+
+
+
+
+
+

9. 소개서 열람

+
+
+

9.1. 팀 소개서 열람

+
+

요청

+
+
GET /browse/team/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 17. /browse/team/profile/{teamMiniProfileId}
ParameterDescription

teamMiniProfileId

팀 미니 프로필 ID

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 17. /browse/team/profile/{teamMiniProfileId}
ParameterDescription

+ teamMiniProfileId

팀 미니 프로필 ID

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -5984,280 +8531,382 @@ 

응답

} ] } }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

teamProfileId

Number

타깃 열람 팀 소개서 PK ID

teamMiniProfileResponse

Object

팀 미니 프로필 응답 객체

teamMiniProfileResponse.sectorName

String

팀 미니 프로필 분야

teamMiniProfileResponse.sizeType

String

팀 미니 프로필 규모

teamMiniProfileResponse.teamName

String

팀 이름

teamMiniProfileResponse.teamProfileTitle

String

팀 미니 프로필 제목

teamMiniProfileResponse.isTeamActivate

Boolean

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl

String

이미지 파일 소스 경로

teamMiniProfileResponse.teamKeywordNames

Array

팀 소개 항목

teamCompletionResponse

Object

팀 소개서 완성도 응답 객체

teamCompletionResponse.teamCompletion

String

팀 소개서 완성도 % 값

teamCompletionResponse.teamProfileTeamBuildingField

Boolean

희망 팀빌딩 분야 기입 여부

teamCompletionResponse.teamMemberAnnouncement

Boolean

팀원 공고

teamCompletionResponse.activity

Boolean

활동 방식 및 활동 지역 및 위치

teamCompletionResponse.teamIntroduction

Boolean

팀 소개

teamCompletionResponse.teamMemberIntroduction

Boolean

팀원 소개

teamCompletionResponse.history

Boolean

연혁

teamCompletionResponse.teamAttach

Boolean

첨부

teamProfileTeamBuildingFieldResponse

Object

희망 팀빌딩 분야 응답 객체

teamProfileTeamBuildingFieldResponse.teamProfileTeamBuildingFieldNames

Array

희망 팀빌딩 분야 이름

teamMemberAnnouncementResponses

Array

팀원 공고 응답 객체

teamMemberAnnouncementResponses[].id

Number

팀원 공고 응답 객체 ID

teamMemberAnnouncementResponses[].teamName

String

팀 이름

teamMemberAnnouncementResponses[].jobRoleName

String

직무, 역할 이름

teamMemberAnnouncementResponses[].mainBusiness

String

팀원 공고 주요 업무

teamMemberAnnouncementResponses[].skillNames

Array

보유 역량 이름 배열

teamMemberAnnouncementResponses[].applicationProcess

String

지원 절차

activityResponse

Object

활동 방식 및 활동 지역 및 위치 응답 객체

activityResponse.activityTagName

Array

활동 방식

activityResponse.cityName

String

시/도 이름

activityResponse.divisionName

String

시/군/구 이름

teamProfileIntroductionResponse

Object

팀 소개 응답 객체

teamProfileIntroductionResponse.teamIntroduction

String

팀 소개 텍스트

teamMemberIntroductionResponses

Array

팀원 소개 응답 객체

teamMemberIntroductionResponses[].id

Number

팀원 소개 응답 객체 ID

teamMemberIntroductionResponses[].teamMemberName

String

팀원 이름

teamMemberIntroductionResponses[].teamMemberRole

String

팀원 직무/역할

teamMemberIntroductionResponses[].teamMemberIntroductionText

String

팀원 소개 텍스트

historyResponses

Array

연혁 응답 객체

historyResponses[].id

Number

연혁 응답 객체 ID

historyResponses[].historyOneLineIntroduction

String

연혁 한 줄 소개

historyResponses[].startYear

Number

시작 연도

historyResponses[].endYear

Number

종료 연도

historyResponses[].historyIntroduction

String

연혁 소개

historyResponses[].inProgress

Boolean

진행 여부

teamAttachResponse

Object

팀 첨부 응답 객체

teamAttachResponse.teamAttachUrlResponseList[].id

Number

첨부 URL 객체 ID

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlName

String

팀 첨부 URL 이름

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlPath

String

팀 첨부 URL 경로

-
-
-
-
-
-

10. 매칭 관리

-
-
-

10.1. 내 이력서로 내 이력서에 매칭 요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ teamProfileId

Number

+

타깃 열람 팀 소개서 PK ID

+

teamMiniProfileResponse +

Object

+

팀 미니 프로필 응답 객체

teamMiniProfileResponse.sectorName +

String

+

팀 미니 프로필 분야

teamMiniProfileResponse.sizeType +

String

+

팀 미니 프로필 규모

teamMiniProfileResponse.teamName +

String

+

팀 이름

teamMiniProfileResponse.teamProfileTitle +

String

+

팀 미니 프로필 제목

teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl +

String

+

이미지 파일 소스 경로

teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 소개 항목

teamCompletionResponse +

Object

+

팀 소개서 완성도 응답 객체

teamCompletionResponse.teamCompletion +

String

+

팀 소개서 완성도 % 값

teamCompletionResponse.teamProfileTeamBuildingField +

Boolean

+

희망 팀빌딩 분야 기입 여부

teamCompletionResponse.teamMemberAnnouncement +

Boolean

+

팀원 공고

teamCompletionResponse.activity +

Boolean

+

활동 방식 및 활동 지역 및 위치

+

teamCompletionResponse.teamIntroduction +

Boolean

+

팀 소개

teamCompletionResponse.teamMemberIntroduction +

Boolean

+

팀원 소개

teamCompletionResponse.history +

Boolean

+

연혁

teamCompletionResponse.teamAttach +

Boolean

+

첨부

teamProfileTeamBuildingFieldResponse +

Object

+

희망 팀빌딩 분야 응답 객체

teamProfileTeamBuildingFieldResponse.teamProfileTeamBuildingFieldNames +

Array

+

희망 팀빌딩 분야 이름

teamMemberAnnouncementResponses +

Array

+

팀원 공고 응답 객체

teamMemberAnnouncementResponses[].id +

Number

+

팀원 공고 응답 객체 ID

teamMemberAnnouncementResponses[].teamName +

String

+

팀 이름

teamMemberAnnouncementResponses[].jobRoleName +

String

+

직무, 역할 이름

teamMemberAnnouncementResponses[].mainBusiness +

String

+

팀원 공고 주요 업무

teamMemberAnnouncementResponses[].skillNames +

Array

+

보유 역량 이름 배열

teamMemberAnnouncementResponses[].applicationProcess +

String

+

지원 절차

+ activityResponse

Object

+

활동 방식 및 활동 지역 및 위치 응답 + 객체

activityResponse.activityTagName +

Array

+

활동 방식

activityResponse.cityName +

String

+

시/도 이름

activityResponse.divisionName +

String

+

시/군/구 이름

teamProfileIntroductionResponse +

Object

+

팀 소개 응답 객체

teamProfileIntroductionResponse.teamIntroduction +

String

+

팀 소개 텍스트

teamMemberIntroductionResponses +

Array

+

팀원 소개 응답 객체

teamMemberIntroductionResponses[].id +

Number

+

팀원 소개 응답 객체 ID

teamMemberIntroductionResponses[].teamMemberName +

String

+

팀원 이름

teamMemberIntroductionResponses[].teamMemberRole +

String

+

팀원 직무/역할

teamMemberIntroductionResponses[].teamMemberIntroductionText +

String

+

팀원 소개 텍스트

+ historyResponses

Array

+

연혁 응답 객체

historyResponses[].id +

Number

+

연혁 응답 객체 ID

historyResponses[].historyOneLineIntroduction +

String

+

연혁 한 줄 소개

historyResponses[].startYear +

Number

+

시작 연도

historyResponses[].endYear +

Number

+

종료 연도

historyResponses[].historyIntroduction +

String

+

연혁 소개

historyResponses[].inProgress +

Boolean

+

진행 여부

+ teamAttachResponse

Object

+

팀 첨부 응답 객체

teamAttachResponse.teamAttachUrlResponseList[].id +

Number

+

첨부 URL 객체 ID

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlName +

String

+

팀 첨부 URL 이름

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlPath +

String

+

팀 첨부 URL 경로

+
+
+
+
+
+

10. 매칭 관리

+
+ -
-

10.2. 팀 소개서로 내 이력서에 매칭 요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 18. /private/profile/matching/private/{profileId}
ParameterDescription

profileId

+

내 이력서 ID

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

requestMessage +

String

요청 메시지입니다.

문자열

+
+ -
-

10.3. 팀 소개서로 팀 소개서에 매칭 요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 19. /team/profile/matching/private/{profileId}
ParameterDescription

profileId

+

내 이력서 ID

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

requestMessage +

String

요청 메시지입니다.

문자열

+
+ -
-

10.4. 내 이력서로 팀 소개서에 매칭 요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 20. /team/profile/matching/team/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

requestMessage +

String

요청 메시지입니다.

문자열

+
+ -
-

10.5. 내가 받은 매칭 조회

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 21. /private/profile/matching/team/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

requestMessage +

String

요청 메시지입니다.

문자열

+
+ -
-

10.6. 내가 보낸 매칭

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

[].profileId +

Number

miniProfileId / + teamMiniProfileId → senderType에 따라 프론트에서 처리 바람 → senderType == team 이면 + teamMiniProfileId로, Privated이면 miniProfile로

+ [].receivedMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

+

+ [].miniProfileImg

String

발신자 프로필 이미지

[].senderName +

String

발신자 이름

+ [].requestMessage

String

매칭 요청 메시지

+ [].requestOccurTime

String

매칭 요청 발생 날짜

[].senderType +

String

발신자 이력/소개서 타입

[].matchingType +

String

매칭 요청 타입

+ [].receivedTeamProfile

Boolean

+

이력/소개서 수신 여부

+ [].isReceiverCheck

Boolean

+

수신자가 확인했는지 여부

+
+ -
-

10.7. 성사된 매칭

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ [].requestMatchingId

Number

매칭 요청 보낸 항목 PK ID

+ [].miniProfileImg

String

발신자 프로필 이미지

[].receiverName +

String

발신자 이름

+ [].requestMessage

String

매칭 요청 메시지

+ [].requestOccurTime

String

매칭 요청 발생 날짜

[].senderType +

String

발신자 요청 타입

[].matchingType +

String

매칭 요청 타입

+ [].requestTeamProfile

Boolean

+

이력/소개서 발신 여부

+
+ -
-

10.8. 매칭 보낼 프로필 선택 true/false

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

[]

Array

모든 성사 매칭 배열

[].successMatchingMemberName +

String

매칭 성사자 이름/팀명

+ [].requestMessage

String

매칭 요청 메시지

+ [].requestOccurTime

String

매칭 요청 발생 시간

+
+
+

10.8. 매칭 보낼 + 프로필 선택 true/false

+
+

요청

+
+
GET /existence/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -6869,71 +9557,81 @@ 

응답

"isPrivateProfileMatchingAllow" : true, "isTeamProfileMatchingAllow" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

isPrivateProfileMatchingAllow

Boolean

내 이력서로 매칭 요청 가능 여부 true → 80% 이상

isTeamProfileMatchingAllow

Boolean

팀 소개서로 매칭 요청 가능 여부 true → 80% 이상

-
-
-
-

10.9. 내가 받은 매칭 요청 & 개별 조회 / sender_type = Private / receivedTeamProfile = false

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

isPrivateProfileMatchingAllow +

Boolean

+

내 이력서로 매칭 요청 가능 여부 true + → 80% 이상

isTeamProfileMatchingAllow +

Boolean

+

팀 소개서로 매칭 요청 가능 여부 true + → 80% 이상

+
+
+
+

10.9. + 내가 받은 매칭 요청 & 개별 조회 / sender_type = Private / receivedTeamProfile = false

+
+

요청

+
+
GET /received/private_to_private/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 22. /received/private_to_private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 22. /received/private_to_private/matching/{privateMatchingId} +
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -6948,86 +9646,101 @@ 

응답

"requestMessage" : "권동민님이 나의 내 이력서에 보낸 매칭 요청 메시지입니다.", "receivedTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

receivedMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

senderName

String

발신자 이름

jobRoleNames

Array

발신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

receivedTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.10. 내가 받은 매칭 요청 / sender_type = Team / receivedTeamProfile = false

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ receivedMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

senderName +

String

+

발신자 이름

+ jobRoleNames

Array

+

발신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

receivedTeamProfile +

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.10. + 내가 받은 매칭 요청 / sender_type = Team / receivedTeamProfile = false

+
+

요청

+
+
GET /received/team_to_private/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 23. /received/team_to_private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 23. /received/team_to_private/matching/{privateMatchingId} +
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7042,86 +9755,100 @@ 

응답

"requestMessage" : "권동민님이 나의 내 이력서에 보낸 매칭 요청 메시지입니다.", "receivedTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

receivedMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

senderName

String

발신자 이름

jobRoleNames

Array

발신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

receivedTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.11. 내가 받은 매칭 요청 / sender_type = private / receivedTeamProfile = true

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ receivedMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

senderName +

String

+

발신자 이름

+ jobRoleNames

Array

+

발신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

receivedTeamProfile +

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.11. + 내가 받은 매칭 요청 / sender_type = private / receivedTeamProfile = true

+
+

요청

+
+
GET /received/team_to_team/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 24. /received/team_to_team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 24. /received/team_to_team/matching/{teamMatchingId}
ParameterDescription

+ teamMatchingId

팀 소개서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7136,86 +9863,101 @@ 

응답

"requestMessage" : "권동민님이 나의 팀 소개서에 보낸 매칭 요청 메시지입니다.", "receivedTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

receivedMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

senderName

String

발신자 이름

jobRoleNames

Array

발신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

receivedTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.12. 내가 보낸 매칭 요청 / sender_type = private / requestTeamProfile = false

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ receivedMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

senderName +

String

+

발신자 이름

+ jobRoleNames

Array

+

발신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

receivedTeamProfile +

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.12. + 내가 보낸 매칭 요청 / sender_type = private / requestTeamProfile = false

+
+

요청

+
+
GET /request/private_to_private/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 25. /request/private_to_private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 25. /request/private_to_private/matching/{privateMatchingId} +
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7231,91 +9973,107 @@ 

응답

"senderType" : "PRIVATE", "requestTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

requestMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

receiverName

String

발신자 이름

jobRoleNames

Array

발신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

senderType

String

발신자 타입

requestTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.13. 내가 보낸 매칭 요청 / sender_type = Team / requestTeamProfile = false

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ requestMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

+ receiverName

String

+

발신자 이름

+ jobRoleNames

Array

+

발신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

senderType +

String

+

발신자 타입

+ requestTeamProfile

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.13. + 내가 보낸 매칭 요청 / sender_type = Team / requestTeamProfile = false

+
+

요청

+
+
GET /request/team_to_private/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 26. /request/team_to_private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 26. /request/team_to_private/matching/{privateMatchingId}
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7331,91 +10089,107 @@ 

응답

"senderType" : "TEAM", "requestTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

requestMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

receiverName

String

수신자 이름

jobRoleNames

Array

수신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

senderType

String

발신자 타입

requestTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.14. 내가 보낸 매칭 요청 / sender_type = private / requestTeamProfile = true

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ requestMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

+ receiverName

String

+

수신자 이름

+ jobRoleNames

Array

+

수신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

senderType +

String

+

발신자 타입

+ requestTeamProfile

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.14. + 내가 보낸 매칭 요청 / sender_type = private / requestTeamProfile = true

+
+

요청

+
+
GET /received/team_to_team/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 27. /received/team_to_team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 27. /received/team_to_team/matching/{teamMatchingId}
ParameterDescription

+ teamMatchingId

팀 소개서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7430,57 +10204,70 @@ 

응답

"requestMessage" : "권동민님이 나의 팀 소개서에 보낸 매칭 요청 메시지입니다.", "receivedTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

receivedMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

senderName

String

발신자 이름

jobRoleNames

Array

발신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

receivedTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.15. 내 이력서 관련 (receivedTeamProfile = false) - 내가 받은 매칭 요청 → 수락/거절 선택

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ receivedMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

senderName +

String

+

발신자 이름

+ jobRoleNames

Array

+

발신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

receivedTeamProfile +

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.15. + 내 이력서 관련 (receivedTeamProfile = false) - 내가 받은 매칭 요청 → 수락/거절 선택

+
+

요청

+
+
POST /allow/private/matching/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -7489,59 +10276,65 @@ 

요청

{ "isAllowMatching" : true }
-
-
- - ---- - - - - - - - - - - - - -
Table 28. /allow/private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

isAllowMatching

Boolean

매칭 요청 수락 여부 (true) → 수락하기

-
-
-
-

10.16. 팀 소개서 관련 (receivedTeamProfile = true) - 내가 받은 매칭 요청 → 수락/거절 선택

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 28. /allow/private/matching/{privateMatchingId}
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ isAllowMatching

Boolean

+

매칭 요청 수락 여부 (true) + → 수락하기

+
+
+
+

10.16. + 팀 소개서 관련 (receivedTeamProfile = true) - 내가 받은 매칭 요청 → 수락/거절 선택

+
+

요청

+
+
POST /allow/team/matching/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -7550,88 +10343,94 @@ 

요청

{ "isAllowMatching" : true }
-
-
- - ---- - - - - - - - - - - - - -
Table 29. /allow/team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 대상 매칭 PK

- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

isAllowMatching

Boolean

매칭 요청 수락 여부 (true) → 수락하기

-
-
-
-

10.17. 매칭 성사 / 연락하기 버튼 클릭 / 내 이력서인 경우

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 29. /allow/team/matching/{teamMatchingId}
ParameterDescription

+ teamMatchingId

팀 소개서 대상 매칭 PK

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ isAllowMatching

Boolean

+

매칭 요청 수락 여부 (true) + → 수락하기

+
+
+
+

10.17. + 매칭 성사 / 연락하기 버튼 클릭 / 내 이력서인 경우

+
+

요청

+
+
GET /success/private/matching/contact/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 30. /success/private/matching/contact/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 30. /success/private/matching/contact/{privateMatchingId}
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7643,71 +10442,77 @@ 

응답

"memberName" : "권동민", "email" : "kwondm7@naver.com" }
-
-
- ----- - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

memberName

String

매칭 대상자 연락처

email

String

이메일

-
-
-
-

10.18. 매칭 성사 / 연락하기 버튼 클릭 / 팀 소개서인 경우

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

memberName +

String

+

매칭 대상자 연락처

email

+

String

+

이메일

+
+
+
+

10.18. + 매칭 성사 / 연락하기 버튼 클릭 / 팀 소개서인 경우

+
+

요청

+
+
GET /success/team/matching/contact/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 31. /success/team/matching/contact/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 31. /success/team/matching/contact/{teamMatchingId}
ParameterDescription

+ teamMatchingId

팀 소개서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7719,312 +10524,336 @@ 

응답

"memberName" : "링킷", "email" : "kwondm7@linkit.im" }
-
-
- ----- - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

memberName

String

매칭 대상자 연락처

email

String

이메일

-
-
-
-

10.19. 내가 보낸 매칭 - 매칭 삭제 (matchingType: PROFILE)

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

memberName +

String

+

매칭 대상자 연락처

email

+

String

+

이메일

+
+
+
+

10.19. + 내가 보낸 매칭 - 매칭 삭제 (matchingType: PROFILE)

+
+

요청

+
+
DELETE /delete/request/private/matching/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 32. /delete/request/private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 ID

-
-
-
-

10.20. 내가 보낸 매칭 - 매칭 삭제 (matchingType: TEAM_PROFILE)

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 32. /delete/request/private/matching/{privateMatchingId}
ParameterDescription

+ privateMatchingId

내 이력서 ID

+
+
+
+

10.20. + 내가 보낸 매칭 - 매칭 삭제 (matchingType: TEAM_PROFILE)

+
+

요청

+
+
DELETE /delete/request/team/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 33. /delete/request/team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 ID

-
-
-
-

10.21. 성사된 매칭 - 매칭 삭제 (matchingType: PROFILE)

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 33. /delete/request/team/matching/{teamMatchingId}
ParameterDescription

+ teamMatchingId

팀 소개서 ID

+
+
+
+

10.21. + 성사된 매칭 - 매칭 삭제 (matchingType: PROFILE)

+
+

요청

+
+
DELETE /delete/success/private/matching/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 34. /delete/success/private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 ID

-
-
-
-

10.22. 성사된 매칭 - 매칭 삭제 (matchingType: TEAM_PROFILE)

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 34. /delete/success/private/matching/{privateMatchingId}
ParameterDescription

+ privateMatchingId

내 이력서 ID

+
+
+
+

10.22. + 성사된 매칭 - 매칭 삭제 (matchingType: TEAM_PROFILE)

+
+
DELETE /delete/request/team/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 35. /delete/request/team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 ID

-
-
-
-
-

11. 찜하기

-
-
-

11.1. 내 이력서 (미니 프로필 ID) 찜하기 생성

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 35. /delete/request/team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId +

팀 소개서 ID

+
+
+
+
+

11. 찜하기

+
+
+

11.1. 내 이력서 + (미니 프로필 ID) 찜하기 생성

+
+

요청

+
+
POST /wish/private/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
 Content-Type: application/x-www-form-urlencoded
-
-
- - ---- - - - - - - - - - - - - -
Table 36. /wish/private/profile/{miniProfileId}
ParameterDescription

miniProfileId

미니 프로필 ID

-
-
-
-

11.2. 팀 소개서 (팀원 공고 ID) 찜하기 생성

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 36. /wish/private/profile/{miniProfileId}
ParameterDescription

+ miniProfileId

미니 프로필 ID

+
+
+
+

11.2. 팀 소개서 (팀원 + 공고 ID) 찜하기 생성

+
+

요청

+
+
POST /wish/team/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
 Content-Type: application/x-www-form-urlencoded
-
-
- - ---- - - - - - - - - - - - - -
Table 37. /wish/team/profile/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId

팀원 공고 ID

-
-
-
-

11.3. 내 이력서 (미니 프로필 ID) 찜하기 취소

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 37. /wish/team/profile/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+
+
+
+

11.3. 내 이력서 + (미니 프로필 ID) 찜하기 취소

+
+

요청

+
+
DELETE /wish/private/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 38. /wish/private/profile/{miniProfileId}
ParameterDescription

miniProfileId

미니 프로필 ID

-
-
-
-

11.4. 팀 소개서 (팀원 공고 ID) 찜하기 취소

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 38. /wish/private/profile/{miniProfileId}
ParameterDescription

+ miniProfileId

미니 프로필 ID

+
+
+
+

11.4. 팀 소개서 (팀원 + 공고 ID) 찜하기 취소

+
+
DELETE /wish/team/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 39. /wish/team/profile/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId

팀원 공고 ID

-
-
-

11.5. 내 이력서 찜한 목록 조회

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 39. /wish/team/profile/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+
+
+

11.5. 내 이력서 찜한 목록 조회

+
+

요청

+
+
GET /wish/private/profile/list HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -8051,83 +10880,99 @@ 

응답

"jobRoleNames" : [ "개발·데이터" ], "isPrivateSaved" : true } ]
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

[].id

Number

미니 프로필 ID

[].profileTitle

String

프로필의 제목

[].miniProfileImg

String

미니 프로필 이미지 URL

[].myKeywordNames

Array

나를 소개하는 키워드 목록

[].isActivate

Boolean

미니 프로필 활성화 여부

[].memberName

String

회원 이름

[].jobRoleNames

Array

직무 및 역할

[].isPrivateSaved

Boolean

찜 여부

-
-
-
-

11.6. 팀 소개서 찜한 목록 조회

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

[].id

+

Number

+

미니 프로필 ID

+ [].profileTitle

String

+

프로필의 제목

+ [].miniProfileImg

String

+

미니 프로필 이미지 URL

+ [].myKeywordNames

Array

+

나를 소개하는 키워드 목록

+ [].isActivate

Boolean

+

미니 프로필 활성화 여부

+ [].memberName

String

+

회원 이름

+ [].jobRoleNames

Array

+

직무 및 역할

+ [].isPrivateSaved

Boolean

+

찜 여부

+
+
+
+

11.6. 팀 소개서 찜한 목록 조회

+
+

요청

+
+
GET /wish/team/profile/list HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -8178,183 +11023,217 @@ 

응답

"isTeamSaved" : true } } ]
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

[].teamMiniProfileResponse.id

Number

팀 미니 프로필 ID

[].teamMiniProfileResponse.sectorName

String

산업 분야

[].teamMiniProfileResponse.sizeType

String

팀 규모

[].teamMiniProfileResponse.teamName

String

팀 이름

[].teamMiniProfileResponse.teamProfileTitle

String

팀 프로필 제목

[].teamMiniProfileResponse.isTeamActivate

Boolean

팀 활성화 상태

[].teamMiniProfileResponse.teamLogoImageUrl

String

팀 로고 이미지 URL

[].teamMiniProfileResponse.teamKeywordNames

Array

팀 키워드 목록

[].teamMemberAnnouncementResponse.id

Number

팀원 공고 ID

[].teamMemberAnnouncementResponse.teamLogoImageUrl

String

팀 로고 이미지 경로

[].teamMemberAnnouncementResponse.teamName

String

공고에 대한 팀 이름

[].teamMemberAnnouncementResponse.jobRoleName

String

직무 이름

[].teamMemberAnnouncementResponse.mainBusiness

String

주요 업무 내용

[].teamMemberAnnouncementResponse.skillNames

Array

필요 기술 목록

[].teamMemberAnnouncementResponse.applicationProcess

String

지원 절차 설명

[].teamMemberAnnouncementResponse.isTeamSaved

Boolean

팀 찜 여부

-
-
-
-
-
-

12. 설정

-
-
-

회원 탈퇴

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

[].teamMiniProfileResponse.id +

Number

+

팀 미니 프로필 ID

[].teamMiniProfileResponse.sectorName +

String

+

산업 분야

[].teamMiniProfileResponse.sizeType +

String

+

팀 규모

[].teamMiniProfileResponse.teamName +

String

+

팀 이름

[].teamMiniProfileResponse.teamProfileTitle +

String

+

팀 프로필 제목

[].teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 활성화 상태

[].teamMiniProfileResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 URL

[].teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 키워드 목록

[].teamMemberAnnouncementResponse.id +

Number

+

팀원 공고 ID

[].teamMemberAnnouncementResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 경로

[].teamMemberAnnouncementResponse.teamName +

String

+

공고에 대한 팀 이름

[].teamMemberAnnouncementResponse.jobRoleName +

String

+

직무 이름

[].teamMemberAnnouncementResponse.mainBusiness +

String

+

주요 업무 내용

[].teamMemberAnnouncementResponse.skillNames +

Array

+

필요 기술 목록

[].teamMemberAnnouncementResponse.applicationProcess +

String

+

지원 절차 설명

[].teamMemberAnnouncementResponse.isTeamSaved +

Boolean

+

팀 찜 여부

+
+
+
+
+
+

12. 설정

+
+
+

회원 탈퇴

+
+

요청

+
+
DELETE /account HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-

요청 헤더

-
- ----- - - - - - - - - - - - - - - -
NameDescriptionConstraint

Authorization

access token

문자열(jwt)

-
-

요청 쿠키

-
- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

응답

-
-
+
+
+
+

요청 헤더

+
+ + + + + + + + + + + + + + + + + + + + +
NameDescriptionConstraint

+ Authorization

access token

문자열(jwt)

+
+

요청 쿠키

+
+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+
+
+

응답

+
+
HTTP/1.1 204 No Content
 Vary: Origin
 Vary: Access-Control-Request-Method
 Vary: Access-Control-Request-Headers
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -8369,194 +11248,215 @@ 

응답

"email" : "kwondm7@naver.com", "marketingAgree" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

멤버 기본 정보 ID

memberName

String

성함

contact

String

연락처

email

String

이메일

marketingAgree

Boolean

마케팅 수신 동의 여부

-
-
-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

id

Number

+

멤버 기본 정보 ID

memberName +

String

+

성함

contact

+

String

+

연락처

email

+

String

+

이메일

+ marketingAgree

Boolean

+

마케팅 수신 동의 여부

+
+
+
+
- \ No newline at end of file + diff --git a/src/docs/asciidoc/docs.adoc b/src/docs/asciidoc/docs.adoc index 87c014a5..bdf0f877 100644 --- a/src/docs/asciidoc/docs.adoc +++ b/src/docs/asciidoc/docs.adoc @@ -4,532 +4,732 @@ :sectlinks: == 링킷 개발용 API 서버 도메인 네임 = https://dev.linkit.im + == 링킷 운영용 API 서버 도메인 네임 = https://api.linkit.im == 1. 회원관리 + === 1.2.1. 간편로그인 [각 플랫폼 동일] + ==== 요청 + include::{snippets}/login-controller-test/login/http-request.adoc[] include::{snippets}/login-controller-test/login/path-parameters.adoc[] include::{snippets}/login-controller-test/login/request-fields.adoc[] + ==== 응답 + include::{snippets}/login-controller-test/login/http-response.adoc[] include::{snippets}/login-controller-test/login/response-fields.adoc[] === 1.2.1. 토큰 재발급 + ==== 요청 + include::{snippets}/login-controller-test/extend-login/http-request.adoc[] + 요청 쿠키 + include::{snippets}/login-controller-test/extend-login/request-cookies.adoc[] ==== 응답 + include::{snippets}/login-controller-test/extend-login/http-response.adoc[] include::{snippets}/login-controller-test/extend-login/response-fields.adoc[] === 1.2.1. 로그아웃 + ==== 요청 + include::{snippets}/login-controller-test/logout/http-request.adoc[] + 요청 헤더 + include::{snippets}/login-controller-test/logout/request-headers.adoc[] + 요청 쿠키 + include::{snippets}/login-controller-test/logout/request-cookies.adoc[] ==== 응답 + include::{snippets}/login-controller-test/logout/http-response.adoc[] == 1.4. 정보 기입 + === 1.4.1. 개인정보 기입 (기본 정보) + ==== 요청 + include::{snippets}/member-controller-test/create-member-basic-inform/http-request.adoc[] include::{snippets}/member-controller-test/create-member-basic-inform/request-fields.adoc[] + 요청 헤더 + include::{snippets}/member-controller-test/create-member-basic-inform/request-headers.adoc[] + 요청 쿠키 + include::{snippets}/member-controller-test/create-member-basic-inform/request-cookies.adoc[] ==== 응답 + include::{snippets}/member-controller-test/create-member-basic-inform/http-response.adoc[] === 1.4.2. 개인정보 조회 (기본 정보) + ==== 요청 + include::{snippets}/member-controller-test/get-member-basic-inform/http-request.adoc[] ==== 응답 + include::{snippets}/member-controller-test/get-member-basic-inform/http-response.adoc[] include::{snippets}/member-controller-test/get-member-basic-inform/response-fields.adoc[] == 1.5.1.온보딩 - 내 이력서 - 전체 조회 + ==== 요청 + include::{snippets}/profile-on-boarding-controller-test/get-on-boarding-profile/http-request.adoc[] + ==== 응답 + include::{snippets}/profile-on-boarding-controller-test/get-on-boarding-profile/http-response.adoc[] include::{snippets}/profile-on-boarding-controller-test/get-on-boarding-profile/response-fields.adoc[] === 1.5.2. 온보딩 - 내 이력서 - 희망 팀빌딩 분야 생성/수정 + ==== 요청 + include::{snippets}/team-building-field-controller-test/create-profile-team-building-field/http-request.adoc[] include::{snippets}/team-building-field-controller-test/create-profile-team-building-field/request-fields.adoc[] === 1.5.3. 온보딩 - 내 이력서 - 활동 지역 및 위치 생성/수정 + ==== 요청 + include::{snippets}/region-controller-test/create-profile-region/http-request.adoc[] include::{snippets}/region-controller-test/create-profile-region/request-fields.adoc[] === 1.5.4. 온보딩 - 내 이력서 - 희망 역할, 보유 기술 생성/수정 + ==== 요청 + include::{snippets}/profile-on-boarding-controller-test/create-on-boarding-personal-job-and-skill/http-request.adoc[] include::{snippets}/profile-on-boarding-controller-test/create-on-boarding-personal-job-and-skill/request-fields.adoc[] === 1.5.5. 온보딩 - 내 이력서 - 학력 생성/수정 + ==== 요청 -include::{snippets}/education-controller-test/create-education/http-request.adoc[] -include::{snippets}/education-controller-test/create-education/request-fields.adoc[] + +include::{snippets}/profileEducation-controller-test/create-profileEducation/http-request.adoc[] +include::{snippets}/profileEducation-controller-test/create-profileEducation/request-fields.adoc[] === 1.5.6. 온보딩 - 내 이력서 - 경력 생성 + ==== 요청 + include::{snippets}/antecedents-controller-test/create-antecedent/http-request.adoc[] include::{snippets}/antecedents-controller-test/create-antecedent/request-fields.adoc[] === 1.5.6. 온보딩 - 내 이력서 - 미니 프로필 생성 + ==== 요청 + include::{snippets}/mini-profile-controller-test/create-mini-profile/http-request.adoc[] include::{snippets}/mini-profile-controller-test/create-mini-profile/request-parts.adoc[] include::{snippets}/mini-profile-controller-test/create-mini-profile/request-part-miniProfileRequest-fields.adoc[] == 1.5. 팀 소개서 온보딩 가이드 기입 + === 1.5.1. 내 이력서 / 팀 소개서 구분 중 팀 소개서 온보딩 항목 조회 + ==== 요청 + include::{snippets}/team-on-boarding-controller-test/get-on-boarding-team-profile/http-request.adoc[] ==== 응답 + include::{snippets}/team-on-boarding-controller-test/get-on-boarding-team-profile/http-response.adoc[] include::{snippets}/team-on-boarding-controller-test/get-on-boarding-team-profile/response-fields.adoc[] === 1.5.9. 팀 소개서 희망 팀빌딩 분야 및 팀 기본 정보 생성/수정 + ==== 요청 + include::{snippets}/team-on-boarding-controller-test/post-on-boarding-field-team-inform/http-request.adoc[] include::{snippets}/team-on-boarding-controller-test/post-on-boarding-field-team-inform/request-fields.adoc[] === 1.5.10. 팀 소개서 활동방식 및 활동 지역 및 위치 생성/수정 + ==== 요청 + include::{snippets}/activity-controller-test/post-activity/http-request.adoc[] include::{snippets}/activity-controller-test/post-activity/request-fields.adoc[] === 1.5.11. 팀 소개서 팀 미니 프로필 생성/수정 + ==== 요청 + include::{snippets}/team-mini-profile-controller-test/create-team-mini-profile/http-request.adoc[] include::{snippets}/team-mini-profile-controller-test/create-team-mini-profile/request-parts.adoc[] include::{snippets}/team-mini-profile-controller-test/create-team-mini-profile/request-part-teamMiniProfileCreateRequest-fields.adoc[] == 3. 내 이력서 + === 3.0. 내 이력서 - 전체 조회 + ==== 요청 + include::{snippets}/profile-controller-test/get-profile/http-request.adoc[] + ==== 응답 + include::{snippets}/profile-controller-test/get-profile/http-response.adoc[] include::{snippets}/profile-controller-test/get-profile/response-fields.adoc[] === 3.1. 내 이력서 - 미니 프로필 수정 + ==== 요청 + include::{snippets}/mini-profile-controller-test/update-mini-profile/http-request.adoc[] include::{snippets}/mini-profile-controller-test/update-mini-profile/request-parts.adoc[] include::{snippets}/mini-profile-controller-test/update-mini-profile/request-part-miniProfileRequest-fields.adoc[] === 3.4. 내 이력서 - 자기소개 생성/수정 + ==== 요청 + include::{snippets}/profile-controller-test/create-profile-introduction/http-request.adoc[] include::{snippets}/profile-controller-test/create-profile-introduction/request-fields.adoc[] === 3.5. 내 이력서 - 희망 역할 및 보유 기술 생성/수정 + === 3.6. 내 이력서 - 희망 팀빌딩 분야 생성/수정 (온보딩 API) + === 3.7. 내 이력서 - 활동 지역 및 위치 생성/수정 (온보딩 API 동일) === 3.8. 내 이력서 - 경력 단일 생성 + include::{snippets}/antecedents-controller-test/create-antecedent/http-request.adoc[] include::{snippets}/antecedents-controller-test/create-antecedent/request-fields.adoc[] === 3.8. 내 이력서 - 경력 단일 수정 + include::{snippets}/antecedents-controller-test/update-antecedent/http-request.adoc[] include::{snippets}/antecedents-controller-test/update-antecedent/request-fields.adoc[] include::{snippets}/antecedents-controller-test/update-antecedent/path-parameters.adoc[] === 3.8. 내 이력서 - 경력 단일 삭제 + include::{snippets}/antecedents-controller-test/delete-antecedents/http-request.adoc[] include::{snippets}/antecedents-controller-test/delete-antecedents/path-parameters.adoc[] === 3.9. 내 이력서 - 학력 생성 -include::{snippets}/education-controller-test/create-education/http-request.adoc[] -include::{snippets}/education-controller-test/create-education/request-fields.adoc[] + +include::{snippets}/profileEducation-controller-test/create-profileEducation/http-request.adoc[] +include::{snippets}/profileEducation-controller-test/create-profileEducation/request-fields.adoc[] === 3.9. 내 이력서 - 학력 수정 -include::{snippets}/education-controller-test/update-education/http-request.adoc[] -include::{snippets}/education-controller-test/update-education/path-parameters.adoc[] -include::{snippets}/education-controller-test/update-education/request-fields.adoc[] +include::{snippets}/profileEducation-controller-test/update-profileEducation/http-request.adoc[] +include::{snippets}/profileEducation-controller-test/update-profileEducation/path-parameters.adoc[] +include::{snippets}/profileEducation-controller-test/update-profileEducation/request-fields.adoc[] === 3.9. 내 이력서 - 학력 삭제 -include::{snippets}/education-controller-test/delete-education/http-request.adoc[] -include::{snippets}/education-controller-test/delete-education/path-parameters.adoc[] + +include::{snippets}/profileEducation-controller-test/delete-profileEducation/http-request.adoc[] +include::{snippets}/profileEducation-controller-test/delete-profileEducation/path-parameters.adoc[] === 3.10. 내 이력서 - 수상 단일 생성 -include::{snippets}/awards-controller-test/create-award/http-request.adoc[] -include::{snippets}/awards-controller-test/create-award/request-fields.adoc[] + +include::{snippets}/profileAwards-controller-test/create-award/http-request.adoc[] +include::{snippets}/profileAwards-controller-test/create-award/request-fields.adoc[] === 3.10. 내 이력서 - 수상 단일 수정 -include::{snippets}/awards-controller-test/update-award/http-request.adoc[] -include::{snippets}/awards-controller-test/update-award/request-fields.adoc[] -include::{snippets}/awards-controller-test/update-award/path-parameters.adoc[] + +include::{snippets}/profileAwards-controller-test/update-award/http-request.adoc[] +include::{snippets}/profileAwards-controller-test/update-award/request-fields.adoc[] +include::{snippets}/profileAwards-controller-test/update-award/path-parameters.adoc[] === 3.10. 내 이력서 - 수상 단일 삭제 -include::{snippets}/awards-controller-test/delete-awards/http-request.adoc[] -include::{snippets}/awards-controller-test/delete-awards/path-parameters.adoc[] + +include::{snippets}/profileAwards-controller-test/delete-profileAwards/http-request.adoc[] +include::{snippets}/profileAwards-controller-test/delete-profileAwards/path-parameters.adoc[] === 3.11. 내 이력서 - 첨부 URL 생성/수정 + ==== 요청 + include::{snippets}/attach-controller-test/create-attach-url/http-request.adoc[] include::{snippets}/attach-controller-test/create-attach-url/request-fields.adoc[] === 3.11. 내 이력서 - 첨부 URL 삭제 + ==== 요청 + include::{snippets}/attach-controller-test/delete-attach-url/http-request.adoc[] include::{snippets}/attach-controller-test/delete-attach-url/path-parameters.adoc[] == 4. 팀 소개서 + === 4.0. 팀 소개서 - 전체 조회 + ==== 요청 + include::{snippets}/team-profile-controller-test/get-team-profile/http-request.adoc[] + ==== 응답 + include::{snippets}/team-profile-controller-test/get-team-profile/http-response.adoc[] include::{snippets}/team-profile-controller-test/get-team-profile/response-fields.adoc[] === 4.1. 팀 소개서 - 팀 미니 프로필 수정 + ==== 요청 + include::{snippets}/team-on-boarding-controller-test/update-on-boarding-field-team-inform/http-request.adoc[] include::{snippets}/team-on-boarding-controller-test/update-on-boarding-field-team-inform/request-fields.adoc[] - - === 4.4. 팀 소개서 - 희망 팀빌딩 분야 생성/수정 + include::{snippets}/team-profile-team-building-field-controller-test/create-team-profile-team-building-field/http-request.adoc[] include::{snippets}/team-profile-team-building-field-controller-test/create-team-profile-team-building-field/request-fields.adoc[] === 4.5. 팀 소개서 - 팀원 공고 단일 생성 + include::{snippets}/team-member-announcement-controller-test/create-team-member-announcement/http-request.adoc[] include::{snippets}/team-member-announcement-controller-test/create-team-member-announcement/request-fields.adoc[] === 4.5. 팀 소개서 - 팀원 공고 단일 수정 + include::{snippets}/team-member-announcement-controller-test/update-team-member-announcement/http-request.adoc[] include::{snippets}/team-member-announcement-controller-test/update-team-member-announcement/request-fields.adoc[] include::{snippets}/team-member-announcement-controller-test/update-team-member-announcement/path-parameters.adoc[] === 4.5. 팀 소개서 - 팀원 공고 단일 삭제 + === 요청 + include::{snippets}/team-member-announcement-controller-test/delete-team-member-announcement/http-request.adoc[] include::{snippets}/team-member-announcement-controller-test/delete-team-member-announcement/path-parameters.adoc[] === 4.6. 팀 소개서 - 활동 방식 및 활동 지역/위치 생성/수정 [온보딩 동일] === 4.7. 팀 소개서 - 팀 소개 생성/수정/삭제 + ==== 요청 + include::{snippets}/team-profile-controller-test/create-team-profile-introduction/http-request.adoc[] include::{snippets}/team-profile-controller-test/create-team-profile-introduction/request-fields.adoc[] === 4.8. 팀 소개서 - 팀원 소개 단일 생성 + include::{snippets}/team-member-introduction-controller-test/create-team-member-introduction/http-request.adoc[] include::{snippets}/team-member-introduction-controller-test/create-team-member-introduction/request-fields.adoc[] === 4.8. 팀 소개서 - 팀원 소개 단일 수정 + include::{snippets}/team-member-introduction-controller-test/update-team-member-introduction/http-request.adoc[] include::{snippets}/team-member-introduction-controller-test/update-team-member-introduction/request-fields.adoc[] include::{snippets}/team-member-introduction-controller-test/update-team-member-introduction/path-parameters.adoc[] === 4.8. 팀 소개서 - 팀원 소개 단일 삭제 + include::{snippets}/team-member-introduction-controller-test/delete-team-member-introduction/http-request.adoc[] include::{snippets}/team-member-introduction-controller-test/delete-team-member-introduction/path-parameters.adoc[] === 4.9. 팀 소개서 - 팀 연혁 단일 생성 + include::{snippets}/history-controller-test/create-history/http-request.adoc[] include::{snippets}/history-controller-test/create-history/request-fields.adoc[] === 4.9. 팀 소개서 - 팀 연혁 단일 수정 + include::{snippets}/history-controller-test/update-history/http-request.adoc[] include::{snippets}/history-controller-test/update-history/request-fields.adoc[] include::{snippets}/history-controller-test/update-history/path-parameters.adoc[] === 4.9. 팀 소개서 - 팀 연혁 단일 삭제 + include::{snippets}/history-controller-test/delete-history/http-request.adoc[] include::{snippets}/history-controller-test/delete-history/path-parameters.adoc[] === 4.10. 팀 소개서 - 팀 첨부 URL 생성/수정 + ==== 요청 + include::{snippets}/team-attach-controller-test/create-team-attach-url/http-request.adoc[] include::{snippets}/team-attach-controller-test/create-team-attach-url/request-fields.adoc[] === 4.10. 팀 소개서 - 팀 첨부 URL 삭제 + ==== 요청 + include::{snippets}/team-attach-controller-test/delete-team-attach-url/http-request.adoc[] include::{snippets}/team-attach-controller-test/delete-team-attach-url/path-parameters.adoc[] == 6. 팀원 찾기 + === 6.1. 팀원 찾기 페이지 + ==== 요청 + include::{snippets}/search-controller-test/get-private-mini-profile/http-request.adoc[] include::{snippets}/search-controller-test/get-private-mini-profile/query-parameters.adoc[] + ==== 응답 + include::{snippets}/search-controller-test/get-private-mini-profile/http-response.adoc[] include::{snippets}/search-controller-test/get-private-mini-profile/response-fields.adoc[] === 6.2. 로그인 이후 팀원 찾기 페이지 + ==== 요청 + include::{snippets}/search-controller-test/get-browse-private-mini-profile/http-request.adoc[] + ==== 요청 헤더 + include::{snippets}/search-controller-test/get-browse-private-mini-profile/request-headers.adoc + ==== 요청 쿠키 + include::{snippets}/search-controller-test/get-browse-private-mini-profile/request-cookies.adoc[] include::{snippets}/search-controller-test/get-browse-private-mini-profile/query-parameters.adoc[] ==== 응답 + include::{snippets}/search-controller-test/get-browse-private-mini-profile/http-response.adoc[] include::{snippets}/search-controller-test/get-browse-private-mini-profile/response-fields.adoc[] == 7. 팀 찾기 + === 7.1. 팀 찾기 페이지 + ==== 요청 + include::{snippets}/search-controller-test/get-team-announcement-and-team-mini-profile/http-request.adoc[] + ==== 요청 헤더 + include::{snippets}/search-controller-test/get-team-announcement-and-team-mini-profile-after-login/request-headers.adoc[] + ==== 요청 쿠키 + include::{snippets}/search-controller-test/get-team-announcement-and-team-mini-profile-after-login/request-cookies.adoc[] include::{snippets}/search-controller-test/get-team-announcement-and-team-mini-profile/query-parameters.adoc[] ==== 응답 + include::{snippets}/search-controller-test/get-team-announcement-and-team-mini-profile-after-login/http-response.adoc[] include::{snippets}/search-controller-test/get-team-announcement-and-team-mini-profile-after-login/response-fields.adoc[] - === 7.2. 로그인 이후 팀 찾기 페이지 + ==== 요청 + include::{snippets}/search-controller-test/get-team-announcement-and-team-mini-profile-after-login/http-request.adoc[] ==== 응답 + include::{snippets}/search-controller-test/get-team-announcement-and-team-mini-profile-after-login/http-response.adoc[] include::{snippets}/search-controller-test/get-team-announcement-and-team-mini-profile-after-login/response-fields.adoc[] == 8. 이력서 열람 + === 8.1. 내 이력서 열람 + ==== 요청 + include::{snippets}/browse-private-profile-controller-test/get-browse-private-profile/http-request.adoc[] include::{snippets}/browse-private-profile-controller-test/get-browse-private-profile/path-parameters.adoc[] ==== 응답 + include::{snippets}/browse-private-profile-controller-test/get-browse-private-profile/http-response.adoc[] include::{snippets}/browse-private-profile-controller-test/get-browse-private-profile/response-fields.adoc[] == 9. 소개서 열람 + === 9.1. 팀 소개서 열람 + ==== 요청 + include::{snippets}/browse-team-profile-controller-test/get-browse-team-profile/http-request.adoc[] include::{snippets}/browse-team-profile-controller-test/get-browse-team-profile/path-parameters.adoc[] ==== 응답 + include::{snippets}/browse-team-profile-controller-test/get-browse-team-profile/http-response.adoc[] include::{snippets}/browse-team-profile-controller-test/get-browse-team-profile/response-fields.adoc[] == 10. 매칭 관리 + === 10.1. 내 이력서로 내 이력서에 매칭 요청 + include::{snippets}/matching-controller-test/create-private-profile-matching-to-private/http-request.adoc[] include::{snippets}/matching-controller-test/create-private-profile-matching-to-private/path-parameters.adoc[] include::{snippets}/matching-controller-test/create-private-profile-matching-to-private/request-fields.adoc[] === 10.2. 팀 소개서로 내 이력서에 매칭 요청 + include::{snippets}/matching-controller-test/create-team-profile-matching-to-private/http-request.adoc[] include::{snippets}/matching-controller-test/create-team-profile-matching-to-private/path-parameters.adoc[] include::{snippets}/matching-controller-test/create-team-profile-matching-to-private/request-fields.adoc[] === 10.3. 팀 소개서로 팀 소개서에 매칭 요청 + include::{snippets}/matching-controller-test/create-team-profile-matching-to-team/http-request.adoc[] include::{snippets}/matching-controller-test/create-team-profile-matching-to-team/path-parameters.adoc[] include::{snippets}/matching-controller-test/create-team-profile-matching-to-team/request-fields.adoc[] - === 10.4. 내 이력서로 팀 소개서에 매칭 요청 + include::{snippets}/matching-controller-test/create-private-profile-matching-to-team/http-request.adoc[] include::{snippets}/matching-controller-test/create-private-profile-matching-to-team/path-parameters.adoc[] include::{snippets}/matching-controller-test/create-private-profile-matching-to-team/request-fields.adoc[] === 10.5. 내가 받은 매칭 조회 + include::{snippets}/matching-controller-test/get-received-matching/http-request.adoc[] include::{snippets}/matching-controller-test/get-received-matching/http-response.adoc[] include::{snippets}/matching-controller-test/get-received-matching/response-fields.adoc[] === 10.6. 내가 보낸 매칭 + include::{snippets}/matching-controller-test/get-my-request-matching/http-request.adoc[] include::{snippets}/matching-controller-test/get-my-request-matching/http-response.adoc[] include::{snippets}/matching-controller-test/get-my-request-matching/response-fields.adoc[] === 10.7. 성사된 매칭 + include::{snippets}/matching-controller-test/get-my-success-matching/http-request.adoc[] include::{snippets}/matching-controller-test/get-my-success-matching/http-response.adoc[] include::{snippets}/matching-controller-test/get-my-success-matching/response-fields.adoc[] === 10.8. 매칭 보낼 프로필 선택 true/false + ==== 요청 + include::{snippets}/matching-controller-test/get-existence-profile/http-request.adoc[] ==== 응답 + include::{snippets}/matching-controller-test/get-existence-profile/http-response.adoc[] include::{snippets}/matching-controller-test/get-existence-profile/response-fields.adoc[] === 10.9. 내가 받은 매칭 요청 & 개별 조회 / sender_type = Private / receivedTeamProfile = false + ==== 요청 + include::{snippets}/matching-controller-test/get-received-private-to-private-matching-message/http-request.adoc[] include::{snippets}/matching-controller-test/get-received-private-to-private-matching-message/path-parameters.adoc[] ==== 응답 + include::{snippets}/matching-controller-test/get-received-private-to-private-matching-message/http-response.adoc[] include::{snippets}/matching-controller-test/get-received-private-to-private-matching-message/response-fields.adoc[] === 10.10. 내가 받은 매칭 요청 / sender_type = Team / receivedTeamProfile = false + ==== 요청 + include::{snippets}/matching-controller-test/get-received-team-to-private-matching-message/http-request.adoc[] include::{snippets}/matching-controller-test/get-received-team-to-private-matching-message/path-parameters.adoc[] ==== 응답 + include::{snippets}/matching-controller-test/get-received-team-to-private-matching-message/http-response.adoc[] include::{snippets}/matching-controller-test/get-received-team-to-private-matching-message/response-fields.adoc[] === 10.11. 내가 받은 매칭 요청 / sender_type = private / receivedTeamProfile = true + ==== 요청 + include::{snippets}/matching-controller-test/get-received-private-to-team-matching-response/http-request.adoc[] include::{snippets}/matching-controller-test/get-received-private-to-team-matching-response/path-parameters.adoc[] ==== 응답 + include::{snippets}/matching-controller-test/get-received-private-to-team-matching-response/http-response.adoc[] include::{snippets}/matching-controller-test/get-received-private-to-team-matching-response/response-fields.adoc[] === 10.12. 내가 보낸 매칭 요청 / sender_type = private / requestTeamProfile = false + ==== 요청 + include::{snippets}/matching-controller-test/get-request-private-to-private-matching-message/http-request.adoc[] include::{snippets}/matching-controller-test/get-request-private-to-private-matching-message/path-parameters.adoc[] ==== 응답 + include::{snippets}/matching-controller-test/get-request-private-to-private-matching-message/http-response.adoc[] include::{snippets}/matching-controller-test/get-request-private-to-private-matching-message/response-fields.adoc[] === 10.13. 내가 보낸 매칭 요청 / sender_type = Team / requestTeamProfile = false + ==== 요청 + include::{snippets}/matching-controller-test/get-request-team-to-private-matching-message/http-request.adoc[] include::{snippets}/matching-controller-test/get-request-team-to-private-matching-message/path-parameters.adoc[] ==== 응답 + include::{snippets}/matching-controller-test/get-request-team-to-private-matching-message/http-response.adoc[] include::{snippets}/matching-controller-test/get-request-team-to-private-matching-message/response-fields.adoc[] === 10.14. 내가 보낸 매칭 요청 / sender_type = private / requestTeamProfile = true + ==== 요청 + include::{snippets}/matching-controller-test/get-received-private-to-team-matching-response/http-request.adoc[] include::{snippets}/matching-controller-test/get-received-private-to-team-matching-response/path-parameters.adoc[] ==== 응답 + include::{snippets}/matching-controller-test/get-received-private-to-team-matching-response/http-response.adoc[] include::{snippets}/matching-controller-test/get-received-private-to-team-matching-response/response-fields.adoc[] === 10.15. 내 이력서 관련 (receivedTeamProfile = false) - 내가 받은 매칭 요청 -> 수락/거절 선택 + ==== 요청 + include::{snippets}/matching-controller-test/accept-receive-private-matching/http-request.adoc[] include::{snippets}/matching-controller-test/accept-receive-private-matching/path-parameters.adoc[] include::{snippets}/matching-controller-test/accept-receive-private-matching/request-fields.adoc[] === 10.16. 팀 소개서 관련 (receivedTeamProfile = true) - 내가 받은 매칭 요청 -> 수락/거절 선택 + ==== 요청 + include::{snippets}/matching-controller-test/accept-receive-team-matching/http-request.adoc[] include::{snippets}/matching-controller-test/accept-receive-team-matching/path-parameters.adoc[] include::{snippets}/matching-controller-test/accept-receive-team-matching/request-fields.adoc[] === 10.17. 매칭 성사 / 연락하기 버튼 클릭 / 내 이력서인 경우 + ==== 요청 + include::{snippets}/matching-controller-test/get-private-success-contact-response/http-request.adoc[] include::{snippets}/matching-controller-test/get-private-success-contact-response/path-parameters.adoc[] ==== 응답 + include::{snippets}/matching-controller-test/get-private-success-contact-response/http-response.adoc[] include::{snippets}/matching-controller-test/get-private-success-contact-response/response-fields.adoc[] === 10.18. 매칭 성사 / 연락하기 버튼 클릭 / 팀 소개서인 경우 + ==== 요청 + include::{snippets}/matching-controller-test/get-team-success-contact-response/http-request.adoc[] include::{snippets}/matching-controller-test/get-team-success-contact-response/path-parameters.adoc[] ==== 응답 + include::{snippets}/matching-controller-test/get-team-success-contact-response/http-response.adoc[] include::{snippets}/matching-controller-test/get-team-success-contact-response/response-fields.adoc[] === 10.19. 내가 보낸 매칭 - 매칭 삭제 (matchingType: PROFILE) + ==== 요청 + include::{snippets}/matching-controller-test/delete-request-private-matching/http-request.adoc[] include::{snippets}/matching-controller-test/delete-request-private-matching/path-parameters.adoc[] === 10.20. 내가 보낸 매칭 - 매칭 삭제 (matchingType: TEAM_PROFILE) + ==== 요청 + include::{snippets}/matching-controller-test/delete-request-team-matching/http-request.adoc[] include::{snippets}/matching-controller-test/delete-request-team-matching/path-parameters.adoc[] === 10.21. 성사된 매칭 - 매칭 삭제 (matchingType: PROFILE) + ==== 요청 + include::{snippets}/matching-controller-test/delete-success-private-matching/http-request.adoc[] include::{snippets}/matching-controller-test/delete-success-private-matching/path-parameters.adoc[] === 10.22. 성사된 매칭 - 매칭 삭제 (matchingType: TEAM_PROFILE) + include::{snippets}/matching-controller-test/delete-request-team-matching/http-request.adoc[] include::{snippets}/matching-controller-test/delete-request-team-matching/path-parameters.adoc[] == 11. 찜하기 + === 11.1. 내 이력서 (미니 프로필 ID) 찜하기 생성 + ==== 요청 + include::{snippets}/wish-controller-test/create-wish-to-private-profile/http-request.adoc[] include::{snippets}/wish-controller-test/create-wish-to-private-profile/path-parameters.adoc[] === 11.2. 팀 소개서 (팀원 공고 ID) 찜하기 생성 + ==== 요청 + include::{snippets}/wish-controller-test/create-wish-to-team-profile/http-request.adoc[] include::{snippets}/wish-controller-test/create-wish-to-team-profile/path-parameters.adoc[] === 11.3. 내 이력서 (미니 프로필 ID) 찜하기 취소 + ==== 요청 + include::{snippets}/wish-controller-test/cancel-wish-to-private-profile/http-request.adoc[] include::{snippets}/wish-controller-test/cancel-wish-to-private-profile/path-parameters.adoc[] === 11.4. 팀 소개서 (팀원 공고 ID) 찜하기 취소 + include::{snippets}/wish-controller-test/cancel-wish-to-team-profile/http-request.adoc[] include::{snippets}/wish-controller-test/cancel-wish-to-team-profile/path-parameters.adoc[] === 11.5. 내 이력서 찜한 목록 조회 + ==== 요청 + include::{snippets}/wish-controller-test/get-private-profile-wish-list/http-request.adoc[] + ==== 응답 + include::{snippets}/wish-controller-test/get-private-profile-wish-list/http-response.adoc[] include::{snippets}/wish-controller-test/get-private-profile-wish-list/response-fields.adoc[] === 11.6. 팀 소개서 찜한 목록 조회 + ==== 요청 + include::{snippets}/wish-controller-test/get-team-profile-wish-list/http-request.adoc[] + ==== 응답 + include::{snippets}/wish-controller-test/get-team-profile-wish-list/http-response.adoc[] include::{snippets}/wish-controller-test/get-team-profile-wish-list/response-fields.adoc[] == 12. 설정 + === 회원 탈퇴 + ==== 요청 + include::{snippets}/login-controller-test/delete-account/http-request.adoc[] + 요청 헤더 + include::{snippets}/login-controller-test/delete-account/request-headers.adoc[] + 요청 쿠키 + include::{snippets}/login-controller-test/delete-account/request-cookies.adoc[] ==== 응답 + include::{snippets}/login-controller-test/delete-account/http-response.adoc[] ==== 응답 + include::{snippets}/member-controller-test/get-member-basic-inform/http-response.adoc[] include::{snippets}/member-controller-test/get-member-basic-inform/response-fields.adoc[] diff --git a/src/docs/asciidoc/docs.html b/src/docs/asciidoc/docs.html index b79eea02..fbeccd0f 100644 --- a/src/docs/asciidoc/docs.html +++ b/src/docs/asciidoc/docs.html @@ -1,779 +1,2471 @@ - - - - -Linkit - - - - + + + #content .tablecontainer > table.tableblock { + margin-bottom: 0; + } +
-
-

링킷 개발용 API 서버 도메인 네임 = https://dev.linkit.im

-
+ - + -
-

1. 회원관리

-
-
-

1.2.1. 간편로그인 [각 플랫폼 동일]

-
-

요청

-
-
+
+
+
+

1. 회원관리

+
+
+

1.2.1. 간편로그인 [각 플랫폼 동일] +

+
+

요청

+
+
POST /login/google HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 
 {
   "code" : "code"
 }
-
-
- - ---- - - - - - - - - - - - - -
Table 1. /login/{provider}
ParameterDescription

provider

로그인 유형 (플랫폼 영어 이름)

- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

code

String

인가 코드

문자열

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 1. /login/{provider}
ParameterDescription

provider +

로그인 유형 (플랫폼 영어 이름)

+
+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

code

+

String

+

인가 코드

문자열

+
+
+

응답

+
+
HTTP/1.1 201 Created
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -788,84 +2480,95 @@ 

응답

"existMemberBasicInform" : false, "existDefaultProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

accessToken

String

access token

email

String

소셜 로그인 이메일

existMemberBasicInform

Boolean

기본 정보 기입 여부 (false: 기본 정보 기입하지 않음)

existDefaultProfile

Boolean

이력서 작성 여부 (false: 내 이력서와 팀 소개서 모두 존재 X | true: 내 이력서나 팀 소개서 중 최소 1개 이상 필수 항목 기입 완료)

-
-
-
-

1.2.1. 토큰 재발급

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

accessToken +

String

+

access token

email

+

String

+

소셜 로그인 이메일

existMemberBasicInform +

Boolean

+

기본 정보 기입 여부 (false: 기본 + 정보 기입하지 않음)

existDefaultProfile +

Boolean

+

이력서 작성 여부 (false: 내 이력서와 + 팀 소개서 모두 존재 X | true: 내 이력서나 팀 소개서 중 최소 1개 이상 필수 항목 기입 완료)

+
+
+
+

1.2.1. 토큰 재발급

+
+

요청

+
+
POST /token HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-

요청 쿠키

-
- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

응답

-
-
+
+
+
+

요청 쿠키

+
+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+
+
+

응답

+
+
HTTP/1.1 201 Created
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -879,126 +2582,140 @@ 

응답

"existDefaultProfile" : true, "existNonCheckNotification" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

accessToken

String

access token

existMemberBasicInform

Boolean

기본 정보 기입 여부 (false: 기본 정보 기입하지 않음)

existDefaultProfile

Boolean

이력서 작성 여부 (false: 내 이력서와 팀 소개서 모두 존재 X | true: 내 이력서나 팀 소개서 중 최소 1개 이상 필수 항목 기입 완료)

existNonCheckNotification

Boolean

확인하지 않은 알림의 존재 유무

-
-
-
-

1.2.1. 로그아웃

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

accessToken +

String

+

access token

existMemberBasicInform +

Boolean

+

기본 정보 기입 여부 (false: 기본 + 정보 기입하지 않음)

existDefaultProfile +

Boolean

+

이력서 작성 여부 (false: 내 이력서와 + 팀 소개서 모두 존재 X | true: 내 이력서나 팀 소개서 중 최소 1개 이상 필수 항목 기입 완료)

existNonCheckNotification +

Boolean

+

확인하지 않은 알림의 존재 유무

+
+
+
+
+

1.2.1. 로그아웃

+
+

요청

+
+
DELETE /logout HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-

요청 헤더

-
- ----- - - - - - - - - - - - - - - -
NameDescriptionConstraint

Authorization

access token

문자열(jwt)

-
-

요청 쿠키

-
- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

응답

-
-
+
+
+
+

요청 헤더

+
+ + + + + + + + + + + + + + + + + + + + +
NameDescriptionConstraint

+ Authorization

access token

문자열(jwt)

+
+

요청 쿠키

+
+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+
+
+

응답

+
+
HTTP/1.1 204 No Content
 Vary: Origin
 Vary: Access-Control-Request-Method
 Vary: Access-Control-Request-Headers
-
-
-
-
-
-
- +
+

1.4. 정보 기입

+
+
+

1.4.1. 개인정보 기입 (기본 정보) +

+
+

요청

+
+
POST /members/basic-inform HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1009,118 +2726,129 @@ 

요청

"contact" : "010-3661-4067", "marketingAgree" : true }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

memberName

String

성함

문자열

contact

String

연락처

010-xxxx-xxxx 형태

marketingAgree

Boolean

마케팅 수신 동의 여부

Boolean & Default FALSE

-
-

요청 헤더

-
- ----- - - - - - - - - - - - - - - -
NameDescriptionConstraint

Authorization

access token

문자열(jwt)

-
-

요청 쿠키

-
- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

memberName +

String

+

성함

문자열

contact

+

String

+

연락처

010-xxxx-xxxx 형태

+

+ marketingAgree

Boolean

+

마케팅 수신 동의 여부

Boolean & Default + FALSE

+
+

요청 헤더

+
+ + + + + + + + + + + + + + + + + + + + +
NameDescriptionConstraint

+ Authorization

access token

문자열(jwt)

+
+

요청 쿠키

+
+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+
+
+

응답

+
+
HTTP/1.1 201 Created
 Vary: Origin
 Vary: Access-Control-Request-Method
 Vary: Access-Control-Request-Headers
-
-
-
-
- +
+

1.4.2. 개인정보 조회 (기본 정보) +

+
+

요청

+
+
GET /members/basic-inform HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -1135,71 +2863,81 @@ 

응답

"email" : "kwondm7@naver.com", "marketingAgree" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

멤버 기본 정보 ID

memberName

String

성함

contact

String

연락처

email

String

이메일

marketingAgree

Boolean

마케팅 수신 동의 여부

-
-
-
-
-
-

1.5.1.온보딩 - 내 이력서 - 전체 조회

-
-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

id

Number

+

멤버 기본 정보 ID

memberName +

String

+

성함

contact

+

String

+

연락처

email

+

String

+

이메일

+ marketingAgree

Boolean

+

마케팅 수신 동의 여부

+
+
+
+
+
+

1.5.1.온보딩 - 내 이력서 - 전체 조회 +

+
+
+

요청

+
+
GET /private/onBoarding HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -1262,171 +3000,202 @@ 

응답

"isPrivateSaved" : false } }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

profileTeamBuildingFieldResponse

Object

희망 팀빌딩 분야 항목

profileTeamBuildingFieldResponse.teamBuildingFieldNames

Array

희망 팀빌딩 분야 이름

jobAndSkillResponse

Object

나의 직무/역할 및 보유 기술 정보

jobAndSkillResponse.jobRoleNames

Array

직무/역할 명칭

jobAndSkillResponse.skillNames

Array

보유 기술 명칭

profileRegionResponse

Object

지역 및 위치 항목

profileRegionResponse.cityName

String

시/구 이름

profileRegionResponse.divisionName

String

시/군/구 이름

educationResponses

Array

학력 항목

educationResponses[].id

Number

학력 ID

educationResponses[].admissionYear

Number

입학 연도

educationResponses[].graduationYear

Number

졸업 연도

educationResponses[].universityName

String

학교 이름

educationResponses[].majorName

String

전공 이름

educationResponses[].degreeName

String

학위 이름

antecedentsResponses

Array

이력 항목

antecedentsResponses[].projectName

String

회사 이름

antecedentsResponses[].projectRole

String

포지션

antecedentsResponses[].startDate

String

시작 연도/월

antecedentsResponses[].endDate

String

종료 연도/월

antecedentsResponses[].retirement

Boolean

재직 여부

miniProfileResponse

Object

미니 프로필(내 이력서) 항목

miniProfileResponse.profileTitle

String

프로필의 제목

miniProfileResponse.miniProfileImg

String

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames

Array

나를 소개하는 키워드 목록

miniProfileResponse.isActivate

Boolean

미니 프로필 활성화 여부

miniProfileResponse.memberName

String

회원 이름

miniProfileResponse.jobRoleNames

Array

직무 및 역할

-
-
-

1.5.2. 온보딩 - 내 이력서 - 희망 팀빌딩 분야 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

profileTeamBuildingFieldResponse +

Object

희망 팀빌딩 분야 항목

profileTeamBuildingFieldResponse.teamBuildingFieldNames +

Array

희망 팀빌딩 분야 이름

+ jobAndSkillResponse

Object

나의 직무/역할 및 보유 기술 정보

jobAndSkillResponse.jobRoleNames +

Array

직무/역할 명칭

jobAndSkillResponse.skillNames +

Array

보유 기술 명칭

+ profileRegionResponse

Object

지역 및 위치 항목

profileRegionResponse.cityName +

String

시/구 이름

profileRegionResponse.divisionName +

String

시/군/구 이름

+ educationResponses

Array

학력 항목

educationResponses[].id +

Number

학력 ID

educationResponses[].admissionYear +

Number

입학 연도

educationResponses[].graduationYear +

Number

졸업 연도

educationResponses[].universityName +

String

학교 이름

educationResponses[].majorName +

String

전공 이름

educationResponses[].degreeName +

String

학위 이름

+ antecedentsResponses

Array

이력 항목

antecedentsResponses[].projectName +

String

회사 이름

antecedentsResponses[].projectRole +

String

포지션

antecedentsResponses[].startDate +

String

시작 연도/월

antecedentsResponses[].endDate +

String

종료 연도/월

antecedentsResponses[].retirement +

Boolean

+

재직 여부

+ miniProfileResponse

Object

미니 프로필(내 이력서) 항목

miniProfileResponse.profileTitle +

String

프로필의 제목

miniProfileResponse.miniProfileImg +

String

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames +

Array

나를 소개하는 키워드 목록

miniProfileResponse.isActivate +

Boolean

+

미니 프로필 활성화 여부

miniProfileResponse.memberName +

String

회원 이름

miniProfileResponse.jobRoleNames +

Array

직무 및 역할

+
+
+

1.5.2. + 온보딩 - 내 이력서 - 희망 팀빌딩 분야 생성/수정

+
+

요청

+
+
POST /private/team_building_field HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1435,40 +3204,44 @@ 

요청

{ "teamBuildingFieldNames" : [ "공모전", "대회", "창업" ] }
-
-
- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

teamBuildingFieldNames

Array

희망 팀빋딩 분야(7가지 항목)

문자열의 배열

-
-
-
-

1.5.3. 온보딩 - 내 이력서 - 활동 지역 및 위치 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

teamBuildingFieldNames +

Array

+

희망 팀빋딩 분야(7가지 항목)

+

문자열의 배열

+
+
+
+

1.5.3. + 온보딩 - 내 이력서 - 활동 지역 및 위치 생성/수정

+
+

요청

+
+
POST /private/region HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1478,46 +3251,51 @@ 

요청

"cityName" : "서울특별시", "divisionName" : "강남구" }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

cityName

String

시/구 이름

문자열

divisionName

String

시/군/구 이름

문자열

-
-
-
-

1.5.4. 온보딩 - 내 이력서 - 희망 역할, 보유 기술 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

cityName +

String

+

시/구 이름

문자열

+ divisionName

String

+

시/군/구 이름

문자열

+
+
+
+

1.5.4. + 온보딩 - 내 이력서 - 희망 역할, 보유 기술 생성/수정

+
+

요청

+
+
POST /private/job/skill HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1527,47 +3305,52 @@ 

요청

"jobRoleNames" : [ "공모전, 대회, 창업" ], "skillNames" : [ "Notion, Figma" ] }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

jobRoleNames

Array

희망 직무/역할

문자열의 배열

skillNames

Array

보유 기술

문자열의 배열

-
-
-
-

1.5.5. 온보딩 - 내 이력서 - 학력 생성/수정

-
-

요청

-
-
-
POST /private/education HTTP/1.1
+                        
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ jobRoleNames

Array

+

희망 직무/역할

문자열의 배열

skillNames +

Array

+

보유 기술

문자열의 배열

+
+
+
+

1.5.5. 온보딩 - 내 이력서 - + 학력 생성/수정

+
+

요청

+
+
+
POST /private/profileEducation HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
@@ -1579,64 +3362,75 @@ 

요청

"majorName" : "컴퓨터공학과", "degreeName" : "졸업" }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

admissionYear

Number

입학 연도

4자리 숫자

graduationYear

Number

졸업 연도

4자리 숫자

universityName

String

학교명

문자열

majorName

String

전공명

문자열

degreeName

String

학위명

문자열

-
-
-
-

1.5.6. 온보딩 - 내 이력서 - 경력 생성

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ admissionYear

Number

+

입학 연도

4자리 숫자

+ graduationYear

Number

+

졸업 연도

4자리 숫자

+ universityName

String

+

학교명

문자열

majorName +

String

+

전공명

문자열

degreeName +

String

+

학위명

문자열

+
+
+
+

1.5.6. 온보딩 - 내 이력서 - 경력 + 생성

+
+

요청

+
+
POST /private/antecedent HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1650,70 +3444,84 @@ 

요청

"retirement" : false, "antecedentsDescription" : "경력 설명입니다." }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

projectName

String

기업명(프로젝트명)

문자열

projectRole

String

직무(역할)

문자열

startDate

String

시작 연도.월

4자리 숫자.2자리 숫자

endDate

String

종료 연도.월

4자리 숫자.2자리 숫자

retirement

Boolean

퇴직 여부

false ⇒ 재직 중

antecedentsDescription

String

경력 설명

문자열

-
-
-
-

1.5.6. 온보딩 - 내 이력서 - 미니 프로필 생성

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

projectName +

String

+

기업명(프로젝트명)

문자열

projectRole +

String

+

직무(역할)

문자열

startDate +

String

+

시작 연도.월

4자리 숫자.2자리 숫자

endDate

+

String

+

종료 연도.월

4자리 숫자.2자리 숫자

retirement +

Boolean

+

퇴직 여부

false ⇒ 재직 중

+

antecedentsDescription +

String

+

경력 설명

문자열

+
+
+
+

1.5.6. 온보딩 - 내 + 이력서 - 미니 프로필 생성

+
+

요청

+
+
POST /private/mini-profile HTTP/1.1
 Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
 Accept: application/json
@@ -1731,85 +3539,96 @@ 

요청

{"profileTitle":"시니어 소프트웨어 개발자","myKeywordNames":["2024 레드닷 수상","스타트업 경력","서울대 디자인","대기업 경력 3년"],"isActivate":true} --6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
-
-
- ---- - - - - - - - - - - - - - - - - -
PartDescription

miniProfileRequest

미니 프로필 생성 객체

miniProfileImage

미니 프로필 이미지 파일. 지원되는 형식은 .png, .jpg 등이 있습니다.

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

profileTitle

String

프로필 제목

myKeywordNames

Array

나를 소개하는 키워드 목록

isActivate

Boolean

프로필 활성화 여부

-
-
-
-
-
-

1.5. 팀 소개서 온보딩 가이드 기입

-
-
-

1.5.1. 내 이력서 / 팀 소개서 구분 중 팀 소개서 온보딩 항목 조회

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + +
PartDescription

+ miniProfileRequest

미니 프로필 생성 객체

+ miniProfileImage

미니 프로필 이미지 파일. 지원되는 형식은 + .png, .jpg 등이 있습니다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ profileTitle

String

+

프로필 제목

+ myKeywordNames

Array

+

나를 소개하는 키워드 목록

isActivate +

Boolean

+

프로필 활성화 여부

+
+
+
+
+
+

1.5. 팀 소개서 온보딩 가이드 기입

+
+
+

1.5.1. + 내 이력서 / 팀 소개서 구분 중 팀 소개서 온보딩 항목 조회

+
+

요청

+
+
GET /team/onBoarding HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -1840,117 +3659,155 @@ 

응답

"teamKeywordNames" : [ "재택 가능", "Pre-A", "사수 있음", "스톡 제공" ] } }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

onBoardingFieldTeamInformResponse

Object

희망 팀빌딩 분야 항목과 미니 프로필 일부 정보

onBoardingFieldTeamInformResponse.teamBuildingFieldNames

Array

희망 팀빌딩 분야 이름

onBoardingFieldTeamInformResponse.teamName

String

팀명

onBoardingFieldTeamInformResponse.sectorName

String

팀 분야

onBoardingFieldTeamInformResponse.sizeType

String

팀 규모

activityResponse

Object

활동 방식 및 지역/위치 정보

activityResponse.activityTagName

Array

활동 방식

activityResponse.cityName

String

시/도

activityResponse.divisionName

String

시/군/구

teamMiniProfileResponse

Object

팀 소개서 미니 프로필

teamMiniProfileResponse.sectorName

String

팀 분야

teamMiniProfileResponse.sizeType

String

팀 규모

teamMiniProfileResponse.teamName

String

팀명

teamMiniProfileResponse.teamProfileTitle

String

미니 프로필 제목

teamMiniProfileResponse.isTeamActivate

Boolean

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl

String

팀 미니 프로필 이미지 경로

teamMiniProfileResponse.teamKeywordNames

Array

팀 소개 항목

-
-
-
-

1.5.9. 팀 소개서 희망 팀빌딩 분야 및 팀 기본 정보 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

onBoardingFieldTeamInformResponse +

Object

+

희망 팀빌딩 분야 항목과 미니 프로필 일부 + 정보

onBoardingFieldTeamInformResponse.teamBuildingFieldNames +

Array

+

희망 팀빌딩 분야 이름

onBoardingFieldTeamInformResponse.teamName +

String

+

팀명

onBoardingFieldTeamInformResponse.sectorName +

String

+

팀 분야

onBoardingFieldTeamInformResponse.sizeType +

String

+

팀 규모

+ activityResponse

Object

+

활동 방식 및 지역/위치 정보

+

activityResponse.activityTagName +

Array

+

활동 방식

activityResponse.cityName +

String

+

시/도

activityResponse.divisionName +

String

+

시/군/구

teamMiniProfileResponse +

Object

+

팀 소개서 미니 프로필

teamMiniProfileResponse.sectorName +

String

+

팀 분야

teamMiniProfileResponse.sizeType +

String

+

팀 규모

teamMiniProfileResponse.teamName +

String

+

팀명

teamMiniProfileResponse.teamProfileTitle +

String

+

미니 프로필 제목

teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl +

String

+

팀 미니 프로필 이미지 경로

teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 소개 항목

+
+
+
+

1.5.9. 팀 + 소개서 희망 팀빌딩 분야 및 팀 기본 정보 생성/수정

+
+

요청

+
+
POST /team/team_building_field/basic_inform HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -1962,58 +3819,69 @@ 

요청

"sizeType" : "1-5인", "sectorName" : "플랫폼" }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

teamBuildingFieldNames

Array

희망 팀빌딩 분야(7가지 항목)

문자열의 배열

teamName

String

팀이름

문자열

sizeType

String

팀 규모

문자열

sectorName

String

분야 이름

문자열

-
-
-
-

1.5.10. 팀 소개서 활동방식 및 활동 지역 및 위치 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

teamBuildingFieldNames +

Array

+

희망 팀빌딩 분야(7가지 항목)

+

문자열의 배열

teamName +

String

+

팀이름

문자열

sizeType +

String

+

팀 규모

문자열

sectorName +

String

+

분야 이름

문자열

+
+
+
+

1.5.10. 팀 + 소개서 활동방식 및 활동 지역 및 위치 생성/수정

+
+

요청

+
+
POST /team/activity HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -2024,52 +3892,59 @@ 

요청

"cityName" : "서울특별시", "divisionName" : "강남구" }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

activityTagNames

Array

활동 방식

문자열의 배열

cityName

String

시/구

문자열

divisionName

String

시/군/구

문자열

-
-
-
-

1.5.11. 팀 소개서 팀 미니 프로필 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ activityTagNames

Array

+

활동 방식

문자열의 배열

cityName +

String

+

시/구

문자열

+ divisionName

String

+

시/군/구

문자열

+
+
+
+

1.5.11. 팀 소개서 팀 + 미니 프로필 생성/수정

+
+

요청

+
+
POST /team/mini-profile HTTP/1.1
 Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
 Accept: application/json
@@ -2087,85 +3962,95 @@ 

요청

{"teamProfileTitle":"사이드 프로젝트 함께 할 개발자를 찾고 있어요","teamKeywordNames":["재택 가능","Pre-A","사수 있음","스톡 제공"],"isTeamActivate":true} --6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
-
-
- ---- - - - - - - - - - - - - - - - - -
PartDescription

teamMiniProfileCreateRequest

팀 소개서 미니 이력서 생성 객체

teamMiniProfileImage

팀 소개서 미니 프로필 이미지 파일. 지원되는 형식은 .png, .jpg 등이 있습니다.

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

teamProfileTitle

String

팀 소개서 제목

isTeamActivate

Boolean

팀 소개서 활성화 여부

teamKeywordNames

Array

팀 소개 항목

-
-
-
-
-
-

3. 내 이력서

-
-
-

3.0. 내 이력서 - 전체 조회

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + +
PartDescription

teamMiniProfileCreateRequest +

팀 소개서 미니 이력서 생성 객체

+

teamMiniProfileImage +

팀 소개서 미니 프로필 이미지 파일. + 지원되는 형식은 .png, .jpg 등이 있습니다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ teamProfileTitle

String

+

팀 소개서 제목

+ isTeamActivate

Boolean

+

팀 소개서 활성화 여부

+ teamKeywordNames

Array

+

팀 소개 항목

+
+
+
+
+
+

3. 내 이력서

+
+
+

3.0. 내 이력서 - 전체 조회

+
+

요청

+
+
GET /private/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -2186,12 +4071,12 @@ 

응답

}, "completionResponse" : { "completion" : "100.0", - "awards" : true, + "profileAwards" : true, "profileTeamBuildingField" : true, "profileRegion" : true, "introduction" : true, "antecedents" : true, - "education" : true, + "profileEducation" : true, "profileSkill" : true, "attach" : true }, @@ -2271,302 +4156,413 @@

응답

}, "privateProfileEssential" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

privateProfileEssential

Boolean

내 이력서 필수 입력 항목 존재 여부

miniProfileResponse

Object

사용자의 미니 프로필 정보

miniProfileResponse.profileTitle

String

프로필의 제목

miniProfileResponse.miniProfileImg

String

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames

Array

나를 소개하는 키워드 목록

miniProfileResponse.isActivate

Boolean

미니 프로필 활성화 여부

miniProfileResponse.memberName

String

회원 이름

miniProfileResponse.jobRoleNames

Array

직무 및 역할

completionResponse

Object

프로필의 완성도 정보

completionResponse.completion

String

프로필 완성도 (백분율)

completionResponse.introduction

Boolean

소개의 완성 여부

completionResponse.profileSkill

Boolean

스킬 섹션의 완성 여부

completionResponse.profileTeamBuildingField

Boolean

팀 빌딩 필드의 완성 여부

completionResponse.profileRegion

Boolean

지역 정보의 완성 여부

completionResponse.antecedents

Boolean

이력 사항의 완성 여부

completionResponse.education

Boolean

교육 이력의 완성 여부

completionResponse.awards

Boolean

수상 이력의 완성 여부

completionResponse.attach

Boolean

첨부 파일의 유무

profileIntroductionResponse

Object

프로필 소개

profileIntroductionResponse.introduction

String

소개 내용

jobAndSkillResponse

Object

나의 직무/역할 및 보유 기술 정보

jobAndSkillResponse.jobRoleNames

Array

직무/역할 명칭

jobAndSkillResponse.skillNames

Array

보유 기술 명칭

profileTeamBuildingFieldResponse

Object

팀 빌딩 필드 응답

profileTeamBuildingFieldResponse.teamBuildingFieldNames

Array

팀 빌딩 필드 이름

profileRegionResponse

Object

활동 지역 및 위치 응답

profileRegionResponse.cityName

String

시/도 이름

profileRegionResponse.divisionName

String

시/군/구 이름

antecedentsResponse

Array

과거 경력 정보

antecedentsResponse[].id

Number

경력 ID

antecedentsResponse[].projectName

String

프로젝트 이름

antecedentsResponse[].projectRole

String

프로젝트 역할

antecedentsResponse[].startDate

String

시작 연도/월

antecedentsResponse[].endDate

String

종료 연도/월

antecedentsResponse[].retirement

Boolean

퇴직 여부

educationResponse

Array

교육 이력 정보

educationResponse[].id

Number

교육 이력 ID

educationResponse[].admissionYear

Number

입학 연도

educationResponse[].graduationYear

Number

졸업 연도

educationResponse[].universityName

String

대학교 이름

educationResponse[].majorName

String

전공 이름

educationResponse[].degreeName

String

학위명

awardsResponse

Array

수상 이력 정보

awardsResponse[].id

Number

수상 ID

awardsResponse[].awardsName

String

수상 이름

awardsResponse[].ranking

String

수상 순위

awardsResponse[].organizer

String

주최자

awardsResponse[].awardsYear

Number

수상 연도

awardsResponse[].awardsMonth

Number

수상 월

awardsResponse[].awardsDescription

String

수상 내용

attachResponse

Object

첨부 파일 정보

attachResponse.attachUrlResponseList[].id

Number

첨부 URL ID

attachResponse.attachUrlResponseList[].attachUrlName

String

첨부된 URL 이름

attachResponse.attachUrlResponseList[].attachUrlPath

String

첨부된 URL

-
-
-
-

3.1. 내 이력서 - 미니 프로필 수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

privateProfileEssential +

Boolean

+

내 이력서 필수 입력 항목 존재 여부

+

miniProfileResponse +

Object

+

사용자의 미니 프로필 정보

miniProfileResponse.profileTitle +

String

+

프로필의 제목

miniProfileResponse.miniProfileImg +

String

+

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames +

Array

+

나를 소개하는 키워드 목록

miniProfileResponse.isActivate +

Boolean

+

미니 프로필 활성화 여부

miniProfileResponse.memberName +

String

+

회원 이름

miniProfileResponse.jobRoleNames +

Array

+

직무 및 역할

+ completionResponse

Object

+

프로필의 완성도 정보

completionResponse.completion +

String

+

프로필 완성도 (백분율)

completionResponse.introduction +

Boolean

+

소개의 완성 여부

completionResponse.profileSkill +

Boolean

+

스킬 섹션의 완성 여부

completionResponse.profileTeamBuildingField +

Boolean

+

팀 빌딩 필드의 완성 여부

completionResponse.profileRegion +

Boolean

+

지역 정보의 완성 여부

completionResponse.antecedents +

Boolean

+

이력 사항의 완성 여부

completionResponse.profileEducation +

Boolean

+

교육 이력의 완성 여부

completionResponse.profileAwards +

Boolean

+

수상 이력의 완성 여부

completionResponse.attach +

Boolean

+

첨부 파일의 유무

profileIntroductionResponse +

Object

+

프로필 소개

profileIntroductionResponse.introduction +

String

+

소개 내용

jobAndSkillResponse +

Object

+

나의 직무/역할 및 보유 기술 정보

+

jobAndSkillResponse.jobRoleNames +

Array

+

직무/역할 명칭

jobAndSkillResponse.skillNames +

Array

+

보유 기술 명칭

profileTeamBuildingFieldResponse +

Object

+

팀 빌딩 필드 응답

profileTeamBuildingFieldResponse.teamBuildingFieldNames +

Array

+

팀 빌딩 필드 이름

profileRegionResponse +

Object

+

활동 지역 및 위치 응답

profileRegionResponse.cityName +

String

+

시/도 이름

profileRegionResponse.divisionName +

String

+

시/군/구 이름

antecedentsResponse +

Array

+

과거 경력 정보

antecedentsResponse[].id +

Number

+

경력 ID

antecedentsResponse[].projectName +

String

+

프로젝트 이름

antecedentsResponse[].projectRole +

String

+

프로젝트 역할

antecedentsResponse[].startDate +

String

+

시작 연도/월

antecedentsResponse[].endDate +

String

+

종료 연도/월

antecedentsResponse[].retirement +

Boolean

+

퇴직 여부

+ educationResponse

Array

+

교육 이력 정보

educationResponse[].id +

Number

+

교육 이력 ID

educationResponse[].admissionYear +

Number

+

입학 연도

educationResponse[].graduationYear +

Number

+

졸업 연도

educationResponse[].universityName +

String

+

대학교 이름

educationResponse[].majorName +

String

+

전공 이름

educationResponse[].degreeName +

String

+

학위명

+ awardsResponse

Array

+

수상 이력 정보

awardsResponse[].id +

Number

+

수상 ID

awardsResponse[].awardsName +

String

+

수상 이름

awardsResponse[].ranking +

String

+

수상 순위

awardsResponse[].organizer +

String

+

주최자

awardsResponse[].awardsYear +

Number

+

수상 연도

awardsResponse[].awardsMonth +

Number

+

수상 월

awardsResponse[].awardsDescription +

String

+

수상 내용

+ attachResponse

Object

+

첨부 파일 정보

attachResponse.attachUrlResponseList[].id +

Number

+

첨부 URL ID

attachResponse.attachUrlResponseList[].attachUrlName +

String

+

첨부된 URL 이름

attachResponse.attachUrlResponseList[].attachUrlPath +

String

+

첨부된 URL

+
+
+
+

3.1. 내 이력서 - 미니 프로필 수정 +

+
+

요청

+
+
POST /private/mini-profile/update HTTP/1.1
 Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
 Accept: application/json
@@ -2584,69 +4580,79 @@ 

요청

{"profileTitle":"시니어 소프트웨어 개발자","myKeywordNames":["2024 레드닷 수상","스타트업 경력","서울대 디자인","대기업 경력 3년"],"isActivate":true} --6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
-
-
- ---- - - - - - - - - - - - - - - - - -
PartDescription

miniProfileRequest

미니 프로필 생성 객체

miniProfileImage

미니 프로필 이미지 파일. 지원되는 형식은 .png, .jpg 등이 있습니다.

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

profileTitle

String

프로필 제목

myKeywordNames

Array

나를 소개하는 키워드 목록

isActivate

Boolean

프로필 활성화 여부

-
-
-
-

3.4. 내 이력서 - 자기소개 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + +
PartDescription

+ miniProfileRequest

미니 프로필 생성 객체

+ miniProfileImage

미니 프로필 이미지 파일. 지원되는 형식은 + .png, .jpg 등이 있습니다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ profileTitle

String

+

프로필 제목

+ myKeywordNames

Array

+

나를 소개하는 키워드 목록

isActivate +

Boolean

+

프로필 활성화 여부

+
+
+
+

3.4. 내 이력서 - 자기소개 생성/수정 +

+
+

요청

+
+
POST /private/introduction HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -2655,50 +4661,56 @@ 

요청

{ "introduction" : "프로필 자기소개 항목을 입력합니다." }
-
-
- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

introduction

String

자기소개

문자열

-
-
- +
+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ introduction

String

+

자기소개

문자열

+
+
+ - + - + -
-

3.8. 내 이력서 - 경력 단일 생성

-
-
+
+ -
-

3.8. 내 이력서 - 경력 단일 수정

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

projectName

+

String

기업명(프로젝트명)

문자열

projectRole

+

String

직무(역할)

문자열

startDate

+

String

시작 연도.월

4자리 숫자.2자리 숫자

endDate

+

String

종료 연도.월

4자리 숫자.2자리 숫자

retirement

+

Boolean

+

퇴직 여부

false ⇒ 재직 중

+ antecedentsDescription

String

경력 설명

문자열

+
+ -
-

3.8. 내 이력서 - 경력 단일 삭제

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

projectName

+

String

기업명(프로젝트명)

문자열

projectRole

+

String

직무(역할)

문자열

startDate

+

String

시작 연도.월

4자리 숫자.2자리 숫자

endDate

+

String

종료 연도.월

4자리 숫자.2자리 숫자

retirement

+

Boolean

+

퇴직 여부

false ⇒ 재직 중

+ antecedentsDescription

String

경력 설명

문자열

+ + + + + + + + + + + + + + + + + + +
Table 2. /private/antecedents/{antecedentsId}
ParameterDescription

antecedentsId +

경력 항목 ID

+
+
+

3.8. 내 이력서 - 경력 단일 삭제

+
+
DELETE /private/antecedents/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 3. /private/antecedents/{antecedentsId}
ParameterDescription

antecedentsId

경력 항목 ID

-
-
-

3.9. 내 이력서 - 학력 생성

-
-
-
POST /private/education HTTP/1.1
+                    
+
+ + + + + + + + + + + + + + + + + + +
Table 3. /private/antecedents/{antecedentsId}
ParameterDescription

antecedentsId +

경력 항목 ID

+
+ -
-

3.9. 내 이력서 - 학력 수정

-
-
-
POST /private/education/1 HTTP/1.1
+                    
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

admissionYear +

Number

입학 연도

4자리 숫자

graduationYear +

Number

졸업 연도

4자리 숫자

universityName +

String

학교명

문자열

majorName

+

String

전공명

문자열

degreeName

+

String

학위명

문자열

+
+ -
-

3.9. 내 이력서 - 학력 삭제

-
-
-
DELETE /private/education/1 HTTP/1.1
+                    
+
+ + + + + + + + + + + + + + + + + + +
Table 4. /private/profileEducation/{educationId}
ParameterDescription

educationId

+

학력 항목 ID

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

admissionYear +

Number

입학 연도

4자리 숫자

graduationYear +

Number

졸업 연도

4자리 숫자

universityName +

String

학교명

문자열

majorName

+

String

전공명

문자열

degreeName

+

String

학위명

문자열

+
+
+

3.9. 내 이력서 - 학력 삭제

+
+
+
DELETE /private/profileEducation/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 5. /private/education/{educationId}
ParameterDescription

educationId

학력 항목 ID

-
-
-

3.10. 내 이력서 - 수상 단일 생성

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 5. /private/profileEducation/{educationId}
ParameterDescription

educationId

+

학력 항목 ID

+
+ -
-

3.10. 내 이력서 - 수상 단일 수정

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

awardsName

+

String

수상 부문

문자열

ranking

+

String

수상명

문자열

organizer

+

String

주관 기관

문자열

awardsYear

+

Number

수상 연도

양의 정수이자 4자리 수

awardsMonth

+

Number

수상 월

양의 정수이자 1부터 12까지의 숫자

+

+ awardsDescription

String

수상 항목 설명

문자열

+
+ -
-

3.10. 내 이력서 - 수상 단일 삭제

-
-
-
DELETE /private/awards/1 HTTP/1.1
+                    
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

awardsName

+

String

수상 부문

문자열

ranking

+

String

수상명

문자열

organizer

+

String

주관 기관

문자열

awardsYear

+

Number

수상 연도

양의 정수이자 4자리 수

awardsMonth

+

Number

수상 월

양의 정수이자 1부터 12까지의 숫자

+

+ awardsDescription

String

수상 항목 설명

문자열

+ + + + + + + + + + + + + + + + + + +
Table 6. /private/award/{awardsId}
ParameterDescription

awardsId

+

수상 ID

+
+
+

3.10. 내 이력서 - 수상 단일 삭제 +

+
+
+
DELETE /private/profileAwards/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 7. /private/awards/{awardsId}
ParameterDescription

awardsId

수상 ID

-
-
-

3.11. 내 이력서 - 첨부 URL 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 7. /private/profileAwards/{awardsId}
ParameterDescription

awardsId

+

수상 ID

+
+
+

3.11. 내 이력서 - 첨부 URL + 생성/수정

+
+

요청

+
+
POST /private/attach/url HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -3290,95 +5350,101 @@ 

요청

"attachUrlName" : "노션", "attachUrlPath" : "https://www.notion.no" } ]
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

[].attachUrlName

String

웹 링크 이름

문자열

[].attachUrlPath

String

웹 링크 경로

문자열

-
-
-
-

3.11. 내 이력서 - 첨부 URL 삭제

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ [].attachUrlName

String

+

웹 링크 이름

문자열

+ [].attachUrlPath

String

+

웹 링크 경로

문자열

+
+
+
+

3.11. 내 이력서 - 첨부 URL 삭제 +

+
+

요청

+
+
DELETE /private/attach/url/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 8. /private/attach/url/{attachUrlId}
ParameterDescription

attachUrlId

첨부 URL ID

-
-
-
-
-
-

4. 팀 소개서

-
-
-

4.0. 팀 소개서 - 전체 조회

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 8. /private/attach/url/{attachUrlId}
ParameterDescription

attachUrlId +

첨부 URL ID

+
+
+
+
+
+

4. 팀 소개서

+
+
+

4.0. 팀 소개서 - 전체 조회

+
+

요청

+
+
GET /team/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -3476,277 +5542,379 @@ 

응답

}, "teamProfileEssential" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

teamProfileEssential

Boolean

팀 소개서 기본 항목 존재 여부

teamMiniProfileResponse

Object

팀 미니 프로필 응답 객체

teamMiniProfileResponse.sectorName

String

팀 미니 프로필 분야

teamMiniProfileResponse.sizeType

String

팀 미니 프로필 규모

teamMiniProfileResponse.teamName

String

팀 이름

teamMiniProfileResponse.teamProfileTitle

String

팀 미니 프로필 제목

teamMiniProfileResponse.isTeamActivate

Boolean

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl

String

이미지 파일 소스 경로

teamMiniProfileResponse.teamKeywordNames

Array

팀 소개 항목

teamCompletionResponse

Object

팀 소개서 완성도 응답 객체

teamCompletionResponse.teamCompletion

String

팀 소개서 완성도 % 값

teamCompletionResponse.teamProfileTeamBuildingField

Boolean

희망 팀빌딩 분야 기입 여부

teamCompletionResponse.teamMemberAnnouncement

Boolean

팀원 공고

teamCompletionResponse.activity

Boolean

활동 방식 및 활동 지역 및 위치

teamCompletionResponse.teamIntroduction

Boolean

팀 소개

teamCompletionResponse.teamMemberIntroduction

Boolean

팀원 소개

teamCompletionResponse.history

Boolean

연혁

teamCompletionResponse.teamAttach

Boolean

첨부

teamProfileTeamBuildingFieldResponse

Object

희망 팀빌딩 분야 응답 객체

teamProfileTeamBuildingFieldResponse.teamProfileTeamBuildingFieldNames

Array

희망 팀빌딩 분야 이름

teamMemberAnnouncementResponses

Array

팀원 공고 응답 객체

teamMemberAnnouncementResponses[].id

Number

팀원 공고 응답 객체 ID

teamMemberAnnouncementResponses[].teamName

String

팀 이름

teamMemberAnnouncementResponses[].jobRoleName

String

직무, 역할 이름

teamMemberAnnouncementResponses[].mainBusiness

String

팀원 공고 주요 업무

teamMemberAnnouncementResponses[].skillNames

Array

보유 역량 이름 배열

teamMemberAnnouncementResponses[].applicationProcess

String

지원 절차

activityResponse

Object

활동 방식 및 활동 지역 및 위치 응답 객체

activityResponse.activityTagName

Array

활동 방식

activityResponse.cityName

String

시/도 이름

activityResponse.divisionName

String

시/군/구 이름

teamProfileIntroductionResponse

Object

팀 소개 응답 객체

teamProfileIntroductionResponse.teamIntroduction

String

팀 소개 텍스트

teamMemberIntroductionResponses

Array

팀원 소개 응답 객체

teamMemberIntroductionResponses[].id

Number

팀원 소개 응답 객체 ID

teamMemberIntroductionResponses[].teamMemberName

String

팀원 이름

teamMemberIntroductionResponses[].teamMemberRole

String

팀원 직무/역할

teamMemberIntroductionResponses[].teamMemberIntroductionText

String

팀원 소개 텍스트

historyResponses

Array

연혁 응답 객체

historyResponses[].id

Number

연혁 응답 객체 ID

historyResponses[].historyOneLineIntroduction

String

연혁 한 줄 소개

historyResponses[].startYear

Number

시작 연도

historyResponses[].endYear

Number

종료 연도

historyResponses[].historyIntroduction

String

연혁 소개

historyResponses[].inProgress

Boolean

진행 여부

teamAttachResponse

Object

팀 첨부 응답 객체

teamAttachResponse.teamAttachUrlResponseList[].id

Number

첨부 URL 객체 ID

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlName

String

팀 첨부 URL 이름

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlPath

String

팀 첨부 URL 경로

-
-
-
-

4.1. 팀 소개서 - 팀 미니 프로필 수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

teamProfileEssential +

Boolean

+

팀 소개서 기본 항목 존재 여부

+

teamMiniProfileResponse +

Object

+

팀 미니 프로필 응답 객체

teamMiniProfileResponse.sectorName +

String

+

팀 미니 프로필 분야

teamMiniProfileResponse.sizeType +

String

+

팀 미니 프로필 규모

teamMiniProfileResponse.teamName +

String

+

팀 이름

teamMiniProfileResponse.teamProfileTitle +

String

+

팀 미니 프로필 제목

teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl +

String

+

이미지 파일 소스 경로

teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 소개 항목

teamCompletionResponse +

Object

+

팀 소개서 완성도 응답 객체

teamCompletionResponse.teamCompletion +

String

+

팀 소개서 완성도 % 값

teamCompletionResponse.teamProfileTeamBuildingField +

Boolean

+

희망 팀빌딩 분야 기입 여부

teamCompletionResponse.teamMemberAnnouncement +

Boolean

+

팀원 공고

teamCompletionResponse.activity +

Boolean

+

활동 방식 및 활동 지역 및 위치

+

teamCompletionResponse.teamIntroduction +

Boolean

+

팀 소개

teamCompletionResponse.teamMemberIntroduction +

Boolean

+

팀원 소개

teamCompletionResponse.history +

Boolean

+

연혁

teamCompletionResponse.teamAttach +

Boolean

+

첨부

teamProfileTeamBuildingFieldResponse +

Object

+

희망 팀빌딩 분야 응답 객체

teamProfileTeamBuildingFieldResponse.teamProfileTeamBuildingFieldNames +

Array

+

희망 팀빌딩 분야 이름

teamMemberAnnouncementResponses +

Array

+

팀원 공고 응답 객체

teamMemberAnnouncementResponses[].id +

Number

+

팀원 공고 응답 객체 ID

teamMemberAnnouncementResponses[].teamName +

String

+

팀 이름

teamMemberAnnouncementResponses[].jobRoleName +

String

+

직무, 역할 이름

teamMemberAnnouncementResponses[].mainBusiness +

String

+

팀원 공고 주요 업무

teamMemberAnnouncementResponses[].skillNames +

Array

+

보유 역량 이름 배열

teamMemberAnnouncementResponses[].applicationProcess +

String

+

지원 절차

+ activityResponse

Object

+

활동 방식 및 활동 지역 및 위치 응답 + 객체

activityResponse.activityTagName +

Array

+

활동 방식

activityResponse.cityName +

String

+

시/도 이름

activityResponse.divisionName +

String

+

시/군/구 이름

teamProfileIntroductionResponse +

Object

+

팀 소개 응답 객체

teamProfileIntroductionResponse.teamIntroduction +

String

+

팀 소개 텍스트

teamMemberIntroductionResponses +

Array

+

팀원 소개 응답 객체

teamMemberIntroductionResponses[].id +

Number

+

팀원 소개 응답 객체 ID

teamMemberIntroductionResponses[].teamMemberName +

String

+

팀원 이름

teamMemberIntroductionResponses[].teamMemberRole +

String

+

팀원 직무/역할

teamMemberIntroductionResponses[].teamMemberIntroductionText +

String

+

팀원 소개 텍스트

+ historyResponses

Array

+

연혁 응답 객체

historyResponses[].id +

Number

+

연혁 응답 객체 ID

historyResponses[].historyOneLineIntroduction +

String

+

연혁 한 줄 소개

historyResponses[].startYear +

Number

+

시작 연도

historyResponses[].endYear +

Number

+

종료 연도

historyResponses[].historyIntroduction +

String

+

연혁 소개

historyResponses[].inProgress +

Boolean

+

진행 여부

+ teamAttachResponse

Object

+

팀 첨부 응답 객체

teamAttachResponse.teamAttachUrlResponseList[].id +

Number

+

첨부 URL 객체 ID

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlName +

String

+

팀 첨부 URL 이름

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlPath +

String

+

팀 첨부 URL 경로

+
+
+
+

4.1. 팀 소개서 - 팀 미니 프로필 + 수정

+
+

요청

+
+
POST /update/onBoarding/team/mini-profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -3758,56 +5926,66 @@ 

요청

"sizeType" : "1-5인", "sectorName" : "플랫폼" }
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

teamBuildingFieldNames

Null

희망 팀빌딩 분야(7가지 항목)

문자열의 배열

teamName

String

팀이름

문자열

sizeType

String

팀 규모

문자열

sectorName

String

분야 이름

문자열

-
-
-
-

4.4. 팀 소개서 - 희망 팀빌딩 분야 생성/수정

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

teamBuildingFieldNames +

Null

+

희망 팀빌딩 분야(7가지 항목)

+

문자열의 배열

teamName +

String

+

팀이름

문자열

sizeType +

String

+

팀 규모

문자열

sectorName +

String

+

분야 이름

문자열

+
+
+ -
-

4.5. 팀 소개서 - 팀원 공고 단일 생성

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ teamBuildingFieldNames

Array

희망 팀빋딩 분야(7가지 항목)

문자열의 배열

+
+ -
-

4.5. 팀 소개서 - 팀원 공고 단일 수정

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

jobRoleName

+

String

직무/역할 (4가지 항목)

문자열

mainBusiness +

String

주요 업무

문자열

skillNames

+

Array

보유 역량

문자열의 배열

+ applicationProcess

String

지원 절차

문자열

+
+ - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

jobRoleName

+

String

직무/역할 (4가지 항목)

문자열

mainBusiness +

String

주요 업무

문자열

skillNames

+

Array

보유 역량

문자열의 배열

+ applicationProcess

String

지원 절차

문자열

+ + + + + + + + + + + + + + + + + + +
Table 9. /team/member/announcement/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+
+ -
-

요청

-
-
+
+
+

요청

+
+
DELETE /team/members/announcements/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 10. /team/members/announcements/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId

팀원 공고 ID

-
- +
+ + + + + + + + + + + + + + + + + + +
Table 10. /team/members/announcements/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+
+ -
-

4.7. 팀 소개서 - 팀 소개 생성/수정/삭제

-
-

요청

-
-
+
+
+

4.7. 팀 소개서 - 팀 소개 + 생성/수정/삭제

+
+

요청

+
+
POST /team/introduction HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -4034,38 +6229,41 @@ 

요청

{ "teamIntroduction" : "팀 소개 항목을 입력합니다." }
-
-
- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

teamIntroduction

String

팀 소개

문자열, 공란이면 삭제

-
-
-
-

4.8. 팀 소개서 - 팀원 소개 단일 생성

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ teamIntroduction

String

+

팀 소개

문자열, 공란이면 삭제

+
+
+ -
-

4.8. 팀 소개서 - 팀원 소개 단일 수정

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

teamMemberName +

String

팀원 이름

문자열

teamMemberRole +

String

팀원 직무/역할

문자열

teamMemberIntroductionText +

String

팀원 소개

문자열

+
+ -
-

4.8. 팀 소개서 - 팀원 소개 단일 삭제

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

teamMemberName +

String

팀원 이름

문자열

teamMemberRole +

String

팀원 직무/역할

문자열

teamMemberIntroductionText +

String

팀원 소개

문자열

+ + + + + + + + + + + + + + + + + + +
Table 11. /team/member/{teamMemberIntroductionId}
ParameterDescription

teamMemberIntroductionId +

팀원 소개 ID

+
+
+

4.8. 팀 소개서 - 팀원 소개 단일 + 삭제

+
+
DELETE /team/members/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 12. /team/members/{teamMemberIntroductionId}
ParameterDescription

teamMemberIntroductionId

팀원 소개 ID

-
-
-

4.9. 팀 소개서 - 팀 연혁 단일 생성

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 12. /team/members/{teamMemberIntroductionId}
ParameterDescription

teamMemberIntroductionId +

팀원 소개 ID

+
+ -
-

4.9. 팀 소개서 - 팀 연혁 단일 수정

-
-
+} +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

historyOneLineIntroduction +

String

연혁 한 줄 소개

문자열

startYear

+

Number

시작 연도

숫자

endYear

+

Number

종료 연도

숫자

inProgress

+

Boolean

+

현재 진행 여부

boolean

+ historyIntroduction

String

연혁 소개 텍스트

문자열

+
+ -
-

4.9. 팀 소개서 - 팀 연혁 단일 삭제

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

historyOneLineIntroduction +

String

연혁 한 줄 소개

문자열

startYear

+

Number

시작 연도

숫자

endYear

+

Number

종료 연도

숫자

inProgress

+

Boolean

+

현재 진행 여부

boolean

+ historyIntroduction

String

연혁 소개 텍스트

문자열

+ + + + + + + + + + + + + + + + + + +
Table 13. /team/history/{historyId}
ParameterDescription

historyId

+

연혁 ID

+
+
+

4.9. 팀 소개서 - 팀 연혁 단일 삭제 +

+
+
DELETE /team/history/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 14. /team/history/{historyId}
ParameterDescription

historyId

연혁 ID

-
-
-

4.10. 팀 소개서 - 팀 첨부 URL 생성/수정

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 14. /team/history/{historyId}
ParameterDescription

historyId

+

연혁 ID

+
+
+

4.10. 팀 소개서 - 팀 첨부 + URL 생성/수정

+
+

요청

+
+
POST /team/attach/url HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -4418,127 +6644,138 @@ 

요청

"teamAttachUrlName" : "노션", "teamAttachUrlPath" : "https://www.notion.no" } ]
-
-
- ------ - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

[].teamAttachUrlName

String

팀 첨부 웹 링크 이름

문자열

[].teamAttachUrlPath

String

팀 첨부 웹 링크 경로

문자열

-
-
-
-

4.10. 팀 소개서 - 팀 첨부 URL 삭제

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

[].teamAttachUrlName +

String

+

팀 첨부 웹 링크 이름

문자열

[].teamAttachUrlPath +

String

+

팀 첨부 웹 링크 경로

문자열

+
+
+
+

4.10. 팀 소개서 - 팀 첨부 URL + 삭제

+
+

요청

+
+
DELETE /team/attach/url/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 15. /team/attach/url/{teamAttachUrlId}
ParameterDescription

teamAttachUrlId

팀 첨부 URL ID

-
-
-
-
-
-

6. 팀원 찾기

-
-
-

6.1. 팀원 찾기 페이지

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 15. /team/attach/url/{teamAttachUrlId}
ParameterDescription

+ teamAttachUrlId

팀 첨부 URL ID

+
+
+
+
+
+

6. 팀원 찾기

+
+
+

6.1. 팀원 찾기 페이지

+
+

요청

+
+
GET /search/private/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-
-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescription

teamBuildingFieldName

희망 팀빌딩 분야 필터

jobRoleName

직무/역할 필터

skillName

보유 역량 필터

cityName

지역 (시/도) 필터

divisionName

지역 (시/군/구) 필터

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription

teamBuildingFieldName +

희망 팀빌딩 분야 필터

jobRoleName +

직무/역할 필터

skillName +

보유 역량 필터

cityName +

지역 (시/도) 필터

+ divisionName

지역 (시/군/구) 필터

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -4572,202 +6809,252 @@ 

응답

"numberOfElements" : 1, "empty" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

content[].id

Number

개인 미니 프로필 ID

content[].profileTitle

String

프로필 제목

content[].miniProfileImg

String

프로필 이미지 URL

content[].isActivate

Boolean

프로필 활성화 여부

content[].myKeywordNames

Array

키워드 목록

content[].memberName

String

회원 이름

content[].jobRoleNames

Array

직무 및 역할 이름 배열

content[].isPrivateSaved

Boolean

찜하기 여부

pageable

String

페이징 처리 객체

sort.empty

Boolean

정렬 규칙이 비어 있는지 여부

sort.unsorted

Boolean

정렬이 적용되지 않았는지 여부

sort.sorted

Boolean

정렬이 적용되었는지 여부

last

Boolean

마지막 페이지 여부

totalPages

Number

전체 페이지 수

totalElements

Number

전체 요소 수

first

Boolean

첫 페이지 여부

size

Number

페이지당 요소 수

number

Number

페이지 번호

numberOfElements

Number

현재 페이지의 요소 수

empty

Boolean

페이지가 비어 있는지 여부

-
-
-
-

6.2. 로그인 이후 팀원 찾기 페이지

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ content[].id

Number

+

개인 미니 프로필 ID

content[].profileTitle +

String

+

프로필 제목

content[].miniProfileImg +

String

+

프로필 이미지 URL

content[].isActivate +

Boolean

+

프로필 활성화 여부

content[].myKeywordNames +

Array

+

키워드 목록

content[].memberName +

String

+

회원 이름

content[].jobRoleNames +

Array

+

직무 및 역할 이름 배열

content[].isPrivateSaved +

Boolean

+

찜하기 여부

pageable +

String

+

페이징 처리 객체

sort.empty +

Boolean

+

정렬 규칙이 비어 있는지 여부

+

+ sort.unsorted

Boolean

+

정렬이 적용되지 않았는지 여부

+

sort.sorted +

Boolean

+

정렬이 적용되었는지 여부

last

+

Boolean

+

마지막 페이지 여부

totalPages +

Number

+

전체 페이지 수

+ totalElements

Number

+

전체 요소 수

first

+

Boolean

+

첫 페이지 여부

size

+

Number

+

페이지당 요소 수

number

+

Number

+

페이지 번호

+ numberOfElements

Number

+

현재 페이지의 요소 수

empty

+

Boolean

+

페이지가 비어 있는지 여부

+
+
+
+

6.2. 로그인 이후 팀원 찾기 페이지 +

+
+

요청

+
+
GET /search/private/profile/login HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

요청 헤더

-
-

include::/Users/gwondongmin/Desktop/Linkit_Dev/linkit/build/generated-snippets/search-controller-test/get-browse-private-mini-profile/request-headers.adoc -==== 요청 쿠키

-
- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescription

teamBuildingFieldName

희망 팀빌딩 분야 필터

jobRoleName

직무/역할 필터

skillName

보유 역량 필터

cityName

지역 (시/도) 필터

divisionName

지역 (시/군/구) 필터

-
-
-

응답

-
-
+
+
+
+
+

요청 헤더

+
+

+ include::/Users/gwondongmin/Desktop/Linkit_Dev/linkit/build/generated-snippets/search-controller-test/get-browse-private-mini-profile/request-headers.adoc + ==== 요청 쿠키

+
+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription

teamBuildingFieldName +

희망 팀빌딩 분야 필터

jobRoleName +

직무/역할 필터

skillName +

보유 역량 필터

cityName +

지역 (시/도) 필터

+ divisionName

지역 (시/군/구) 필터

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -4801,229 +7088,280 @@ 

응답

"numberOfElements" : 1, "empty" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

content[].id

Number

개인 미니 프로필 ID

content[].profileTitle

String

프로필 제목

content[].miniProfileImg

String

프로필 이미지 URL

content[].isActivate

Boolean

프로필 활성화 여부

content[].myKeywordNames

Array

키워드 목록

content[].memberName

String

회원 이름

content[].jobRoleNames

Array

직무 및 역할 이름 배열

content[].isPrivateSaved

Boolean

로그인 사용자가 해당 프로필 찜한 여부

pageable

String

페이징 처리 객체

sort.empty

Boolean

정렬 규칙이 비어 있는지 여부

sort.unsorted

Boolean

정렬이 적용되지 않았는지 여부

sort.sorted

Boolean

정렬이 적용되었는지 여부

last

Boolean

마지막 페이지 여부

totalPages

Number

전체 페이지 수

totalElements

Number

전체 요소 수

first

Boolean

첫 페이지 여부

size

Number

페이지당 요소 수

number

Number

페이지 번호

numberOfElements

Number

현재 페이지의 요소 수

empty

Boolean

페이지가 비어 있는지 여부

-
-
-
-
-
-

7. 팀 찾기

-
-
-

7.1. 팀 찾기 페이지

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ content[].id

Number

+

개인 미니 프로필 ID

content[].profileTitle +

String

+

프로필 제목

content[].miniProfileImg +

String

+

프로필 이미지 URL

content[].isActivate +

Boolean

+

프로필 활성화 여부

content[].myKeywordNames +

Array

+

키워드 목록

content[].memberName +

String

+

회원 이름

content[].jobRoleNames +

Array

+

직무 및 역할 이름 배열

content[].isPrivateSaved +

Boolean

+

로그인 사용자가 해당 프로필 찜한 + 여부

pageable +

String

+

페이징 처리 객체

sort.empty +

Boolean

+

정렬 규칙이 비어 있는지 여부

+

+ sort.unsorted

Boolean

+

정렬이 적용되지 않았는지 여부

+

sort.sorted +

Boolean

+

정렬이 적용되었는지 여부

last

+

Boolean

+

마지막 페이지 여부

totalPages +

Number

+

전체 페이지 수

+ totalElements

Number

+

전체 요소 수

first

+

Boolean

+

첫 페이지 여부

size

+

Number

+

페이지당 요소 수

number

+

Number

+

페이지 번호

+ numberOfElements

Number

+

현재 페이지의 요소 수

empty

+

Boolean

+

페이지가 비어 있는지 여부

+
+
+
+
+
+

7. 팀 찾기

+
+
+

7.1. 팀 찾기 페이지

+
+

요청

+
+
GET /search/team/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-
-
-
-
-

요청 헤더

- ----- - - - - - - - - - - - - - - -
NameDescriptionConstraint

Authorization

access token

문자열(jwt)

-
-
-

요청 쿠키

- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescription

teamBuildingFieldName

희망 팀빌딩 분야 필터

jobRoleName

직무/역할 필터

skillName

보유 역량 필터

cityName

지역 (시/도) 필터

divisionName

지역 (시/군/구) 필터

activityTagName

활동 방식 필터

-
-
-

응답

-
-
+
+
+
+
+

요청 헤더

+ + + + + + + + + + + + + + + + + + + + +
NameDescriptionConstraint

+ Authorization

access token

문자열(jwt)

+
+
+

요청 쿠키

+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription

teamBuildingFieldName +

희망 팀빌딩 분야 필터

jobRoleName +

직무/역할 필터

skillName +

보유 역량 필터

cityName +

지역 (시/도) 필터

+ divisionName

지역 (시/군/구) 필터

+ activityTagName

활동 방식 필터

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -5069,163 +7407,212 @@ 

응답

"numberOfElements" : 1, "empty" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

content[].teamMiniProfileResponse.id

Number

팀 미니 프로필 ID

content[].teamMiniProfileResponse.sectorName

String

부문 이름

content[].teamMiniProfileResponse.sizeType

String

팀 크기 유형

content[].teamMiniProfileResponse.teamName

String

팀 이름

content[].teamMiniProfileResponse.teamProfileTitle

String

팀 소개서 제목

content[].teamMiniProfileResponse.isTeamActivate

Boolean

팀 소개서 활성화 여부

content[].teamMiniProfileResponse.teamLogoImageUrl

String

팀 로고 이미지 URL

content[].teamMiniProfileResponse.teamKeywordNames

Array

팀 키워드

content[].teamMemberAnnouncementResponse.id

Number

팀원 공고 ID

content[].teamMemberAnnouncementResponse.teamLogoImageUrl

String

팀 로고 이미지 경로

content[].teamMemberAnnouncementResponse.teamName

String

팀 이름

content[].teamMemberAnnouncementResponse.jobRoleName

String

팀원 공고 직무 이름

content[].teamMemberAnnouncementResponse.mainBusiness

String

주요 업무

content[].teamMemberAnnouncementResponse.skillNames

Array

요구되는 기술 목록

content[].teamMemberAnnouncementResponse.applicationProcess

String

지원 절차

content[].teamMemberAnnouncementResponse.isTeamSaved

Boolean

로그인 사용자가 해당 팀원 공고 찜한 여부

last

Boolean

마지막 페이지 여부

totalPages

Number

전체 페이지 수

totalElements

Number

전체 요소 수

first

Boolean

첫 페이지 여부

size

Number

페이지당 요소 수

number

Number

페이지 번호

numberOfElements

Number

현재 페이지의 요소 수

empty

Boolean

페이지가 비어 있는지 여부

-
-
-
-

7.2. 로그인 이후 팀 찾기 페이지

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

content[].teamMiniProfileResponse.id +

Number

+

팀 미니 프로필 ID

content[].teamMiniProfileResponse.sectorName +

String

+

부문 이름

content[].teamMiniProfileResponse.sizeType +

String

+

팀 크기 유형

content[].teamMiniProfileResponse.teamName +

String

+

팀 이름

content[].teamMiniProfileResponse.teamProfileTitle +

String

+

팀 소개서 제목

content[].teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 소개서 활성화 여부

content[].teamMiniProfileResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 URL

content[].teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 키워드

content[].teamMemberAnnouncementResponse.id +

Number

+

팀원 공고 ID

content[].teamMemberAnnouncementResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 경로

content[].teamMemberAnnouncementResponse.teamName +

String

+

팀 이름

content[].teamMemberAnnouncementResponse.jobRoleName +

String

+

팀원 공고 직무 이름

content[].teamMemberAnnouncementResponse.mainBusiness +

String

+

주요 업무

content[].teamMemberAnnouncementResponse.skillNames +

Array

+

요구되는 기술 목록

content[].teamMemberAnnouncementResponse.applicationProcess +

String

+

지원 절차

content[].teamMemberAnnouncementResponse.isTeamSaved +

Boolean

+

로그인 사용자가 해당 팀원 공고 찜한 + 여부

last

+

Boolean

+

마지막 페이지 여부

totalPages +

Number

+

전체 페이지 수

+ totalElements

Number

+

전체 요소 수

first

+

Boolean

+

첫 페이지 여부

size

+

Number

+

페이지당 요소 수

number

+

Number

+

페이지 번호

+ numberOfElements

Number

+

현재 페이지의 요소 수

empty

+

Boolean

+

페이지가 비어 있는지 여부

+
+
+
+

7.2. 로그인 이후 팀 찾기 페이지

+
+

요청

+
+
GET /search/team/profile/login HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -5271,186 +7658,236 @@ 

응답

"numberOfElements" : 1, "empty" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

content[].teamMiniProfileResponse.id

Number

팀 미니 프로필 ID

content[].teamMiniProfileResponse.sectorName

String

부문 이름

content[].teamMiniProfileResponse.sizeType

String

팀 크기 유형

content[].teamMiniProfileResponse.teamName

String

팀 이름

content[].teamMiniProfileResponse.teamProfileTitle

String

팀 소개서 제목

content[].teamMiniProfileResponse.isTeamActivate

Boolean

팀 소개서 활성화 여부

content[].teamMiniProfileResponse.teamLogoImageUrl

String

팀 로고 이미지 URL

content[].teamMiniProfileResponse.teamKeywordNames

Array

팀 키워드

content[].teamMemberAnnouncementResponse.id

Number

팀원 공고 ID

content[].teamMemberAnnouncementResponse.teamLogoImageUrl

String

팀 로고 이미지 경로

content[].teamMemberAnnouncementResponse.teamName

String

팀 이름

content[].teamMemberAnnouncementResponse.jobRoleName

String

팀원 공고 직무 이름

content[].teamMemberAnnouncementResponse.mainBusiness

String

주요 업무

content[].teamMemberAnnouncementResponse.skillNames

Array

요구되는 기술 목록

content[].teamMemberAnnouncementResponse.applicationProcess

String

지원 절차

content[].teamMemberAnnouncementResponse.isTeamSaved

Boolean

로그인 사용자가 해당 팀원 공고 찜한 여부

last

Boolean

마지막 페이지 여부

totalPages

Number

전체 페이지 수

totalElements

Number

전체 요소 수

first

Boolean

첫 페이지 여부

size

Number

페이지당 요소 수

number

Number

페이지 번호

numberOfElements

Number

현재 페이지의 요소 수

empty

Boolean

페이지가 비어 있는지 여부

-
-
-
-
-
-

8. 이력서 열람

-
-
-

8.1. 내 이력서 열람

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

content[].teamMiniProfileResponse.id +

Number

+

팀 미니 프로필 ID

content[].teamMiniProfileResponse.sectorName +

String

+

부문 이름

content[].teamMiniProfileResponse.sizeType +

String

+

팀 크기 유형

content[].teamMiniProfileResponse.teamName +

String

+

팀 이름

content[].teamMiniProfileResponse.teamProfileTitle +

String

+

팀 소개서 제목

content[].teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 소개서 활성화 여부

content[].teamMiniProfileResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 URL

content[].teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 키워드

content[].teamMemberAnnouncementResponse.id +

Number

+

팀원 공고 ID

content[].teamMemberAnnouncementResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 경로

content[].teamMemberAnnouncementResponse.teamName +

String

+

팀 이름

content[].teamMemberAnnouncementResponse.jobRoleName +

String

+

팀원 공고 직무 이름

content[].teamMemberAnnouncementResponse.mainBusiness +

String

+

주요 업무

content[].teamMemberAnnouncementResponse.skillNames +

Array

+

요구되는 기술 목록

content[].teamMemberAnnouncementResponse.applicationProcess +

String

+

지원 절차

content[].teamMemberAnnouncementResponse.isTeamSaved +

Boolean

+

로그인 사용자가 해당 팀원 공고 찜한 + 여부

last

+

Boolean

+

마지막 페이지 여부

totalPages +

Number

+

전체 페이지 수

+ totalElements

Number

+

전체 요소 수

first

+

Boolean

+

첫 페이지 여부

size

+

Number

+

페이지당 요소 수

number

+

Number

+

페이지 번호

+ numberOfElements

Number

+

현재 페이지의 요소 수

empty

+

Boolean

+

페이지가 비어 있는지 여부

+
+
+
+
+
+

8. 이력서 열람

+
+
+

8.1. 내 이력서 열람

+
+

요청

+
+
GET /browse/private/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 16. /browse/private/profile/{miniProfileId}
ParameterDescription

miniProfileId

미니 프로필 ID

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 16. /browse/private/profile/{miniProfileId}
ParameterDescription

+ miniProfileId

미니 프로필 ID

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -5472,12 +7909,12 @@ 

응답

}, "completionResponse" : { "completion" : "100.0", - "awards" : true, + "profileAwards" : true, "profileTeamBuildingField" : true, "profileRegion" : true, "introduction" : true, "antecedents" : true, - "education" : true, + "profileEducation" : true, "profileSkill" : true, "attach" : true }, @@ -5556,336 +7993,446 @@

응답

} ] } }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

profileId

Number

타깃 열람 프로필 ID

miniProfileResponse

Object

사용자의 미니 프로필 정보

miniProfileResponse.profileTitle

String

프로필의 제목

miniProfileResponse.miniProfileImg

String

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames

Array

나를 소개하는 키워드 목록

miniProfileResponse.isActivate

Boolean

미니 프로필 활성화 여부

miniProfileResponse.memberName

String

회원 이름

miniProfileResponse.jobRoleNames

Array

직무 및 역할

completionResponse

Object

프로필의 완성도 정보

completionResponse.completion

String

프로필 완성도 (백분율)

completionResponse.introduction

Boolean

소개의 완성 여부

completionResponse.profileSkill

Boolean

스킬 섹션의 완성 여부

completionResponse.profileTeamBuildingField

Boolean

팀 빌딩 필드의 완성 여부

completionResponse.profileRegion

Boolean

지역 정보의 완성 여부

completionResponse.antecedents

Boolean

이력 사항의 완성 여부

completionResponse.education

Boolean

교육 이력의 완성 여부

completionResponse.awards

Boolean

수상 이력의 완성 여부

completionResponse.attach

Boolean

첨부 파일의 유무

profileIntroductionResponse

Object

프로필 소개

profileIntroductionResponse.introduction

String

소개 내용

jobAndSkillResponse

Object

나의 직무/역할 및 보유 기술 정보

jobAndSkillResponse.jobRoleNames

Array

직무/역할 명칭

jobAndSkillResponse.skillNames

Array

보유 기술 명칭

profileTeamBuildingFieldResponse

Object

팀 빌딩 필드 응답

profileTeamBuildingFieldResponse.teamBuildingFieldNames

Array

팀 빌딩 필드 이름

profileRegionResponse

Object

활동 지역 및 위치 응답

profileRegionResponse.cityName

String

시/도 이름

profileRegionResponse.divisionName

String

시/군/구 이름

antecedentsResponse

Array

과거 경력 정보

antecedentsResponse[].id

Number

경력 ID

antecedentsResponse[].projectName

String

프로젝트 이름

antecedentsResponse[].projectRole

String

프로젝트 역할

antecedentsResponse[].startDate

String

시작 연도/월

antecedentsResponse[].endDate

String

종료 연도/월

antecedentsResponse[].retirement

Boolean

퇴직 여부

educationResponse

Array

교육 이력 정보

educationResponse[].id

Number

교육 이력 ID

educationResponse[].admissionYear

Number

입학 연도

educationResponse[].graduationYear

Number

졸업 연도

educationResponse[].universityName

String

대학교 이름

educationResponse[].majorName

String

전공 이름

educationResponse[].degreeName

String

학위명

awardsResponse

Array

수상 이력 정보

awardsResponse[].id

Number

수상 ID

awardsResponse[].awardsName

String

수상 이름

awardsResponse[].ranking

String

수상 순위

awardsResponse[].organizer

String

주최자

awardsResponse[].awardsYear

Number

수상 연도

awardsResponse[].awardsMonth

Number

수상 월

awardsResponse[].awardsDescription

String

수상 내용

attachResponse

Object

첨부 파일 정보

attachResponse.attachUrlResponseList[].id

Number

첨부 URL ID

attachResponse.attachUrlResponseList[].attachUrlName

String

첨부된 URL 이름

attachResponse.attachUrlResponseList[].attachUrlPath

String

첨부된 URL

-
-
-
-
-
-

9. 소개서 열람

-
-
-

9.1. 팀 소개서 열람

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

profileId +

Number

+

타깃 열람 프로필 ID

miniProfileResponse +

Object

+

사용자의 미니 프로필 정보

miniProfileResponse.profileTitle +

String

+

프로필의 제목

miniProfileResponse.miniProfileImg +

String

+

미니 프로필 이미지 URL

miniProfileResponse.myKeywordNames +

Array

+

나를 소개하는 키워드 목록

miniProfileResponse.isActivate +

Boolean

+

미니 프로필 활성화 여부

miniProfileResponse.memberName +

String

+

회원 이름

miniProfileResponse.jobRoleNames +

Array

+

직무 및 역할

+ completionResponse

Object

+

프로필의 완성도 정보

completionResponse.completion +

String

+

프로필 완성도 (백분율)

completionResponse.introduction +

Boolean

+

소개의 완성 여부

completionResponse.profileSkill +

Boolean

+

스킬 섹션의 완성 여부

completionResponse.profileTeamBuildingField +

Boolean

+

팀 빌딩 필드의 완성 여부

completionResponse.profileRegion +

Boolean

+

지역 정보의 완성 여부

completionResponse.antecedents +

Boolean

+

이력 사항의 완성 여부

completionResponse.profileEducation +

Boolean

+

교육 이력의 완성 여부

completionResponse.profileAwards +

Boolean

+

수상 이력의 완성 여부

completionResponse.attach +

Boolean

+

첨부 파일의 유무

profileIntroductionResponse +

Object

+

프로필 소개

profileIntroductionResponse.introduction +

String

+

소개 내용

jobAndSkillResponse +

Object

+

나의 직무/역할 및 보유 기술 정보

+

jobAndSkillResponse.jobRoleNames +

Array

+

직무/역할 명칭

jobAndSkillResponse.skillNames +

Array

+

보유 기술 명칭

profileTeamBuildingFieldResponse +

Object

+

팀 빌딩 필드 응답

profileTeamBuildingFieldResponse.teamBuildingFieldNames +

Array

+

팀 빌딩 필드 이름

profileRegionResponse +

Object

+

활동 지역 및 위치 응답

profileRegionResponse.cityName +

String

+

시/도 이름

profileRegionResponse.divisionName +

String

+

시/군/구 이름

antecedentsResponse +

Array

+

과거 경력 정보

antecedentsResponse[].id +

Number

+

경력 ID

antecedentsResponse[].projectName +

String

+

프로젝트 이름

antecedentsResponse[].projectRole +

String

+

프로젝트 역할

antecedentsResponse[].startDate +

String

+

시작 연도/월

antecedentsResponse[].endDate +

String

+

종료 연도/월

antecedentsResponse[].retirement +

Boolean

+

퇴직 여부

+ educationResponse

Array

+

교육 이력 정보

educationResponse[].id +

Number

+

교육 이력 ID

educationResponse[].admissionYear +

Number

+

입학 연도

educationResponse[].graduationYear +

Number

+

졸업 연도

educationResponse[].universityName +

String

+

대학교 이름

educationResponse[].majorName +

String

+

전공 이름

educationResponse[].degreeName +

String

+

학위명

+ awardsResponse

Array

+

수상 이력 정보

awardsResponse[].id +

Number

+

수상 ID

awardsResponse[].awardsName +

String

+

수상 이름

awardsResponse[].ranking +

String

+

수상 순위

awardsResponse[].organizer +

String

+

주최자

awardsResponse[].awardsYear +

Number

+

수상 연도

awardsResponse[].awardsMonth +

Number

+

수상 월

awardsResponse[].awardsDescription +

String

+

수상 내용

+ attachResponse

Object

+

첨부 파일 정보

attachResponse.attachUrlResponseList[].id +

Number

+

첨부 URL ID

attachResponse.attachUrlResponseList[].attachUrlName +

String

+

첨부된 URL 이름

attachResponse.attachUrlResponseList[].attachUrlPath +

String

+

첨부된 URL

+
+
+
+
+
+

9. 소개서 열람

+
+
+

9.1. 팀 소개서 열람

+
+

요청

+
+
GET /browse/team/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 17. /browse/team/profile/{teamMiniProfileId}
ParameterDescription

teamMiniProfileId

팀 미니 프로필 ID

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 17. /browse/team/profile/{teamMiniProfileId}
ParameterDescription

+ teamMiniProfileId

팀 미니 프로필 ID

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -5983,280 +8530,382 @@ 

응답

} ] } }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

teamProfileId

Number

타깃 열람 팀 소개서 PK ID

teamMiniProfileResponse

Object

팀 미니 프로필 응답 객체

teamMiniProfileResponse.sectorName

String

팀 미니 프로필 분야

teamMiniProfileResponse.sizeType

String

팀 미니 프로필 규모

teamMiniProfileResponse.teamName

String

팀 이름

teamMiniProfileResponse.teamProfileTitle

String

팀 미니 프로필 제목

teamMiniProfileResponse.isTeamActivate

Boolean

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl

String

이미지 파일 소스 경로

teamMiniProfileResponse.teamKeywordNames

Array

팀 소개 항목

teamCompletionResponse

Object

팀 소개서 완성도 응답 객체

teamCompletionResponse.teamCompletion

String

팀 소개서 완성도 % 값

teamCompletionResponse.teamProfileTeamBuildingField

Boolean

희망 팀빌딩 분야 기입 여부

teamCompletionResponse.teamMemberAnnouncement

Boolean

팀원 공고

teamCompletionResponse.activity

Boolean

활동 방식 및 활동 지역 및 위치

teamCompletionResponse.teamIntroduction

Boolean

팀 소개

teamCompletionResponse.teamMemberIntroduction

Boolean

팀원 소개

teamCompletionResponse.history

Boolean

연혁

teamCompletionResponse.teamAttach

Boolean

첨부

teamProfileTeamBuildingFieldResponse

Object

희망 팀빌딩 분야 응답 객체

teamProfileTeamBuildingFieldResponse.teamProfileTeamBuildingFieldNames

Array

희망 팀빌딩 분야 이름

teamMemberAnnouncementResponses

Array

팀원 공고 응답 객체

teamMemberAnnouncementResponses[].id

Number

팀원 공고 응답 객체 ID

teamMemberAnnouncementResponses[].teamName

String

팀 이름

teamMemberAnnouncementResponses[].jobRoleName

String

직무, 역할 이름

teamMemberAnnouncementResponses[].mainBusiness

String

팀원 공고 주요 업무

teamMemberAnnouncementResponses[].skillNames

Array

보유 역량 이름 배열

teamMemberAnnouncementResponses[].applicationProcess

String

지원 절차

activityResponse

Object

활동 방식 및 활동 지역 및 위치 응답 객체

activityResponse.activityTagName

Array

활동 방식

activityResponse.cityName

String

시/도 이름

activityResponse.divisionName

String

시/군/구 이름

teamProfileIntroductionResponse

Object

팀 소개 응답 객체

teamProfileIntroductionResponse.teamIntroduction

String

팀 소개 텍스트

teamMemberIntroductionResponses

Array

팀원 소개 응답 객체

teamMemberIntroductionResponses[].id

Number

팀원 소개 응답 객체 ID

teamMemberIntroductionResponses[].teamMemberName

String

팀원 이름

teamMemberIntroductionResponses[].teamMemberRole

String

팀원 직무/역할

teamMemberIntroductionResponses[].teamMemberIntroductionText

String

팀원 소개 텍스트

historyResponses

Array

연혁 응답 객체

historyResponses[].id

Number

연혁 응답 객체 ID

historyResponses[].historyOneLineIntroduction

String

연혁 한 줄 소개

historyResponses[].startYear

Number

시작 연도

historyResponses[].endYear

Number

종료 연도

historyResponses[].historyIntroduction

String

연혁 소개

historyResponses[].inProgress

Boolean

진행 여부

teamAttachResponse

Object

팀 첨부 응답 객체

teamAttachResponse.teamAttachUrlResponseList[].id

Number

첨부 URL 객체 ID

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlName

String

팀 첨부 URL 이름

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlPath

String

팀 첨부 URL 경로

-
-
-
-
-
-

10. 매칭 관리

-
-
-

10.1. 내 이력서로 내 이력서에 매칭 요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ teamProfileId

Number

+

타깃 열람 팀 소개서 PK ID

+

teamMiniProfileResponse +

Object

+

팀 미니 프로필 응답 객체

teamMiniProfileResponse.sectorName +

String

+

팀 미니 프로필 분야

teamMiniProfileResponse.sizeType +

String

+

팀 미니 프로필 규모

teamMiniProfileResponse.teamName +

String

+

팀 이름

teamMiniProfileResponse.teamProfileTitle +

String

+

팀 미니 프로필 제목

teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 소개서 활성화 여부

teamMiniProfileResponse.teamLogoImageUrl +

String

+

이미지 파일 소스 경로

teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 소개 항목

teamCompletionResponse +

Object

+

팀 소개서 완성도 응답 객체

teamCompletionResponse.teamCompletion +

String

+

팀 소개서 완성도 % 값

teamCompletionResponse.teamProfileTeamBuildingField +

Boolean

+

희망 팀빌딩 분야 기입 여부

teamCompletionResponse.teamMemberAnnouncement +

Boolean

+

팀원 공고

teamCompletionResponse.activity +

Boolean

+

활동 방식 및 활동 지역 및 위치

+

teamCompletionResponse.teamIntroduction +

Boolean

+

팀 소개

teamCompletionResponse.teamMemberIntroduction +

Boolean

+

팀원 소개

teamCompletionResponse.history +

Boolean

+

연혁

teamCompletionResponse.teamAttach +

Boolean

+

첨부

teamProfileTeamBuildingFieldResponse +

Object

+

희망 팀빌딩 분야 응답 객체

teamProfileTeamBuildingFieldResponse.teamProfileTeamBuildingFieldNames +

Array

+

희망 팀빌딩 분야 이름

teamMemberAnnouncementResponses +

Array

+

팀원 공고 응답 객체

teamMemberAnnouncementResponses[].id +

Number

+

팀원 공고 응답 객체 ID

teamMemberAnnouncementResponses[].teamName +

String

+

팀 이름

teamMemberAnnouncementResponses[].jobRoleName +

String

+

직무, 역할 이름

teamMemberAnnouncementResponses[].mainBusiness +

String

+

팀원 공고 주요 업무

teamMemberAnnouncementResponses[].skillNames +

Array

+

보유 역량 이름 배열

teamMemberAnnouncementResponses[].applicationProcess +

String

+

지원 절차

+ activityResponse

Object

+

활동 방식 및 활동 지역 및 위치 응답 + 객체

activityResponse.activityTagName +

Array

+

활동 방식

activityResponse.cityName +

String

+

시/도 이름

activityResponse.divisionName +

String

+

시/군/구 이름

teamProfileIntroductionResponse +

Object

+

팀 소개 응답 객체

teamProfileIntroductionResponse.teamIntroduction +

String

+

팀 소개 텍스트

teamMemberIntroductionResponses +

Array

+

팀원 소개 응답 객체

teamMemberIntroductionResponses[].id +

Number

+

팀원 소개 응답 객체 ID

teamMemberIntroductionResponses[].teamMemberName +

String

+

팀원 이름

teamMemberIntroductionResponses[].teamMemberRole +

String

+

팀원 직무/역할

teamMemberIntroductionResponses[].teamMemberIntroductionText +

String

+

팀원 소개 텍스트

+ historyResponses

Array

+

연혁 응답 객체

historyResponses[].id +

Number

+

연혁 응답 객체 ID

historyResponses[].historyOneLineIntroduction +

String

+

연혁 한 줄 소개

historyResponses[].startYear +

Number

+

시작 연도

historyResponses[].endYear +

Number

+

종료 연도

historyResponses[].historyIntroduction +

String

+

연혁 소개

historyResponses[].inProgress +

Boolean

+

진행 여부

+ teamAttachResponse

Object

+

팀 첨부 응답 객체

teamAttachResponse.teamAttachUrlResponseList[].id +

Number

+

첨부 URL 객체 ID

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlName +

String

+

팀 첨부 URL 이름

teamAttachResponse.teamAttachUrlResponseList[].teamAttachUrlPath +

String

+

팀 첨부 URL 경로

+
+
+
+
+
+

10. 매칭 관리

+
+ -
-

10.2. 팀 소개서로 내 이력서에 매칭 요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 18. /private/profile/matching/private/{profileId}
ParameterDescription

profileId

+

내 이력서 ID

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

requestMessage +

String

요청 메시지입니다.

문자열

+
+ -
-

10.3. 팀 소개서로 팀 소개서에 매칭 요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 19. /team/profile/matching/private/{profileId}
ParameterDescription

profileId

+

내 이력서 ID

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

requestMessage +

String

요청 메시지입니다.

문자열

+
+ -
-

10.4. 내 이력서로 팀 소개서에 매칭 요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 20. /team/profile/matching/team/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

requestMessage +

String

요청 메시지입니다.

문자열

+
+ -
-

10.5. 내가 받은 매칭 조회

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 21. /private/profile/matching/team/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

requestMessage +

String

요청 메시지입니다.

문자열

+
+ -
-

10.6. 내가 보낸 매칭

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

[].profileId +

Number

miniProfileId / + teamMiniProfileId → senderType에 따라 프론트에서 처리 바람 → senderType == team 이면 + teamMiniProfileId로, Privated이면 miniProfile로

+ [].receivedMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

+

+ [].miniProfileImg

String

발신자 프로필 이미지

[].senderName +

String

발신자 이름

+ [].requestMessage

String

매칭 요청 메시지

+ [].requestOccurTime

String

매칭 요청 발생 날짜

[].senderType +

String

발신자 이력/소개서 타입

[].matchingType +

String

매칭 요청 타입

+ [].receivedTeamProfile

Boolean

+

이력/소개서 수신 여부

+ [].isReceiverCheck

Boolean

+

수신자가 확인했는지 여부

+
+ -
-

10.7. 성사된 매칭

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ [].requestMatchingId

Number

매칭 요청 보낸 항목 PK ID

+ [].miniProfileImg

String

발신자 프로필 이미지

[].receiverName +

String

발신자 이름

+ [].requestMessage

String

매칭 요청 메시지

+ [].requestOccurTime

String

매칭 요청 발생 날짜

[].senderType +

String

발신자 요청 타입

[].matchingType +

String

매칭 요청 타입

+ [].requestTeamProfile

Boolean

+

이력/소개서 발신 여부

+
+ -
-

10.8. 매칭 보낼 프로필 선택 true/false

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

[]

Array

모든 성사 매칭 배열

[].successMatchingMemberName +

String

매칭 성사자 이름/팀명

+ [].requestMessage

String

매칭 요청 메시지

+ [].requestOccurTime

String

매칭 요청 발생 시간

+
+
+

10.8. 매칭 보낼 + 프로필 선택 true/false

+
+

요청

+
+
GET /existence/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -6868,71 +9556,81 @@ 

응답

"isPrivateProfileMatchingAllow" : true, "isTeamProfileMatchingAllow" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

isPrivateProfileMatchingAllow

Boolean

내 이력서로 매칭 요청 가능 여부 true → 80% 이상

isTeamProfileMatchingAllow

Boolean

팀 소개서로 매칭 요청 가능 여부 true → 80% 이상

-
-
-
-

10.9. 내가 받은 매칭 요청 & 개별 조회 / sender_type = Private / receivedTeamProfile = false

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

isPrivateProfileMatchingAllow +

Boolean

+

내 이력서로 매칭 요청 가능 여부 true + → 80% 이상

isTeamProfileMatchingAllow +

Boolean

+

팀 소개서로 매칭 요청 가능 여부 true + → 80% 이상

+
+
+
+

10.9. + 내가 받은 매칭 요청 & 개별 조회 / sender_type = Private / receivedTeamProfile = false

+
+

요청

+
+
GET /received/private_to_private/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 22. /received/private_to_private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 22. /received/private_to_private/matching/{privateMatchingId} +
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -6947,86 +9645,101 @@ 

응답

"requestMessage" : "권동민님이 나의 내 이력서에 보낸 매칭 요청 메시지입니다.", "receivedTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

receivedMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

senderName

String

발신자 이름

jobRoleNames

Array

발신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

receivedTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.10. 내가 받은 매칭 요청 / sender_type = Team / receivedTeamProfile = false

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ receivedMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

senderName +

String

+

발신자 이름

+ jobRoleNames

Array

+

발신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

receivedTeamProfile +

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.10. + 내가 받은 매칭 요청 / sender_type = Team / receivedTeamProfile = false

+
+

요청

+
+
GET /received/team_to_private/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 23. /received/team_to_private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 23. /received/team_to_private/matching/{privateMatchingId} +
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7041,86 +9754,100 @@ 

응답

"requestMessage" : "권동민님이 나의 내 이력서에 보낸 매칭 요청 메시지입니다.", "receivedTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

receivedMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

senderName

String

발신자 이름

jobRoleNames

Array

발신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

receivedTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.11. 내가 받은 매칭 요청 / sender_type = private / receivedTeamProfile = true

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ receivedMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

senderName +

String

+

발신자 이름

+ jobRoleNames

Array

+

발신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

receivedTeamProfile +

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.11. + 내가 받은 매칭 요청 / sender_type = private / receivedTeamProfile = true

+
+

요청

+
+
GET /received/team_to_team/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 24. /received/team_to_team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 24. /received/team_to_team/matching/{teamMatchingId}
ParameterDescription

+ teamMatchingId

팀 소개서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7135,86 +9862,101 @@ 

응답

"requestMessage" : "권동민님이 나의 팀 소개서에 보낸 매칭 요청 메시지입니다.", "receivedTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

receivedMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

senderName

String

발신자 이름

jobRoleNames

Array

발신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

receivedTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.12. 내가 보낸 매칭 요청 / sender_type = private / requestTeamProfile = false

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ receivedMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

senderName +

String

+

발신자 이름

+ jobRoleNames

Array

+

발신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

receivedTeamProfile +

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.12. + 내가 보낸 매칭 요청 / sender_type = private / requestTeamProfile = false

+
+

요청

+
+
GET /request/private_to_private/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 25. /request/private_to_private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 25. /request/private_to_private/matching/{privateMatchingId} +
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7230,91 +9972,107 @@ 

응답

"senderType" : "PRIVATE", "requestTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

requestMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

receiverName

String

발신자 이름

jobRoleNames

Array

발신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

senderType

String

발신자 타입

requestTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.13. 내가 보낸 매칭 요청 / sender_type = Team / requestTeamProfile = false

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ requestMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

+ receiverName

String

+

발신자 이름

+ jobRoleNames

Array

+

발신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

senderType +

String

+

발신자 타입

+ requestTeamProfile

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.13. + 내가 보낸 매칭 요청 / sender_type = Team / requestTeamProfile = false

+
+

요청

+
+
GET /request/team_to_private/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 26. /request/team_to_private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 26. /request/team_to_private/matching/{privateMatchingId}
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7330,91 +10088,107 @@ 

응답

"senderType" : "TEAM", "requestTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

requestMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

receiverName

String

수신자 이름

jobRoleNames

Array

수신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

senderType

String

발신자 타입

requestTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.14. 내가 보낸 매칭 요청 / sender_type = private / requestTeamProfile = true

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ requestMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

+ receiverName

String

+

수신자 이름

+ jobRoleNames

Array

+

수신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

senderType +

String

+

발신자 타입

+ requestTeamProfile

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.14. + 내가 보낸 매칭 요청 / sender_type = private / requestTeamProfile = true

+
+

요청

+
+
GET /received/team_to_team/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 27. /received/team_to_team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 27. /received/team_to_team/matching/{teamMatchingId}
ParameterDescription

+ teamMatchingId

팀 소개서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7429,57 +10203,70 @@ 

응답

"requestMessage" : "권동민님이 나의 팀 소개서에 보낸 매칭 요청 메시지입니다.", "receivedTeamProfile" : false }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

receivedMatchingId

Number

내 이력서/팀 소개서에 매칭 PK ID

senderName

String

발신자 이름

jobRoleNames

Array

발신자의 희망 역할 및 직무

requestMessage

String

매칭 요청 메시지

receivedTeamProfile

Boolean

이력/소개서 수신 여부

-
-
-
-

10.15. 내 이력서 관련 (receivedTeamProfile = false) - 내가 받은 매칭 요청 → 수락/거절 선택

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

+ receivedMatchingId

Number

+

내 이력서/팀 소개서에 매칭 PK + ID

senderName +

String

+

발신자 이름

+ jobRoleNames

Array

+

발신자의 희망 역할 및 직무

+ requestMessage

String

+

매칭 요청 메시지

receivedTeamProfile +

Boolean

+

이력/소개서 수신 여부

+
+
+
+

10.15. + 내 이력서 관련 (receivedTeamProfile = false) - 내가 받은 매칭 요청 → 수락/거절 선택

+
+

요청

+
+
POST /allow/private/matching/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -7488,59 +10275,65 @@ 

요청

{ "isAllowMatching" : true }
-
-
- - ---- - - - - - - - - - - - - -
Table 28. /allow/private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

isAllowMatching

Boolean

매칭 요청 수락 여부 (true) → 수락하기

-
-
-
-

10.16. 팀 소개서 관련 (receivedTeamProfile = true) - 내가 받은 매칭 요청 → 수락/거절 선택

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 28. /allow/private/matching/{privateMatchingId}
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ isAllowMatching

Boolean

+

매칭 요청 수락 여부 (true) + → 수락하기

+
+
+
+

10.16. + 팀 소개서 관련 (receivedTeamProfile = true) - 내가 받은 매칭 요청 → 수락/거절 선택

+
+

요청

+
+
POST /allow/team/matching/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
@@ -7549,88 +10342,94 @@ 

요청

{ "isAllowMatching" : true }
-
-
- - ---- - - - - - - - - - - - - -
Table 29. /allow/team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 대상 매칭 PK

- ------ - - - - - - - - - - - - - - - - -
PathTypeDescriptionConstraint

isAllowMatching

Boolean

매칭 요청 수락 여부 (true) → 수락하기

-
-
-
-

10.17. 매칭 성사 / 연락하기 버튼 클릭 / 내 이력서인 경우

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 29. /allow/team/matching/{teamMatchingId}
ParameterDescription

+ teamMatchingId

팀 소개서 대상 매칭 PK

+ + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescriptionConstraint

+ isAllowMatching

Boolean

+

매칭 요청 수락 여부 (true) + → 수락하기

+
+
+
+

10.17. + 매칭 성사 / 연락하기 버튼 클릭 / 내 이력서인 경우

+
+

요청

+
+
GET /success/private/matching/contact/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 30. /success/private/matching/contact/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 30. /success/private/matching/contact/{privateMatchingId}
ParameterDescription

+ privateMatchingId

내 이력서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7642,71 +10441,77 @@ 

응답

"memberName" : "권동민", "email" : "kwondm7@naver.com" }
-
-
- ----- - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

memberName

String

매칭 대상자 연락처

email

String

이메일

-
-
-
-

10.18. 매칭 성사 / 연락하기 버튼 클릭 / 팀 소개서인 경우

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

memberName +

String

+

매칭 대상자 연락처

email

+

String

+

이메일

+
+
+
+

10.18. + 매칭 성사 / 연락하기 버튼 클릭 / 팀 소개서인 경우

+
+

요청

+
+
GET /success/team/matching/contact/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 31. /success/team/matching/contact/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 대상 매칭 PK

-
-
-

응답

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 31. /success/team/matching/contact/{teamMatchingId}
ParameterDescription

+ teamMatchingId

팀 소개서 대상 매칭 PK

+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -7718,312 +10523,336 @@ 

응답

"memberName" : "링킷", "email" : "kwondm7@linkit.im" }
-
-
- ----- - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

memberName

String

매칭 대상자 연락처

email

String

이메일

-
-
-
-

10.19. 내가 보낸 매칭 - 매칭 삭제 (matchingType: PROFILE)

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

memberName +

String

+

매칭 대상자 연락처

email

+

String

+

이메일

+
+
+
+

10.19. + 내가 보낸 매칭 - 매칭 삭제 (matchingType: PROFILE)

+
+

요청

+
+
DELETE /delete/request/private/matching/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 32. /delete/request/private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 ID

-
-
-
-

10.20. 내가 보낸 매칭 - 매칭 삭제 (matchingType: TEAM_PROFILE)

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 32. /delete/request/private/matching/{privateMatchingId}
ParameterDescription

+ privateMatchingId

내 이력서 ID

+
+
+
+

10.20. + 내가 보낸 매칭 - 매칭 삭제 (matchingType: TEAM_PROFILE)

+
+

요청

+
+
DELETE /delete/request/team/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 33. /delete/request/team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 ID

-
-
-
-

10.21. 성사된 매칭 - 매칭 삭제 (matchingType: PROFILE)

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 33. /delete/request/team/matching/{teamMatchingId}
ParameterDescription

+ teamMatchingId

팀 소개서 ID

+
+
+
+

10.21. + 성사된 매칭 - 매칭 삭제 (matchingType: PROFILE)

+
+

요청

+
+
DELETE /delete/success/private/matching/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 34. /delete/success/private/matching/{privateMatchingId}
ParameterDescription

privateMatchingId

내 이력서 ID

-
-
-
-

10.22. 성사된 매칭 - 매칭 삭제 (matchingType: TEAM_PROFILE)

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 34. /delete/success/private/matching/{privateMatchingId}
ParameterDescription

+ privateMatchingId

내 이력서 ID

+
+
+
+

10.22. + 성사된 매칭 - 매칭 삭제 (matchingType: TEAM_PROFILE)

+
+
DELETE /delete/request/team/matching/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 35. /delete/request/team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId

팀 소개서 ID

-
-
-
-
-

11. 찜하기

-
-
-

11.1. 내 이력서 (미니 프로필 ID) 찜하기 생성

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 35. /delete/request/team/matching/{teamMatchingId}
ParameterDescription

teamMatchingId +

팀 소개서 ID

+
+
+
+
+

11. 찜하기

+
+
+

11.1. 내 이력서 + (미니 프로필 ID) 찜하기 생성

+
+

요청

+
+
POST /wish/private/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
 Content-Type: application/x-www-form-urlencoded
-
-
- - ---- - - - - - - - - - - - - -
Table 36. /wish/private/profile/{miniProfileId}
ParameterDescription

miniProfileId

미니 프로필 ID

-
-
-
-

11.2. 팀 소개서 (팀원 공고 ID) 찜하기 생성

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 36. /wish/private/profile/{miniProfileId}
ParameterDescription

+ miniProfileId

미니 프로필 ID

+
+
+
+

11.2. 팀 소개서 (팀원 + 공고 ID) 찜하기 생성

+
+

요청

+
+
POST /wish/team/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
 Content-Type: application/x-www-form-urlencoded
-
-
- - ---- - - - - - - - - - - - - -
Table 37. /wish/team/profile/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId

팀원 공고 ID

-
-
-
-

11.3. 내 이력서 (미니 프로필 ID) 찜하기 취소

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 37. /wish/team/profile/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+
+
+
+

11.3. 내 이력서 + (미니 프로필 ID) 찜하기 취소

+
+

요청

+
+
DELETE /wish/private/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 38. /wish/private/profile/{miniProfileId}
ParameterDescription

miniProfileId

미니 프로필 ID

-
-
-
-

11.4. 팀 소개서 (팀원 공고 ID) 찜하기 취소

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 38. /wish/private/profile/{miniProfileId}
ParameterDescription

+ miniProfileId

미니 프로필 ID

+
+
+
+

11.4. 팀 소개서 (팀원 + 공고 ID) 찜하기 취소

+
+
DELETE /wish/team/profile/1 HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
- - ---- - - - - - - - - - - - - -
Table 39. /wish/team/profile/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId

팀원 공고 ID

-
-
-

11.5. 내 이력서 찜한 목록 조회

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + +
Table 39. /wish/team/profile/{teamMemberAnnouncementId}
ParameterDescription

teamMemberAnnouncementId +

팀원 공고 ID

+
+
+

11.5. 내 이력서 찜한 목록 조회

+
+

요청

+
+
GET /wish/private/profile/list HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -8050,83 +10879,99 @@ 

응답

"jobRoleNames" : [ "개발·데이터" ], "isPrivateSaved" : true } ]
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

[].id

Number

미니 프로필 ID

[].profileTitle

String

프로필의 제목

[].miniProfileImg

String

미니 프로필 이미지 URL

[].myKeywordNames

Array

나를 소개하는 키워드 목록

[].isActivate

Boolean

미니 프로필 활성화 여부

[].memberName

String

회원 이름

[].jobRoleNames

Array

직무 및 역할

[].isPrivateSaved

Boolean

찜 여부

-
-
-
-

11.6. 팀 소개서 찜한 목록 조회

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

[].id

+

Number

+

미니 프로필 ID

+ [].profileTitle

String

+

프로필의 제목

+ [].miniProfileImg

String

+

미니 프로필 이미지 URL

+ [].myKeywordNames

Array

+

나를 소개하는 키워드 목록

+ [].isActivate

Boolean

+

미니 프로필 활성화 여부

+ [].memberName

String

+

회원 이름

+ [].jobRoleNames

Array

+

직무 및 역할

+ [].isPrivateSaved

Boolean

+

찜 여부

+
+
+
+

11.6. 팀 소개서 찜한 목록 조회

+
+

요청

+
+
GET /wish/team/profile/list HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -8177,183 +11022,217 @@ 

응답

"isTeamSaved" : true } } ]
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

[].teamMiniProfileResponse.id

Number

팀 미니 프로필 ID

[].teamMiniProfileResponse.sectorName

String

산업 분야

[].teamMiniProfileResponse.sizeType

String

팀 규모

[].teamMiniProfileResponse.teamName

String

팀 이름

[].teamMiniProfileResponse.teamProfileTitle

String

팀 프로필 제목

[].teamMiniProfileResponse.isTeamActivate

Boolean

팀 활성화 상태

[].teamMiniProfileResponse.teamLogoImageUrl

String

팀 로고 이미지 URL

[].teamMiniProfileResponse.teamKeywordNames

Array

팀 키워드 목록

[].teamMemberAnnouncementResponse.id

Number

팀원 공고 ID

[].teamMemberAnnouncementResponse.teamLogoImageUrl

String

팀 로고 이미지 경로

[].teamMemberAnnouncementResponse.teamName

String

공고에 대한 팀 이름

[].teamMemberAnnouncementResponse.jobRoleName

String

직무 이름

[].teamMemberAnnouncementResponse.mainBusiness

String

주요 업무 내용

[].teamMemberAnnouncementResponse.skillNames

Array

필요 기술 목록

[].teamMemberAnnouncementResponse.applicationProcess

String

지원 절차 설명

[].teamMemberAnnouncementResponse.isTeamSaved

Boolean

팀 찜 여부

-
-
-
-
-
-

12. 설정

-
-
-

회원 탈퇴

-
-

요청

-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

[].teamMiniProfileResponse.id +

Number

+

팀 미니 프로필 ID

[].teamMiniProfileResponse.sectorName +

String

+

산업 분야

[].teamMiniProfileResponse.sizeType +

String

+

팀 규모

[].teamMiniProfileResponse.teamName +

String

+

팀 이름

[].teamMiniProfileResponse.teamProfileTitle +

String

+

팀 프로필 제목

[].teamMiniProfileResponse.isTeamActivate +

Boolean

+

팀 활성화 상태

[].teamMiniProfileResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 URL

[].teamMiniProfileResponse.teamKeywordNames +

Array

+

팀 키워드 목록

[].teamMemberAnnouncementResponse.id +

Number

+

팀원 공고 ID

[].teamMemberAnnouncementResponse.teamLogoImageUrl +

String

+

팀 로고 이미지 경로

[].teamMemberAnnouncementResponse.teamName +

String

+

공고에 대한 팀 이름

[].teamMemberAnnouncementResponse.jobRoleName +

String

+

직무 이름

[].teamMemberAnnouncementResponse.mainBusiness +

String

+

주요 업무 내용

[].teamMemberAnnouncementResponse.skillNames +

Array

+

필요 기술 목록

[].teamMemberAnnouncementResponse.applicationProcess +

String

+

지원 절차 설명

[].teamMemberAnnouncementResponse.isTeamSaved +

Boolean

+

팀 찜 여부

+
+
+
+
+
+

12. 설정

+
+
+

회원 탈퇴

+
+

요청

+
+
DELETE /account HTTP/1.1
 Authorization: accessToken
 Cookie: refresh-token=refreshToken
-
-
-
-

요청 헤더

-
- ----- - - - - - - - - - - - - - - -
NameDescriptionConstraint

Authorization

access token

문자열(jwt)

-
-

요청 쿠키

-
- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

응답

-
-
+
+
+
+

요청 헤더

+
+ + + + + + + + + + + + + + + + + + + + +
NameDescriptionConstraint

+ Authorization

access token

문자열(jwt)

+
+

요청 쿠키

+
+ + + + + + + + + + + + + + + + + +
NameDescription

+ refresh-token

갱신 토큰

+
+
+

응답

+
+
HTTP/1.1 204 No Content
 Vary: Origin
 Vary: Access-Control-Request-Method
 Vary: Access-Control-Request-Headers
-
-
-
-
-

응답

-
-
+
+
+
+
+

응답

+
+
HTTP/1.1 200 OK
 Vary: Origin
 Vary: Access-Control-Request-Method
@@ -8368,194 +11247,215 @@ 

응답

"email" : "kwondm7@naver.com", "marketingAgree" : true }
-
-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

멤버 기본 정보 ID

memberName

String

성함

contact

String

연락처

email

String

이메일

marketingAgree

Boolean

마케팅 수신 동의 여부

-
-
-
-
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

id

Number

+

멤버 기본 정보 ID

memberName +

String

+

성함

contact

+

String

+

연락처

email

+

String

+

이메일

+ marketingAgree

Boolean

+

마케팅 수신 동의 여부

+
+
+
+
- \ No newline at end of file + diff --git a/src/main/generated/liaison/linkit/common/domain/QBaseDateTimeEntity.java b/src/main/generated/liaison/linkit/common/domain/QBaseDateTimeEntity.java index f2d0acce..3947310b 100644 --- a/src/main/generated/liaison/linkit/common/domain/QBaseDateTimeEntity.java +++ b/src/main/generated/liaison/linkit/common/domain/QBaseDateTimeEntity.java @@ -21,7 +21,7 @@ public class QBaseDateTimeEntity extends EntityPathBase { public final DateTimePath createdAt = createDateTime("createdAt", java.time.LocalDateTime.class); - public final DateTimePath updatedAt = createDateTime("updatedAt", java.time.LocalDateTime.class); + public final DateTimePath modifiedAt = createDateTime("modifiedAt", java.time.LocalDateTime.class); public QBaseDateTimeEntity(String variable) { super(BaseDateTimeEntity.class, forVariable(variable)); diff --git a/src/main/generated/liaison/linkit/common/domain/QPosition.java b/src/main/generated/liaison/linkit/common/domain/QPosition.java new file mode 100644 index 00000000..12bf3218 --- /dev/null +++ b/src/main/generated/liaison/linkit/common/domain/QPosition.java @@ -0,0 +1,39 @@ +package liaison.linkit.common.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; + + +/** + * QPosition is a Querydsl query type for Position + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QPosition extends EntityPathBase { + + private static final long serialVersionUID = -2091991688L; + + public static final QPosition position = new QPosition("position1"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath positionName = createString("positionName"); + + public QPosition(String variable) { + super(Position.class, forVariable(variable)); + } + + public QPosition(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QPosition(PathMetadata metadata) { + super(Position.class, metadata); + } + +} + diff --git a/src/main/generated/liaison/linkit/common/domain/QProfileState.java b/src/main/generated/liaison/linkit/common/domain/QProfileState.java new file mode 100644 index 00000000..6dd2c40b --- /dev/null +++ b/src/main/generated/liaison/linkit/common/domain/QProfileState.java @@ -0,0 +1,39 @@ +package liaison.linkit.common.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; + + +/** + * QProfileState is a Querydsl query type for ProfileState + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProfileState extends EntityPathBase { + + private static final long serialVersionUID = -525512393L; + + public static final QProfileState profileState = new QProfileState("profileState"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath profileStateName = createString("profileStateName"); + + public QProfileState(String variable) { + super(ProfileState.class, forVariable(variable)); + } + + public QProfileState(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QProfileState(PathMetadata metadata) { + super(ProfileState.class, metadata); + } + +} + diff --git a/src/main/generated/liaison/linkit/common/domain/QUniversity.java b/src/main/generated/liaison/linkit/common/domain/QUniversity.java new file mode 100644 index 00000000..f5df8c5b --- /dev/null +++ b/src/main/generated/liaison/linkit/common/domain/QUniversity.java @@ -0,0 +1,41 @@ +package liaison.linkit.common.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; + + +/** + * QUniversity is a Querydsl query type for University + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QUniversity extends EntityPathBase { + + private static final long serialVersionUID = -1551026403L; + + public static final QUniversity university = new QUniversity("university"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath universityLogoImagePath = createString("universityLogoImagePath"); + + public final StringPath universityName = createString("universityName"); + + public QUniversity(String variable) { + super(University.class, forVariable(variable)); + } + + public QUniversity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QUniversity(PathMetadata metadata) { + super(University.class, metadata); + } + +} + diff --git a/src/main/generated/liaison/linkit/matching/domain/QTeamMatching.java b/src/main/generated/liaison/linkit/matching/domain/QTeamMatching.java index d4598f38..f2ca8a2c 100644 --- a/src/main/generated/liaison/linkit/matching/domain/QTeamMatching.java +++ b/src/main/generated/liaison/linkit/matching/domain/QTeamMatching.java @@ -76,7 +76,7 @@ public QTeamMatching(PathMetadata metadata, PathInits inits) { public QTeamMatching(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); this.member = inits.isInitialized("member") ? new liaison.linkit.member.domain.QMember(forProperty("member"), inits.get("member")) : null; - this.teamMemberAnnouncement = inits.isInitialized("teamMemberAnnouncement") ? new liaison.linkit.team.domain.announcement.QTeamMemberAnnouncement(forProperty("teamMemberAnnouncement"), inits.get("teamMemberAnnouncement")) : null; + this.teamMemberAnnouncement = inits.isInitialized("teamMemberAnnouncement") ? new liaison.linkit.team.domain.announcement.QTeamMemberAnnouncement(forProperty("teamMemberAnnouncement")) : null; } } diff --git a/src/main/generated/liaison/linkit/member/domain/QMember.java b/src/main/generated/liaison/linkit/member/domain/QMember.java index a554ece6..3ac1c3f5 100644 --- a/src/main/generated/liaison/linkit/member/domain/QMember.java +++ b/src/main/generated/liaison/linkit/member/domain/QMember.java @@ -37,19 +37,17 @@ public class QMember extends EntityPathBase { public final EnumPath memberState = createEnum("memberState", liaison.linkit.member.domain.type.MemberState.class); + //inherited + public final DateTimePath modifiedAt = _super.modifiedAt; + public final NumberPath privateWishCount = createNumber("privateWishCount", Integer.class); public final liaison.linkit.profile.domain.QProfile profile; public final StringPath socialLoginId = createString("socialLoginId"); - public final liaison.linkit.team.domain.QTeamProfile teamProfile; - public final NumberPath teamWishCount = createNumber("teamWishCount", Integer.class); - //inherited - public final DateTimePath updatedAt = _super.updatedAt; - public QMember(String variable) { this(Member.class, forVariable(variable), INITS); } @@ -70,7 +68,6 @@ public QMember(Class type, PathMetadata metadata, PathInits in super(type, metadata, inits); this.memberBasicInform = inits.isInitialized("memberBasicInform") ? new QMemberBasicInform(forProperty("memberBasicInform"), inits.get("memberBasicInform")) : null; this.profile = inits.isInitialized("profile") ? new liaison.linkit.profile.domain.QProfile(forProperty("profile"), inits.get("profile")) : null; - this.teamProfile = inits.isInitialized("teamProfile") ? new liaison.linkit.team.domain.QTeamProfile(forProperty("teamProfile"), inits.get("teamProfile")) : null; } } diff --git a/src/main/generated/liaison/linkit/profile/domain/QProfile.java b/src/main/generated/liaison/linkit/profile/domain/QProfile.java index e92abade..9a55e8e1 100644 --- a/src/main/generated/liaison/linkit/profile/domain/QProfile.java +++ b/src/main/generated/liaison/linkit/profile/domain/QProfile.java @@ -24,47 +24,35 @@ public class QProfile extends EntityPathBase { public final liaison.linkit.global.QBaseEntity _super = new liaison.linkit.global.QBaseEntity(this); - public final ListPath awardsList = this.createList("awardsList", liaison.linkit.profile.domain.awards.Awards.class, liaison.linkit.profile.domain.awards.QAwards.class, PathInits.DIRECT2); - - public final NumberPath completion = createNumber("completion", Double.class); - //inherited public final DateTimePath createdAt = _super.createdAt; public final NumberPath id = createNumber("id", Long.class); - public final StringPath introduction = createString("introduction"); - - public final BooleanPath isAntecedents = createBoolean("isAntecedents"); - - public final BooleanPath isAttachUrl = createBoolean("isAttachUrl"); + public final BooleanPath isProfileActivity = createBoolean("isProfileActivity"); - public final BooleanPath isAwards = createBoolean("isAwards"); + public final BooleanPath isProfileAwards = createBoolean("isProfileAwards"); - public final BooleanPath isEducation = createBoolean("isEducation"); + public final BooleanPath isProfileEducation = createBoolean("isProfileEducation"); - public final BooleanPath isIntroduction = createBoolean("isIntroduction"); + public final BooleanPath isProfileLicense = createBoolean("isProfileLicense"); - public final BooleanPath isJobAndSkill = createBoolean("isJobAndSkill"); + public final BooleanPath isProfileLink = createBoolean("isProfileLink"); - public final BooleanPath isMiniProfile = createBoolean("isMiniProfile"); + public final BooleanPath isProfilePortfolio = createBoolean("isProfilePortfolio"); - public final BooleanPath isProfileJobRole = createBoolean("isProfileJobRole"); - - public final BooleanPath isProfileRegion = createBoolean("isProfileRegion"); + public final BooleanPath isProfilePublic = createBoolean("isProfilePublic"); public final BooleanPath isProfileSkill = createBoolean("isProfileSkill"); - public final BooleanPath isProfileTeamBuildingField = createBoolean("isProfileTeamBuildingField"); - public final liaison.linkit.member.domain.QMember member; - public final liaison.linkit.profile.domain.miniProfile.QMiniProfile miniProfile; - //inherited public final DateTimePath modifiedAt = _super.modifiedAt; - public final ListPath profileJobRoleList = this.createList("profileJobRoleList", liaison.linkit.profile.domain.role.ProfileJobRole.class, liaison.linkit.profile.domain.role.QProfileJobRole.class, PathInits.DIRECT2); + public final StringPath profileImagePath = createString("profileImagePath"); + + public final liaison.linkit.profile.domain.region.QRegion region; //inherited public final EnumPath status = _super.status; @@ -88,7 +76,7 @@ public QProfile(PathMetadata metadata, PathInits inits) { public QProfile(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); this.member = inits.isInitialized("member") ? new liaison.linkit.member.domain.QMember(forProperty("member"), inits.get("member")) : null; - this.miniProfile = inits.isInitialized("miniProfile") ? new liaison.linkit.profile.domain.miniProfile.QMiniProfile(forProperty("miniProfile"), inits.get("miniProfile")) : null; + this.region = inits.isInitialized("region") ? new liaison.linkit.profile.domain.region.QRegion(forProperty("region")) : null; } } diff --git a/src/main/generated/liaison/linkit/profile/domain/QProfileActivity.java b/src/main/generated/liaison/linkit/profile/domain/QProfileActivity.java new file mode 100644 index 00000000..2e34deb8 --- /dev/null +++ b/src/main/generated/liaison/linkit/profile/domain/QProfileActivity.java @@ -0,0 +1,81 @@ +package liaison.linkit.profile.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QProfileActivity is a Querydsl query type for ProfileActivity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProfileActivity extends EntityPathBase { + + private static final long serialVersionUID = -1365399365L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QProfileActivity profileActivity = new QProfileActivity("profileActivity"); + + public final liaison.linkit.common.domain.QBaseDateTimeEntity _super = new liaison.linkit.common.domain.QBaseDateTimeEntity(this); + + public final StringPath activityCertificationAttachFileName = createString("activityCertificationAttachFileName"); + + public final StringPath activityCertificationAttachFilePath = createString("activityCertificationAttachFilePath"); + + public final StringPath activityCertificationDescription = createString("activityCertificationDescription"); + + public final StringPath activityDescription = createString("activityDescription"); + + public final StringPath activityEndDate = createString("activityEndDate"); + + public final StringPath activityName = createString("activityName"); + + public final StringPath activityRole = createString("activityRole"); + + public final StringPath activityStartDate = createString("activityStartDate"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final BooleanPath isActivityCertified = createBoolean("isActivityCertified"); + + public final BooleanPath isActivityInProgress = createBoolean("isActivityInProgress"); + + public final BooleanPath isActivityVerified = createBoolean("isActivityVerified"); + + //inherited + public final DateTimePath modifiedAt = _super.modifiedAt; + + public final QProfile profile; + + public QProfileActivity(String variable) { + this(ProfileActivity.class, forVariable(variable), INITS); + } + + public QProfileActivity(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QProfileActivity(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QProfileActivity(PathMetadata metadata, PathInits inits) { + this(ProfileActivity.class, metadata, inits); + } + + public QProfileActivity(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.profile = inits.isInitialized("profile") ? new QProfile(forProperty("profile"), inits.get("profile")) : null; + } + +} + diff --git a/src/main/generated/liaison/linkit/profile/domain/QProfileAwards.java b/src/main/generated/liaison/linkit/profile/domain/QProfileAwards.java new file mode 100644 index 00000000..e36e7b5f --- /dev/null +++ b/src/main/generated/liaison/linkit/profile/domain/QProfileAwards.java @@ -0,0 +1,79 @@ +package liaison.linkit.profile.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QProfileAwards is a Querydsl query type for ProfileAwards + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProfileAwards extends EntityPathBase { + + private static final long serialVersionUID = 664535650L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QProfileAwards profileAwards = new QProfileAwards("profileAwards"); + + public final liaison.linkit.common.domain.QBaseDateTimeEntity _super = new liaison.linkit.common.domain.QBaseDateTimeEntity(this); + + public final StringPath awardsCertificationAttachFileName = createString("awardsCertificationAttachFileName"); + + public final StringPath awardsCertificationAttachFilePath = createString("awardsCertificationAttachFilePath"); + + public final StringPath awardsCertificationDescription = createString("awardsCertificationDescription"); + + public final StringPath awardsDate = createString("awardsDate"); + + public final StringPath awardsDescription = createString("awardsDescription"); + + public final StringPath awardsName = createString("awardsName"); + + public final StringPath awardsOrganizer = createString("awardsOrganizer"); + + public final StringPath awardsRanking = createString("awardsRanking"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final BooleanPath isAwardsCertified = createBoolean("isAwardsCertified"); + + public final BooleanPath isAwardsVerified = createBoolean("isAwardsVerified"); + + //inherited + public final DateTimePath modifiedAt = _super.modifiedAt; + + public final QProfile profile; + + public QProfileAwards(String variable) { + this(ProfileAwards.class, forVariable(variable), INITS); + } + + public QProfileAwards(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QProfileAwards(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QProfileAwards(PathMetadata metadata, PathInits inits) { + this(ProfileAwards.class, metadata, inits); + } + + public QProfileAwards(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.profile = inits.isInitialized("profile") ? new QProfile(forProperty("profile"), inits.get("profile")) : null; + } + +} + diff --git a/src/main/generated/liaison/linkit/profile/domain/QProfileCurrentState.java b/src/main/generated/liaison/linkit/profile/domain/QProfileCurrentState.java new file mode 100644 index 00000000..9eb29fea --- /dev/null +++ b/src/main/generated/liaison/linkit/profile/domain/QProfileCurrentState.java @@ -0,0 +1,62 @@ +package liaison.linkit.profile.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QProfileCurrentState is a Querydsl query type for ProfileCurrentState + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProfileCurrentState extends EntityPathBase { + + private static final long serialVersionUID = 1472961092L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QProfileCurrentState profileCurrentState = new QProfileCurrentState("profileCurrentState"); + + public final liaison.linkit.common.domain.QBaseDateTimeEntity _super = new liaison.linkit.common.domain.QBaseDateTimeEntity(this); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + //inherited + public final DateTimePath modifiedAt = _super.modifiedAt; + + public final QProfile profile; + + public final liaison.linkit.common.domain.QProfileState profileState; + + public QProfileCurrentState(String variable) { + this(ProfileCurrentState.class, forVariable(variable), INITS); + } + + public QProfileCurrentState(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QProfileCurrentState(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QProfileCurrentState(PathMetadata metadata, PathInits inits) { + this(ProfileCurrentState.class, metadata, inits); + } + + public QProfileCurrentState(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.profile = inits.isInitialized("profile") ? new QProfile(forProperty("profile"), inits.get("profile")) : null; + this.profileState = inits.isInitialized("profileState") ? new liaison.linkit.common.domain.QProfileState(forProperty("profileState")) : null; + } + +} + diff --git a/src/main/generated/liaison/linkit/profile/domain/QProfileEducation.java b/src/main/generated/liaison/linkit/profile/domain/QProfileEducation.java new file mode 100644 index 00000000..00bc052b --- /dev/null +++ b/src/main/generated/liaison/linkit/profile/domain/QProfileEducation.java @@ -0,0 +1,80 @@ +package liaison.linkit.profile.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QProfileEducation is a Querydsl query type for ProfileEducation + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProfileEducation extends EntityPathBase { + + private static final long serialVersionUID = 126904188L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QProfileEducation profileEducation = new QProfileEducation("profileEducation"); + + public final liaison.linkit.common.domain.QBaseDateTimeEntity _super = new liaison.linkit.common.domain.QBaseDateTimeEntity(this); + + public final NumberPath admissionYear = createNumber("admissionYear", Integer.class); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final StringPath educationCertificationAttachFileName = createString("educationCertificationAttachFileName"); + + public final StringPath educationCertificationAttachFilePath = createString("educationCertificationAttachFilePath"); + + public final StringPath educationCertificationDescription = createString("educationCertificationDescription"); + + public final StringPath educationDescription = createString("educationDescription"); + + public final NumberPath graduationYear = createNumber("graduationYear", Integer.class); + + public final NumberPath id = createNumber("id", Long.class); + + public final BooleanPath isEducationCertified = createBoolean("isEducationCertified"); + + public final BooleanPath isEducationVerified = createBoolean("isEducationVerified"); + + public final StringPath majorName = createString("majorName"); + + //inherited + public final DateTimePath modifiedAt = _super.modifiedAt; + + public final QProfile profile; + + public final liaison.linkit.common.domain.QUniversity university; + + public QProfileEducation(String variable) { + this(ProfileEducation.class, forVariable(variable), INITS); + } + + public QProfileEducation(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QProfileEducation(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QProfileEducation(PathMetadata metadata, PathInits inits) { + this(ProfileEducation.class, metadata, inits); + } + + public QProfileEducation(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.profile = inits.isInitialized("profile") ? new QProfile(forProperty("profile"), inits.get("profile")) : null; + this.university = inits.isInitialized("university") ? new liaison.linkit.common.domain.QUniversity(forProperty("university")) : null; + } + +} + diff --git a/src/main/generated/liaison/linkit/profile/domain/QProfileLicense.java b/src/main/generated/liaison/linkit/profile/domain/QProfileLicense.java new file mode 100644 index 00000000..f9f06a05 --- /dev/null +++ b/src/main/generated/liaison/linkit/profile/domain/QProfileLicense.java @@ -0,0 +1,77 @@ +package liaison.linkit.profile.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QProfileLicense is a Querydsl query type for ProfileLicense + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProfileLicense extends EntityPathBase { + + private static final long serialVersionUID = -100964075L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QProfileLicense profileLicense = new QProfileLicense("profileLicense"); + + public final liaison.linkit.common.domain.QBaseDateTimeEntity _super = new liaison.linkit.common.domain.QBaseDateTimeEntity(this); + + public final StringPath acquisitionDate = createString("acquisitionDate"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final BooleanPath isLicenseCertified = createBoolean("isLicenseCertified"); + + public final BooleanPath isLicenseVerified = createBoolean("isLicenseVerified"); + + public final StringPath licenseCertificationAttachFileName = createString("licenseCertificationAttachFileName"); + + public final StringPath licenseCertificationAttachFilePath = createString("licenseCertificationAttachFilePath"); + + public final StringPath licenseCertificationDescription = createString("licenseCertificationDescription"); + + public final StringPath licenseDescription = createString("licenseDescription"); + + public final StringPath licenseInstitution = createString("licenseInstitution"); + + public final StringPath licenseName = createString("licenseName"); + + //inherited + public final DateTimePath modifiedAt = _super.modifiedAt; + + public final QProfile profile; + + public QProfileLicense(String variable) { + this(ProfileLicense.class, forVariable(variable), INITS); + } + + public QProfileLicense(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QProfileLicense(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QProfileLicense(PathMetadata metadata, PathInits inits) { + this(ProfileLicense.class, metadata, inits); + } + + public QProfileLicense(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.profile = inits.isInitialized("profile") ? new QProfile(forProperty("profile"), inits.get("profile")) : null; + } + +} + diff --git a/src/main/generated/liaison/linkit/profile/domain/QProfilePosition.java b/src/main/generated/liaison/linkit/profile/domain/QProfilePosition.java new file mode 100644 index 00000000..6fbf31e6 --- /dev/null +++ b/src/main/generated/liaison/linkit/profile/domain/QProfilePosition.java @@ -0,0 +1,62 @@ +package liaison.linkit.profile.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QProfilePosition is a Querydsl query type for ProfilePosition + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProfilePosition extends EntityPathBase { + + private static final long serialVersionUID = 1038372565L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QProfilePosition profilePosition = new QProfilePosition("profilePosition"); + + public final liaison.linkit.common.domain.QBaseDateTimeEntity _super = new liaison.linkit.common.domain.QBaseDateTimeEntity(this); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + //inherited + public final DateTimePath modifiedAt = _super.modifiedAt; + + public final liaison.linkit.common.domain.QPosition position; + + public final QProfile profile; + + public QProfilePosition(String variable) { + this(ProfilePosition.class, forVariable(variable), INITS); + } + + public QProfilePosition(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QProfilePosition(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QProfilePosition(PathMetadata metadata, PathInits inits) { + this(ProfilePosition.class, metadata, inits); + } + + public QProfilePosition(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.position = inits.isInitialized("position") ? new liaison.linkit.common.domain.QPosition(forProperty("position")) : null; + this.profile = inits.isInitialized("profile") ? new QProfile(forProperty("profile"), inits.get("profile")) : null; + } + +} + diff --git a/src/main/generated/liaison/linkit/profile/domain/region/QProfileRegion.java b/src/main/generated/liaison/linkit/profile/domain/QProfileRegion.java similarity index 74% rename from src/main/generated/liaison/linkit/profile/domain/region/QProfileRegion.java rename to src/main/generated/liaison/linkit/profile/domain/QProfileRegion.java index 60c0be06..c22a70c5 100644 --- a/src/main/generated/liaison/linkit/profile/domain/region/QProfileRegion.java +++ b/src/main/generated/liaison/linkit/profile/domain/QProfileRegion.java @@ -1,4 +1,4 @@ -package liaison.linkit.profile.domain.region; +package liaison.linkit.profile.domain; import static com.querydsl.core.types.PathMetadataFactory.*; @@ -16,7 +16,7 @@ @Generated("com.querydsl.codegen.DefaultEntitySerializer") public class QProfileRegion extends EntityPathBase { - private static final long serialVersionUID = 1881715008L; + private static final long serialVersionUID = 1134778272L; private static final PathInits INITS = PathInits.DIRECT2; @@ -24,9 +24,9 @@ public class QProfileRegion extends EntityPathBase { public final NumberPath id = createNumber("id", Long.class); - public final liaison.linkit.profile.domain.QProfile profile; + public final QProfile profile; - public final QRegion region; + public final liaison.linkit.profile.domain.region.QRegion region; public QProfileRegion(String variable) { this(ProfileRegion.class, forVariable(variable), INITS); @@ -46,8 +46,8 @@ public QProfileRegion(PathMetadata metadata, PathInits inits) { public QProfileRegion(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); - this.profile = inits.isInitialized("profile") ? new liaison.linkit.profile.domain.QProfile(forProperty("profile"), inits.get("profile")) : null; - this.region = inits.isInitialized("region") ? new QRegion(forProperty("region")) : null; + this.profile = inits.isInitialized("profile") ? new QProfile(forProperty("profile"), inits.get("profile")) : null; + this.region = inits.isInitialized("region") ? new liaison.linkit.profile.domain.region.QRegion(forProperty("region")) : null; } } diff --git a/src/main/generated/liaison/linkit/profile/domain/skill/QProfileSkill.java b/src/main/generated/liaison/linkit/profile/domain/QProfileSkill.java similarity index 62% rename from src/main/generated/liaison/linkit/profile/domain/skill/QProfileSkill.java rename to src/main/generated/liaison/linkit/profile/domain/QProfileSkill.java index dfc56f22..574b1a6e 100644 --- a/src/main/generated/liaison/linkit/profile/domain/skill/QProfileSkill.java +++ b/src/main/generated/liaison/linkit/profile/domain/QProfileSkill.java @@ -1,4 +1,4 @@ -package liaison.linkit.profile.domain.skill; +package liaison.linkit.profile.domain; import static com.querydsl.core.types.PathMetadataFactory.*; @@ -16,17 +16,29 @@ @Generated("com.querydsl.codegen.DefaultEntitySerializer") public class QProfileSkill extends EntityPathBase { - private static final long serialVersionUID = -1206278430L; + private static final long serialVersionUID = -1209215963L; private static final PathInits INITS = PathInits.DIRECT2; public static final QProfileSkill profileSkill = new QProfileSkill("profileSkill"); + public final liaison.linkit.common.domain.QBaseDateTimeEntity _super = new liaison.linkit.common.domain.QBaseDateTimeEntity(this); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + public final NumberPath id = createNumber("id", Long.class); - public final liaison.linkit.profile.domain.QProfile profile; + //inherited + public final DateTimePath modifiedAt = _super.modifiedAt; + + public final QProfile profile; + + public final StringPath skillIconImagePath = createString("skillIconImagePath"); + + public final StringPath skillLevel = createString("skillLevel"); - public final QSkill skill; + public final StringPath skillName = createString("skillName"); public QProfileSkill(String variable) { this(ProfileSkill.class, forVariable(variable), INITS); @@ -46,8 +58,7 @@ public QProfileSkill(PathMetadata metadata, PathInits inits) { public QProfileSkill(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); - this.profile = inits.isInitialized("profile") ? new liaison.linkit.profile.domain.QProfile(forProperty("profile"), inits.get("profile")) : null; - this.skill = inits.isInitialized("skill") ? new QSkill(forProperty("skill")) : null; + this.profile = inits.isInitialized("profile") ? new QProfile(forProperty("profile"), inits.get("profile")) : null; } } diff --git a/src/main/generated/liaison/linkit/profile/domain/QProfileUrl.java b/src/main/generated/liaison/linkit/profile/domain/QProfileUrl.java new file mode 100644 index 00000000..0b33478c --- /dev/null +++ b/src/main/generated/liaison/linkit/profile/domain/QProfileUrl.java @@ -0,0 +1,67 @@ +package liaison.linkit.profile.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QProfileUrl is a Querydsl query type for ProfileUrl + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProfileUrl extends EntityPathBase { + + private static final long serialVersionUID = -381143997L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QProfileUrl profileUrl = new QProfileUrl("profileUrl"); + + public final liaison.linkit.common.domain.QBaseDateTimeEntity _super = new liaison.linkit.common.domain.QBaseDateTimeEntity(this); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + //inherited + public final DateTimePath modifiedAt = _super.modifiedAt; + + public final QProfile profile; + + public final EnumPath profileUrlType = createEnum("profileUrlType", liaison.linkit.global.type.ProfileUrlType.class); + + public final StringPath urlIconImagePath = createString("urlIconImagePath"); + + public final StringPath urlName = createString("urlName"); + + public final StringPath urlPath = createString("urlPath"); + + public QProfileUrl(String variable) { + this(ProfileUrl.class, forVariable(variable), INITS); + } + + public QProfileUrl(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QProfileUrl(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QProfileUrl(PathMetadata metadata, PathInits inits) { + this(ProfileUrl.class, metadata, inits); + } + + public QProfileUrl(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.profile = inits.isInitialized("profile") ? new QProfile(forProperty("profile"), inits.get("profile")) : null; + } + +} + diff --git a/src/main/generated/liaison/linkit/profile/domain/awards/QAwards.java b/src/main/generated/liaison/linkit/profile/domain/awards/QAwards.java deleted file mode 100644 index d572d227..00000000 --- a/src/main/generated/liaison/linkit/profile/domain/awards/QAwards.java +++ /dev/null @@ -1,63 +0,0 @@ -package liaison.linkit.profile.domain.awards; - -import static com.querydsl.core.types.PathMetadataFactory.*; - -import com.querydsl.core.types.dsl.*; - -import com.querydsl.core.types.PathMetadata; -import javax.annotation.processing.Generated; -import com.querydsl.core.types.Path; -import com.querydsl.core.types.dsl.PathInits; - - -/** - * QAwards is a Querydsl query type for Awards - */ -@Generated("com.querydsl.codegen.DefaultEntitySerializer") -public class QAwards extends EntityPathBase { - - private static final long serialVersionUID = 135431889L; - - private static final PathInits INITS = PathInits.DIRECT2; - - public static final QAwards awards = new QAwards("awards"); - - public final StringPath awardsDescription = createString("awardsDescription"); - - public final NumberPath awardsMonth = createNumber("awardsMonth", Integer.class); - - public final StringPath awardsName = createString("awardsName"); - - public final NumberPath awardsYear = createNumber("awardsYear", Integer.class); - - public final NumberPath id = createNumber("id", Long.class); - - public final StringPath organizer = createString("organizer"); - - public final liaison.linkit.profile.domain.QProfile profile; - - public final StringPath ranking = createString("ranking"); - - public QAwards(String variable) { - this(Awards.class, forVariable(variable), INITS); - } - - public QAwards(Path path) { - this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); - } - - public QAwards(PathMetadata metadata) { - this(metadata, PathInits.getFor(metadata, INITS)); - } - - public QAwards(PathMetadata metadata, PathInits inits) { - this(Awards.class, metadata, inits); - } - - public QAwards(Class type, PathMetadata metadata, PathInits inits) { - super(type, metadata, inits); - this.profile = inits.isInitialized("profile") ? new liaison.linkit.profile.domain.QProfile(forProperty("profile"), inits.get("profile")) : null; - } - -} - diff --git a/src/main/generated/liaison/linkit/profile/domain/education/QDegree.java b/src/main/generated/liaison/linkit/profile/domain/education/QDegree.java deleted file mode 100644 index 8ee9a5a7..00000000 --- a/src/main/generated/liaison/linkit/profile/domain/education/QDegree.java +++ /dev/null @@ -1,39 +0,0 @@ -package liaison.linkit.profile.domain.education; - -import static com.querydsl.core.types.PathMetadataFactory.*; - -import com.querydsl.core.types.dsl.*; - -import com.querydsl.core.types.PathMetadata; -import javax.annotation.processing.Generated; -import com.querydsl.core.types.Path; - - -/** - * QDegree is a Querydsl query type for Degree - */ -@Generated("com.querydsl.codegen.DefaultEntitySerializer") -public class QDegree extends EntityPathBase { - - private static final long serialVersionUID = -630750385L; - - public static final QDegree degree = new QDegree("degree"); - - public final StringPath degreeName = createString("degreeName"); - - public final NumberPath id = createNumber("id", Long.class); - - public QDegree(String variable) { - super(Degree.class, forVariable(variable)); - } - - public QDegree(Path path) { - super(path.getType(), path.getMetadata()); - } - - public QDegree(PathMetadata metadata) { - super(Degree.class, metadata); - } - -} - diff --git a/src/main/generated/liaison/linkit/profile/domain/education/QEducation.java b/src/main/generated/liaison/linkit/profile/domain/education/QEducation.java deleted file mode 100644 index 26c89706..00000000 --- a/src/main/generated/liaison/linkit/profile/domain/education/QEducation.java +++ /dev/null @@ -1,62 +0,0 @@ -package liaison.linkit.profile.domain.education; - -import static com.querydsl.core.types.PathMetadataFactory.*; - -import com.querydsl.core.types.dsl.*; - -import com.querydsl.core.types.PathMetadata; -import javax.annotation.processing.Generated; -import com.querydsl.core.types.Path; -import com.querydsl.core.types.dsl.PathInits; - - -/** - * QEducation is a Querydsl query type for Education - */ -@Generated("com.querydsl.codegen.DefaultEntitySerializer") -public class QEducation extends EntityPathBase { - - private static final long serialVersionUID = -350527419L; - - private static final PathInits INITS = PathInits.DIRECT2; - - public static final QEducation education = new QEducation("education"); - - public final NumberPath admissionYear = createNumber("admissionYear", Integer.class); - - public final QDegree degree; - - public final NumberPath graduationYear = createNumber("graduationYear", Integer.class); - - public final NumberPath id = createNumber("id", Long.class); - - public final StringPath majorName = createString("majorName"); - - public final liaison.linkit.profile.domain.QProfile profile; - - public final StringPath universityName = createString("universityName"); - - public QEducation(String variable) { - this(Education.class, forVariable(variable), INITS); - } - - public QEducation(Path path) { - this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); - } - - public QEducation(PathMetadata metadata) { - this(metadata, PathInits.getFor(metadata, INITS)); - } - - public QEducation(PathMetadata metadata, PathInits inits) { - this(Education.class, metadata, inits); - } - - public QEducation(Class type, PathMetadata metadata, PathInits inits) { - super(type, metadata, inits); - this.degree = inits.isInitialized("degree") ? new QDegree(forProperty("degree")) : null; - this.profile = inits.isInitialized("profile") ? new liaison.linkit.profile.domain.QProfile(forProperty("profile"), inits.get("profile")) : null; - } - -} - diff --git a/src/main/generated/liaison/linkit/profile/domain/miniProfile/QMiniProfile.java b/src/main/generated/liaison/linkit/profile/domain/miniProfile/QMiniProfile.java deleted file mode 100644 index 6535b561..00000000 --- a/src/main/generated/liaison/linkit/profile/domain/miniProfile/QMiniProfile.java +++ /dev/null @@ -1,59 +0,0 @@ -package liaison.linkit.profile.domain.miniProfile; - -import static com.querydsl.core.types.PathMetadataFactory.*; - -import com.querydsl.core.types.dsl.*; - -import com.querydsl.core.types.PathMetadata; -import javax.annotation.processing.Generated; -import com.querydsl.core.types.Path; -import com.querydsl.core.types.dsl.PathInits; - - -/** - * QMiniProfile is a Querydsl query type for MiniProfile - */ -@Generated("com.querydsl.codegen.DefaultEntitySerializer") -public class QMiniProfile extends EntityPathBase { - - private static final long serialVersionUID = -2090629991L; - - private static final PathInits INITS = PathInits.DIRECT2; - - public static final QMiniProfile miniProfile = new QMiniProfile("miniProfile"); - - public final DateTimePath createdDate = createDateTime("createdDate", java.time.LocalDateTime.class); - - public final NumberPath id = createNumber("id", Long.class); - - public final BooleanPath isActivate = createBoolean("isActivate"); - - public final StringPath miniProfileImg = createString("miniProfileImg"); - - public final liaison.linkit.profile.domain.QProfile profile; - - public final StringPath profileTitle = createString("profileTitle"); - - public QMiniProfile(String variable) { - this(MiniProfile.class, forVariable(variable), INITS); - } - - public QMiniProfile(Path path) { - this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); - } - - public QMiniProfile(PathMetadata metadata) { - this(metadata, PathInits.getFor(metadata, INITS)); - } - - public QMiniProfile(PathMetadata metadata, PathInits inits) { - this(MiniProfile.class, metadata, inits); - } - - public QMiniProfile(Class type, PathMetadata metadata, PathInits inits) { - super(type, metadata, inits); - this.profile = inits.isInitialized("profile") ? new liaison.linkit.profile.domain.QProfile(forProperty("profile"), inits.get("profile")) : null; - } - -} - diff --git a/src/main/generated/liaison/linkit/profile/domain/miniProfile/QMiniProfileKeyword.java b/src/main/generated/liaison/linkit/profile/domain/miniProfile/QMiniProfileKeyword.java index ddcd39f4..6344064b 100644 --- a/src/main/generated/liaison/linkit/profile/domain/miniProfile/QMiniProfileKeyword.java +++ b/src/main/generated/liaison/linkit/profile/domain/miniProfile/QMiniProfileKeyword.java @@ -7,7 +7,6 @@ import com.querydsl.core.types.PathMetadata; import javax.annotation.processing.Generated; import com.querydsl.core.types.Path; -import com.querydsl.core.types.dsl.PathInits; /** @@ -18,35 +17,24 @@ public class QMiniProfileKeyword extends EntityPathBase { private static final long serialVersionUID = -626949360L; - private static final PathInits INITS = PathInits.DIRECT2; - public static final QMiniProfileKeyword miniProfileKeyword = new QMiniProfileKeyword("miniProfileKeyword"); public final NumberPath id = createNumber("id", Long.class); - public final QMiniProfile miniProfile; + public final NumberPath miniProfile = createNumber("miniProfile", MiniProfile.class); public final StringPath myKeywordNames = createString("myKeywordNames"); public QMiniProfileKeyword(String variable) { - this(MiniProfileKeyword.class, forVariable(variable), INITS); + super(MiniProfileKeyword.class, forVariable(variable)); } public QMiniProfileKeyword(Path path) { - this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + super(path.getType(), path.getMetadata()); } public QMiniProfileKeyword(PathMetadata metadata) { - this(metadata, PathInits.getFor(metadata, INITS)); - } - - public QMiniProfileKeyword(PathMetadata metadata, PathInits inits) { - this(MiniProfileKeyword.class, metadata, inits); - } - - public QMiniProfileKeyword(Class type, PathMetadata metadata, PathInits inits) { - super(type, metadata, inits); - this.miniProfile = inits.isInitialized("miniProfile") ? new QMiniProfile(forProperty("miniProfile"), inits.get("miniProfile")) : null; + super(MiniProfileKeyword.class, metadata); } } diff --git a/src/main/generated/liaison/linkit/team/domain/QTeam.java b/src/main/generated/liaison/linkit/team/domain/QTeam.java index 87bd7325..a4d8653b 100644 --- a/src/main/generated/liaison/linkit/team/domain/QTeam.java +++ b/src/main/generated/liaison/linkit/team/domain/QTeam.java @@ -32,12 +32,18 @@ public class QTeam extends EntityPathBase { //inherited public final DateTimePath modifiedAt = _super.modifiedAt; + public final liaison.linkit.profile.domain.region.QRegion region; + //inherited public final EnumPath status = _super.status; + public final StringPath teamIntroduction = createString("teamIntroduction"); + public final ListPath teamMembers = this.createList("teamMembers", TeamMember.class, QTeamMember.class, PathInits.DIRECT2); - public final QTeamProfile teamProfile; + public final StringPath teamName = createString("teamName"); + + public final StringPath teamShortDescription = createString("teamShortDescription"); public QTeam(String variable) { this(Team.class, forVariable(variable), INITS); @@ -57,7 +63,7 @@ public QTeam(PathMetadata metadata, PathInits inits) { public QTeam(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); - this.teamProfile = inits.isInitialized("teamProfile") ? new QTeamProfile(forProperty("teamProfile"), inits.get("teamProfile")) : null; + this.region = inits.isInitialized("region") ? new liaison.linkit.profile.domain.region.QRegion(forProperty("region")) : null; } } diff --git a/src/main/generated/liaison/linkit/team/domain/QTeamHistory.java b/src/main/generated/liaison/linkit/team/domain/QTeamHistory.java new file mode 100644 index 00000000..3b81ad15 --- /dev/null +++ b/src/main/generated/liaison/linkit/team/domain/QTeamHistory.java @@ -0,0 +1,71 @@ +package liaison.linkit.team.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QTeamHistory is a Querydsl query type for TeamHistory + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QTeamHistory extends EntityPathBase { + + private static final long serialVersionUID = -425969386L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QTeamHistory teamHistory = new QTeamHistory("teamHistory"); + + public final StringPath historyCertificationAttachFileName = createString("historyCertificationAttachFileName"); + + public final StringPath historyCertificationAttachFilePath = createString("historyCertificationAttachFilePath"); + + public final StringPath historyCertificationDescription = createString("historyCertificationDescription"); + + public final StringPath historyDescription = createString("historyDescription"); + + public final StringPath historyEndDate = createString("historyEndDate"); + + public final StringPath historyName = createString("historyName"); + + public final StringPath historyStartDate = createString("historyStartDate"); + + public final NumberPath id = createNumber("id", Long.class); + + public final BooleanPath isHistoryCertified = createBoolean("isHistoryCertified"); + + public final BooleanPath isHistoryInProgress = createBoolean("isHistoryInProgress"); + + public final BooleanPath isHistoryVerified = createBoolean("isHistoryVerified"); + + public final QTeam team; + + public QTeamHistory(String variable) { + this(TeamHistory.class, forVariable(variable), INITS); + } + + public QTeamHistory(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QTeamHistory(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QTeamHistory(PathMetadata metadata, PathInits inits) { + this(TeamHistory.class, metadata, inits); + } + + public QTeamHistory(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.team = inits.isInitialized("team") ? new QTeam(forProperty("team"), inits.get("team")) : null; + } + +} + diff --git a/src/main/generated/liaison/linkit/team/domain/QTeamMember.java b/src/main/generated/liaison/linkit/team/domain/QTeamMember.java index 9632ed56..bcff8510 100644 --- a/src/main/generated/liaison/linkit/team/domain/QTeamMember.java +++ b/src/main/generated/liaison/linkit/team/domain/QTeamMember.java @@ -28,6 +28,8 @@ public class QTeamMember extends EntityPathBase { public final QTeam team; + public final EnumPath teamMemberType = createEnum("teamMemberType", liaison.linkit.global.type.TeamMemberType.class); + public QTeamMember(String variable) { this(TeamMember.class, forVariable(variable), INITS); } diff --git a/src/main/generated/liaison/linkit/team/domain/QTeamProduct.java b/src/main/generated/liaison/linkit/team/domain/QTeamProduct.java new file mode 100644 index 00000000..74ff5770 --- /dev/null +++ b/src/main/generated/liaison/linkit/team/domain/QTeamProduct.java @@ -0,0 +1,55 @@ +package liaison.linkit.team.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; + + +/** + * QTeamProduct is a Querydsl query type for TeamProduct + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QTeamProduct extends EntityPathBase { + + private static final long serialVersionUID = -1662377615L; + + public static final QTeamProduct teamProduct = new QTeamProduct("teamProduct"); + + public final liaison.linkit.common.domain.QBaseDateTimeEntity _super = new liaison.linkit.common.domain.QBaseDateTimeEntity(this); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + //inherited + public final DateTimePath modifiedAt = _super.modifiedAt; + + public final StringPath productEndDate = createString("productEndDate"); + + public final StringPath productLogoImagePath = createString("productLogoImagePath"); + + public final StringPath productName = createString("productName"); + + public final StringPath productShortDescription = createString("productShortDescription"); + + public final StringPath productStartDate = createString("productStartDate"); + + public QTeamProduct(String variable) { + super(TeamProduct.class, forVariable(variable)); + } + + public QTeamProduct(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QTeamProduct(PathMetadata metadata) { + super(TeamProduct.class, metadata); + } + +} + diff --git a/src/main/generated/liaison/linkit/team/domain/QTeamProfile.java b/src/main/generated/liaison/linkit/team/domain/QTeamProfile.java deleted file mode 100644 index 19d2c1ee..00000000 --- a/src/main/generated/liaison/linkit/team/domain/QTeamProfile.java +++ /dev/null @@ -1,93 +0,0 @@ -package liaison.linkit.team.domain; - -import static com.querydsl.core.types.PathMetadataFactory.*; - -import com.querydsl.core.types.dsl.*; - -import com.querydsl.core.types.PathMetadata; -import javax.annotation.processing.Generated; -import com.querydsl.core.types.Path; -import com.querydsl.core.types.dsl.PathInits; - - -/** - * QTeamProfile is a Querydsl query type for TeamProfile - */ -@Generated("com.querydsl.codegen.DefaultEntitySerializer") -public class QTeamProfile extends EntityPathBase { - - private static final long serialVersionUID = -1662329301L; - - private static final PathInits INITS = PathInits.DIRECT2; - - public static final QTeamProfile teamProfile = new QTeamProfile("teamProfile"); - - public final liaison.linkit.global.QBaseEntity _super = new liaison.linkit.global.QBaseEntity(this); - - //inherited - public final DateTimePath createdAt = _super.createdAt; - - public final NumberPath id = createNumber("id", Long.class); - - public final BooleanPath isActivity = createBoolean("isActivity"); - - public final BooleanPath isActivityMethod = createBoolean("isActivityMethod"); - - public final BooleanPath isActivityRegion = createBoolean("isActivityRegion"); - - public final BooleanPath isHistory = createBoolean("isHistory"); - - public final BooleanPath isTeamAttach = createBoolean("isTeamAttach"); - - public final BooleanPath isTeamAttachFile = createBoolean("isTeamAttachFile"); - - public final BooleanPath isTeamAttachUrl = createBoolean("isTeamAttachUrl"); - - public final BooleanPath isTeamIntroduction = createBoolean("isTeamIntroduction"); - - public final BooleanPath isTeamMemberAnnouncement = createBoolean("isTeamMemberAnnouncement"); - - public final BooleanPath isTeamMemberIntroduction = createBoolean("isTeamMemberIntroduction"); - - public final BooleanPath isTeamMiniProfile = createBoolean("isTeamMiniProfile"); - - public final BooleanPath isTeamProfileTeamBuildingField = createBoolean("isTeamProfileTeamBuildingField"); - - public final liaison.linkit.member.domain.QMember member; - - //inherited - public final DateTimePath modifiedAt = _super.modifiedAt; - - //inherited - public final EnumPath status = _super.status; - - public final StringPath teamIntroduction = createString("teamIntroduction"); - - public final liaison.linkit.team.domain.miniprofile.QTeamMiniProfile teamMiniProfile; - - public final NumberPath teamProfileCompletion = createNumber("teamProfileCompletion", Double.class); - - public QTeamProfile(String variable) { - this(TeamProfile.class, forVariable(variable), INITS); - } - - public QTeamProfile(Path path) { - this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); - } - - public QTeamProfile(PathMetadata metadata) { - this(metadata, PathInits.getFor(metadata, INITS)); - } - - public QTeamProfile(PathMetadata metadata, PathInits inits) { - this(TeamProfile.class, metadata, inits); - } - - public QTeamProfile(Class type, PathMetadata metadata, PathInits inits) { - super(type, metadata, inits); - this.member = inits.isInitialized("member") ? new liaison.linkit.member.domain.QMember(forProperty("member"), inits.get("member")) : null; - this.teamMiniProfile = inits.isInitialized("teamMiniProfile") ? new liaison.linkit.team.domain.miniprofile.QTeamMiniProfile(forProperty("teamMiniProfile"), inits.get("teamMiniProfile")) : null; - } - -} - diff --git a/src/main/generated/liaison/linkit/team/domain/activity/QActivityMethod.java b/src/main/generated/liaison/linkit/team/domain/activity/QActivityMethod.java index 23384379..2a422805 100644 --- a/src/main/generated/liaison/linkit/team/domain/activity/QActivityMethod.java +++ b/src/main/generated/liaison/linkit/team/domain/activity/QActivityMethod.java @@ -26,7 +26,7 @@ public class QActivityMethod extends EntityPathBase { public final NumberPath id = createNumber("id", Long.class); - public final liaison.linkit.team.domain.QTeamProfile teamProfile; + public final NumberPath teamProfile = createNumber("teamProfile", TeamProfile.class); public QActivityMethod(String variable) { this(ActivityMethod.class, forVariable(variable), INITS); @@ -47,7 +47,6 @@ public QActivityMethod(PathMetadata metadata, PathInits inits) { public QActivityMethod(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); this.activityMethodTag = inits.isInitialized("activityMethodTag") ? new QActivityMethodTag(forProperty("activityMethodTag")) : null; - this.teamProfile = inits.isInitialized("teamProfile") ? new liaison.linkit.team.domain.QTeamProfile(forProperty("teamProfile"), inits.get("teamProfile")) : null; } } diff --git a/src/main/generated/liaison/linkit/team/domain/activity/QActivityRegion.java b/src/main/generated/liaison/linkit/team/domain/activity/QActivityRegion.java index 2ff78c81..55f1c4e3 100644 --- a/src/main/generated/liaison/linkit/team/domain/activity/QActivityRegion.java +++ b/src/main/generated/liaison/linkit/team/domain/activity/QActivityRegion.java @@ -26,7 +26,7 @@ public class QActivityRegion extends EntityPathBase { public final liaison.linkit.profile.domain.region.QRegion region; - public final liaison.linkit.team.domain.QTeamProfile teamProfile; + public final NumberPath teamProfile = createNumber("teamProfile", TeamProfile.class); public QActivityRegion(String variable) { this(ActivityRegion.class, forVariable(variable), INITS); @@ -47,7 +47,6 @@ public QActivityRegion(PathMetadata metadata, PathInits inits) { public QActivityRegion(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); this.region = inits.isInitialized("region") ? new liaison.linkit.profile.domain.region.QRegion(forProperty("region")) : null; - this.teamProfile = inits.isInitialized("teamProfile") ? new liaison.linkit.team.domain.QTeamProfile(forProperty("teamProfile"), inits.get("teamProfile")) : null; } } diff --git a/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncement.java b/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncement.java index 881d1e52..1f3e0ef9 100644 --- a/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncement.java +++ b/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncement.java @@ -7,7 +7,6 @@ import com.querydsl.core.types.PathMetadata; import javax.annotation.processing.Generated; import com.querydsl.core.types.Path; -import com.querydsl.core.types.dsl.PathInits; /** @@ -18,8 +17,6 @@ public class QTeamMemberAnnouncement extends EntityPathBase status = _super.status; - public final liaison.linkit.team.domain.QTeamProfile teamProfile; - public QTeamMemberAnnouncement(String variable) { - this(TeamMemberAnnouncement.class, forVariable(variable), INITS); + super(TeamMemberAnnouncement.class, forVariable(variable)); } public QTeamMemberAnnouncement(Path path) { - this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + super(path.getType(), path.getMetadata()); } public QTeamMemberAnnouncement(PathMetadata metadata) { - this(metadata, PathInits.getFor(metadata, INITS)); - } - - public QTeamMemberAnnouncement(PathMetadata metadata, PathInits inits) { - this(TeamMemberAnnouncement.class, metadata, inits); - } - - public QTeamMemberAnnouncement(Class type, PathMetadata metadata, PathInits inits) { - super(type, metadata, inits); - this.teamProfile = inits.isInitialized("teamProfile") ? new liaison.linkit.team.domain.QTeamProfile(forProperty("teamProfile"), inits.get("teamProfile")) : null; + super(TeamMemberAnnouncement.class, metadata); } } diff --git a/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncementJobRole.java b/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncementJobRole.java index da8ebcec..2ab37dc2 100644 --- a/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncementJobRole.java +++ b/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncementJobRole.java @@ -47,7 +47,7 @@ public QTeamMemberAnnouncementJobRole(PathMetadata metadata, PathInits inits) { public QTeamMemberAnnouncementJobRole(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); this.jobRole = inits.isInitialized("jobRole") ? new liaison.linkit.profile.domain.role.QJobRole(forProperty("jobRole")) : null; - this.teamMemberAnnouncement = inits.isInitialized("teamMemberAnnouncement") ? new QTeamMemberAnnouncement(forProperty("teamMemberAnnouncement"), inits.get("teamMemberAnnouncement")) : null; + this.teamMemberAnnouncement = inits.isInitialized("teamMemberAnnouncement") ? new QTeamMemberAnnouncement(forProperty("teamMemberAnnouncement")) : null; } } diff --git a/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncementSkill.java b/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncementSkill.java index b2f5b2d5..24bb7f54 100644 --- a/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncementSkill.java +++ b/src/main/generated/liaison/linkit/team/domain/announcement/QTeamMemberAnnouncementSkill.java @@ -47,7 +47,7 @@ public QTeamMemberAnnouncementSkill(PathMetadata metadata, PathInits inits) { public QTeamMemberAnnouncementSkill(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); this.skill = inits.isInitialized("skill") ? new liaison.linkit.profile.domain.skill.QSkill(forProperty("skill")) : null; - this.teamMemberAnnouncement = inits.isInitialized("teamMemberAnnouncement") ? new QTeamMemberAnnouncement(forProperty("teamMemberAnnouncement"), inits.get("teamMemberAnnouncement")) : null; + this.teamMemberAnnouncement = inits.isInitialized("teamMemberAnnouncement") ? new QTeamMemberAnnouncement(forProperty("teamMemberAnnouncement")) : null; } } diff --git a/src/main/generated/liaison/linkit/team/domain/history/QHistory.java b/src/main/generated/liaison/linkit/team/domain/history/QHistory.java index 738968d4..fffca3de 100644 --- a/src/main/generated/liaison/linkit/team/domain/history/QHistory.java +++ b/src/main/generated/liaison/linkit/team/domain/history/QHistory.java @@ -7,7 +7,6 @@ import com.querydsl.core.types.PathMetadata; import javax.annotation.processing.Generated; import com.querydsl.core.types.Path; -import com.querydsl.core.types.dsl.PathInits; /** @@ -18,8 +17,6 @@ public class QHistory extends EntityPathBase { private static final long serialVersionUID = 497217369L; - private static final PathInits INITS = PathInits.DIRECT2; - public static final QHistory history = new QHistory("history"); public final NumberPath endYear = createNumber("endYear", Integer.class); @@ -34,27 +31,18 @@ public class QHistory extends EntityPathBase { public final NumberPath startYear = createNumber("startYear", Integer.class); - public final liaison.linkit.team.domain.QTeamProfile teamProfile; + public final NumberPath teamProfile = createNumber("teamProfile", TeamProfile.class); public QHistory(String variable) { - this(History.class, forVariable(variable), INITS); + super(History.class, forVariable(variable)); } public QHistory(Path path) { - this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + super(path.getType(), path.getMetadata()); } public QHistory(PathMetadata metadata) { - this(metadata, PathInits.getFor(metadata, INITS)); - } - - public QHistory(PathMetadata metadata, PathInits inits) { - this(History.class, metadata, inits); - } - - public QHistory(Class type, PathMetadata metadata, PathInits inits) { - super(type, metadata, inits); - this.teamProfile = inits.isInitialized("teamProfile") ? new liaison.linkit.team.domain.QTeamProfile(forProperty("teamProfile"), inits.get("teamProfile")) : null; + super(History.class, metadata); } } diff --git a/src/main/generated/liaison/linkit/team/domain/memberIntroduction/QTeamMemberIntroduction.java b/src/main/generated/liaison/linkit/team/domain/memberIntroduction/QTeamMemberIntroduction.java index 32a2425b..7b389038 100644 --- a/src/main/generated/liaison/linkit/team/domain/memberIntroduction/QTeamMemberIntroduction.java +++ b/src/main/generated/liaison/linkit/team/domain/memberIntroduction/QTeamMemberIntroduction.java @@ -7,7 +7,6 @@ import com.querydsl.core.types.PathMetadata; import javax.annotation.processing.Generated; import com.querydsl.core.types.Path; -import com.querydsl.core.types.dsl.PathInits; /** @@ -18,8 +17,6 @@ public class QTeamMemberIntroduction extends EntityPathBase id = createNumber("id", Long.class); @@ -30,27 +27,18 @@ public class QTeamMemberIntroduction extends EntityPathBase teamProfile = createNumber("teamProfile", TeamProfile.class); public QTeamMemberIntroduction(String variable) { - this(TeamMemberIntroduction.class, forVariable(variable), INITS); + super(TeamMemberIntroduction.class, forVariable(variable)); } public QTeamMemberIntroduction(Path path) { - this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + super(path.getType(), path.getMetadata()); } public QTeamMemberIntroduction(PathMetadata metadata) { - this(metadata, PathInits.getFor(metadata, INITS)); - } - - public QTeamMemberIntroduction(PathMetadata metadata, PathInits inits) { - this(TeamMemberIntroduction.class, metadata, inits); - } - - public QTeamMemberIntroduction(Class type, PathMetadata metadata, PathInits inits) { - super(type, metadata, inits); - this.teamProfile = inits.isInitialized("teamProfile") ? new liaison.linkit.team.domain.QTeamProfile(forProperty("teamProfile"), inits.get("teamProfile")) : null; + super(TeamMemberIntroduction.class, metadata); } } diff --git a/src/main/generated/liaison/linkit/team/domain/miniprofile/QTeamMiniProfile.java b/src/main/generated/liaison/linkit/team/domain/miniprofile/QTeamMiniProfile.java index 27082836..e30f32be 100644 --- a/src/main/generated/liaison/linkit/team/domain/miniprofile/QTeamMiniProfile.java +++ b/src/main/generated/liaison/linkit/team/domain/miniprofile/QTeamMiniProfile.java @@ -34,7 +34,7 @@ public class QTeamMiniProfile extends EntityPathBase { public final StringPath teamName = createString("teamName"); - public final liaison.linkit.team.domain.QTeamProfile teamProfile; + public final NumberPath teamProfile = createNumber("teamProfile", TeamProfile.class); public final StringPath teamProfileTitle = createString("teamProfileTitle"); @@ -59,7 +59,6 @@ public QTeamMiniProfile(PathMetadata metadata, PathInits inits) { public QTeamMiniProfile(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); this.industrySector = inits.isInitialized("industrySector") ? new QIndustrySector(forProperty("industrySector")) : null; - this.teamProfile = inits.isInitialized("teamProfile") ? new liaison.linkit.team.domain.QTeamProfile(forProperty("teamProfile"), inits.get("teamProfile")) : null; this.teamScale = inits.isInitialized("teamScale") ? new QTeamScale(forProperty("teamScale")) : null; } diff --git a/src/main/generated/liaison/linkit/team/domain/teambuilding/QTeamProfileTeamBuildingField.java b/src/main/generated/liaison/linkit/team/domain/teambuilding/QTeamProfileTeamBuildingField.java index 5b7fb8cd..48ed5433 100644 --- a/src/main/generated/liaison/linkit/team/domain/teambuilding/QTeamProfileTeamBuildingField.java +++ b/src/main/generated/liaison/linkit/team/domain/teambuilding/QTeamProfileTeamBuildingField.java @@ -26,7 +26,7 @@ public class QTeamProfileTeamBuildingField extends EntityPathBase teamProfile = createNumber("teamProfile", TeamProfile.class); public QTeamProfileTeamBuildingField(String variable) { this(TeamProfileTeamBuildingField.class, forVariable(variable), INITS); @@ -47,7 +47,6 @@ public QTeamProfileTeamBuildingField(PathMetadata metadata, PathInits inits) { public QTeamProfileTeamBuildingField(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); this.teamBuildingField = inits.isInitialized("teamBuildingField") ? new liaison.linkit.profile.domain.teambuilding.QTeamBuildingField(forProperty("teamBuildingField")) : null; - this.teamProfile = inits.isInitialized("teamProfile") ? new liaison.linkit.team.domain.QTeamProfile(forProperty("teamProfile"), inits.get("teamProfile")) : null; } } diff --git a/src/main/generated/liaison/linkit/wish/domain/QPrivateWish.java b/src/main/generated/liaison/linkit/wish/domain/QPrivateWish.java index c90b61bf..9fa7febd 100644 --- a/src/main/generated/liaison/linkit/wish/domain/QPrivateWish.java +++ b/src/main/generated/liaison/linkit/wish/domain/QPrivateWish.java @@ -22,23 +22,14 @@ public class QPrivateWish extends EntityPathBase { public static final QPrivateWish privateWish = new QPrivateWish("privateWish"); - public final liaison.linkit.global.QBaseEntity _super = new liaison.linkit.global.QBaseEntity(this); - - //inherited - public final DateTimePath createdAt = _super.createdAt; + public final DateTimePath createdAt = createDateTime("createdAt", java.time.LocalDateTime.class); public final NumberPath id = createNumber("id", Long.class); public final liaison.linkit.member.domain.QMember member; - //inherited - public final DateTimePath modifiedAt = _super.modifiedAt; - public final liaison.linkit.profile.domain.QProfile profile; - //inherited - public final EnumPath status = _super.status; - public QPrivateWish(String variable) { this(PrivateWish.class, forVariable(variable), INITS); } diff --git a/src/main/generated/liaison/linkit/wish/domain/QTeamMemberAnnouncementWish.java b/src/main/generated/liaison/linkit/wish/domain/QTeamMemberAnnouncementWish.java new file mode 100644 index 00000000..5ea67e9d --- /dev/null +++ b/src/main/generated/liaison/linkit/wish/domain/QTeamMemberAnnouncementWish.java @@ -0,0 +1,56 @@ +package liaison.linkit.wish.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QTeamMemberAnnouncementWish is a Querydsl query type for TeamMemberAnnouncementWish + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QTeamMemberAnnouncementWish extends EntityPathBase { + + private static final long serialVersionUID = -223411120L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QTeamMemberAnnouncementWish teamMemberAnnouncementWish = new QTeamMemberAnnouncementWish("teamMemberAnnouncementWish"); + + public final DateTimePath createdAt = createDateTime("createdAt", java.time.LocalDateTime.class); + + public final NumberPath id = createNumber("id", Long.class); + + public final liaison.linkit.member.domain.QMember member; + + public final liaison.linkit.team.domain.announcement.QTeamMemberAnnouncement teamMemberAnnouncement; + + public QTeamMemberAnnouncementWish(String variable) { + this(TeamMemberAnnouncementWish.class, forVariable(variable), INITS); + } + + public QTeamMemberAnnouncementWish(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QTeamMemberAnnouncementWish(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QTeamMemberAnnouncementWish(PathMetadata metadata, PathInits inits) { + this(TeamMemberAnnouncementWish.class, metadata, inits); + } + + public QTeamMemberAnnouncementWish(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.member = inits.isInitialized("member") ? new liaison.linkit.member.domain.QMember(forProperty("member"), inits.get("member")) : null; + this.teamMemberAnnouncement = inits.isInitialized("teamMemberAnnouncement") ? new liaison.linkit.team.domain.announcement.QTeamMemberAnnouncement(forProperty("teamMemberAnnouncement")) : null; + } + +} + diff --git a/src/main/generated/liaison/linkit/wish/domain/QTeamWish.java b/src/main/generated/liaison/linkit/wish/domain/QTeamWish.java index 659ed83e..437f53c0 100644 --- a/src/main/generated/liaison/linkit/wish/domain/QTeamWish.java +++ b/src/main/generated/liaison/linkit/wish/domain/QTeamWish.java @@ -22,22 +22,13 @@ public class QTeamWish extends EntityPathBase { public static final QTeamWish teamWish = new QTeamWish("teamWish"); - public final liaison.linkit.global.QBaseEntity _super = new liaison.linkit.global.QBaseEntity(this); - - //inherited - public final DateTimePath createdAt = _super.createdAt; + public final DateTimePath createdAt = createDateTime("createdAt", java.time.LocalDateTime.class); public final NumberPath id = createNumber("id", Long.class); public final liaison.linkit.member.domain.QMember member; - //inherited - public final DateTimePath modifiedAt = _super.modifiedAt; - - //inherited - public final EnumPath status = _super.status; - - public final liaison.linkit.team.domain.announcement.QTeamMemberAnnouncement teamMemberAnnouncement; + public final liaison.linkit.team.domain.QTeam team; public QTeamWish(String variable) { this(TeamWish.class, forVariable(variable), INITS); @@ -58,7 +49,7 @@ public QTeamWish(PathMetadata metadata, PathInits inits) { public QTeamWish(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); this.member = inits.isInitialized("member") ? new liaison.linkit.member.domain.QMember(forProperty("member"), inits.get("member")) : null; - this.teamMemberAnnouncement = inits.isInitialized("teamMemberAnnouncement") ? new liaison.linkit.team.domain.announcement.QTeamMemberAnnouncement(forProperty("teamMemberAnnouncement"), inits.get("teamMemberAnnouncement")) : null; + this.team = inits.isInitialized("team") ? new liaison.linkit.team.domain.QTeam(forProperty("team"), inits.get("team")) : null; } } diff --git a/src/main/java/liaison/linkit/common/domain/BaseDateTimeEntity.java b/src/main/java/liaison/linkit/common/domain/BaseDateTimeEntity.java index 600a94f5..1f78f711 100644 --- a/src/main/java/liaison/linkit/common/domain/BaseDateTimeEntity.java +++ b/src/main/java/liaison/linkit/common/domain/BaseDateTimeEntity.java @@ -15,10 +15,13 @@ @MappedSuperclass @Getter public abstract class BaseDateTimeEntity { + @Column(updatable = false) @CreatedDate private LocalDateTime createdAt; @LastModifiedDate - private LocalDateTime updatedAt; + @Column(nullable = false) + private LocalDateTime modifiedAt; + } diff --git a/src/main/java/liaison/linkit/common/domain/Position.java b/src/main/java/liaison/linkit/common/domain/Position.java new file mode 100644 index 00000000..e5ae826d --- /dev/null +++ b/src/main/java/liaison/linkit/common/domain/Position.java @@ -0,0 +1,28 @@ +package liaison.linkit.common.domain; + +import static jakarta.persistence.GenerationType.IDENTITY; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class Position { + + @Id + @GeneratedValue(strategy = IDENTITY) + private Long id; + + @Column(name = "position_name", nullable = false) + private String positionName; +} diff --git a/src/main/java/liaison/linkit/common/domain/ProfileState.java b/src/main/java/liaison/linkit/common/domain/ProfileState.java new file mode 100644 index 00000000..9d9895ac --- /dev/null +++ b/src/main/java/liaison/linkit/common/domain/ProfileState.java @@ -0,0 +1,28 @@ +package liaison.linkit.common.domain; + +import static jakarta.persistence.GenerationType.IDENTITY; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class ProfileState { + + @Id + @GeneratedValue(strategy = IDENTITY) + private Long id; + + @Column(name = "profile_state_name", nullable = false) + private String profileStateName; +} diff --git a/src/main/java/liaison/linkit/common/domain/University.java b/src/main/java/liaison/linkit/common/domain/University.java new file mode 100644 index 00000000..42dc056e --- /dev/null +++ b/src/main/java/liaison/linkit/common/domain/University.java @@ -0,0 +1,30 @@ +package liaison.linkit.common.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class University { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false) + private String universityName; + + @Column(nullable = false) + private String universityLogoImagePath; +} diff --git a/src/main/java/liaison/linkit/global/BaseEntity.java b/src/main/java/liaison/linkit/global/BaseEntity.java index b5a44ada..5c8fb6ac 100644 --- a/src/main/java/liaison/linkit/global/BaseEntity.java +++ b/src/main/java/liaison/linkit/global/BaseEntity.java @@ -1,9 +1,14 @@ package liaison.linkit.global; +import static jakarta.persistence.EnumType.STRING; +import static liaison.linkit.global.type.StatusType.DELETED; +import static liaison.linkit.global.type.StatusType.USABLE; + import jakarta.persistence.Column; import jakarta.persistence.EntityListeners; import jakarta.persistence.Enumerated; import jakarta.persistence.MappedSuperclass; +import java.time.LocalDateTime; import liaison.linkit.global.type.StatusType; import lombok.Getter; import lombok.NoArgsConstructor; @@ -11,12 +16,6 @@ import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import java.time.LocalDateTime; - -import static jakarta.persistence.EnumType.STRING; -import static liaison.linkit.global.type.StatusType.DELETED; -import static liaison.linkit.global.type.StatusType.USABLE; - @Getter @MappedSuperclass @NoArgsConstructor diff --git a/src/main/java/liaison/linkit/global/config/csv/degree/CsvDegreeWriter.java b/src/main/java/liaison/linkit/global/config/csv/degree/CsvDegreeWriter.java index 9c1bf24e..6383d4a0 100644 --- a/src/main/java/liaison/linkit/global/config/csv/degree/CsvDegreeWriter.java +++ b/src/main/java/liaison/linkit/global/config/csv/degree/CsvDegreeWriter.java @@ -1,6 +1,5 @@ package liaison.linkit.global.config.csv.degree; -import liaison.linkit.profile.domain.education.Degree; import liaison.linkit.profile.domain.repository.education.DegreeRepository; import liaison.linkit.profile.dto.csv.DegreeCsvData; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/liaison/linkit/global/type/ProfileUrlType.java b/src/main/java/liaison/linkit/global/type/ProfileUrlType.java new file mode 100644 index 00000000..ba2dbc7c --- /dev/null +++ b/src/main/java/liaison/linkit/global/type/ProfileUrlType.java @@ -0,0 +1,10 @@ +package liaison.linkit.global.type; + +public enum ProfileUrlType { + GITHUB, + NOTION, + BEHANCE, + INSTAGRAM, + LINKEDIN, + CUSTOM +} diff --git a/src/main/java/liaison/linkit/global/type/TeamMemberType.java b/src/main/java/liaison/linkit/global/type/TeamMemberType.java new file mode 100644 index 00000000..c2bb49df --- /dev/null +++ b/src/main/java/liaison/linkit/global/type/TeamMemberType.java @@ -0,0 +1,7 @@ +package liaison.linkit.global.type; + +public enum TeamMemberType { + TEAM_MANAGER, + TEAM_LEADER, + TEAM_MEMBER +} diff --git a/src/main/java/liaison/linkit/login/service/LoginService.java b/src/main/java/liaison/linkit/login/service/LoginService.java index fc1ed0f2..a17a0843 100644 --- a/src/main/java/liaison/linkit/login/service/LoginService.java +++ b/src/main/java/liaison/linkit/login/service/LoginService.java @@ -30,7 +30,6 @@ import liaison.linkit.member.implement.MemberQueryAdapter; import liaison.linkit.profile.domain.Profile; import liaison.linkit.profile.domain.repository.profile.ProfileRepository; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.announcement.TeamMemberAnnouncement; import liaison.linkit.team.domain.repository.announcement.TeamMemberAnnouncementRepository; import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; diff --git a/src/main/java/liaison/linkit/matching/service/MatchingService.java b/src/main/java/liaison/linkit/matching/service/MatchingService.java index 1ef48b48..cdb7b0cd 100644 --- a/src/main/java/liaison/linkit/matching/service/MatchingService.java +++ b/src/main/java/liaison/linkit/matching/service/MatchingService.java @@ -37,15 +37,12 @@ import liaison.linkit.profile.domain.repository.jobRole.ProfileJobRoleRepository; import liaison.linkit.profile.domain.role.JobRole; import liaison.linkit.profile.domain.role.ProfileJobRole; -import liaison.linkit.profile.domain.skill.ProfileSkill; import liaison.linkit.profile.domain.skill.Skill; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.activity.ActivityMethod; import liaison.linkit.team.domain.activity.ActivityMethodTag; import liaison.linkit.team.domain.activity.ActivityRegion; import liaison.linkit.team.domain.announcement.TeamMemberAnnouncement; import liaison.linkit.team.domain.announcement.TeamMemberAnnouncementJobRole; -import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; import liaison.linkit.team.domain.repository.activity.method.ActivityMethodRepository; import liaison.linkit.team.domain.repository.activity.method.ActivityMethodTagRepository; import liaison.linkit.team.domain.repository.activity.region.ActivityRegionRepository; @@ -101,11 +98,12 @@ private Profile getProfileById(final Long profileId) { return profileRepository.findById(profileId) .orElseThrow(() -> new BadRequestException(NOT_FOUND_PROFILE_BY_ID)); } - // 팀 소개서 ID -> team Profile 객체 조회 - private TeamProfile getTeamProfileById(final Long teamProfileId) { - return teamProfileRepository.findById(teamProfileId) - .orElseThrow(() -> new BadRequestException(NOT_FOUND_TEAM_PROFILE_ID)); - } + +// // 팀 소개서 ID -> team Profile 객체 조회 +// private TeamProfile getTeamProfileById(final Long teamProfileId) { +// return teamProfileRepository.findById(teamProfileId) +// .orElseThrow(() -> new BadRequestException(NOT_FOUND_TEAM_PROFILE_ID)); +// } // 모든 "내 이력서" 서비스 계층에 필요한 profile 조회 메서드 private Profile getProfile(final Long memberId) { @@ -113,10 +111,10 @@ private Profile getProfile(final Long memberId) { .orElseThrow(() -> new BadRequestException(NOT_FOUND_PROFILE_BY_MEMBER_ID)); } - private TeamProfile getTeamProfile(final Long memberId) { - return teamProfileRepository.findByMemberId(memberId) - .orElseThrow(() -> new BadRequestException(NOT_FOUND_TEAM_PROFILE_ID)); - } +// private TeamProfile getTeamProfile(final Long memberId) { +// return teamProfileRepository.findByMemberId(memberId) +// .orElseThrow(() -> new BadRequestException(NOT_FOUND_TEAM_PROFILE_ID)); +// } private PrivateMatching getPrivateMatching(final Long privateMatchingId) { return privateMatchingRepository.findById(privateMatchingId) @@ -129,7 +127,7 @@ private TeamMatching getTeamMatching(final Long teamMatchingId) { } public void validateReceivedMatchingRequest(final Long memberId) { - if(!privateMatchingRepository.existsByProfileId(getProfile(memberId).getId())){ + if (!privateMatchingRepository.existsByProfileId(getProfile(memberId).getId())) { throw new AuthException(NOT_FOUND_PRIVATE_MATCHING_BY_ID); } } @@ -253,7 +251,7 @@ public void createTeamProfileMatchingToPrivate( .toList(); ActivityRegion activityRegion = activityRegionRepository.findByTeamProfileId(savedPrivateMatching.getMember().getTeamProfile().getId()) - .orElseThrow(()-> new BadRequestException(NOT_FOUND_ACTIVITY_REGION_BY_TEAM_PROFILE_ID)); + .orElseThrow(() -> new BadRequestException(NOT_FOUND_ACTIVITY_REGION_BY_TEAM_PROFILE_ID)); mailService.mailRequestTeamToPrivate( savedPrivateMatching.getProfile().getMember().getEmail(), @@ -318,7 +316,7 @@ public void createTeamProfileMatchingToTeam( .toList(); ActivityRegion activityRegion = activityRegionRepository.findByTeamProfileId(savedTeamMatching.getMember().getTeamProfile().getId()) - .orElseThrow(()-> new BadRequestException(NOT_FOUND_ACTIVITY_REGION_BY_TEAM_PROFILE_ID)); + .orElseThrow(() -> new BadRequestException(NOT_FOUND_ACTIVITY_REGION_BY_TEAM_PROFILE_ID)); mailService.mailRequestTeamToTeam( savedTeamMatching.getTeamMemberAnnouncement().getTeamProfile().getMember().getEmail(), @@ -502,20 +500,17 @@ public ExistenceProfileResponse getExistenceProfile(final Long memberId) { true, true ); - } - else if (profile.getCompletion() >= 80 && teamProfile.getTeamProfileCompletion() < 80) { + } else if (profile.getCompletion() >= 80 && teamProfile.getTeamProfileCompletion() < 80) { return new ExistenceProfileResponse( true, false ); - } - else if (profile.getCompletion() < 80 && teamProfile.getTeamProfileCompletion() >= 80) { + } else if (profile.getCompletion() < 80 && teamProfile.getTeamProfileCompletion() >= 80) { return new ExistenceProfileResponse( false, true ); - } - else { + } else { return new ExistenceProfileResponse( false, false @@ -712,7 +707,6 @@ public SuccessContactResponse getTeamSuccessContactResponse( } - public List getJobRoleNames(final Long memberId) { final Profile profile = getProfile(memberId); final List profileJobRoleList = getProfileJobRoleList(profile.getId()); diff --git a/src/main/java/liaison/linkit/member/business/MemberService.java b/src/main/java/liaison/linkit/member/business/MemberService.java index 7f2e35b0..ab9de4ad 100644 --- a/src/main/java/liaison/linkit/member/business/MemberService.java +++ b/src/main/java/liaison/linkit/member/business/MemberService.java @@ -2,15 +2,14 @@ import liaison.linkit.member.domain.Member; import liaison.linkit.member.domain.MemberBasicInform; -import liaison.linkit.member.presentation.dto.request.memberBasicInform.MemberBasicInformRequestDTO; -import liaison.linkit.member.presentation.dto.request.memberBasicInform.MemberBasicInformRequestDTO.memberBasicInformRequest; -import liaison.linkit.member.presentation.dto.response.MemberBasicInformResponseDTO; import liaison.linkit.member.implement.MemberBasicInformCommandAdapter; import liaison.linkit.member.implement.MemberBasicInformQueryAdapter; import liaison.linkit.member.implement.MemberQueryAdapter; +import liaison.linkit.member.presentation.dto.request.memberBasicInform.MemberBasicInformRequestDTO; +import liaison.linkit.member.presentation.dto.request.memberBasicInform.MemberBasicInformRequestDTO.memberBasicInformRequest; +import liaison.linkit.member.presentation.dto.response.MemberBasicInformResponseDTO; import liaison.linkit.member.presentation.dto.response.MemberBasicInformResponseDTO.RequestMemberBasicInform; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,7 +17,6 @@ @Service @RequiredArgsConstructor @Transactional -@Slf4j public class MemberService { private final MemberQueryAdapter memberQueryAdapter; private final MemberBasicInformQueryAdapter memberBasicInformQueryAdapter; @@ -47,7 +45,6 @@ public MemberBasicInformResponseDTO.MemberBasicInformDetail getPersonalMemberBas // 회원 기본 정보 수정 (UPDATE) public RequestMemberBasicInform update(final Long memberId, final MemberBasicInformRequestDTO.memberBasicInformRequest request) { - final Member member = memberQueryAdapter.findById(memberId); final MemberBasicInform updatedMemberBasicInform = memberBasicInformCommandAdapter.update(memberId, request); return memberBasicInformMapper.toRequestMemberBasicInform(updatedMemberBasicInform); } diff --git a/src/main/java/liaison/linkit/member/domain/Member.java b/src/main/java/liaison/linkit/member/domain/Member.java index 417ddfc1..0d3aca38 100644 --- a/src/main/java/liaison/linkit/member/domain/Member.java +++ b/src/main/java/liaison/linkit/member/domain/Member.java @@ -16,7 +16,6 @@ import liaison.linkit.common.domain.BaseDateTimeEntity; import liaison.linkit.member.domain.type.MemberState; import liaison.linkit.profile.domain.Profile; -import liaison.linkit.team.domain.TeamProfile; import lombok.Getter; import lombok.NoArgsConstructor; import org.hibernate.annotations.SQLRestriction; @@ -37,9 +36,6 @@ public class Member extends BaseDateTimeEntity { @OneToOne(mappedBy = "member", cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = LAZY) private Profile profile; - @OneToOne(mappedBy = "member", cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = LAZY) - private TeamProfile teamProfile; - @Column(nullable = false, length = 100) private String socialLoginId; diff --git a/src/main/java/liaison/linkit/member/presentation/HomeTestController.java b/src/main/java/liaison/linkit/member/presentation/HomeTestController.java index 29abb118..c4c805b0 100644 --- a/src/main/java/liaison/linkit/member/presentation/HomeTestController.java +++ b/src/main/java/liaison/linkit/member/presentation/HomeTestController.java @@ -5,7 +5,6 @@ @RestController public class HomeTestController { - @GetMapping("/health") public String healthCheck() { return "I'm healthy!!"; diff --git a/src/main/java/liaison/linkit/member/presentation/MemberController.java b/src/main/java/liaison/linkit/member/presentation/MemberController.java index 0ec5dd42..2416d313 100644 --- a/src/main/java/liaison/linkit/member/presentation/MemberController.java +++ b/src/main/java/liaison/linkit/member/presentation/MemberController.java @@ -10,7 +10,6 @@ import liaison.linkit.member.presentation.dto.response.MemberBasicInformResponseDTO; import liaison.linkit.member.presentation.dto.response.MemberBasicInformResponseDTO.RequestMemberBasicInform; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -20,8 +19,7 @@ @RestController @RequiredArgsConstructor -@RequestMapping("/members") -@Slf4j +@RequestMapping("/api/v1/member") public class MemberController { public final MemberService memberService; diff --git a/src/main/java/liaison/linkit/profile/business/ProfileLicenseMapper.java b/src/main/java/liaison/linkit/profile/business/ProfileLicenseMapper.java new file mode 100644 index 00000000..edf3374e --- /dev/null +++ b/src/main/java/liaison/linkit/profile/business/ProfileLicenseMapper.java @@ -0,0 +1,17 @@ +package liaison.linkit.profile.business; + +import java.time.LocalDateTime; +import liaison.linkit.common.annotation.Mapper; +import liaison.linkit.profile.presentation.license.dto.ProfileLicenseResponseDTO; + +@Mapper +public class ProfileLicenseMapper { + + // 삭제 응답 매핑 + public ProfileLicenseResponseDTO.RemoveProfileLicense toRemoveProfileLicense(final Long profileLicenseId) { + return ProfileLicenseResponseDTO.RemoveProfileLicense.builder() + .profileLicenseId(profileLicenseId) + .deletedAt(LocalDateTime.now()) + .build(); + } +} diff --git a/src/main/java/liaison/linkit/profile/business/ProfileUrlMapper.java b/src/main/java/liaison/linkit/profile/business/ProfileUrlMapper.java new file mode 100644 index 00000000..574ab1f1 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/business/ProfileUrlMapper.java @@ -0,0 +1,16 @@ +package liaison.linkit.profile.business; + +import java.time.LocalDateTime; +import liaison.linkit.common.annotation.Mapper; +import liaison.linkit.profile.presentation.url.dto.ProfileUrlResponseDTO; + +@Mapper +public class ProfileUrlMapper { + // 삭제 응답 매핑 + public ProfileUrlResponseDTO.RemoveProfileUrl toRemoveProfileUrl(final Long profileUrlId) { + return ProfileUrlResponseDTO.RemoveProfileUrl.builder() + .profileUrlId(profileUrlId) + .deletedAt(LocalDateTime.now()) + .build(); + } +} diff --git a/src/main/java/liaison/linkit/profile/domain/Profile.java b/src/main/java/liaison/linkit/profile/domain/Profile.java index bf1098b4..2301cb46 100644 --- a/src/main/java/liaison/linkit/profile/domain/Profile.java +++ b/src/main/java/liaison/linkit/profile/domain/Profile.java @@ -1,7 +1,7 @@ package liaison.linkit.profile.domain; import static jakarta.persistence.CascadeType.ALL; -import static jakarta.persistence.CascadeType.REMOVE; +import static jakarta.persistence.FetchType.LAZY; import static jakarta.persistence.GenerationType.IDENTITY; import static lombok.AccessLevel.PROTECTED; @@ -10,165 +10,57 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; -import jakarta.persistence.OneToMany; +import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToOne; -import java.util.ArrayList; -import java.util.List; import java.util.Objects; +import liaison.linkit.common.domain.ProfileState; import liaison.linkit.global.BaseEntity; import liaison.linkit.member.domain.Member; -import liaison.linkit.profile.domain.awards.Awards; -import liaison.linkit.profile.domain.miniProfile.MiniProfile; -import liaison.linkit.profile.domain.role.ProfileJobRole; +import liaison.linkit.profile.domain.region.Region; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.hibernate.annotations.SQLRestriction; +// [2.0.0] 내 프로필 @Entity @Getter +@Builder @AllArgsConstructor @NoArgsConstructor(access = PROTECTED) @SQLRestriction("status = 'USABLE'") -@Slf4j public class Profile extends BaseEntity { + // 13% * 4 + 16% * 3 + private static final int LOW_COMPLETION = 13; + private static final int HIGH_COMPLETION = 16; + @Id @GeneratedValue(strategy = IDENTITY) private Long id; - @OneToOne - @JoinColumn(name = "member_id") - private Member member; - - // 3.1. 미니 프로필 - @OneToOne(mappedBy = "profile", cascade = ALL) - private MiniProfile miniProfile; - - // 3.10. 수상 - @OneToMany(mappedBy = "profile", cascade = REMOVE) - private List awardsList = new ArrayList<>(); - - @OneToMany(mappedBy = "profile", cascade = REMOVE) - private List profileJobRoleList = new ArrayList<>(); + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "region_id", nullable = false) + private Region region; - // 3.3. 프로필 완성도 - // 전체 프로필 완성도 값 (%) - 소수점 가능 (double 자료형) - @Column(nullable = false) - private double completion; - - // 3.4. 자기소개 - @Column(name = "introduction", length = 300) - private String introduction; - - // 3.4. 자기소개 기입 여부 - @Column(nullable = false) - private boolean isIntroduction; + @OneToOne(cascade = ALL, orphanRemoval = true, fetch = LAZY) + @JoinColumn(name = "member_id", unique = true) + private Member member; - // 3.5. 직무/역할 및 보유 기술 기입 여부 - @Column(nullable = false) - private boolean isJobAndSkill; + // 프로필 이미지 경로 + private String profileImagePath; - // 3.5.1. 직무/역할 기입 여부 - @Column(nullable = false) - private boolean isProfileJobRole; + // 프로필 공개 여부 + private boolean isProfilePublic; - // 3.5.2. 보유 기술 기입 여부 - @Column(nullable = false) private boolean isProfileSkill; - - // 3.6. 희망 팀빌딩 분야 기입 여부 - @Column(nullable = false) - private boolean isProfileTeamBuildingField; - - // 3.7. 활동 지역 및 위치 기입 여부 - @Column(nullable = false) - private boolean isProfileRegion; - - // 3.8. 이력 기입 여부 - @Column(nullable = false) - private boolean isAntecedents; - - // 3.9. 학력 기입 여부 - @Column(nullable = false) - private boolean isEducation; - - // 3.10. 수상 기입 여부 - @Column(nullable = false) - private boolean isAwards; - - // 3.11. 첨부 링크(URL) 기입 여부 - @Column(nullable = false) - private boolean isAttachUrl; - - - // 3.1. 미니 프로필 기입 여부 - @Column(nullable = false) - private boolean isMiniProfile; - - public Profile( - final Long id, - final Member member, - final double completion - ) { - this.id = id; - this.member = member; - this.completion = completion; - this.introduction = null; - this.isIntroduction = false; - this.isJobAndSkill = false; - this.isProfileJobRole = false; - this.isProfileSkill = false; - this.isProfileTeamBuildingField = false; - this.isProfileRegion = false; - this.isAntecedents = false; - this.isEducation = false; - this.isAwards = false; -// this.isAttach = false; - this.isAttachUrl = false; -// this.isAttachFile = false; - this.isMiniProfile = false; - } - - public Profile( - final Member member, - final int completion - ) { - this(null, member, completion); - } - - // 기본 입력 항목 (희망 역할 및 기술 / 활동 지역 및 위치 / 희망 팀빌딩 분야 / 이력 / 학력 ) -> 각 10% 총합 50% - // 자기소개 30% - // 수상 10% - // 첨부 10% - - // 디폴트 항목 관리 메서드 - public void addPerfectionDefault() { - this.completion += 10.0; - } - - public void cancelPerfectionDefault() { - this.completion -= 10.0; - } - - // 수상 및 첨부 관리 메서드 - public void addPerfectionTen() { - this.completion += 10.0; - } - - public void cancelPerfectionTen() { - this.completion -= 10.0; - } - - // 자기소개 관리 메서드 - public void addPerfectionThirty() { - this.completion += 30.0; - } - - public void cancelPerfectionThirty() { - this.completion -= 30.0; - } + private boolean isProfileActivity; + private boolean isProfilePortfolio; + private boolean isProfileEducation; + private boolean isProfileAwards; + private boolean isProfileLicense; + private boolean isProfileLink; // 3.1. 미니 프로필 업데이트 public void updateIsMiniProfile(final Boolean isMiniProfile) { @@ -193,21 +85,8 @@ public void updateIntroduction(final String introduction) { } } - // 3.4. 자기소개 업데이트 - public void updateIsIntroduction(final boolean isIntroduction) { - this.isIntroduction = isIntroduction; - } - - // 3.5.1. 내 이력서 직무/역할 - public void updateIsProfileJobRole(final boolean isProfileJobRole) { - log.info("isProfileJobRole={}", isProfileJobRole); - this.isProfileJobRole = isProfileJobRole; - - } - // 3.5.2. 내 이력서 보유 기술 public void updateIsProfileSkill(final boolean isProfileSkill) { - log.info("isProfileSkill={}", isProfileSkill); this.isProfileSkill = isProfileSkill; // 모두 true인 경우 @@ -223,7 +102,6 @@ public void updateIsProfileSkill(final boolean isProfileSkill) { // 3.6. 희망 팀빌딩 분야 업데이트 public void updateIsProfileTeamBuildingField(final boolean isProfileTeamBuildingField) { - log.info("isProfileTeamBuildingField={}", isProfileTeamBuildingField); this.isProfileTeamBuildingField = isProfileTeamBuildingField; if (isProfileTeamBuildingField) { addPerfectionDefault(); @@ -234,7 +112,6 @@ public void updateIsProfileTeamBuildingField(final boolean isProfileTeamBuilding // 3.7. 활동 지역 및 위치 업데이트 public void updateIsProfileRegion(final boolean isProfileRegion) { - log.info("isProfileRegion={}", isProfileRegion); this.isProfileRegion = isProfileRegion; if (isProfileRegion) { addPerfectionDefault(); @@ -245,9 +122,7 @@ public void updateIsProfileRegion(final boolean isProfileRegion) { // 3.8. 이력 업데이트 public void updateIsAntecedents(final boolean isAntecedents) { - log.info("isAntecedents={}", isAntecedents); this.isAntecedents = isAntecedents; - log.info("this.Antecedents={}", this.isAntecedents); if (isAntecedents) { addPerfectionDefault(); } else { @@ -257,7 +132,6 @@ public void updateIsAntecedents(final boolean isAntecedents) { // 3.9. 학력 업데이트 public void updateIsEducation(final boolean isEducation) { - log.info("isEducation={}", isEducation); this.isEducation = isEducation; if (isEducation) { addPerfectionDefault(); @@ -268,7 +142,6 @@ public void updateIsEducation(final boolean isEducation) { // 3.10. 수상 업데이트 public void updateIsAwards(final boolean isAwards) { - log.info("isAwards={}", isAwards); this.isAwards = isAwards; if (isAwards) { addPerfectionTen(); @@ -277,68 +150,9 @@ public void updateIsAwards(final boolean isAwards) { } } - // 3.11.1 첨부 링크 업데이트 - public void updateIsAttachUrl(final boolean isAttachUrl) { - this.isAttachUrl = isAttachUrl; - if (this.isAttachUrl) { - addPerfectionTen(); - } else { - cancelPerfectionTen(); - } - } - - // 내 이력서의 각 항목들 기입 여부 조회 개별 메서드 - public boolean getIsMiniProfile() { - return isMiniProfile; - } - - public boolean getIsIntroduction() { - return isIntroduction; - } public boolean getIsProfileSkill() { return isProfileSkill; } - public boolean getIsJobAndSkill() { - return isJobAndSkill; - } - - public boolean getIsProfileTeamBuildingField() { - return isProfileTeamBuildingField; - } - - public boolean getIsProfileRegion() { - return isProfileRegion; - } - - public boolean getIsAntecedents() { - return isAntecedents; - } - - public boolean getIsEducation() { - return isEducation; - } - - public boolean getIsAwards() { - return isAwards; - } - - public boolean getIsAttachUrl() { - return isAttachUrl; - } - - - // 3.4. 자기소개 초기화 및 삭제 메서드 - public void deleteIntroduction() { - this.introduction = null; - } - - public boolean getExistDefaultPrivateProfile() { - if (this.isProfileTeamBuildingField && this.isProfileRegion && this.isMiniProfile) { - return true; - } else { - return false; - } - } } diff --git a/src/main/java/liaison/linkit/profile/domain/ProfileActivity.java b/src/main/java/liaison/linkit/profile/domain/ProfileActivity.java new file mode 100644 index 00000000..e95112a8 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/ProfileActivity.java @@ -0,0 +1,45 @@ +package liaison.linkit.profile.domain; + +import static jakarta.persistence.FetchType.LAZY; +import static jakarta.persistence.GenerationType.IDENTITY; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import liaison.linkit.common.domain.BaseDateTimeEntity; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class ProfileActivity extends BaseDateTimeEntity { + + @Id + @GeneratedValue(strategy = IDENTITY) + private Long id; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "profile_id") + private Profile profile; + + private String activityName; + private String activityRole; + private String activityStartDate; + private String activityEndDate; + private boolean isActivityInProgress; + private String activityDescription; + + private Boolean isActivityCertified; + private Boolean isActivityVerified; + private String activityCertificationAttachFileName; + private String activityCertificationAttachFilePath; + private String activityCertificationDescription; +} diff --git a/src/main/java/liaison/linkit/profile/domain/ProfileAwards.java b/src/main/java/liaison/linkit/profile/domain/ProfileAwards.java new file mode 100644 index 00000000..d7d4915b --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/ProfileAwards.java @@ -0,0 +1,59 @@ +package liaison.linkit.profile.domain; + +import static jakarta.persistence.FetchType.LAZY; +import static jakarta.persistence.GenerationType.IDENTITY; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import liaison.linkit.common.domain.BaseDateTimeEntity; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class ProfileAwards extends BaseDateTimeEntity { + + @Id + @GeneratedValue(strategy = IDENTITY) + private Long id; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "profile_id") + private Profile profile; + + // 대회 이름 + @Column(nullable = false) + private String awardsName; + + // 훈격(순위) + @Column(nullable = false) + private String awardsRanking; + + // 수상 시기 + @Column(nullable = false) + private String awardsDate; + + // 주최 및 주관 + @Column(nullable = false) + private String awardsOrganizer; + + // 수상 설명 + @Column(nullable = false) + private String awardsDescription; + + private Boolean isAwardsCertified; + private Boolean isAwardsVerified; + private String awardsCertificationAttachFileName; + private String awardsCertificationAttachFilePath; + private String awardsCertificationDescription; +} diff --git a/src/main/java/liaison/linkit/profile/domain/ProfileCurrentState.java b/src/main/java/liaison/linkit/profile/domain/ProfileCurrentState.java new file mode 100644 index 00000000..50840370 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/ProfileCurrentState.java @@ -0,0 +1,36 @@ +package liaison.linkit.profile.domain; + +import static jakarta.persistence.GenerationType.IDENTITY; + +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import liaison.linkit.common.domain.BaseDateTimeEntity; +import liaison.linkit.common.domain.ProfileState; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class ProfileCurrentState extends BaseDateTimeEntity { + @Id + @GeneratedValue(strategy = IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "profile_id") + private Profile profile; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "profile_state_id") + private ProfileState profileState; +} diff --git a/src/main/java/liaison/linkit/profile/domain/ProfileEducation.java b/src/main/java/liaison/linkit/profile/domain/ProfileEducation.java new file mode 100644 index 00000000..ea4bcd07 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/ProfileEducation.java @@ -0,0 +1,70 @@ +package liaison.linkit.profile.domain; + +import static jakarta.persistence.FetchType.LAZY; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import liaison.linkit.common.domain.BaseDateTimeEntity; +import liaison.linkit.common.domain.University; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class ProfileEducation extends BaseDateTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "profile_id") + private Profile profile; + + // 대학명 + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "university_name") + private University university; + + // 전공명 + @Column(nullable = false) + private String majorName; + + // 입학년도 + @Column(nullable = false) + private int admissionYear; + + // 졸업년도 + private Integer graduationYear; + + // 학적 상태 (보류) + + // 학력 설명 + private String educationDescription; + + // 학력 증명서 존재 유무 + private Boolean isEducationCertified; + + // 학력 증명서 인증 여부 + private Boolean isEducationVerified; + + // 학력 증명서 첨부 파일 이름 + private String educationCertificationAttachFileName; + + // 학력 증명서 파일 경로 + private String educationCertificationAttachFilePath; + + // 학력 증명서 설명 내용 + private String educationCertificationDescription; +} diff --git a/src/main/java/liaison/linkit/profile/domain/ProfileLicense.java b/src/main/java/liaison/linkit/profile/domain/ProfileLicense.java new file mode 100644 index 00000000..11eef121 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/ProfileLicense.java @@ -0,0 +1,63 @@ +package liaison.linkit.profile.domain; + +import static jakarta.persistence.FetchType.LAZY; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import liaison.linkit.common.domain.BaseDateTimeEntity; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class ProfileLicense extends BaseDateTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "profile_id") + private Profile profile; + + // 자격명 + @Column(nullable = false) + private String licenseName; + + // 자격발급기관 (관련 부처) + @Column(nullable = false) + private String licenseInstitution; + + // 취득시기 + @Column(nullable = false) + private String acquisitionDate; + + // 자격 설명 + private String licenseDescription; + + // 자격증 증명서 존재 유무 + private Boolean isLicenseCertified; + + // 자격증 증명서 인증 여부 + private Boolean isLicenseVerified; + + // 자격증 증명서 첨부 파일 이름 + private String licenseCertificationAttachFileName; + + // 자격증 증명서 첨부 파일 경로 + private String licenseCertificationAttachFilePath; + + // 자격증 증명서 설명 내용 + private String licenseCertificationDescription; +} diff --git a/src/main/java/liaison/linkit/profile/domain/ProfilePosition.java b/src/main/java/liaison/linkit/profile/domain/ProfilePosition.java new file mode 100644 index 00000000..7f7f2338 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/ProfilePosition.java @@ -0,0 +1,38 @@ +package liaison.linkit.profile.domain; + +import static jakarta.persistence.FetchType.LAZY; + +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import liaison.linkit.common.domain.BaseDateTimeEntity; +import liaison.linkit.common.domain.Position; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class ProfilePosition extends BaseDateTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "profile_id") + private Profile profile; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "position_id") + private Position position; +} diff --git a/src/main/java/liaison/linkit/profile/domain/region/ProfileRegion.java b/src/main/java/liaison/linkit/profile/domain/ProfileRegion.java similarity index 90% rename from src/main/java/liaison/linkit/profile/domain/region/ProfileRegion.java rename to src/main/java/liaison/linkit/profile/domain/ProfileRegion.java index 131cf03b..1337fb2f 100644 --- a/src/main/java/liaison/linkit/profile/domain/region/ProfileRegion.java +++ b/src/main/java/liaison/linkit/profile/domain/ProfileRegion.java @@ -1,7 +1,8 @@ -package liaison.linkit.profile.domain.region; +package liaison.linkit.profile.domain; import jakarta.persistence.*; import liaison.linkit.profile.domain.Profile; +import liaison.linkit.profile.domain.region.Region; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/liaison/linkit/profile/domain/ProfileSkill.java b/src/main/java/liaison/linkit/profile/domain/ProfileSkill.java new file mode 100644 index 00000000..434e4138 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/ProfileSkill.java @@ -0,0 +1,35 @@ +package liaison.linkit.profile.domain; + +import static jakarta.persistence.FetchType.LAZY; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import liaison.linkit.common.domain.BaseDateTimeEntity; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class ProfileSkill extends BaseDateTimeEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "profile_id") + private Profile profile; + + private String skillIconImagePath; + private String skillName; + private String skillLevel; +} diff --git a/src/main/java/liaison/linkit/profile/domain/ProfileUrl.java b/src/main/java/liaison/linkit/profile/domain/ProfileUrl.java new file mode 100644 index 00000000..df07c57b --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/ProfileUrl.java @@ -0,0 +1,48 @@ +package liaison.linkit.profile.domain; + +import static jakarta.persistence.EnumType.STRING; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import liaison.linkit.common.domain.BaseDateTimeEntity; +import liaison.linkit.global.type.ProfileUrlType; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class ProfileUrl extends BaseDateTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(nullable = false) + private Profile profile; + + private String urlIconImagePath; + + @Column(nullable = false) + private String urlName; + + @Column(nullable = false) + private String urlPath; + + @Column(nullable = false) + @Enumerated(value = STRING) + private ProfileUrlType profileUrlType; +} diff --git a/src/main/java/liaison/linkit/profile/domain/antecedents/Antecedents.java b/src/main/java/liaison/linkit/profile/domain/antecedents/Antecedents.java index 5b8ef679..ca5af04b 100644 --- a/src/main/java/liaison/linkit/profile/domain/antecedents/Antecedents.java +++ b/src/main/java/liaison/linkit/profile/domain/antecedents/Antecedents.java @@ -1,22 +1,27 @@ package liaison.linkit.profile.domain.antecedents; -import jakarta.persistence.*; +import static jakarta.persistence.FetchType.LAZY; +import static jakarta.persistence.GenerationType.IDENTITY; +import static lombok.AccessLevel.PROTECTED; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; import liaison.linkit.profile.domain.Profile; import liaison.linkit.profile.dto.request.antecedents.AntecedentsCreateRequest; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; -import static jakarta.persistence.FetchType.LAZY; -import static jakarta.persistence.GenerationType.IDENTITY; -import static lombok.AccessLevel.PROTECTED; - @Entity @Getter @AllArgsConstructor @NoArgsConstructor(access = PROTECTED) @Table(name = "antecedents") -// 이력 public class Antecedents { @Id @GeneratedValue(strategy = IDENTITY) diff --git a/src/main/java/liaison/linkit/profile/domain/awards/Awards.java b/src/main/java/liaison/linkit/profile/domain/awards/Awards.java deleted file mode 100644 index d175e453..00000000 --- a/src/main/java/liaison/linkit/profile/domain/awards/Awards.java +++ /dev/null @@ -1,75 +0,0 @@ -package liaison.linkit.profile.domain.awards; - -import jakarta.persistence.*; -import liaison.linkit.profile.domain.Profile; -import liaison.linkit.profile.dto.request.awards.AwardsCreateRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import static jakarta.persistence.FetchType.LAZY; -import static jakarta.persistence.GenerationType.IDENTITY; -import static lombok.AccessLevel.PROTECTED; - -@Entity -@Getter -@AllArgsConstructor -@NoArgsConstructor(access = PROTECTED) -@Table(name = "awards") -public class Awards { - @Id - @GeneratedValue(strategy = IDENTITY) - @Column(name = "awards_id") - private Long id; - - @ManyToOne(fetch = LAZY) - @JoinColumn(name = "profile_id") - private Profile profile; - - @Column(nullable = false) - private String awardsName; - - @Column(nullable = false) - private String ranking; - - @Column(nullable = false) - private String organizer; - - @Column(nullable = false) - private int awardsYear; - - @Column(nullable = false) - private int awardsMonth; - - @Column(nullable = false) - private String awardsDescription; - - public static Awards of( - final Profile profile, - final String awardsName, - final String ranking, - final String organizer, - final int awardsYear, - final int awardsMonth, - final String awardsDescription) { - return new Awards( - null, - profile, - awardsName, - ranking, - organizer, - awardsYear, - awardsMonth, - awardsDescription - ); - } - - public void update(final AwardsCreateRequest awardsCreateRequest) { - this.awardsName = awardsCreateRequest.getAwardsName(); - this.ranking = awardsCreateRequest.getRanking(); - this.organizer = awardsCreateRequest.getOrganizer(); - this.awardsYear = awardsCreateRequest.getAwardsYear(); - this.awardsMonth = awardsCreateRequest.getAwardsMonth(); - this.awardsDescription = awardsCreateRequest.getAwardsDescription(); - } -} diff --git a/src/main/java/liaison/linkit/profile/domain/education/Degree.java b/src/main/java/liaison/linkit/profile/domain/education/Degree.java deleted file mode 100644 index cd07b1b2..00000000 --- a/src/main/java/liaison/linkit/profile/domain/education/Degree.java +++ /dev/null @@ -1,33 +0,0 @@ -package liaison.linkit.profile.domain.education; - -import jakarta.persistence.*; -import liaison.linkit.team.domain.miniprofile.IndustrySector; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import static jakarta.persistence.GenerationType.IDENTITY; -import static lombok.AccessLevel.PROTECTED; - -@Entity -@Getter -@AllArgsConstructor -@NoArgsConstructor(access = PROTECTED) -public class Degree { - @Id - @GeneratedValue(strategy = IDENTITY) - @Column(name = "degree_id") - private Long id; - - @Column(name = "degree_name", nullable = false) - private String degreeName; - - public static Degree of( - final String degreeName - ) { - return new Degree( - null, - degreeName - ); - } -} diff --git a/src/main/java/liaison/linkit/profile/domain/education/Education.java b/src/main/java/liaison/linkit/profile/domain/education/Education.java deleted file mode 100644 index 1891406c..00000000 --- a/src/main/java/liaison/linkit/profile/domain/education/Education.java +++ /dev/null @@ -1,76 +0,0 @@ -package liaison.linkit.profile.domain.education; - -import jakarta.persistence.*; -import liaison.linkit.profile.domain.Profile; -import liaison.linkit.profile.dto.request.education.EducationCreateRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import static jakarta.persistence.FetchType.LAZY; -import static jakarta.persistence.GenerationType.IDENTITY; -import static lombok.AccessLevel.PROTECTED; - -@Entity -@Getter -@AllArgsConstructor -@NoArgsConstructor(access = PROTECTED) -public class Education { - @Id - @GeneratedValue(strategy = IDENTITY) - @Column(name = "education_id") - private Long id; - - @ManyToOne(fetch = LAZY) - @JoinColumn(name = "profile_id") - private Profile profile; - - @Column(nullable = false) - private int admissionYear; - - @Column(nullable = false) - private int graduationYear; - - @Column(nullable = false) - private String universityName; - - @Column(nullable = false) - private String majorName; - - @ManyToOne(fetch = LAZY) - @JoinColumn(name = "degree_id") - private Degree degree; - - public static Education of( - final Profile profile, - final int admissionYear, - final int graduationYear, - final String universityName, - final String majorName, - final Degree degree - ){ - return new Education( - null, - profile, - admissionYear, - graduationYear, - universityName, - majorName, - degree - ); - } - - public void update( - final EducationCreateRequest educationCreateRequest, - final String universityName, - final String majorName, - final Degree degree - ) { - this.admissionYear = educationCreateRequest.getAdmissionYear(); - this.graduationYear = educationCreateRequest.getGraduationYear(); - this.universityName = universityName; - this.majorName = majorName; - this.degree = degree; - } - -} diff --git a/src/main/java/liaison/linkit/profile/domain/miniProfile/MiniProfile.java b/src/main/java/liaison/linkit/profile/domain/miniProfile/MiniProfile.java deleted file mode 100644 index bdff429d..00000000 --- a/src/main/java/liaison/linkit/profile/domain/miniProfile/MiniProfile.java +++ /dev/null @@ -1,78 +0,0 @@ -package liaison.linkit.profile.domain.miniProfile; - -import jakarta.persistence.*; -import liaison.linkit.profile.domain.Profile; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; - -import static jakarta.persistence.CascadeType.ALL; -import static jakarta.persistence.FetchType.LAZY; -import static jakarta.persistence.GenerationType.IDENTITY; - -@Entity -@Getter -@AllArgsConstructor -@NoArgsConstructor -public class MiniProfile{ - @Id - @GeneratedValue(strategy = IDENTITY) - @Column(name = "mini_profile_id") - private Long id; - - @OneToOne(cascade = ALL, orphanRemoval = true, fetch = LAZY) - @JoinColumn(name = "profile_id", unique = true) - private Profile profile; - - // 프로필 제목 - @Column(length = 40) - private String profileTitle; - - // 미니 프로필 이미지 경로 - @Column(name = "mini_profile_img") - private String miniProfileImg; - - @Column(name = "is_activate") - private boolean isActivate; - - // 생성 날짜 - @Column(updatable = false) - private LocalDateTime createdDate; - - // 엔티티가 처음 저장될 때 createdDate를 현재 시간으로 설정 - @PrePersist - protected void onCreate() { - this.createdDate = LocalDateTime.now(); - } - - public static MiniProfile of( - final Profile profile, - final String profileTitle, - final String miniProfileImg, - final boolean isActivate - ) { - return new MiniProfile( - null, - profile, - profileTitle, - miniProfileImg, - isActivate, - null - ); - } - - - public void update( - final Profile profile, - final String profileTitle, - final String miniProfileImageUrl, - final Boolean isActivate - ) { - this.profile = profile; - this.profileTitle = profileTitle; - this.miniProfileImg = miniProfileImageUrl; - this.isActivate = isActivate; - } -} diff --git a/src/main/java/liaison/linkit/profile/domain/repository/ProfileLicenseCustomRepository.java b/src/main/java/liaison/linkit/profile/domain/repository/ProfileLicenseCustomRepository.java new file mode 100644 index 00000000..0ada6c6b --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/repository/ProfileLicenseCustomRepository.java @@ -0,0 +1,7 @@ +package liaison.linkit.profile.domain.repository; + +import liaison.linkit.profile.presentation.license.dto.ProfileLicenseResponseDTO; + +public interface ProfileLicenseCustomRepository { + ProfileLicenseResponseDTO.ProfileLicenseList findProfileLicenseListDTO(Long memberId); +} diff --git a/src/main/java/liaison/linkit/profile/domain/repository/ProfileLicenseCustomRepositoryImpl.java b/src/main/java/liaison/linkit/profile/domain/repository/ProfileLicenseCustomRepositoryImpl.java new file mode 100644 index 00000000..8d180779 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/repository/ProfileLicenseCustomRepositoryImpl.java @@ -0,0 +1,45 @@ +package liaison.linkit.profile.domain.repository; + +import com.querydsl.core.types.Projections; +import com.querydsl.jpa.impl.JPAQueryFactory; +import java.util.List; +import liaison.linkit.profile.domain.QProfileLicense; +import liaison.linkit.profile.presentation.license.dto.ProfileLicenseResponseDTO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +@Repository +@RequiredArgsConstructor +public class ProfileLicenseCustomRepositoryImpl implements ProfileLicenseCustomRepository { + + private final JPAQueryFactory queryFactory; + + @Override + public ProfileLicenseResponseDTO.ProfileLicenseList findProfileLicenseListDTO(final Long memberId) { + QProfileLicense qProfileLicense = QProfileLicense.profileLicense; + + List profileLicenseListItems = + queryFactory + .select( + Projections.constructor( + ProfileLicenseResponseDTO.ProfileLicenseListItem.class, + qProfileLicense.id, + qProfileLicense.licenseName, + qProfileLicense.licenseInstitution, + qProfileLicense.acquisitionDate, + qProfileLicense.licenseDescription, + qProfileLicense.isLicenseCertified, + qProfileLicense.licenseCertificationAttachFileName, + qProfileLicense.licenseCertificationAttachFilePath, + qProfileLicense.licenseCertificationDescription + )) + .from(qProfileLicense) + .where(qProfileLicense.profile.member.id.eq(memberId)) + .fetch(); + + return ProfileLicenseResponseDTO.ProfileLicenseList + .builder() + .profileLicenseList(profileLicenseListItems) + .build(); + } +} diff --git a/src/main/java/liaison/linkit/profile/domain/repository/ProfileLicenseRepository.java b/src/main/java/liaison/linkit/profile/domain/repository/ProfileLicenseRepository.java new file mode 100644 index 00000000..03ab2604 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/repository/ProfileLicenseRepository.java @@ -0,0 +1,8 @@ +package liaison.linkit.profile.domain.repository; + +import liaison.linkit.profile.domain.ProfileLicense; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ProfileLicenseRepository extends JpaRepository, ProfileLicenseCustomRepository { + +} diff --git a/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepository.java b/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepository.java index 757b4d0a..074eceaf 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepository.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepository.java @@ -1,8 +1,8 @@ package liaison.linkit.profile.domain.repository.awards; -import liaison.linkit.profile.domain.awards.Awards; +import liaison.linkit.profile.domain.ProfileAwards; import org.springframework.data.jpa.repository.JpaRepository; -public interface AwardsRepository extends JpaRepository, AwardsRepositoryCustom { +public interface AwardsRepository extends JpaRepository, AwardsRepositoryCustom { } diff --git a/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepositoryCustom.java b/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepositoryCustom.java index 204730bb..1fd0bf20 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepositoryCustom.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepositoryCustom.java @@ -1,13 +1,15 @@ package liaison.linkit.profile.domain.repository.awards; -import liaison.linkit.profile.domain.awards.Awards; +import liaison.linkit.profile.domain.ProfileAwards; import java.util.List; public interface AwardsRepositoryCustom { boolean existsByProfileId(final Long profileId); - List findAllByProfileId(final Long profileId); - Awards findByProfileId(final Long profileId); + List findAllByProfileId(final Long profileId); + + ProfileAwards findByProfileId(final Long profileId); + void deleteAllByProfileId(final Long profileId); } diff --git a/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepositoryCustomImpl.java b/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepositoryCustomImpl.java index 6b2e25d2..3e1f2021 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepositoryCustomImpl.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/awards/AwardsRepositoryCustomImpl.java @@ -1,7 +1,7 @@ package liaison.linkit.profile.domain.repository.awards; import com.querydsl.jpa.impl.JPAQueryFactory; -import liaison.linkit.profile.domain.awards.Awards; +import liaison.linkit.profile.domain.ProfileAwards; import liaison.linkit.profile.domain.awards.QAwards; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -27,7 +27,7 @@ public boolean existsByProfileId(Long profileId) { } @Override - public List findAllByProfileId(Long profileId) { + public List findAllByProfileId(Long profileId) { QAwards awards = QAwards.awards; return jpaQueryFactory @@ -37,7 +37,7 @@ public List findAllByProfileId(Long profileId) { } @Override - public Awards findByProfileId(Long profileId) { + public ProfileAwards findByProfileId(Long profileId) { QAwards awards = QAwards.awards; return jpaQueryFactory diff --git a/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepository.java b/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepository.java index 291b2578..bf726cd3 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepository.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepository.java @@ -1,6 +1,5 @@ package liaison.linkit.profile.domain.repository.education; -import liaison.linkit.profile.domain.education.Degree; import org.springframework.data.jpa.repository.JpaRepository; public interface DegreeRepository extends JpaRepository, DegreeRepositoryCustom { diff --git a/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepositoryCustom.java b/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepositoryCustom.java index 0b9d235d..010f2a22 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepositoryCustom.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepositoryCustom.java @@ -1,7 +1,5 @@ package liaison.linkit.profile.domain.repository.education; -import liaison.linkit.profile.domain.education.Degree; - import java.util.Optional; public interface DegreeRepositoryCustom { diff --git a/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepositoryCustomImpl.java b/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepositoryCustomImpl.java index e36eedca..71a2c697 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepositoryCustomImpl.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/education/DegreeRepositoryCustomImpl.java @@ -1,7 +1,6 @@ package liaison.linkit.profile.domain.repository.education; import com.querydsl.jpa.impl.JPAQueryFactory; -import liaison.linkit.profile.domain.education.Degree; import liaison.linkit.profile.domain.education.QDegree; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepository.java b/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepository.java index 96899717..ae4030d6 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepository.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepository.java @@ -1,8 +1,8 @@ package liaison.linkit.profile.domain.repository.education; -import liaison.linkit.profile.domain.education.Education; +import liaison.linkit.profile.domain.ProfileEducation; import org.springframework.data.jpa.repository.JpaRepository; -public interface EducationRepository extends JpaRepository, EducationRepositoryCustom { +public interface EducationRepository extends JpaRepository, EducationRepositoryCustom { } diff --git a/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepositoryCustom.java b/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepositoryCustom.java index 83a8c10b..e7104eea 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepositoryCustom.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepositoryCustom.java @@ -1,12 +1,15 @@ package liaison.linkit.profile.domain.repository.education; -import liaison.linkit.profile.domain.education.Education; +import liaison.linkit.profile.domain.ProfileEducation; import java.util.List; public interface EducationRepositoryCustom { boolean existsByProfileId(final Long profileId); - Education findByProfileId(final Long profileId); - List findAllByProfileId(final Long profileId); + + ProfileEducation findByProfileId(final Long profileId); + + List findAllByProfileId(final Long profileId); + void deleteAllByProfileId(final Long profileId); } diff --git a/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepositoryCustomImpl.java b/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepositoryCustomImpl.java index 058415be..b4034b6e 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepositoryCustomImpl.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/education/EducationRepositoryCustomImpl.java @@ -1,7 +1,7 @@ package liaison.linkit.profile.domain.repository.education; import com.querydsl.jpa.impl.JPAQueryFactory; -import liaison.linkit.profile.domain.education.Education; +import liaison.linkit.profile.domain.ProfileEducation; import liaison.linkit.profile.domain.education.QEducation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -30,7 +30,7 @@ public boolean existsByProfileId(Long profileId) { } @Override - public Education findByProfileId(Long profileId) { + public ProfileEducation findByProfileId(Long profileId) { QEducation education = QEducation.education; return jpaQueryFactory @@ -40,7 +40,7 @@ public Education findByProfileId(Long profileId) { } @Override - public List findAllByProfileId(Long profileId) { + public List findAllByProfileId(Long profileId) { QEducation education = QEducation.education; return jpaQueryFactory diff --git a/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepository.java b/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepository.java index 71b1689d..cb8cdcf2 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepository.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepository.java @@ -1,6 +1,5 @@ package liaison.linkit.profile.domain.repository.miniProfile; -import liaison.linkit.profile.domain.miniProfile.MiniProfile; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; @@ -11,7 +10,7 @@ public interface MiniProfileRepository extends JpaRepository, MiniProfileRepositoryCustom { -// boolean existsByProfileId(final Long profileId); + // boolean existsByProfileId(final Long profileId); // // Optional findByProfileId(@Param("profileId") final Long profileId); // @@ -22,39 +21,39 @@ public interface MiniProfileRepository extends JpaRepository, // // @Query(value = """ - SELECT mp FROM MiniProfile mp - JOIN mp.profile p + SELECT mp FROM MiniProfile mp + JOIN mp.profile p - LEFT JOIN ProfileTeamBuildingField ptbf ON p.id = ptbf.profile.id - LEFT JOIN TeamBuildingField tbf ON ptbf.teamBuildingField.id = tbf.id + LEFT JOIN ProfileTeamBuildingField ptbf ON p.id = ptbf.profile.id + LEFT JOIN TeamBuildingField tbf ON ptbf.teamBuildingField.id = tbf.id - LEFT JOIN ProfileJobRole pjr ON p.id = pjr.profile.id - LEFT JOIN JobRole jr ON pjr.jobRole.id = jr.id + LEFT JOIN ProfileJobRole pjr ON p.id = pjr.profile.id + LEFT JOIN JobRole jr ON pjr.jobRole.id = jr.id - LEFT JOIN ProfileSkill ps ON p.id = ps.profile.id - LEFT JOIN Skill s ON ps.skill.id = s.id + LEFT JOIN ProfileSkill ps ON p.id = ps.profile.id + LEFT JOIN Skill s ON ps.skill.id = s.id - LEFT JOIN ProfileRegion pr ON p.id = pr.profile.id - LEFT JOIN Region r ON pr.region.id = r.id + LEFT JOIN ProfileRegion pr ON p.id = pr.profile.id + LEFT JOIN Region r ON pr.region.id = r.id - WHERE (:teamBuildingFieldName IS NULL OR - (SELECT COUNT(tbf.teamBuildingFieldName) FROM TeamBuildingField tbf - JOIN ProfileTeamBuildingField ptbf2 ON tbf.id = ptbf2.teamBuildingField.id - WHERE ptbf2.profile.id = p.id AND tbf.teamBuildingFieldName IN :teamBuildingFieldName) = :teamBuildingFieldCount) - AND (:jobRoleName IS NULL OR - (SELECT COUNT(jr.jobRoleName) FROM JobRole jr - JOIN ProfileJobRole pjr2 ON jr.id = pjr2.jobRole.id - WHERE pjr2.profile.id = p.id AND jr.jobRoleName IN :jobRoleName) = :jobRoleCount) - AND (:skillName IS NULL OR - (SELECT COUNT(s.skillName) FROM Skill s - JOIN ProfileSkill ps2 ON s.id = ps2.skill.id - WHERE ps2.profile.id = p.id AND s.skillName IN :skillName) = :skillCount) - AND (:cityName IS NULL OR r.cityName = :cityName) - AND (:divisionName IS NULL OR r.divisionName = :divisionName) - AND (mp.isActivate = true) + WHERE (:teamBuildingFieldName IS NULL OR + (SELECT COUNT(tbf.teamBuildingFieldName) FROM TeamBuildingField tbf + JOIN ProfileTeamBuildingField ptbf2 ON tbf.id = ptbf2.teamBuildingField.id + WHERE ptbf2.profile.id = p.id AND tbf.teamBuildingFieldName IN :teamBuildingFieldName) = :teamBuildingFieldCount) + AND (:jobRoleName IS NULL OR + (SELECT COUNT(jr.jobRoleName) FROM JobRole jr + JOIN ProfileJobRole pjr2 ON jr.id = pjr2.jobRole.id + WHERE pjr2.profile.id = p.id AND jr.jobRoleName IN :jobRoleName) = :jobRoleCount) + AND (:skillName IS NULL OR + (SELECT COUNT(s.skillName) FROM Skill s + JOIN ProfileSkill ps2 ON s.id = ps2.skill.id + WHERE ps2.profile.id = p.id AND s.skillName IN :skillName) = :skillCount) + AND (:cityName IS NULL OR r.cityName = :cityName) + AND (:divisionName IS NULL OR r.divisionName = :divisionName) + AND (mp.isActivate = true) - ORDER BY mp.createdDate DESC - """) + ORDER BY mp.createdDate DESC + """) Page findAll( @Param("teamBuildingFieldName") final List teamBuildingFieldName, @Param("teamBuildingFieldCount") final Long teamBuildingFieldCount, diff --git a/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepositoryCustom.java b/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepositoryCustom.java index 04d7030c..b373f77c 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepositoryCustom.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepositoryCustom.java @@ -1,6 +1,5 @@ package liaison.linkit.profile.domain.repository.miniProfile; -import liaison.linkit.profile.domain.miniProfile.MiniProfile; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepositoryCustomImpl.java b/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepositoryCustomImpl.java index 1179dfe4..8440f6ff 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepositoryCustomImpl.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/miniProfile/MiniProfileRepositoryCustomImpl.java @@ -4,7 +4,6 @@ import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; import liaison.linkit.profile.domain.QProfile; -import liaison.linkit.profile.domain.miniProfile.MiniProfile; import liaison.linkit.profile.domain.miniProfile.QMiniProfile; import liaison.linkit.profile.domain.region.QProfileRegion; import liaison.linkit.profile.domain.region.QRegion; diff --git a/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileRepositoryCustom.java b/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileCustomRepository.java similarity index 58% rename from src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileRepositoryCustom.java rename to src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileCustomRepository.java index 419ccfb1..2c9f2203 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileRepositoryCustom.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileCustomRepository.java @@ -1,13 +1,15 @@ package liaison.linkit.profile.domain.repository.profile; -import liaison.linkit.profile.domain.Profile; - import java.util.Optional; +import liaison.linkit.profile.domain.Profile; +import liaison.linkit.profile.presentation.miniProfile.dto.MiniProfileResponseDTO; -public interface ProfileRepositoryCustom { +public interface ProfileCustomRepository { Optional findByMemberId(final Long memberId); + MiniProfileResponseDTO.MiniProfileDetail findMiniProfileDTO(final Long memberId); + boolean existsByMemberId(final Long memberId); void deleteByMemberId(final Long memberId); diff --git a/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileCustomRepositoryImpl.java b/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileCustomRepositoryImpl.java new file mode 100644 index 00000000..659bea9d --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileCustomRepositoryImpl.java @@ -0,0 +1,84 @@ +package liaison.linkit.profile.domain.repository.profile; + +import com.querydsl.core.types.Projections; +import com.querydsl.jpa.impl.JPAQueryFactory; +import java.util.List; +import liaison.linkit.common.domain.QPosition; +import liaison.linkit.global.type.StatusType; +import liaison.linkit.profile.domain.Profile; +import liaison.linkit.profile.domain.QProfile; +import liaison.linkit.profile.domain.QProfileCurrentState; +import liaison.linkit.profile.domain.QProfilePosition; +import liaison.linkit.profile.presentation.miniProfile.dto.MiniProfileResponseDTO; +import lombok.RequiredArgsConstructor; + +import java.util.Optional; + +@RequiredArgsConstructor +public class ProfileCustomRepositoryImpl implements ProfileCustomRepository { + private final JPAQueryFactory jpaQueryFactory; + + @Override + public Optional findByMemberId(Long memberId) { + QProfile profile = QProfile.profile; + + Profile result = jpaQueryFactory + .selectFrom(profile) + .where(profile.member.id.eq(memberId)) + .fetchOne(); + + return Optional.ofNullable(result); + } + + + // 수정 및 보완 필요 + @Override + public MiniProfileResponseDTO.MiniProfileDetail findMiniProfileDTO(final Long memberId) { + QProfile qProfile = QProfile.profile; + QProfilePosition qProfilePosition = QProfilePosition.profilePosition; + QPosition qPosition = QPosition.position; + QProfileCurrentState qProfileCurrentState = QProfileCurrentState.profileCurrentState; + + List profilePositionItems = + jpaQueryFactory + .select( + Projections.constructor( + MiniProfileResponseDTO.ProfilePositionItem.class, + qProfilePosition.position.positionName + )) + .from(qProfilePosition) + .leftJoin(qPosition) + .on(qProfilePosition.position.id.eq(qPosition.id)) + .where(qProfilePosition.profile.member.id.eq(memberId)) + .fetch(); + + return MiniProfileResponseDTO.MiniProfileDetail.builder() + .profilePositionList(profilePositionItems) + .build(); + } + + + @Override + public boolean existsByMemberId(Long memberId) { + QProfile profile = QProfile.profile; + + Integer count = jpaQueryFactory + .selectOne() + .from(profile) + .where(profile.member.id.eq(memberId)) + .fetchFirst(); + + return count != null; + } + + @Override + public void deleteByMemberId(Long memberId) { + QProfile profile = QProfile.profile; + + jpaQueryFactory + .update(profile) + .set(profile.status, StatusType.DELETED) + .where(profile.member.id.eq(memberId)) + .execute(); + } +} diff --git a/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileRepository.java b/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileRepository.java index 63306349..9f43a255 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileRepository.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileRepository.java @@ -3,6 +3,6 @@ import liaison.linkit.profile.domain.Profile; import org.springframework.data.jpa.repository.JpaRepository; -public interface ProfileRepository extends JpaRepository, ProfileRepositoryCustom { +public interface ProfileRepository extends JpaRepository, ProfileCustomRepository { } diff --git a/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileRepositoryCustomImpl.java b/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileRepositoryCustomImpl.java deleted file mode 100644 index d955c35d..00000000 --- a/src/main/java/liaison/linkit/profile/domain/repository/profile/ProfileRepositoryCustomImpl.java +++ /dev/null @@ -1,50 +0,0 @@ -package liaison.linkit.profile.domain.repository.profile; - -import com.querydsl.jpa.impl.JPAQueryFactory; -import liaison.linkit.global.type.StatusType; -import liaison.linkit.profile.domain.Profile; -import liaison.linkit.profile.domain.QProfile; -import lombok.RequiredArgsConstructor; - -import java.util.Optional; - -@RequiredArgsConstructor -public class ProfileRepositoryCustomImpl implements ProfileRepositoryCustom { - private final JPAQueryFactory jpaQueryFactory; - - @Override - public Optional findByMemberId(Long memberId) { - QProfile profile = QProfile.profile; - - Profile result = jpaQueryFactory - .selectFrom(profile) - .where(profile.member.id.eq(memberId)) - .fetchOne(); - - return Optional.ofNullable(result); - } - - @Override - public boolean existsByMemberId(Long memberId) { - QProfile profile = QProfile.profile; - - Integer count = jpaQueryFactory - .selectOne() - .from(profile) - .where(profile.member.id.eq(memberId)) - .fetchFirst(); - - return count != null; - } - - @Override - public void deleteByMemberId(Long memberId) { - QProfile profile = QProfile.profile; - - jpaQueryFactory - .update(profile) - .set(profile.status, StatusType.DELETED) - .where(profile.member.id.eq(memberId)) - .execute(); - } -} diff --git a/src/main/java/liaison/linkit/profile/domain/repository/profileUrl/ProfileUrlCustomRepository.java b/src/main/java/liaison/linkit/profile/domain/repository/profileUrl/ProfileUrlCustomRepository.java new file mode 100644 index 00000000..560555f6 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/repository/profileUrl/ProfileUrlCustomRepository.java @@ -0,0 +1,7 @@ +package liaison.linkit.profile.domain.repository.profileUrl; + +import liaison.linkit.profile.presentation.url.dto.ProfileUrlResponseDTO; + +public interface ProfileUrlCustomRepository { + ProfileUrlResponseDTO.ProfileUrlItems findProfileUrlItems(final Long memberId); +} diff --git a/src/main/java/liaison/linkit/profile/domain/repository/profileUrl/ProfileUrlCustomRepositoryImpl.java b/src/main/java/liaison/linkit/profile/domain/repository/profileUrl/ProfileUrlCustomRepositoryImpl.java new file mode 100644 index 00000000..36f1be6f --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/repository/profileUrl/ProfileUrlCustomRepositoryImpl.java @@ -0,0 +1,49 @@ +package liaison.linkit.profile.domain.repository.profileUrl; + +import com.querydsl.core.types.Projections; +import com.querydsl.jpa.impl.JPAQueryFactory; +import java.util.Collections; +import java.util.List; +import liaison.linkit.profile.domain.Profile; +import liaison.linkit.profile.domain.QProfile; +import liaison.linkit.profile.domain.QProfileUrl; +import liaison.linkit.profile.presentation.url.dto.ProfileUrlResponseDTO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +@Repository +@RequiredArgsConstructor +public class ProfileUrlCustomRepositoryImpl implements ProfileUrlCustomRepository { + private final JPAQueryFactory jpaQueryFactory; + + @Override + public ProfileUrlResponseDTO.ProfileUrlItems findProfileUrlItems(final Long memberId) { + QProfile qProfile = QProfile.profile; + QProfileUrl qProfileUrl = QProfileUrl.profileUrl; + + Profile profile = jpaQueryFactory + .selectFrom(qProfile) + .where(qProfile.member.id.eq(memberId)) + .fetchOne(); + + if (profile == null) { + return new ProfileUrlResponseDTO.ProfileUrlItems(Collections.emptyList()); + } + + List profileUrlItems = + jpaQueryFactory.select( + Projections.constructor( + ProfileUrlResponseDTO.ProfileUrlItem.class, + qProfileUrl.id, + qProfileUrl.urlIconImagePath, + qProfileUrl.urlName, + qProfileUrl.urlPath, + qProfileUrl.profileUrlType + )) + .from(qProfileUrl) + .where(qProfileUrl.profile.id.eq(profile.getId())) + .fetch(); + + return new ProfileUrlResponseDTO.ProfileUrlItems(profileUrlItems); + } +} diff --git a/src/main/java/liaison/linkit/profile/domain/repository/profileUrl/ProfileUrlRepository.java b/src/main/java/liaison/linkit/profile/domain/repository/profileUrl/ProfileUrlRepository.java new file mode 100644 index 00000000..283bd593 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/domain/repository/profileUrl/ProfileUrlRepository.java @@ -0,0 +1,7 @@ +package liaison.linkit.profile.domain.repository.profileUrl; + +import liaison.linkit.profile.domain.ProfileUrl; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ProfileUrlRepository extends JpaRepository, ProfileUrlCustomRepository { +} diff --git a/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepository.java b/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepository.java index 542c5574..115b6a1f 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepository.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepository.java @@ -1,6 +1,6 @@ package liaison.linkit.profile.domain.repository.region; -import liaison.linkit.profile.domain.region.ProfileRegion; +import liaison.linkit.profile.domain.ProfileRegion; import org.springframework.data.jpa.repository.JpaRepository; public interface ProfileRegionRepository extends JpaRepository, ProfileRegionRepositoryCustom { diff --git a/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepositoryCustom.java b/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepositoryCustom.java index 9584efc3..a0c472fd 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepositoryCustom.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepositoryCustom.java @@ -1,11 +1,13 @@ package liaison.linkit.profile.domain.repository.region; -import liaison.linkit.profile.domain.region.ProfileRegion; +import liaison.linkit.profile.domain.ProfileRegion; import java.util.Optional; public interface ProfileRegionRepositoryCustom { Optional findByProfileId(final Long profileId); + boolean existsByProfileId(final Long profileId); + void deleteByProfileId(final Long profileId); } diff --git a/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepositoryCustomImpl.java b/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepositoryCustomImpl.java index d1ffb5e0..983f488b 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepositoryCustomImpl.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/region/ProfileRegionRepositoryCustomImpl.java @@ -1,7 +1,7 @@ package liaison.linkit.profile.domain.repository.region; import com.querydsl.jpa.impl.JPAQueryFactory; -import liaison.linkit.profile.domain.region.ProfileRegion; +import liaison.linkit.profile.domain.ProfileRegion; import liaison.linkit.profile.domain.region.QProfileRegion; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -10,7 +10,7 @@ @RequiredArgsConstructor @Slf4j -public class ProfileRegionRepositoryCustomImpl implements ProfileRegionRepositoryCustom{ +public class ProfileRegionRepositoryCustomImpl implements ProfileRegionRepositoryCustom { private final JPAQueryFactory jpaQueryFactory; diff --git a/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepository.java b/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepository.java index f676da35..6b38b25c 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepository.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepository.java @@ -1,9 +1,9 @@ package liaison.linkit.profile.domain.repository.skill; -import liaison.linkit.profile.domain.skill.ProfileSkill; +import liaison.linkit.profile.domain.ProfileSkill; import org.springframework.data.jpa.repository.JpaRepository; -public interface ProfileSkillRepository extends JpaRepository, ProfileSkillRepositoryCustom{ +public interface ProfileSkillRepository extends JpaRepository, ProfileSkillRepositoryCustom { } diff --git a/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepositoryCustom.java b/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepositoryCustom.java index 09e26350..049e4e4c 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepositoryCustom.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepositoryCustom.java @@ -1,7 +1,5 @@ package liaison.linkit.profile.domain.repository.skill; -import liaison.linkit.profile.domain.skill.ProfileSkill; - import java.util.List; import java.util.Optional; diff --git a/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepositoryCustomImpl.java b/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepositoryCustomImpl.java index b315aa8d..befc259b 100644 --- a/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepositoryCustomImpl.java +++ b/src/main/java/liaison/linkit/profile/domain/repository/skill/ProfileSkillRepositoryCustomImpl.java @@ -1,7 +1,6 @@ package liaison.linkit.profile.domain.repository.skill; import com.querydsl.jpa.impl.JPAQueryFactory; -import liaison.linkit.profile.domain.skill.ProfileSkill; import liaison.linkit.profile.domain.skill.QProfileSkill; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -11,7 +10,7 @@ @RequiredArgsConstructor @Slf4j -public class ProfileSkillRepositoryCustomImpl implements ProfileSkillRepositoryCustom{ +public class ProfileSkillRepositoryCustomImpl implements ProfileSkillRepositoryCustom { private final JPAQueryFactory jpaQueryFactory; diff --git a/src/main/java/liaison/linkit/profile/domain/skill/ProfileSkill.java b/src/main/java/liaison/linkit/profile/domain/skill/ProfileSkill.java deleted file mode 100644 index 3bee9d83..00000000 --- a/src/main/java/liaison/linkit/profile/domain/skill/ProfileSkill.java +++ /dev/null @@ -1,31 +0,0 @@ -package liaison.linkit.profile.domain.skill; - -import jakarta.persistence.*; -import liaison.linkit.profile.domain.Profile; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import static jakarta.persistence.FetchType.LAZY; -import static jakarta.persistence.GenerationType.IDENTITY; -import static lombok.AccessLevel.PROTECTED; - -@Entity -@Getter -@AllArgsConstructor -@NoArgsConstructor(access = PROTECTED) -public class ProfileSkill { - @Id - @GeneratedValue(strategy = IDENTITY) - @Column(name = "profile_skill_id") - private Long id; - - @ManyToOne(fetch = LAZY) - @JoinColumn(name = "profile_id") - private Profile profile; - - // 역할 및 기술 저장된 skill - @ManyToOne(fetch = LAZY) - @JoinColumn(name = "skill_id") - private Skill skill; -} diff --git a/src/main/java/liaison/linkit/profile/dto/response/awards/AwardsResponse.java b/src/main/java/liaison/linkit/profile/dto/response/awards/AwardsResponse.java index d60af594..cc836a46 100644 --- a/src/main/java/liaison/linkit/profile/dto/response/awards/AwardsResponse.java +++ b/src/main/java/liaison/linkit/profile/dto/response/awards/AwardsResponse.java @@ -1,6 +1,6 @@ package liaison.linkit.profile.dto.response.awards; -import liaison.linkit.profile.domain.awards.Awards; +import liaison.linkit.profile.domain.ProfileAwards; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -16,27 +16,27 @@ public class AwardsResponse { private final int awardsMonth; private final String awardsDescription; - public static AwardsResponse of(final Awards awards){ + public static AwardsResponse of(final ProfileAwards profileAwards) { return new AwardsResponse( - awards.getId(), - awards.getAwardsName(), - awards.getRanking(), - awards.getOrganizer(), - awards.getAwardsYear(), - awards.getAwardsMonth(), - awards.getAwardsDescription() + profileAwards.getId(), + profileAwards.getAwardsName(), + profileAwards.getRanking(), + profileAwards.getOrganizer(), + profileAwards.getAwardsYear(), + profileAwards.getAwardsMonth(), + profileAwards.getAwardsDescription() ); } - public static AwardsResponse personalAwards(final Awards awards) { + public static AwardsResponse personalAwards(final ProfileAwards profileAwards) { return new AwardsResponse( - awards.getId(), - awards.getAwardsName(), - awards.getRanking(), - awards.getOrganizer(), - awards.getAwardsYear(), - awards.getAwardsMonth(), - awards.getAwardsDescription() + profileAwards.getId(), + profileAwards.getAwardsName(), + profileAwards.getRanking(), + profileAwards.getOrganizer(), + profileAwards.getAwardsYear(), + profileAwards.getAwardsMonth(), + profileAwards.getAwardsDescription() ); } } diff --git a/src/main/java/liaison/linkit/profile/dto/response/education/EducationResponse.java b/src/main/java/liaison/linkit/profile/dto/response/education/EducationResponse.java index c12d0409..3374e4de 100644 --- a/src/main/java/liaison/linkit/profile/dto/response/education/EducationResponse.java +++ b/src/main/java/liaison/linkit/profile/dto/response/education/EducationResponse.java @@ -1,6 +1,6 @@ package liaison.linkit.profile.dto.response.education; -import liaison.linkit.profile.domain.education.Education; +import liaison.linkit.profile.domain.ProfileEducation; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -19,25 +19,25 @@ public class EducationResponse { // 재학 기간 관련 타입 private final String degreeName; - public static EducationResponse of(final Education education) { + public static EducationResponse of(final ProfileEducation profileEducation) { return new EducationResponse( - education.getId(), - education.getAdmissionYear(), - education.getGraduationYear(), - education.getUniversityName(), - education.getMajorName(), - education.getDegree().getDegreeName() + profileEducation.getId(), + profileEducation.getAdmissionYear(), + profileEducation.getGraduationYear(), + profileEducation.getUniversityName(), + profileEducation.getMajorName(), + profileEducation.getDegree().getDegreeName() ); } - public static EducationResponse personalEducation(final Education education) { + public static EducationResponse personalEducation(final ProfileEducation profileEducation) { return new EducationResponse( - education.getId(), - education.getAdmissionYear(), - education.getGraduationYear(), - education.getUniversityName(), - education.getMajorName(), - education.getDegree().getDegreeName() + profileEducation.getId(), + profileEducation.getAdmissionYear(), + profileEducation.getGraduationYear(), + profileEducation.getUniversityName(), + profileEducation.getMajorName(), + profileEducation.getDegree().getDegreeName() ); } } diff --git a/src/main/java/liaison/linkit/profile/dto/response/miniProfile/MiniProfileResponse.java b/src/main/java/liaison/linkit/profile/dto/response/miniProfile/MiniProfileResponse.java index dbfe679e..2163d5e7 100644 --- a/src/main/java/liaison/linkit/profile/dto/response/miniProfile/MiniProfileResponse.java +++ b/src/main/java/liaison/linkit/profile/dto/response/miniProfile/MiniProfileResponse.java @@ -1,6 +1,5 @@ package liaison.linkit.profile.dto.response.miniProfile; -import liaison.linkit.profile.domain.miniProfile.MiniProfile; import liaison.linkit.profile.domain.miniProfile.MiniProfileKeyword; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/liaison/linkit/profile/implement/MiniProfileQueryAdapter.java b/src/main/java/liaison/linkit/profile/implement/MiniProfileQueryAdapter.java new file mode 100644 index 00000000..67324911 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/implement/MiniProfileQueryAdapter.java @@ -0,0 +1,17 @@ +package liaison.linkit.profile.implement; + +import liaison.linkit.common.annotation.Adapter; +import liaison.linkit.profile.domain.repository.profile.ProfileRepository; +import liaison.linkit.profile.presentation.miniProfile.dto.MiniProfileResponseDTO; +import lombok.RequiredArgsConstructor; + +@Adapter +@RequiredArgsConstructor +public class MiniProfileQueryAdapter { + + private final ProfileRepository profileRepository; + + public MiniProfileResponseDTO.MiniProfileDetail getMiniProfileDetail(final Long memberId) { + return profileRepository.findMiniProfileDTO(memberId); + } +} diff --git a/src/main/java/liaison/linkit/profile/implement/ProfileLicenseCommandAdapter.java b/src/main/java/liaison/linkit/profile/implement/ProfileLicenseCommandAdapter.java new file mode 100644 index 00000000..c343e6b1 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/implement/ProfileLicenseCommandAdapter.java @@ -0,0 +1,15 @@ +package liaison.linkit.profile.implement; + +import liaison.linkit.common.annotation.Adapter; +import liaison.linkit.profile.domain.repository.ProfileLicenseRepository; +import lombok.RequiredArgsConstructor; + +@Adapter +@RequiredArgsConstructor +public class ProfileLicenseCommandAdapter { + private final ProfileLicenseRepository profileLicenseRepository; + + public void deleteProfileLicenseById(final Long profileLicenseId) { + profileLicenseRepository.deleteById(profileLicenseId); + } +} diff --git a/src/main/java/liaison/linkit/profile/implement/ProfileLicenseQueryAdapter.java b/src/main/java/liaison/linkit/profile/implement/ProfileLicenseQueryAdapter.java new file mode 100644 index 00000000..a9733f34 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/implement/ProfileLicenseQueryAdapter.java @@ -0,0 +1,16 @@ +package liaison.linkit.profile.implement; + +import liaison.linkit.common.annotation.Adapter; +import liaison.linkit.profile.domain.repository.ProfileLicenseRepository; +import liaison.linkit.profile.presentation.license.dto.ProfileLicenseResponseDTO.ProfileLicenseList; +import lombok.RequiredArgsConstructor; + +@Adapter +@RequiredArgsConstructor +public class ProfileLicenseQueryAdapter { + private final ProfileLicenseRepository profileLicenseRepository; + + public ProfileLicenseList findProfileLicenseListDTO(final Long memberId) { + return profileLicenseRepository.findProfileLicenseListDTO(memberId); + } +} diff --git a/src/main/java/liaison/linkit/profile/implement/ProfileUrlCommandAdapter.java b/src/main/java/liaison/linkit/profile/implement/ProfileUrlCommandAdapter.java new file mode 100644 index 00000000..b36a9d3c --- /dev/null +++ b/src/main/java/liaison/linkit/profile/implement/ProfileUrlCommandAdapter.java @@ -0,0 +1,10 @@ +package liaison.linkit.profile.implement; + +import liaison.linkit.common.annotation.Adapter; +import lombok.RequiredArgsConstructor; + +@Adapter +@RequiredArgsConstructor +public class ProfileUrlCommandAdapter { + +} diff --git a/src/main/java/liaison/linkit/profile/implement/ProfileUrlQueryAdapter.java b/src/main/java/liaison/linkit/profile/implement/ProfileUrlQueryAdapter.java new file mode 100644 index 00000000..e49ef6bb --- /dev/null +++ b/src/main/java/liaison/linkit/profile/implement/ProfileUrlQueryAdapter.java @@ -0,0 +1,16 @@ +package liaison.linkit.profile.implement; + +import liaison.linkit.common.annotation.Adapter; +import liaison.linkit.profile.domain.repository.profileUrl.ProfileUrlRepository; +import liaison.linkit.profile.presentation.url.dto.ProfileUrlResponseDTO.ProfileUrlItems; +import lombok.RequiredArgsConstructor; + +@Adapter +@RequiredArgsConstructor +public class ProfileUrlQueryAdapter { + private final ProfileUrlRepository profileUrlRepository; + + public ProfileUrlItems getProfileUrlDetail(final Long memberId) { + return profileUrlRepository.findProfileUrlItems(memberId); + } +} diff --git a/src/main/java/liaison/linkit/profile/presentation/license/ProfileLicenseController.java b/src/main/java/liaison/linkit/profile/presentation/license/ProfileLicenseController.java new file mode 100644 index 00000000..35f7b132 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/presentation/license/ProfileLicenseController.java @@ -0,0 +1,55 @@ +package liaison.linkit.profile.presentation.license; + +import liaison.linkit.auth.Auth; +import liaison.linkit.auth.MemberOnly; +import liaison.linkit.auth.domain.Accessor; +import liaison.linkit.common.presentation.CommonResponse; +import liaison.linkit.profile.presentation.license.dto.ProfileLicenseRequestDTO; +import liaison.linkit.profile.presentation.license.dto.ProfileLicenseResponseDTO; +import liaison.linkit.profile.presentation.license.dto.ProfileLicenseResponseDTO.RemoveProfileLicense; +import liaison.linkit.profile.service.ProfileLicenseService; +import lombok.RequiredArgsConstructor; +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.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/v1/profile/license") +public class ProfileLicenseController { + + public final ProfileLicenseService profileLicenseService; + + // 자격증 리스트 조회 메서드 + @GetMapping + @MemberOnly + public CommonResponse getProfileLicenseList(@Auth final Accessor accessor) { + return CommonResponse.onSuccess(profileLicenseService.getProfileLicenseList(accessor.getMemberId())); + } + + // 자격증 단일 수정 메서드 + @PostMapping + @MemberOnly + public CommonResponse editProfileLicense( + @Auth final Accessor accessor, + @RequestBody ProfileLicenseRequestDTO.EditProfileLicense request, + @RequestPart(required = false) MultipartFile profileLicenseCertificationFile + ) { + return CommonResponse.onSuccess(profileLicenseService.editProfileLicense(accessor.getMemberId(), request, profileLicenseCertificationFile)); + } + + // 자격증 단일 삭제 메서드 + @DeleteMapping("/{profileLicenseId}") + @MemberOnly + public CommonResponse deleteProfileLicense( + @PathVariable final Long profileLicenseId + ) { + return CommonResponse.onSuccess(profileLicenseService.deleteProfileLicense(profileLicenseId)); + } +} diff --git a/src/main/java/liaison/linkit/profile/presentation/license/dto/ProfileLicenseRequestDTO.java b/src/main/java/liaison/linkit/profile/presentation/license/dto/ProfileLicenseRequestDTO.java new file mode 100644 index 00000000..75c4fef1 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/presentation/license/dto/ProfileLicenseRequestDTO.java @@ -0,0 +1,20 @@ +package liaison.linkit.profile.presentation.license.dto; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class ProfileLicenseRequestDTO { + + @Getter + public static class EditProfileLicense { + private Long profileLicenseId; + private String licenseName; + private String licenseInstitution; + private int acquisitionYear; + private String licenseDescription; + private Boolean isLicenseCertified; + private String licenseCertificationDescription; + } +} diff --git a/src/main/java/liaison/linkit/profile/presentation/license/dto/ProfileLicenseResponseDTO.java b/src/main/java/liaison/linkit/profile/presentation/license/dto/ProfileLicenseResponseDTO.java new file mode 100644 index 00000000..20f6a348 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/presentation/license/dto/ProfileLicenseResponseDTO.java @@ -0,0 +1,48 @@ +package liaison.linkit.profile.presentation.license.dto; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class ProfileLicenseResponseDTO { + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class ProfileLicenseListItem { + private Long profileLicenseId; + private String licenseName; + private String licenseInstitution; + private int acquisitionYear; + private String licenseDescription; + private Boolean isLicenseCertified; + private String licenseCertificationAttachFileName; + private String licenseCertificationAttachFileUrl; + private String licenseCertificationDescription; + } + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class ProfileLicenseList { + @Builder.Default + private List profileLicenseList = new ArrayList<>(); + } + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class RemoveProfileLicense { + private Long profileLicenseId; + private LocalDateTime deletedAt; + } +} diff --git a/src/main/java/liaison/linkit/profile/presentation/miniProfile/MiniProfileController.java b/src/main/java/liaison/linkit/profile/presentation/miniProfile/MiniProfileController.java new file mode 100644 index 00000000..75d063ec --- /dev/null +++ b/src/main/java/liaison/linkit/profile/presentation/miniProfile/MiniProfileController.java @@ -0,0 +1,30 @@ +package liaison.linkit.profile.presentation.miniProfile; + +import liaison.linkit.auth.Auth; +import liaison.linkit.auth.MemberOnly; +import liaison.linkit.auth.domain.Accessor; +import liaison.linkit.common.presentation.CommonResponse; +import liaison.linkit.profile.presentation.miniProfile.dto.MiniProfileResponseDTO; +import liaison.linkit.profile.service.MiniProfileService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/v1/profile/miniProfile") +public class MiniProfileController { + + public final MiniProfileService miniProfileService; + + @GetMapping + @MemberOnly + public CommonResponse getMiniProfileDetail( + @Auth final Accessor accessor + ) { + return CommonResponse.onSuccess(miniProfileService.getMiniProfileDetail(accessor.getMemberId())); + } + + +} diff --git a/src/main/java/liaison/linkit/profile/presentation/miniProfile/dto/MiniProfileResponseDTO.java b/src/main/java/liaison/linkit/profile/presentation/miniProfile/dto/MiniProfileResponseDTO.java new file mode 100644 index 00000000..a3116e8c --- /dev/null +++ b/src/main/java/liaison/linkit/profile/presentation/miniProfile/dto/MiniProfileResponseDTO.java @@ -0,0 +1,49 @@ +package liaison.linkit.profile.presentation.miniProfile.dto; + +import java.util.ArrayList; +import java.util.List; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class MiniProfileResponseDTO { + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class MiniProfileDetail { + private String profileImagePath; + private String memberName; + + @Builder.Default + private List profilePositionList = new ArrayList<>(); + + private String cityName; + private String divisionName; + + @Builder.Default + private List profileCurrentStateList = new ArrayList<>(); + + private boolean isProfilePublic; + } + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class ProfilePositionItem { + private String positionName; + } + + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class ProfileCurrentStateItem { + private String profileStateName; + } +} diff --git a/src/main/java/liaison/linkit/profile/presentation/skill/ProfileSkillController.java b/src/main/java/liaison/linkit/profile/presentation/skill/ProfileSkillController.java new file mode 100644 index 00000000..325eeb0d --- /dev/null +++ b/src/main/java/liaison/linkit/profile/presentation/skill/ProfileSkillController.java @@ -0,0 +1,4 @@ +package liaison.linkit.profile.presentation.skill; + +public class ProfileSkillController { +} diff --git a/src/main/java/liaison/linkit/profile/presentation/url/ProfileUrlController.java b/src/main/java/liaison/linkit/profile/presentation/url/ProfileUrlController.java new file mode 100644 index 00000000..df2b025d --- /dev/null +++ b/src/main/java/liaison/linkit/profile/presentation/url/ProfileUrlController.java @@ -0,0 +1,39 @@ +package liaison.linkit.profile.presentation.url; + +import liaison.linkit.auth.Auth; +import liaison.linkit.auth.MemberOnly; +import liaison.linkit.auth.domain.Accessor; +import liaison.linkit.common.presentation.CommonResponse; +import liaison.linkit.profile.presentation.url.dto.ProfileUrlResponseDTO; +import liaison.linkit.profile.service.ProfileUrlService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/v1/profile/url") +public class ProfileUrlController { + + public final ProfileUrlService profileUrlService; + + @GetMapping + @MemberOnly + public CommonResponse getProfileUrlDetail( + @Auth final Accessor accessor + ) { + return CommonResponse.onSuccess(profileUrlService.getProfileUrlDetail(accessor.getMemberId())); + } + + // 자격증 단일 삭제 메서드 +// @DeleteMapping("/{profileUrlId}") +// @MemberOnly +// public CommonResponse deleteProfileUrl( +// @PathVariable final Long profileUrlId +// ) { +// return CommonResponse.onSuccess(profileUrlService.deleteProfileUrl(profileUrlId)); +// } + + +} diff --git a/src/main/java/liaison/linkit/profile/presentation/url/dto/ProfileUrlRequestDTO.java b/src/main/java/liaison/linkit/profile/presentation/url/dto/ProfileUrlRequestDTO.java new file mode 100644 index 00000000..cbebffee --- /dev/null +++ b/src/main/java/liaison/linkit/profile/presentation/url/dto/ProfileUrlRequestDTO.java @@ -0,0 +1,9 @@ +package liaison.linkit.profile.presentation.url.dto; + +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class ProfileUrlRequestDTO { + +} diff --git a/src/main/java/liaison/linkit/profile/presentation/url/dto/ProfileUrlResponseDTO.java b/src/main/java/liaison/linkit/profile/presentation/url/dto/ProfileUrlResponseDTO.java new file mode 100644 index 00000000..6397274e --- /dev/null +++ b/src/main/java/liaison/linkit/profile/presentation/url/dto/ProfileUrlResponseDTO.java @@ -0,0 +1,46 @@ +package liaison.linkit.profile.presentation.url.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.time.LocalDateTime; +import java.util.List; +import liaison.linkit.global.type.ProfileUrlType; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class ProfileUrlResponseDTO { + + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class ProfileUrlItem { + @JsonProperty("profileUrlId") + private String Id; + private String urlIconImagePath; + private String urlName; + private String urlPath; + private ProfileUrlType profileUrlType; + } + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class ProfileUrlItems { + private List profileUrlItems; + } + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class RemoveProfileUrl { + private Long profileUrlId; + private LocalDateTime deletedAt; + } +} diff --git a/src/main/java/liaison/linkit/profile/service/AwardsService.java b/src/main/java/liaison/linkit/profile/service/AwardsService.java index c76d791a..ae3a9a84 100644 --- a/src/main/java/liaison/linkit/profile/service/AwardsService.java +++ b/src/main/java/liaison/linkit/profile/service/AwardsService.java @@ -10,7 +10,7 @@ import liaison.linkit.global.exception.AuthException; import liaison.linkit.global.exception.BadRequestException; import liaison.linkit.profile.domain.Profile; -import liaison.linkit.profile.domain.awards.Awards; +import liaison.linkit.profile.domain.ProfileAwards; import liaison.linkit.profile.domain.repository.awards.AwardsRepository; import liaison.linkit.profile.domain.repository.profile.ProfileRepository; import liaison.linkit.profile.dto.request.awards.AwardsCreateRequest; @@ -34,7 +34,7 @@ private Profile getProfile(final Long memberId) { } // 어떤 보유 기술 및 역할 1개만 조회할 때 - private Awards getAwards(final Long awardsId) { + private ProfileAwards getAwards(final Long awardsId) { return awardsRepository.findById(awardsId) .orElseThrow(() -> new BadRequestException(NOT_FOUND_AWARDS_BY_ID)); } @@ -72,9 +72,9 @@ public Long update( final Long awardsId, final AwardsCreateRequest awardsCreateRequest ) { - final Awards awards = getAwards(awardsId); - awards.update(awardsCreateRequest); - return awards.getId(); + final ProfileAwards profileAwards = getAwards(awardsId); + profileAwards.update(awardsCreateRequest); + return profileAwards.getId(); } // 회원에 대해서 수상 항목 리스트를 저장하는 메서드 @@ -95,7 +95,7 @@ public void saveAll(final Long memberId, final List awardsC } private Long saveAwards(final Profile profile, final AwardsCreateRequest awardsCreateRequest) { - final Awards newAwards = Awards.of( + final ProfileAwards newProfileAwards = ProfileAwards.of( profile, awardsCreateRequest.getAwardsName(), awardsCreateRequest.getRanking(), @@ -104,14 +104,14 @@ private Long saveAwards(final Profile profile, final AwardsCreateRequest awardsC awardsCreateRequest.getAwardsMonth(), awardsCreateRequest.getAwardsDescription() ); - return awardsRepository.save(newAwards).getId(); + return awardsRepository.save(newProfileAwards).getId(); } // 해당 회원의 모든 수상 항목을 조회하는 메서드 / 수정 이전 화면에서 필요 @Transactional(readOnly = true) public List getAllAwards(final Long memberId) { final Profile profile = getProfile(memberId); - final List awards = awardsRepository.findAllByProfileId(profile.getId()); + final List awards = awardsRepository.findAllByProfileId(profile.getId()); return awards.stream() .map(this::getAwardsResponse) .toList(); @@ -123,31 +123,31 @@ public List getAllBrowseAwards(final Long profileId) { final Profile profile = profileRepository.findById(profileId) .orElseThrow(() -> new BadRequestException(NOT_FOUND_PROFILE_BY_ID)); - final List awards = awardsRepository.findAllByProfileId(profile.getId()); + final List awards = awardsRepository.findAllByProfileId(profile.getId()); return awards.stream() .map(this::getAwardsResponse) .toList(); } - private AwardsResponse getAwardsResponse(final Awards awards) { - return AwardsResponse.of(awards); + private AwardsResponse getAwardsResponse(final ProfileAwards profileAwards) { + return AwardsResponse.of(profileAwards); } // 수상 항목 1개 조회 (비공개 처리 로직 추가 필요) @Transactional(readOnly = true) public AwardsResponse getAwardsDetail(final Long awardsId) { - final Awards awards = awardsRepository.findById(awardsId) + final ProfileAwards profileAwards = awardsRepository.findById(awardsId) .orElseThrow(() -> new BadRequestException(NOT_FOUND_AWARDS_ID)); - return AwardsResponse.personalAwards(awards); + return AwardsResponse.personalAwards(profileAwards); } public void deleteAwards(final Long memberId, final Long awardsId) { final Profile profile = getProfile(memberId); - final Awards awards = getAwards(awardsId); + final ProfileAwards profileAwards = getAwards(awardsId); // 해당 수상 정보 삭제 - awardsRepository.deleteById(awards.getId()); + awardsRepository.deleteById(profileAwards.getId()); if (!awardsRepository.existsByProfileId(profile.getId())) { // 존재하지 않는 경우 diff --git a/src/main/java/liaison/linkit/profile/service/BrowsePrivateProfileService.java b/src/main/java/liaison/linkit/profile/service/BrowsePrivateProfileService.java index dc312eca..20ede12e 100644 --- a/src/main/java/liaison/linkit/profile/service/BrowsePrivateProfileService.java +++ b/src/main/java/liaison/linkit/profile/service/BrowsePrivateProfileService.java @@ -12,7 +12,6 @@ import liaison.linkit.member.domain.Member; import liaison.linkit.member.domain.repository.member.MemberRepository; import liaison.linkit.profile.domain.Profile; -import liaison.linkit.profile.domain.miniProfile.MiniProfile; import liaison.linkit.profile.domain.repository.antecedents.AntecedentsRepository; import liaison.linkit.profile.domain.repository.education.DegreeRepository; import liaison.linkit.profile.domain.repository.education.EducationRepository; @@ -33,7 +32,6 @@ import liaison.linkit.profile.dto.response.onBoarding.JobAndSkillResponse; import liaison.linkit.profile.dto.response.profileRegion.ProfileRegionResponse; import liaison.linkit.profile.dto.response.teamBuilding.ProfileTeamBuildingFieldResponse; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/liaison/linkit/profile/service/EducationService.java b/src/main/java/liaison/linkit/profile/service/EducationService.java index 365fcbb7..f09059f3 100644 --- a/src/main/java/liaison/linkit/profile/service/EducationService.java +++ b/src/main/java/liaison/linkit/profile/service/EducationService.java @@ -11,8 +11,7 @@ import liaison.linkit.global.exception.AuthException; import liaison.linkit.global.exception.BadRequestException; import liaison.linkit.profile.domain.Profile; -import liaison.linkit.profile.domain.education.Degree; -import liaison.linkit.profile.domain.education.Education; +import liaison.linkit.profile.domain.ProfileEducation; import liaison.linkit.profile.domain.repository.education.DegreeRepository; import liaison.linkit.profile.domain.repository.education.EducationRepository; import liaison.linkit.profile.domain.repository.profile.ProfileRepository; @@ -40,7 +39,7 @@ private Profile getProfile(final Long memberId) { .orElseThrow(() -> new BadRequestException(NOT_FOUND_PROFILE_BY_MEMBER_ID)); } - private Education getEducation(final Long educationId) { + private ProfileEducation getEducation(final Long educationId) { return educationRepository.findById(educationId) .orElseThrow(() -> new BadRequestException(NOT_FOUND_EDUCATION_ID)); } @@ -77,7 +76,7 @@ public void saveAll( final Degree degree = degreeRepository.findByDegreeName(request.getDegreeName()) .orElseThrow(() -> new BadRequestException(NOT_FOUND_DEGREE_NAME)); - final Education newEducation = Education.of( + final ProfileEducation newProfileEducation = ProfileEducation.of( profile, request.getAdmissionYear(), request.getGraduationYear(), @@ -86,8 +85,8 @@ public void saveAll( degree ); - Education savedEducation = educationRepository.save(newEducation); - responses.add(getEducationResponse(savedEducation)); + ProfileEducation savedProfileEducation = educationRepository.save(newProfileEducation); + responses.add(getEducationResponse(savedProfileEducation)); } // 반복문 종료 후에 프로필의 상태를 업데이트한다. @@ -97,8 +96,8 @@ public void saveAll( @Transactional(readOnly = true) public List getAllEducations(final Long memberId) { final Profile profile = getProfile(memberId); - final List educations = educationRepository.findAllByProfileId(profile.getId()); - return educations.stream() + final List profileEducations = educationRepository.findAllByProfileId(profile.getId()); + return profileEducations.stream() .map(this::getEducationResponse) .toList(); } @@ -108,23 +107,23 @@ public List getAllBrowseEducations(final Long profileId) { final Profile profile = profileRepository.findById(profileId) .orElseThrow(() -> new BadRequestException(NOT_FOUND_PROFILE_BY_ID)); - final List educations = educationRepository.findAllByProfileId(profile.getId()); - return educations.stream() + final List profileEducations = educationRepository.findAllByProfileId(profile.getId()); + return profileEducations.stream() .map(this::getEducationResponse) .toList(); } - private EducationResponse getEducationResponse(final Education education) { - return EducationResponse.of(education); + private EducationResponse getEducationResponse(final ProfileEducation profileEducation) { + return EducationResponse.of(profileEducation); } public void delete(final Long memberId, final Long educationId) { log.info("삭제 메서드 실행"); final Profile profile = getProfile(memberId); - final Education education = getEducation(educationId); + final ProfileEducation profileEducation = getEducation(educationId); // 해당 학력 삭제 - educationRepository.deleteById(education.getId()); + educationRepository.deleteById(profileEducation.getId()); log.info("삭제 완료"); if (!educationRepository.existsByProfileId(profile.getId())) { @@ -153,14 +152,14 @@ public Long update( final Long educationId, final EducationCreateRequest educationCreateRequest ) { - final Education education = getEducation(educationId); + final ProfileEducation profileEducation = getEducation(educationId); final Degree degree = degreeRepository.findByDegreeName(educationCreateRequest.getDegreeName()) .orElseThrow(() -> new BadRequestException(NOT_FOUND_DEGREE_NAME)); - education.update(educationCreateRequest, educationCreateRequest.getUniversityName(), + profileEducation.update(educationCreateRequest, educationCreateRequest.getUniversityName(), educationCreateRequest.getMajorName(), degree); - return education.getId(); + return profileEducation.getId(); } private Long makeNewEducation( @@ -170,7 +169,7 @@ private Long makeNewEducation( final Degree degree = degreeRepository.findByDegreeName(educationCreateRequest.getDegreeName()) .orElseThrow(() -> new BadRequestException(NOT_FOUND_DEGREE_NAME)); - final Education newEducation = Education.of( + final ProfileEducation newProfileEducation = ProfileEducation.of( profile, educationCreateRequest.getAdmissionYear(), educationCreateRequest.getGraduationYear(), @@ -179,6 +178,6 @@ private Long makeNewEducation( degree ); - return educationRepository.save(newEducation).getId(); + return educationRepository.save(newProfileEducation).getId(); } } diff --git a/src/main/java/liaison/linkit/profile/service/MiniProfileService.java b/src/main/java/liaison/linkit/profile/service/MiniProfileService.java index 06f55ef9..a7256aba 100644 --- a/src/main/java/liaison/linkit/profile/service/MiniProfileService.java +++ b/src/main/java/liaison/linkit/profile/service/MiniProfileService.java @@ -9,7 +9,6 @@ import liaison.linkit.member.domain.MemberBasicInform; import liaison.linkit.member.domain.repository.memberBasicInform.MemberBasicInformRepository; import liaison.linkit.profile.domain.Profile; -import liaison.linkit.profile.domain.miniProfile.MiniProfile; import liaison.linkit.profile.domain.miniProfile.MiniProfileKeyword; import liaison.linkit.profile.domain.repository.profile.ProfileRepository; import liaison.linkit.profile.domain.repository.jobRole.ProfileJobRoleRepository; @@ -19,6 +18,8 @@ import liaison.linkit.profile.domain.role.ProfileJobRole; import liaison.linkit.profile.dto.request.miniProfile.MiniProfileRequest; import liaison.linkit.profile.dto.response.miniProfile.MiniProfileResponse; +import liaison.linkit.profile.implement.MiniProfileQueryAdapter; +import liaison.linkit.profile.presentation.miniProfile.dto.MiniProfileResponseDTO; import liaison.linkit.wish.domain.repository.privateWish.PrivateWishRepository; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -37,6 +38,7 @@ @Slf4j public class MiniProfileService { + private final MiniProfileQueryAdapter miniProfileQueryAdapter; private final ProfileRepository profileRepository; private final MemberBasicInformRepository memberBasicInformRepository; private final MiniProfileRepository miniProfileRepository; @@ -53,12 +55,6 @@ private Profile getProfile(final Long memberId) { .orElseThrow(() -> new BadRequestException(NOT_FOUND_PROFILE_BY_MEMBER_ID)); } - // "내 이력서"에 1대 1로 매핑되어 있는 미니 프로필 조회 메서드 - private MiniProfile getMiniProfile(final Long profileId) { - return miniProfileRepository.findByProfileId(profileId) - .orElseThrow(() -> new BadRequestException(NOT_FOUND_MINI_PROFILE_BY_PROFILE_ID)); - } - // 회원 기본 정보를 가져오는 메서드 private MemberBasicInform getMemberBasicInform(final Long memberId) { return memberBasicInformRepository.findByMemberId(memberId) @@ -175,7 +171,13 @@ public void save( // 내 이력서 미니 프로필 조회 메서드 @Transactional(readOnly = true) - public MiniProfileResponse getPersonalMiniProfile(final Long memberId) { + public MiniProfileResponseDTO.MiniProfileDetail getMiniProfileDetail(final Long memberId) { + return miniProfileQueryAdapter.getMiniProfileDetail(memberId); + } + + + @Transactional(readOnly = true) + public MiniProfileResponseDTO getPersonalMiniProfile(final Long memberId) { // 대상 객체의 내 이력서 조회 final Profile profile = getProfile(memberId); diff --git a/src/main/java/liaison/linkit/profile/service/ProfileLicenseService.java b/src/main/java/liaison/linkit/profile/service/ProfileLicenseService.java new file mode 100644 index 00000000..0ce92026 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/service/ProfileLicenseService.java @@ -0,0 +1,33 @@ +package liaison.linkit.profile.service; + +import liaison.linkit.profile.business.ProfileLicenseMapper; +import liaison.linkit.profile.implement.ProfileLicenseCommandAdapter; +import liaison.linkit.profile.presentation.license.dto.ProfileLicenseResponseDTO.RemoveProfileLicense; +import liaison.linkit.profile.presentation.license.dto.ProfileLicenseResponseDTO.ProfileLicenseList; +import liaison.linkit.profile.implement.ProfileLicenseQueryAdapter; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Transactional +public class ProfileLicenseService { + + private final ProfileLicenseQueryAdapter profileLicenseQueryAdapter; + private final ProfileLicenseCommandAdapter profileLicenseCommandAdapter; + private final ProfileLicenseMapper profileLicenseMapper; + + // 프로필 자격증 리스트 조회 메서드 + @Transactional(readOnly = true) + public ProfileLicenseList getProfileLicenseList(final Long memberId) { + return profileLicenseQueryAdapter.findProfileLicenseListDTO(memberId); + } + + // 프로필 자격증 삭제 메서드 + public RemoveProfileLicense deleteProfileLicense(final Long profileLicenseId) { + profileLicenseCommandAdapter.deleteProfileLicenseById(profileLicenseId); + return profileLicenseMapper.toRemoveProfileLicense(profileLicenseId); + } + +} diff --git a/src/main/java/liaison/linkit/profile/service/ProfileOnBoardingService.java b/src/main/java/liaison/linkit/profile/service/ProfileOnBoardingService.java index 9eb10275..5ae5af99 100644 --- a/src/main/java/liaison/linkit/profile/service/ProfileOnBoardingService.java +++ b/src/main/java/liaison/linkit/profile/service/ProfileOnBoardingService.java @@ -17,7 +17,6 @@ import liaison.linkit.profile.domain.repository.skill.SkillRepository; import liaison.linkit.profile.domain.role.JobRole; import liaison.linkit.profile.domain.role.ProfileJobRole; -import liaison.linkit.profile.domain.skill.ProfileSkill; import liaison.linkit.profile.domain.skill.Skill; import liaison.linkit.profile.dto.response.antecedents.AntecedentsResponse; import liaison.linkit.profile.dto.response.education.EducationResponse; diff --git a/src/main/java/liaison/linkit/profile/service/ProfileRegionService.java b/src/main/java/liaison/linkit/profile/service/ProfileRegionService.java index 7a75cb6e..5cdf1833 100644 --- a/src/main/java/liaison/linkit/profile/service/ProfileRegionService.java +++ b/src/main/java/liaison/linkit/profile/service/ProfileRegionService.java @@ -9,7 +9,7 @@ import liaison.linkit.global.exception.AuthException; import liaison.linkit.global.exception.BadRequestException; import liaison.linkit.profile.domain.Profile; -import liaison.linkit.profile.domain.region.ProfileRegion; +import liaison.linkit.profile.domain.ProfileRegion; import liaison.linkit.profile.domain.region.Region; import liaison.linkit.profile.domain.repository.profile.ProfileRepository; import liaison.linkit.profile.domain.repository.region.ProfileRegionRepository; diff --git a/src/main/java/liaison/linkit/profile/service/ProfileService.java b/src/main/java/liaison/linkit/profile/service/ProfileService.java index 9ddb77b4..52945333 100644 --- a/src/main/java/liaison/linkit/profile/service/ProfileService.java +++ b/src/main/java/liaison/linkit/profile/service/ProfileService.java @@ -4,7 +4,6 @@ import liaison.linkit.global.exception.BadRequestException; import liaison.linkit.global.exception.ExceptionCode; import liaison.linkit.profile.domain.Profile; -import liaison.linkit.profile.domain.miniProfile.MiniProfile; import liaison.linkit.profile.domain.repository.antecedents.AntecedentsRepository; import liaison.linkit.profile.domain.repository.profile.ProfileRepository; import liaison.linkit.profile.domain.repository.skill.ProfileSkillRepository; diff --git a/src/main/java/liaison/linkit/profile/service/ProfileSkillService.java b/src/main/java/liaison/linkit/profile/service/ProfileSkillService.java index 55c485d7..1be335bd 100644 --- a/src/main/java/liaison/linkit/profile/service/ProfileSkillService.java +++ b/src/main/java/liaison/linkit/profile/service/ProfileSkillService.java @@ -6,7 +6,6 @@ import liaison.linkit.profile.domain.repository.profile.ProfileRepository; import liaison.linkit.profile.domain.repository.skill.ProfileSkillRepository; import liaison.linkit.profile.domain.repository.skill.SkillRepository; -import liaison.linkit.profile.domain.skill.ProfileSkill; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/src/main/java/liaison/linkit/profile/service/ProfileUrlService.java b/src/main/java/liaison/linkit/profile/service/ProfileUrlService.java new file mode 100644 index 00000000..bbd9c990 --- /dev/null +++ b/src/main/java/liaison/linkit/profile/service/ProfileUrlService.java @@ -0,0 +1,23 @@ +package liaison.linkit.profile.service; + +import liaison.linkit.profile.business.ProfileUrlMapper; +import liaison.linkit.profile.implement.ProfileUrlCommandAdapter; +import liaison.linkit.profile.implement.ProfileUrlQueryAdapter; +import liaison.linkit.profile.presentation.url.dto.ProfileUrlResponseDTO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Transactional +public class ProfileUrlService { + private final ProfileUrlQueryAdapter profileUrlQueryAdapter; + private final ProfileUrlCommandAdapter profileUrlCommandAdapter; + private final ProfileUrlMapper profileUrlMapper; + + @Transactional(readOnly = true) + public ProfileUrlResponseDTO.ProfileUrlItems getProfileUrlDetail(final Long memberId) { + return profileUrlQueryAdapter.getProfileUrlDetail(memberId); + } +} diff --git a/src/main/java/liaison/linkit/search/dto/response/browseAfterLogin/BrowseMiniProfileResponse.java b/src/main/java/liaison/linkit/search/dto/response/browseAfterLogin/BrowseMiniProfileResponse.java index e2b1c2d9..315e0080 100644 --- a/src/main/java/liaison/linkit/search/dto/response/browseAfterLogin/BrowseMiniProfileResponse.java +++ b/src/main/java/liaison/linkit/search/dto/response/browseAfterLogin/BrowseMiniProfileResponse.java @@ -1,6 +1,5 @@ package liaison.linkit.search.dto.response.browseAfterLogin; -import liaison.linkit.profile.domain.miniProfile.MiniProfile; import liaison.linkit.profile.domain.miniProfile.MiniProfileKeyword; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/liaison/linkit/search/service/SearchService.java b/src/main/java/liaison/linkit/search/service/SearchService.java index 0a08f245..d28d09be 100644 --- a/src/main/java/liaison/linkit/search/service/SearchService.java +++ b/src/main/java/liaison/linkit/search/service/SearchService.java @@ -6,7 +6,6 @@ import liaison.linkit.member.domain.repository.member.MemberRepository; import liaison.linkit.member.domain.repository.memberBasicInform.MemberBasicInformRepository; import liaison.linkit.profile.domain.Profile; -import liaison.linkit.profile.domain.miniProfile.MiniProfile; import liaison.linkit.profile.domain.miniProfile.MiniProfileKeyword; import liaison.linkit.profile.domain.repository.jobRole.ProfileJobRoleRepository; import liaison.linkit.profile.domain.repository.miniProfile.MiniProfileKeywordRepository; diff --git a/src/main/java/liaison/linkit/team/domain/Team.java b/src/main/java/liaison/linkit/team/domain/Team.java index 8456ce62..b4496709 100644 --- a/src/main/java/liaison/linkit/team/domain/Team.java +++ b/src/main/java/liaison/linkit/team/domain/Team.java @@ -1,19 +1,26 @@ package liaison.linkit.team.domain; -import jakarta.persistence.*; +import static jakarta.persistence.FetchType.LAZY; +import static jakarta.persistence.GenerationType.IDENTITY; +import static lombok.AccessLevel.PROTECTED; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import java.util.ArrayList; +import java.util.List; import liaison.linkit.global.BaseEntity; +import liaison.linkit.profile.domain.region.Region; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import org.hibernate.annotations.SQLRestriction; -import java.util.ArrayList; -import java.util.List; - -import static jakarta.persistence.GenerationType.IDENTITY; -import static lombok.AccessLevel.PROTECTED; - @Entity @Getter @AllArgsConstructor @@ -28,7 +35,12 @@ public class Team extends BaseEntity { @OneToMany(mappedBy = "team", cascade = CascadeType.ALL, orphanRemoval = true) private List teamMembers = new ArrayList<>(); - @OneToOne - @JoinColumn(name = "team_profile_id") - private TeamProfile teamProfile; + private String teamName; + private String teamShortDescription; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "region_id", nullable = false) + private Region region; + + private String teamIntroduction; } diff --git a/src/main/java/liaison/linkit/team/domain/TeamHistory.java b/src/main/java/liaison/linkit/team/domain/TeamHistory.java new file mode 100644 index 00000000..fc0e21f8 --- /dev/null +++ b/src/main/java/liaison/linkit/team/domain/TeamHistory.java @@ -0,0 +1,43 @@ +package liaison.linkit.team.domain; + +import static jakarta.persistence.FetchType.LAZY; +import static jakarta.persistence.GenerationType.IDENTITY; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class TeamHistory { + + @Id + @GeneratedValue(strategy = IDENTITY) + private Long id; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "team_id") + private Team team; + + private String historyName; + private String historyStartDate; + private String historyEndDate; + private boolean isHistoryInProgress; + private String historyDescription; + private Boolean isHistoryCertified; + private Boolean isHistoryVerified; + private String historyCertificationAttachFileName; + private String historyCertificationAttachFilePath; + private String historyCertificationDescription; + +} diff --git a/src/main/java/liaison/linkit/team/domain/TeamMember.java b/src/main/java/liaison/linkit/team/domain/TeamMember.java index d0551eae..d9c11dc6 100644 --- a/src/main/java/liaison/linkit/team/domain/TeamMember.java +++ b/src/main/java/liaison/linkit/team/domain/TeamMember.java @@ -1,17 +1,29 @@ package liaison.linkit.team.domain; -import jakarta.persistence.*; +import static jakarta.persistence.EnumType.STRING; +import static jakarta.persistence.FetchType.LAZY; +import static jakarta.persistence.GenerationType.IDENTITY; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import liaison.linkit.global.type.TeamMemberType; import liaison.linkit.member.domain.Member; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import static jakarta.persistence.FetchType.LAZY; -import static jakarta.persistence.GenerationType.IDENTITY; -import static lombok.AccessLevel.PROTECTED; - @Entity @Getter -@NoArgsConstructor(access = PROTECTED) +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor public class TeamMember { @Id @@ -26,8 +38,7 @@ public class TeamMember { @JoinColumn(name = "team_id") private Team team; - public TeamMember(final Member member, final Team team) { - this.member = member; - this.team = team; - } + @Column(nullable = false) + @Enumerated(value = STRING) + private TeamMemberType teamMemberType; } diff --git a/src/main/java/liaison/linkit/team/domain/TeamProduct.java b/src/main/java/liaison/linkit/team/domain/TeamProduct.java new file mode 100644 index 00000000..a56381ad --- /dev/null +++ b/src/main/java/liaison/linkit/team/domain/TeamProduct.java @@ -0,0 +1,29 @@ +package liaison.linkit.team.domain; + +import static jakarta.persistence.GenerationType.IDENTITY; +import static lombok.AccessLevel.PROTECTED; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import liaison.linkit.common.domain.BaseDateTimeEntity; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = PROTECTED) +public class TeamProduct extends BaseDateTimeEntity { + @Id + @GeneratedValue(strategy = IDENTITY) + private Long id; + + private String productName; + private String productShortDescription; + private String productStartDate; + private String productEndDate; + private String productLogoImagePath; + + // 이미지 처리 방식 임시 보류 + +} diff --git a/src/main/java/liaison/linkit/team/domain/TeamProfile.java b/src/main/java/liaison/linkit/team/domain/TeamProfile.java deleted file mode 100644 index 4e28f6e2..00000000 --- a/src/main/java/liaison/linkit/team/domain/TeamProfile.java +++ /dev/null @@ -1,333 +0,0 @@ -package liaison.linkit.team.domain; - -import static jakarta.persistence.GenerationType.IDENTITY; -import static lombok.AccessLevel.PROTECTED; - -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.OneToOne; -import liaison.linkit.global.BaseEntity; -import liaison.linkit.member.domain.Member; -import liaison.linkit.team.domain.miniprofile.TeamMiniProfile; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.hibernate.annotations.SQLRestriction; - -@Entity -@Getter -@AllArgsConstructor -@NoArgsConstructor(access = PROTECTED) -@SQLRestriction("status = 'USABLE'") -@Slf4j -public class TeamProfile extends BaseEntity { - - @Id - @GeneratedValue(strategy = IDENTITY) - private Long id; - - @OneToOne - @JoinColumn(name = "member_id") - private Member member; - - @OneToOne(mappedBy = "teamProfile") - private TeamMiniProfile teamMiniProfile; - - // 4.3. 팀 프로필 완성도 - @Column(name = "team_profile_completion") - private double teamProfileCompletion; - - // 4.7. 팀 소개 - @Column(name = "team_introduction") - private String teamIntroduction; - - // 4.4. 희망 팀빌딩 분야 기입 여부 - @Column(nullable = false) - private boolean isTeamProfileTeamBuildingField; - - // 4.5. 팀원 공고 기입 여부 - @Column(nullable = false) - private boolean isTeamMemberAnnouncement; - - // 4.6. 활동 방식 + 활동 지역 및 위치 기입 여부 - @Column(nullable = false) - private boolean isActivity; - - // 4.6.1. 활동 방식 기입 여부 - @Column(nullable = false) - private boolean isActivityMethod; - - // 4.6.2. 활동 지역 기입 여부 - @Column(nullable = false) - private boolean isActivityRegion; - - // 4.7. 팀 소개 기입 여부 - @Column(nullable = false) - private boolean isTeamIntroduction; - - // 4.8. 팀원 소개 기입 여부 - @Column(nullable = false) - private boolean isTeamMemberIntroduction; - - // 4.9. 연혁 기입 여부 - @Column(nullable = false) - private boolean isHistory; - - // 4.10. 팀 첨부 기입 여부 - @Column(nullable = false) - private boolean isTeamAttach; - - // 4.10.1 팀 첨부 링크(URL) 기입 여부 - @Column(nullable = false) - private boolean isTeamAttachUrl; - - // 4.10.2. 팀 첨부 파일(File) 기입 여부 - @Column(nullable = false) - private boolean isTeamAttachFile; - - // 4.1. 팀 미니 프로필 기입 여부 - @Column(nullable = false) - private boolean isTeamMiniProfile; - - // 생성자 - public TeamProfile( - final Long id, - final Member member, - final int teamProfileCompletion - ) { - this.id = id; - this.member = member; - this.teamProfileCompletion = teamProfileCompletion; - this.teamIntroduction = null; - this.isTeamProfileTeamBuildingField = false; - this.isTeamMemberAnnouncement = false; - this.isActivity = false; - this.isActivityMethod = false; - this.isActivityRegion = false; - this.isTeamIntroduction = false; - this.isTeamMemberIntroduction = false; - this.isHistory = false; - this.isTeamAttach = false; - this.isTeamAttachUrl = false; - this.isTeamAttachFile = false; - this.isTeamMiniProfile = false; - } - - public TeamProfile( - final Member member, - final int teamProfileCompletion - ) { - this(null, member, teamProfileCompletion); - } - - // 디폴트 항목 관리 메서드 - public void addTeamPerfectionDefault25() { - this.teamProfileCompletion += 25.0; - } - - public void cancelTeamPerfectionDefault25() { - this.teamProfileCompletion -= 25.0; - } - - public void addTeamPerfectionFifteen() { - this.teamProfileCompletion += 15.0; - } - - public void cancelTeamPerfectionFifteen() { - this.teamProfileCompletion -= 15.0; - } - - public void addTeamPerfectionTwoPointFive() { - this.teamProfileCompletion += 2.5; - } - - public void cancelTeamPerfectionTwoPointFive() { - this.teamProfileCompletion -= 2.5; - } - - // 4.1. 미니 프로필 업데이트 - public void updateIsTeamMiniProfile(final boolean isTeamMiniProfile) { - this.isTeamMiniProfile = isTeamMiniProfile; - } - - - // 4.4. 희망 팀빌딩 분야 업데이트 - public void updateIsTeamProfileTeamBuildingField(final boolean isTeamTeamBuildingField) { - this.isTeamProfileTeamBuildingField = isTeamTeamBuildingField; - if (isTeamTeamBuildingField) { - addTeamPerfectionDefault25(); - } else { - cancelTeamPerfectionDefault25(); - } - } - - // 4.5. 팀원 공고 업데이트 - public void updateIsTeamMemberAnnouncement(final boolean isTeamMemberAnnouncement) { - this.isTeamMemberAnnouncement = isTeamMemberAnnouncement; - if (isTeamMemberAnnouncement) { - addTeamPerfectionFifteen(); - } else { - cancelTeamPerfectionFifteen(); - } - } - - // 4.6. 활동 방식 + 활동 지역 및 위치 업데이트 - // 2개 다 관리하는 메서드 - public void updateIsActivity() { - if (!this.isActivity) { - addTeamPerfectionDefault25(); - this.isActivity = true; - } - } - - // 4.6.1 활동 방식 업데이트 - public void updateIsActivityMethod(final boolean isActivityMethod) { - this.isActivityMethod = isActivityMethod; - } - - // 4.6.2. 활동 지역 및 위치 업데이트 - public void updateIsActivityRegion(final boolean isActivityRegion) { - this.isActivityRegion = isActivityRegion; - } - - // 4.7. 팀 소개 업데이트 - public void updateIsTeamIntroduction(final boolean isTeamIntroduction) { - this.isTeamIntroduction = isTeamIntroduction; - if (this.isTeamIntroduction) { - addTeamPerfectionFifteen(); - } else { - cancelTeamPerfectionFifteen(); - } - } - - // 4.8. 팀원 소개 업데이트 - public void updateIsTeamMemberIntroduction(final boolean isTeamMemberIntroduction) { - this.isTeamMemberIntroduction = isTeamMemberIntroduction; - if (this.isTeamMemberIntroduction) { - addTeamPerfectionFifteen(); - } else { - cancelTeamPerfectionFifteen(); - } - } - - // 4.9. 연혁 업데이트 - public void updateIsHistory(final boolean isHistory) { - this.isHistory = isHistory; - if (this.isHistory) { - addTeamPerfectionTwoPointFive(); - } else { - cancelTeamPerfectionTwoPointFive(); - } - } - - // 4.10. 팀 첨부 업데이트 - private void updateIsTeamAttach(final boolean isTeamAttachUrl, final boolean isTeamAttachFile) { - if (this.isTeamAttach != (isTeamAttachUrl || isTeamAttachFile)) { - this.isTeamAttach = !this.isTeamAttach; - if (this.isTeamAttach) { - addTeamPerfectionTwoPointFive(); - } else { - cancelTeamPerfectionTwoPointFive(); - } - } - } - - // 4.10.1. 팀 첨부 링크 업데이트 - public void updateIsTeamAttachUrl(final boolean isTeamAttachUrl) { - this.isTeamAttachUrl = isTeamAttachUrl; - log.info("isTeamAttachUrl={}", isTeamAttachUrl); - if (this.isTeamAttachUrl) { - addTeamPerfectionTwoPointFive(); - } else { - cancelTeamPerfectionTwoPointFive(); - } - } - - // 4.10.2. 팀 첨부 파일 업데이트 - public void updateIsTeamAttachFile(final boolean isTeamAttachFile) { - this.isTeamAttachFile = isTeamAttachFile; - } - - public boolean getIsTeamProfileTeamBuildingField() { - return isTeamProfileTeamBuildingField; - } - - public boolean getIsTeamMemberAnnouncement() { - return isTeamMemberAnnouncement; - } - - public boolean getIsActivity() { - return isActivity; - } - - public boolean getIsActivityMethod() { - return isActivityMethod; - } - - public boolean getIsActivityRegion() { - return isActivityRegion; - } - - public boolean getIsTeamIntroduction() { - return isTeamIntroduction; - } - - public boolean getIsTeamMemberIntroduction() { - return isTeamMemberIntroduction; - } - - public boolean getIsHistory() { - return isHistory; - } - - public boolean getIsTeamAttach() { - return isTeamAttach; - } - - public boolean getIsTeamAttachUrl() { - return isTeamAttachUrl; - } - - public boolean getIsTeamMiniProfile() { - return isTeamMiniProfile; - } - - - // 4.7. 팀 소개 텍스트 내용 업데이트 - public void updateTeamIntroduction(final String teamIntroduction) { - if (teamIntroduction != null && !teamIntroduction.isEmpty()) { // 텍스트가 들어오는 경우 - log.info("teamIntroduction={}", teamIntroduction); - // 기존에 저장되어있었던 경우 - if (this.teamIntroduction == null) { - log.info("기존에 팀 소개가 저장되어 있지 않았습니다."); - this.teamIntroduction = teamIntroduction; - updateIsTeamIntroduction(true); - } else { - // 기존에 저장되었던 경우 (수정으로 간주) - log.info("기존에 팀 소개가 저장되어 있었습니다."); - this.teamIntroduction = teamIntroduction; - } - } else { // 삭제 요청으로 간주 (null이거나 empty인 경우) - if (this.teamIntroduction == null) { - // 기존에 저장되어있지 않은 경우 - } else { - // 기존에 저장되어 있었던 경우 - this.teamIntroduction = null; - updateIsTeamIntroduction(false); - } - } - } - - - public boolean getExistDefaultTeamProfile() { - if (this.isTeamProfileTeamBuildingField && this.isActivity && this.isTeamMiniProfile) { - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/liaison/linkit/team/domain/activity/ActivityMethod.java b/src/main/java/liaison/linkit/team/domain/activity/ActivityMethod.java index 374a325e..ba378f95 100644 --- a/src/main/java/liaison/linkit/team/domain/activity/ActivityMethod.java +++ b/src/main/java/liaison/linkit/team/domain/activity/ActivityMethod.java @@ -1,7 +1,6 @@ package liaison.linkit.team.domain.activity; import jakarta.persistence.*; -import liaison.linkit.team.domain.TeamProfile; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/liaison/linkit/team/domain/activity/ActivityRegion.java b/src/main/java/liaison/linkit/team/domain/activity/ActivityRegion.java index c377f8c3..2bb1b17c 100644 --- a/src/main/java/liaison/linkit/team/domain/activity/ActivityRegion.java +++ b/src/main/java/liaison/linkit/team/domain/activity/ActivityRegion.java @@ -2,7 +2,6 @@ import jakarta.persistence.*; import liaison.linkit.profile.domain.region.Region; -import liaison.linkit.team.domain.TeamProfile; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/liaison/linkit/team/domain/announcement/TeamMemberAnnouncement.java b/src/main/java/liaison/linkit/team/domain/announcement/TeamMemberAnnouncement.java index 6f66f86c..c93e7668 100644 --- a/src/main/java/liaison/linkit/team/domain/announcement/TeamMemberAnnouncement.java +++ b/src/main/java/liaison/linkit/team/domain/announcement/TeamMemberAnnouncement.java @@ -1,17 +1,18 @@ package liaison.linkit.team.domain.announcement; -import jakarta.persistence.*; +import static jakarta.persistence.GenerationType.IDENTITY; +import static lombok.AccessLevel.PROTECTED; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; import liaison.linkit.global.BaseEntity; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.dto.request.announcement.TeamMemberAnnouncementRequest; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; -import static jakarta.persistence.FetchType.LAZY; -import static jakarta.persistence.GenerationType.IDENTITY; -import static lombok.AccessLevel.PROTECTED; - @Entity @Getter @AllArgsConstructor @@ -23,10 +24,6 @@ public class TeamMemberAnnouncement extends BaseEntity { @Column(name = "team_member_announcement_id") private Long id; - @ManyToOne(fetch = LAZY) - @JoinColumn(name = "team_profile_id") - private TeamProfile teamProfile; - // 2. 주요 업무 @Column(name = "main_business") private String mainBusiness; @@ -36,13 +33,11 @@ public class TeamMemberAnnouncement extends BaseEntity { private String applicationProcess; public static TeamMemberAnnouncement of( - final TeamProfile teamProfile, final String mainBusiness, final String applicationProcess ) { return new TeamMemberAnnouncement( null, - teamProfile, mainBusiness, applicationProcess ); diff --git a/src/main/java/liaison/linkit/team/domain/history/History.java b/src/main/java/liaison/linkit/team/domain/history/History.java index d1e350a3..f7535e17 100644 --- a/src/main/java/liaison/linkit/team/domain/history/History.java +++ b/src/main/java/liaison/linkit/team/domain/history/History.java @@ -1,7 +1,6 @@ package liaison.linkit.team.domain.history; import jakarta.persistence.*; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.dto.request.HistoryCreateRequest; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/liaison/linkit/team/domain/memberIntroduction/TeamMemberIntroduction.java b/src/main/java/liaison/linkit/team/domain/memberIntroduction/TeamMemberIntroduction.java index b3c79340..f3427aa3 100644 --- a/src/main/java/liaison/linkit/team/domain/memberIntroduction/TeamMemberIntroduction.java +++ b/src/main/java/liaison/linkit/team/domain/memberIntroduction/TeamMemberIntroduction.java @@ -1,7 +1,6 @@ package liaison.linkit.team.domain.memberIntroduction; import jakarta.persistence.*; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.dto.request.memberIntroduction.TeamMemberIntroductionCreateRequest; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/liaison/linkit/team/domain/miniprofile/TeamMiniProfile.java b/src/main/java/liaison/linkit/team/domain/miniprofile/TeamMiniProfile.java index b229cb71..260249e0 100644 --- a/src/main/java/liaison/linkit/team/domain/miniprofile/TeamMiniProfile.java +++ b/src/main/java/liaison/linkit/team/domain/miniprofile/TeamMiniProfile.java @@ -1,7 +1,6 @@ package liaison.linkit.team.domain.miniprofile; import jakarta.persistence.*; -import liaison.linkit.team.domain.TeamProfile; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/liaison/linkit/team/domain/repository/teamProfile/TeamProfileRepository.java b/src/main/java/liaison/linkit/team/domain/repository/teamProfile/TeamProfileRepository.java deleted file mode 100644 index c1e2b082..00000000 --- a/src/main/java/liaison/linkit/team/domain/repository/teamProfile/TeamProfileRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package liaison.linkit.team.domain.repository.teamProfile; - -import liaison.linkit.team.domain.TeamProfile; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface TeamProfileRepository extends JpaRepository, TeamProfileRepositoryCustom { - -} diff --git a/src/main/java/liaison/linkit/team/domain/repository/teamProfile/TeamProfileRepositoryCustom.java b/src/main/java/liaison/linkit/team/domain/repository/teamProfile/TeamProfileRepositoryCustom.java deleted file mode 100644 index d1772f5a..00000000 --- a/src/main/java/liaison/linkit/team/domain/repository/teamProfile/TeamProfileRepositoryCustom.java +++ /dev/null @@ -1,11 +0,0 @@ -package liaison.linkit.team.domain.repository.teamProfile; - -import liaison.linkit.team.domain.TeamProfile; - -import java.util.Optional; - -public interface TeamProfileRepositoryCustom { - Optional findByMemberId(final Long memberId); - boolean existsByMemberId(final Long memberId); - void deleteByMemberId(final Long memberId); -} diff --git a/src/main/java/liaison/linkit/team/domain/repository/teamProfile/TeamProfileRepositoryCustomImpl.java b/src/main/java/liaison/linkit/team/domain/repository/teamProfile/TeamProfileRepositoryCustomImpl.java deleted file mode 100644 index 2ad8b1ed..00000000 --- a/src/main/java/liaison/linkit/team/domain/repository/teamProfile/TeamProfileRepositoryCustomImpl.java +++ /dev/null @@ -1,55 +0,0 @@ -package liaison.linkit.team.domain.repository.teamProfile; - -import com.querydsl.jpa.impl.JPAQueryFactory; -import liaison.linkit.global.type.StatusType; -import liaison.linkit.team.domain.QTeamProfile; -import liaison.linkit.team.domain.TeamProfile; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Optional; - -@RequiredArgsConstructor -@Slf4j -public class TeamProfileRepositoryCustomImpl implements TeamProfileRepositoryCustom{ - - private final JPAQueryFactory jpaQueryFactory; - - @Override - public Optional findByMemberId(final Long memberId) { - QTeamProfile teamProfile = QTeamProfile.teamProfile; - - TeamProfile result = jpaQueryFactory - .selectFrom(teamProfile) - .where(teamProfile.member.id.eq(memberId)) - .fetchOne(); - - return Optional.ofNullable(result); - } - - @Override - public boolean existsByMemberId(final Long memberId) { - QTeamProfile teamProfile = QTeamProfile.teamProfile; - - Integer count = jpaQueryFactory - .selectOne() - .from(teamProfile) - .where(teamProfile.member.id.eq(memberId)) - .fetchFirst(); - - return count != null; - } - - @Override - @Transactional - public void deleteByMemberId(final Long memberId) { - QTeamProfile teamProfile = QTeamProfile.teamProfile; - - jpaQueryFactory - .update(teamProfile) - .set(teamProfile.status, StatusType.DELETED) - .where(teamProfile.member.id.eq(memberId)) - .execute(); - } -} diff --git a/src/main/java/liaison/linkit/team/domain/teambuilding/TeamProfileTeamBuildingField.java b/src/main/java/liaison/linkit/team/domain/teambuilding/TeamProfileTeamBuildingField.java index da626d79..2a1ba998 100644 --- a/src/main/java/liaison/linkit/team/domain/teambuilding/TeamProfileTeamBuildingField.java +++ b/src/main/java/liaison/linkit/team/domain/teambuilding/TeamProfileTeamBuildingField.java @@ -2,7 +2,6 @@ import jakarta.persistence.*; import liaison.linkit.profile.domain.teambuilding.TeamBuildingField; -import liaison.linkit.team.domain.TeamProfile; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/liaison/linkit/team/dto/response/TeamProfileIntroductionResponse.java b/src/main/java/liaison/linkit/team/dto/response/TeamProfileIntroductionResponse.java index 2ea2223b..566f41be 100644 --- a/src/main/java/liaison/linkit/team/dto/response/TeamProfileIntroductionResponse.java +++ b/src/main/java/liaison/linkit/team/dto/response/TeamProfileIntroductionResponse.java @@ -1,6 +1,5 @@ package liaison.linkit.team.dto.response; -import liaison.linkit.team.domain.TeamProfile; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/liaison/linkit/team/dto/response/TeamProfileIsValueResponse.java b/src/main/java/liaison/linkit/team/dto/response/TeamProfileIsValueResponse.java index 3f358f30..e8e13fc8 100644 --- a/src/main/java/liaison/linkit/team/dto/response/TeamProfileIsValueResponse.java +++ b/src/main/java/liaison/linkit/team/dto/response/TeamProfileIsValueResponse.java @@ -1,6 +1,5 @@ package liaison.linkit.team.dto.response; -import liaison.linkit.team.domain.TeamProfile; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/liaison/linkit/team/dto/response/TeamProfileOnBoardingIsValueResponse.java b/src/main/java/liaison/linkit/team/dto/response/TeamProfileOnBoardingIsValueResponse.java index d04c6601..ace47600 100644 --- a/src/main/java/liaison/linkit/team/dto/response/TeamProfileOnBoardingIsValueResponse.java +++ b/src/main/java/liaison/linkit/team/dto/response/TeamProfileOnBoardingIsValueResponse.java @@ -1,6 +1,5 @@ package liaison.linkit.team.dto.response; -import liaison.linkit.team.domain.TeamProfile; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/liaison/linkit/team/dto/response/completion/TeamCompletionResponse.java b/src/main/java/liaison/linkit/team/dto/response/completion/TeamCompletionResponse.java index 57ec4739..507175fc 100644 --- a/src/main/java/liaison/linkit/team/dto/response/completion/TeamCompletionResponse.java +++ b/src/main/java/liaison/linkit/team/dto/response/completion/TeamCompletionResponse.java @@ -1,6 +1,5 @@ package liaison.linkit.team.dto.response.completion; -import liaison.linkit.team.domain.TeamProfile; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/liaison/linkit/team/presentation/TeamController.java b/src/main/java/liaison/linkit/team/presentation/team/TeamController.java similarity index 50% rename from src/main/java/liaison/linkit/team/presentation/TeamController.java rename to src/main/java/liaison/linkit/team/presentation/team/TeamController.java index d935333c..115e807b 100644 --- a/src/main/java/liaison/linkit/team/presentation/TeamController.java +++ b/src/main/java/liaison/linkit/team/presentation/team/TeamController.java @@ -1,4 +1,4 @@ -package liaison.linkit.team.presentation; +package liaison.linkit.team.presentation.team; import liaison.linkit.team.service.TeamService; import lombok.RequiredArgsConstructor; @@ -13,14 +13,4 @@ public class TeamController { private final TeamService teamService; - - // [3.0.0] 회원이 팀을 생성한다. - // @PostMapping("/team") - // @MemberOnly - // public ResponseEntity createNewTeam( - // @Auth final Accessor accessor - // ) { - // teamService.createNewTeam(accessor); - // return ResponseEntity.status(CREATED).build(); - // } } diff --git a/src/main/java/liaison/linkit/team/presentation/team/dto/TeamRequestDTO.java b/src/main/java/liaison/linkit/team/presentation/team/dto/TeamRequestDTO.java new file mode 100644 index 00000000..5219316f --- /dev/null +++ b/src/main/java/liaison/linkit/team/presentation/team/dto/TeamRequestDTO.java @@ -0,0 +1,9 @@ +package liaison.linkit.team.presentation.team.dto; + +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class TeamRequestDTO { + +} diff --git a/src/main/java/liaison/linkit/team/presentation/team/dto/TeamResponseDTO.java b/src/main/java/liaison/linkit/team/presentation/team/dto/TeamResponseDTO.java new file mode 100644 index 00000000..f395ea8a --- /dev/null +++ b/src/main/java/liaison/linkit/team/presentation/team/dto/TeamResponseDTO.java @@ -0,0 +1,9 @@ +package liaison.linkit.team.presentation.team.dto; + +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class TeamResponseDTO { + +} diff --git a/src/main/java/liaison/linkit/team/service/ActivityService.java b/src/main/java/liaison/linkit/team/service/ActivityService.java index ac788c2a..8735bb42 100644 --- a/src/main/java/liaison/linkit/team/service/ActivityService.java +++ b/src/main/java/liaison/linkit/team/service/ActivityService.java @@ -9,7 +9,6 @@ import liaison.linkit.global.exception.AuthException; import liaison.linkit.global.exception.BadRequestException; import liaison.linkit.profile.domain.region.Region; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.activity.ActivityMethod; import liaison.linkit.team.domain.activity.ActivityMethodTag; import liaison.linkit.team.domain.activity.ActivityRegion; @@ -17,7 +16,6 @@ import liaison.linkit.team.domain.repository.activity.method.ActivityMethodTagRepository; import liaison.linkit.team.domain.repository.activity.region.ActivityRegionRepository; import liaison.linkit.team.domain.repository.activity.region.RegionRepository; -import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; import liaison.linkit.team.dto.request.activity.ActivityCreateRequest; import liaison.linkit.team.dto.response.activity.ActivityMethodResponse; import liaison.linkit.team.dto.response.activity.ActivityRegionResponse; @@ -34,30 +32,12 @@ // 활동 방식 및 활동 지역 다루는 서비스 계층 public class ActivityService { - final TeamProfileRepository teamProfileRepository; - final ActivityMethodRepository activityMethodRepository; final ActivityMethodTagRepository activityMethodTagRepository; final ActivityRegionRepository activityRegionRepository; final RegionRepository regionRepository; - private TeamProfile getTeamProfile(final Long memberId) { - return teamProfileRepository.findByMemberId(memberId) - .orElseThrow(() -> new BadRequestException(NOT_FOUND_TEAM_PROFILE_BY_MEMBER_ID)); - } - - public void validateActivityMethodByMember(final Long memberId) { - if (!activityMethodRepository.existsByTeamProfileId(getTeamProfile(memberId).getId())) { - throw new AuthException(NOT_FOUND_ACTIVITY_METHOD_BY_TEAM_PROFILE_ID); - } - } - - public void validateActivityRegionByMember(final Long memberId) { - if (!activityRegionRepository.existsByTeamProfileId(getTeamProfile(memberId).getId())) { - throw new AuthException(NOT_FOUND_ACTIVITY_REGION_BY_TEAM_PROFILE_ID); - } - } // 활동 방식 저장 public void saveActivityMethod( diff --git a/src/main/java/liaison/linkit/team/service/BrowseTeamProfileService.java b/src/main/java/liaison/linkit/team/service/BrowseTeamProfileService.java index a0aa4f0a..fd358d0e 100644 --- a/src/main/java/liaison/linkit/team/service/BrowseTeamProfileService.java +++ b/src/main/java/liaison/linkit/team/service/BrowseTeamProfileService.java @@ -10,7 +10,6 @@ import liaison.linkit.global.exception.BadRequestException; import liaison.linkit.profile.domain.Profile; import liaison.linkit.profile.domain.repository.profile.ProfileRepository; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.miniprofile.TeamMiniProfile; import liaison.linkit.team.domain.repository.miniprofile.TeamMiniProfileRepository; import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; diff --git a/src/main/java/liaison/linkit/team/service/HistoryService.java b/src/main/java/liaison/linkit/team/service/HistoryService.java index 387b6b62..bea394b9 100644 --- a/src/main/java/liaison/linkit/team/service/HistoryService.java +++ b/src/main/java/liaison/linkit/team/service/HistoryService.java @@ -8,10 +8,8 @@ import java.util.List; import liaison.linkit.global.exception.AuthException; import liaison.linkit.global.exception.BadRequestException; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.history.History; import liaison.linkit.team.domain.repository.history.HistoryRepository; -import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; import liaison.linkit.team.dto.request.HistoryCreateRequest; import liaison.linkit.team.dto.response.history.HistoryResponse; import lombok.RequiredArgsConstructor; @@ -25,15 +23,8 @@ @Slf4j public class HistoryService { - private final TeamProfileRepository teamProfileRepository; private final HistoryRepository historyRepository; - - // 모든 "팀 소개서" 서비스 계층에 필요한 TeamProfile 조회 메서드 - private TeamProfile getTeamProfile(final Long memberId) { - return teamProfileRepository.findByMemberId(memberId) - .orElseThrow(() -> new BadRequestException(NOT_FOUND_TEAM_PROFILE_BY_MEMBER_ID)); - } - + private History getHistory(final Long historyId) { return historyRepository.findById(historyId) .orElseThrow(() -> new BadRequestException(NOT_FOUND_HISTORY_ID)); diff --git a/src/main/java/liaison/linkit/team/service/TeamCompletionService.java b/src/main/java/liaison/linkit/team/service/TeamCompletionService.java index 3f76eaa0..630052fc 100644 --- a/src/main/java/liaison/linkit/team/service/TeamCompletionService.java +++ b/src/main/java/liaison/linkit/team/service/TeamCompletionService.java @@ -1,7 +1,6 @@ package liaison.linkit.team.service; import liaison.linkit.global.exception.BadRequestException; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; import liaison.linkit.team.dto.response.completion.TeamCompletionResponse; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/liaison/linkit/team/service/TeamMemberAnnouncementService.java b/src/main/java/liaison/linkit/team/service/TeamMemberAnnouncementService.java index 427da173..58f56428 100644 --- a/src/main/java/liaison/linkit/team/service/TeamMemberAnnouncementService.java +++ b/src/main/java/liaison/linkit/team/service/TeamMemberAnnouncementService.java @@ -16,7 +16,6 @@ import liaison.linkit.profile.domain.repository.skill.SkillRepository; import liaison.linkit.profile.domain.role.JobRole; import liaison.linkit.profile.domain.skill.Skill; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.announcement.TeamMemberAnnouncement; import liaison.linkit.team.domain.announcement.TeamMemberAnnouncementJobRole; import liaison.linkit.team.domain.announcement.TeamMemberAnnouncementSkill; diff --git a/src/main/java/liaison/linkit/team/service/TeamMemberIntroductionService.java b/src/main/java/liaison/linkit/team/service/TeamMemberIntroductionService.java index 73d0dbab..3434bbc0 100644 --- a/src/main/java/liaison/linkit/team/service/TeamMemberIntroductionService.java +++ b/src/main/java/liaison/linkit/team/service/TeamMemberIntroductionService.java @@ -7,7 +7,6 @@ import java.util.List; import liaison.linkit.global.exception.AuthException; import liaison.linkit.global.exception.BadRequestException; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.memberIntroduction.TeamMemberIntroduction; import liaison.linkit.team.domain.repository.memberIntroduction.TeamMemberIntroductionRepository; import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; diff --git a/src/main/java/liaison/linkit/team/service/TeamMiniProfileService.java b/src/main/java/liaison/linkit/team/service/TeamMiniProfileService.java index 40c773b8..ad62509c 100644 --- a/src/main/java/liaison/linkit/team/service/TeamMiniProfileService.java +++ b/src/main/java/liaison/linkit/team/service/TeamMiniProfileService.java @@ -6,7 +6,6 @@ import liaison.linkit.image.domain.ImageFile; import liaison.linkit.image.domain.S3ImageEvent; import liaison.linkit.image.infrastructure.S3Uploader; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.miniprofile.IndustrySector; import liaison.linkit.team.domain.miniprofile.TeamMiniProfile; import liaison.linkit.team.domain.miniprofile.TeamMiniProfileKeyword; @@ -90,7 +89,6 @@ public void saveOnBoarding( // TeamScale 찾기 final TeamScale teamScale = teamScaleRepository.findBySizeType(onBoardingFieldTeamInformRequest.getSizeType()); - final TeamMiniProfile teamMiniProfile = TeamMiniProfile.of( teamProfile, industrySector, @@ -359,11 +357,10 @@ public void updateOnBoarding( industrySector, teamScale ); - + log.info("memberId={}의 팀 미니 프로필 온보딩 항목 수정이 완료되었습니다.", memberId); } - // private final TeamProfileRepository teamProfileRepository; // private final TeamMiniProfileRepository teamMiniProfileRepository; // diff --git a/src/main/java/liaison/linkit/team/service/TeamOnBoardingService.java b/src/main/java/liaison/linkit/team/service/TeamOnBoardingService.java index 1c757aca..00c95797 100644 --- a/src/main/java/liaison/linkit/team/service/TeamOnBoardingService.java +++ b/src/main/java/liaison/linkit/team/service/TeamOnBoardingService.java @@ -2,7 +2,6 @@ import liaison.linkit.global.exception.AuthException; import liaison.linkit.global.exception.BadRequestException; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; import liaison.linkit.team.dto.response.TeamProfileOnBoardingIsValueResponse; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/liaison/linkit/team/service/TeamProfileService.java b/src/main/java/liaison/linkit/team/service/TeamProfileService.java deleted file mode 100644 index 77cade8a..00000000 --- a/src/main/java/liaison/linkit/team/service/TeamProfileService.java +++ /dev/null @@ -1,110 +0,0 @@ -package liaison.linkit.team.service; - -import static liaison.linkit.global.exception.ExceptionCode.NOT_FOUND_TEAM_PROFILE_BY_MEMBER_ID; - -import java.util.List; -import liaison.linkit.global.exception.AuthException; -import liaison.linkit.global.exception.BadRequestException; -import liaison.linkit.team.domain.TeamProfile; -import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; -import liaison.linkit.team.dto.request.TeamIntroductionCreateRequest; -import liaison.linkit.team.dto.response.OnBoardingTeamProfileResponse; -import liaison.linkit.team.dto.response.TeamMemberIntroductionResponse; -import liaison.linkit.team.dto.response.TeamProfileIntroductionResponse; -import liaison.linkit.team.dto.response.TeamProfileIsValueResponse; -import liaison.linkit.team.dto.response.TeamProfileOnBoardingIsValueResponse; -import liaison.linkit.team.dto.response.TeamProfileResponse; -import liaison.linkit.team.dto.response.TeamProfileTeamBuildingFieldResponse; -import liaison.linkit.team.dto.response.activity.ActivityResponse; -import liaison.linkit.team.dto.response.announcement.TeamMemberAnnouncementResponse; -import liaison.linkit.team.dto.response.completion.TeamCompletionResponse; -import liaison.linkit.team.dto.response.history.HistoryResponse; -import liaison.linkit.team.dto.response.miniProfile.TeamMiniProfileResponse; -import liaison.linkit.team.dto.response.onBoarding.OnBoardingFieldTeamInformResponse; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@RequiredArgsConstructor -@Transactional -public class TeamProfileService { - - private final TeamProfileRepository teamProfileRepository; - - // 회원에 대한 팀 소개서 정보를 가져온다. (1개만 저장되어 있음) - private TeamProfile getTeamProfile(final Long memberId) { - return teamProfileRepository.findByMemberId(memberId) - .orElseThrow(() -> new BadRequestException(NOT_FOUND_TEAM_PROFILE_BY_MEMBER_ID)); - } - - // 멤버 ID -> 팀 소개서 유효성 검증 -> 유효하지 않다면 에러코드 반환 - public void validateTeamProfileByMember(final Long memberId) { - if (!teamProfileRepository.existsByMemberId(memberId)) { - throw new AuthException(NOT_FOUND_TEAM_PROFILE_BY_MEMBER_ID); - } - } - - // 팀 소개서 온보딩 값 존재성 boolean 값들 전달 - public TeamProfileOnBoardingIsValueResponse getTeamProfileOnBoardingIsValue(final Long memberId) { - return TeamProfileOnBoardingIsValueResponse.teamProfileOnBoardingIsValue(getTeamProfile(memberId)); - } - - public OnBoardingTeamProfileResponse getOnBoardingTeamProfile( - final OnBoardingFieldTeamInformResponse onBoardingFieldTeamInformResponse, - final ActivityResponse activityResponse, - final TeamMiniProfileResponse teamMiniProfileResponse - ) { - return OnBoardingTeamProfileResponse.onBoardingTeamProfileItems( - onBoardingFieldTeamInformResponse, - activityResponse, - teamMiniProfileResponse - ); - } - - // 팀 소개 저장 메서드 - public void saveTeamIntroduction( - final Long memberId, - final TeamIntroductionCreateRequest teamIntroductionCreateRequest - ) { - final TeamProfile teamProfile = getTeamProfile(memberId); - teamProfile.updateTeamIntroduction(teamIntroductionCreateRequest.getTeamIntroduction()); - } - - // 팀 프로필 기입 여부 값 전체 조회 메서드 - @Transactional(readOnly = true) - public TeamProfileIsValueResponse getTeamProfileIsValue(final Long memberId) { - final TeamProfile teamProfile = getTeamProfile(memberId); - return TeamProfileIsValueResponse.teamProfileIsValue(teamProfile); - } - - @Transactional(readOnly = true) - public TeamProfileIntroductionResponse getTeamIntroduction(final Long memberId) { - final TeamProfile teamProfile = getTeamProfile(memberId); - return TeamProfileIntroductionResponse.teamProfileIntroduction(teamProfile); - } - - public TeamProfileResponse getTeamProfileResponse( - final boolean isTeamProfileEssential, - final TeamMiniProfileResponse teamMiniProfileResponse, - final TeamCompletionResponse teamCompletionResponse, - final TeamProfileTeamBuildingFieldResponse teamProfileTeamBuildingFieldResponse, - final List teamMemberAnnouncementResponse, - final ActivityResponse activityResponse, - final TeamProfileIntroductionResponse teamProfileIntroductionResponse, - final List teamMemberIntroductionResponse, - final List historyResponse - ) { - return TeamProfileResponse.teamProfileItems( - isTeamProfileEssential, - teamMiniProfileResponse, - teamCompletionResponse, - teamProfileTeamBuildingFieldResponse, - teamMemberAnnouncementResponse, - activityResponse, - teamProfileIntroductionResponse, - teamMemberIntroductionResponse, - historyResponse - ); - } -} diff --git a/src/main/java/liaison/linkit/team/service/TeamProfileTeamBuildingFieldService.java b/src/main/java/liaison/linkit/team/service/TeamProfileTeamBuildingFieldService.java index f9a97155..5fc23d10 100644 --- a/src/main/java/liaison/linkit/team/service/TeamProfileTeamBuildingFieldService.java +++ b/src/main/java/liaison/linkit/team/service/TeamProfileTeamBuildingFieldService.java @@ -9,7 +9,6 @@ import liaison.linkit.global.exception.BadRequestException; import liaison.linkit.profile.domain.repository.teambuilding.TeamBuildingFieldRepository; import liaison.linkit.profile.domain.teambuilding.TeamBuildingField; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; import liaison.linkit.team.domain.repository.teambuilding.TeamProfileTeamBuildingFieldRepository; import liaison.linkit.team.domain.teambuilding.TeamProfileTeamBuildingField; diff --git a/src/main/java/liaison/linkit/wish/business/PrivateWishMapper.java b/src/main/java/liaison/linkit/wish/business/PrivateWishMapper.java index 7930d106..ff013566 100644 --- a/src/main/java/liaison/linkit/wish/business/PrivateWishMapper.java +++ b/src/main/java/liaison/linkit/wish/business/PrivateWishMapper.java @@ -12,8 +12,11 @@ public PrivateWish toPrivate(final Profile profile, final Member member) { return PrivateWish.builder().profile(profile).member(member).build(); } - public PrivateWishResponseDTO.AddPrivateWish toAddPrivateWish() { - return PrivateWishResponseDTO.AddPrivateWish.builder().build(); + public PrivateWishResponseDTO.AddPrivateWish toAddPrivateWish(final PrivateWish privateWish) { + + return PrivateWishResponseDTO.AddPrivateWish.builder() + .createdAt(privateWish.getCreatedAt()) + .build(); } public PrivateWishResponseDTO.RemovePrivateWish toRemovePrivateWish() { diff --git a/src/main/java/liaison/linkit/wish/business/WishService.java b/src/main/java/liaison/linkit/wish/business/WishService.java index 97e05efa..9eadf51d 100644 --- a/src/main/java/liaison/linkit/wish/business/WishService.java +++ b/src/main/java/liaison/linkit/wish/business/WishService.java @@ -5,6 +5,7 @@ import static liaison.linkit.global.exception.ExceptionCode.NOT_FOUND_TEAM_MINI_PROFILE_BY_TEAM_PROFILE_ID; import static liaison.linkit.global.exception.ExceptionCode.NOT_FOUND_TEAM_PROFILE_ID; +import java.time.LocalDateTime; import java.util.List; import java.util.Objects; import liaison.linkit.global.exception.BadRequestException; @@ -13,7 +14,6 @@ import liaison.linkit.member.implement.MemberBasicInformQueryAdapter; import liaison.linkit.member.implement.MemberQueryAdapter; import liaison.linkit.profile.domain.Profile; -import liaison.linkit.profile.domain.miniProfile.MiniProfile; import liaison.linkit.profile.domain.miniProfile.MiniProfileKeyword; import liaison.linkit.profile.domain.repository.jobRole.ProfileJobRoleRepository; import liaison.linkit.profile.domain.repository.miniProfile.MiniProfileKeywordRepository; @@ -21,7 +21,6 @@ import liaison.linkit.profile.domain.role.ProfileJobRole; import liaison.linkit.profile.implement.ProfileQueryAdapter; import liaison.linkit.search.dto.response.browseAfterLogin.BrowseMiniProfileResponse; -import liaison.linkit.team.domain.TeamProfile; import liaison.linkit.team.domain.announcement.TeamMemberAnnouncement; import liaison.linkit.team.domain.announcement.TeamMemberAnnouncementJobRole; import liaison.linkit.team.domain.announcement.TeamMemberAnnouncementSkill; @@ -87,24 +86,24 @@ public class WishService { private final TeamMemberAnnouncementJobRoleRepository teamMemberAnnouncementJobRoleRepository; private final TeamMemberAnnouncementSkillRepository teamMemberAnnouncementSkillRepository; - private TeamProfile getTeamProfile(final Long memberId) { + @Transactional(readOnly = true) + public TeamProfile getTeamProfile(final Long memberId) { return teamProfileRepository.findByMemberId(memberId) .orElseThrow(() -> new BadRequestException(NOT_FOUND_TEAM_PROFILE_ID)); } - @Transactional + // 내 프로필 찜하기 메서드 public PrivateWishResponseDTO.AddPrivateWish createWishToPrivateProfile(final Long memberId, final Long profileId) { final Member member = memberQueryAdapter.findById(memberId); final Profile profile = profileQueryAdapter.findById(profileId); if (Objects.equals(profileQueryAdapter.findByMemberId(memberId).getId(), profile.getId())) { throw ForbiddenPrivateWishException.EXCEPTION; } - privateWishCommandAdapter.create(new PrivateWish(null, member, profile)); + final PrivateWish createdPrivateWish = privateWishCommandAdapter.create(new PrivateWish(null, member, profile, LocalDateTime.now())); member.addPrivateWishCount(); - return privateWishMapper.toAddPrivateWish(); + return privateWishMapper.toAddPrivateWish(createdPrivateWish); } - // 팀원 공고 찜하기 메서드 public TeamWishResponseDTO.AddTeamWish createWishToTeamProfile(final Long memberId, final Long teamMemberAnnouncementId) { final Member member = memberQueryAdapter.findById(memberId); diff --git a/src/main/java/liaison/linkit/wish/domain/PrivateWish.java b/src/main/java/liaison/linkit/wish/domain/PrivateWish.java index 5b208d7b..21fc3187 100644 --- a/src/main/java/liaison/linkit/wish/domain/PrivateWish.java +++ b/src/main/java/liaison/linkit/wish/domain/PrivateWish.java @@ -2,7 +2,6 @@ import static jakarta.persistence.FetchType.LAZY; import static jakarta.persistence.GenerationType.IDENTITY; -import static lombok.AccessLevel.PROTECTED; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -10,29 +9,27 @@ import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; -import liaison.linkit.global.BaseEntity; +import java.time.LocalDateTime; import liaison.linkit.member.domain.Member; import liaison.linkit.profile.domain.Profile; +import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import org.hibernate.annotations.SQLRestriction; +import org.springframework.data.annotation.CreatedDate; @Entity @Getter @Builder -@NoArgsConstructor(access = PROTECTED) +@NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor -@SQLRestriction("status = 'USABLE'") -public class PrivateWish extends BaseEntity { +public class PrivateWish { + @Id @GeneratedValue(strategy = IDENTITY) - @Column(name = "private_wish_id") private Long id; - // 찜한 주체의 ID - // 찜 요청을 보낸 사람의 아이디가 외래키로 작동한다. @ManyToOne(fetch = LAZY) @JoinColumn(name = "member_id") private Member member; @@ -41,4 +38,8 @@ public class PrivateWish extends BaseEntity { @ManyToOne(fetch = LAZY) @JoinColumn(name = "profile_id") private Profile profile; + + @Column(updatable = false) + @CreatedDate + private LocalDateTime createdAt; } diff --git a/src/main/java/liaison/linkit/wish/domain/TeamMemberAnnouncementWish.java b/src/main/java/liaison/linkit/wish/domain/TeamMemberAnnouncementWish.java new file mode 100644 index 00000000..4250a30d --- /dev/null +++ b/src/main/java/liaison/linkit/wish/domain/TeamMemberAnnouncementWish.java @@ -0,0 +1,44 @@ +package liaison.linkit.wish.domain; + +import static jakarta.persistence.FetchType.LAZY; +import static jakarta.persistence.GenerationType.IDENTITY; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import java.time.LocalDateTime; +import liaison.linkit.member.domain.Member; +import liaison.linkit.team.domain.announcement.TeamMemberAnnouncement; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.CreatedDate; + +@Entity +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class TeamMemberAnnouncementWish { + + @Id + @GeneratedValue(strategy = IDENTITY) + private Long id; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "member_id") + private Member member; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "team_member_announcement_id") + private TeamMemberAnnouncement teamMemberAnnouncement; + + @Column(updatable = false) + @CreatedDate + private LocalDateTime createdAt; +} diff --git a/src/main/java/liaison/linkit/wish/domain/TeamWish.java b/src/main/java/liaison/linkit/wish/domain/TeamWish.java index edf33b96..40d2fb06 100644 --- a/src/main/java/liaison/linkit/wish/domain/TeamWish.java +++ b/src/main/java/liaison/linkit/wish/domain/TeamWish.java @@ -2,7 +2,6 @@ import static jakarta.persistence.FetchType.LAZY; import static jakarta.persistence.GenerationType.IDENTITY; -import static lombok.AccessLevel.PROTECTED; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -10,35 +9,36 @@ import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; -import liaison.linkit.global.BaseEntity; +import java.time.LocalDateTime; import liaison.linkit.member.domain.Member; -import liaison.linkit.team.domain.announcement.TeamMemberAnnouncement; +import liaison.linkit.team.domain.Team; +import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import org.hibernate.annotations.SQLRestriction; +import org.springframework.data.annotation.CreatedDate; @Entity @Getter @Builder -@NoArgsConstructor(access = PROTECTED) +@NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor -@SQLRestriction("status = 'USABLE'") -public class TeamWish extends BaseEntity { +public class TeamWish { + @Id @GeneratedValue(strategy = IDENTITY) - @Column(name = "team_wish_id") private Long id; - // 찜한 주체의 ID - // 찜 요청을 보낸 사람의 아이디가 외래키로 작동한다. @ManyToOne(fetch = LAZY) @JoinColumn(name = "member_id") private Member member; - // 찜하기 한 타겟 팀원 공고 ID @ManyToOne(fetch = LAZY) - @JoinColumn(name = "team_member_announcement_id") - private TeamMemberAnnouncement teamMemberAnnouncement; + @JoinColumn(name = "team_id") + private Team team; + + @Column(updatable = false) + @CreatedDate + private LocalDateTime createdAt; } diff --git a/src/main/java/liaison/linkit/wish/presentation/WishController.java b/src/main/java/liaison/linkit/wish/presentation/WishController.java index 84d8e721..d17fd201 100644 --- a/src/main/java/liaison/linkit/wish/presentation/WishController.java +++ b/src/main/java/liaison/linkit/wish/presentation/WishController.java @@ -36,6 +36,7 @@ public CommonResponse createWishToPrivate return CommonResponse.onSuccess(wishService.createWishToPrivateProfile(accessor.getMemberId(), profileId)); } + // 팀원 공고 찜하기 (미확정 09.20) @PostMapping("/wish/team/profile/{teamMemberAnnouncementId}") @MemberOnly diff --git a/src/main/java/liaison/linkit/wish/presentation/dto/privateWish/PrivateWishResponseDTO.java b/src/main/java/liaison/linkit/wish/presentation/dto/privateWish/PrivateWishResponseDTO.java index fd6b6ee1..a1efca85 100644 --- a/src/main/java/liaison/linkit/wish/presentation/dto/privateWish/PrivateWishResponseDTO.java +++ b/src/main/java/liaison/linkit/wish/presentation/dto/privateWish/PrivateWishResponseDTO.java @@ -1,6 +1,7 @@ package liaison.linkit.wish.presentation.dto.privateWish; import com.fasterxml.jackson.annotation.JsonProperty; +import java.time.LocalDateTime; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; @@ -18,6 +19,8 @@ public static class AddPrivateWish { @Builder.Default @JsonProperty("isPrivateWish") private boolean like = true; + + private LocalDateTime createdAt; } @Builder @@ -28,5 +31,7 @@ public static class RemovePrivateWish { @Builder.Default @JsonProperty("isPrivateWish") private boolean like = false; + + private LocalDateTime deletedAt; } } diff --git a/src/main/resources/csv/degree.csv b/src/main/resources/csv/degree.csv deleted file mode 100644 index 68013fae..00000000 --- a/src/main/resources/csv/degree.csv +++ /dev/null @@ -1,4 +0,0 @@ -졸업 -재학 -휴학 -중퇴 diff --git a/src/test/java/liaison/linkit/admin/presentation/AdminLoginControllerTest.java b/src/test/java/liaison/linkit/admin/presentation/AdminLoginControllerTest.java deleted file mode 100644 index 4c9fa408..00000000 --- a/src/test/java/liaison/linkit/admin/presentation/AdminLoginControllerTest.java +++ /dev/null @@ -1,197 +0,0 @@ -package liaison.linkit.admin.presentation; - -import com.fasterxml.jackson.databind.ObjectMapper; -import jakarta.servlet.http.Cookie; -import liaison.linkit.admin.domain.AdminMember; -import liaison.linkit.admin.domain.type.AdminType; -import liaison.linkit.admin.dto.request.AdminLoginRequest; -import liaison.linkit.admin.service.AdminLoginService; -import liaison.linkit.global.ControllerTest; -import liaison.linkit.login.domain.MemberTokens; -import liaison.linkit.login.dto.AccessTokenResponse; -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.restdocs.AutoConfigureRestDocs; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.data.jpa.mapping.JpaMetamodelMappingContext; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.restdocs.payload.JsonFieldType; -import org.springframework.test.web.servlet.MvcResult; -import org.springframework.test.web.servlet.ResultActions; - -import java.util.Optional; - -import static liaison.linkit.admin.domain.type.AdminType.ADMIN; -import static liaison.linkit.global.restdocs.RestDocsConfiguration.field; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.*; -import static org.springframework.http.HttpHeaders.AUTHORIZATION; -import static org.springframework.restdocs.cookies.CookieDocumentation.cookieWithName; -import static org.springframework.restdocs.cookies.CookieDocumentation.requestCookies; -import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; -import static org.springframework.restdocs.headers.HeaderDocumentation.requestHeaders; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.delete; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post; -import static org.springframework.restdocs.payload.PayloadDocumentation.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -@WebMvcTest(AdminLoginController.class) -@MockBean(JpaMetamodelMappingContext.class) -@AutoConfigureRestDocs -class AdminLoginControllerTest extends ControllerTest { - - private final static String REFRESH_TOKEN = "refreshToken"; - private final static String ACCESS_TOKEN = "accessToken"; - private final static String RENEW_ACCESS_TOKEN = "I'mNewAccessToken!"; - - @Autowired - private ObjectMapper objectMapper; - - @MockBean - private AdminLoginService adminLoginService; - - @DisplayName("관리자 로그인을 할 수 있다.") - @Test - void login() throws Exception { - // given - final AdminLoginRequest adminLoginRequest = new AdminLoginRequest("username", "password"); - final MemberTokens memberTokens = new MemberTokens(REFRESH_TOKEN, ACCESS_TOKEN); - - when(adminLoginService.login(any(AdminLoginRequest.class))) - .thenReturn(memberTokens); - - final ResultActions resultActions = mockMvc.perform(post("/admin/login") - .contentType(MediaType.APPLICATION_JSON) - .content(objectMapper.writeValueAsString(adminLoginRequest)) - ); - - // when - final MvcResult mvcResult = resultActions.andExpect(status().isCreated()) - .andDo(restDocs.document( - requestFields( - fieldWithPath("username") - .type(JsonFieldType.STRING) - .description("사용자 이름") - .attributes(field("constraint", "문자열")), - fieldWithPath("password") - .type(JsonFieldType.STRING) - .description("비밀번호") - .attributes(field("constraint", "문자열")) - ), - responseFields( - fieldWithPath("accessToken") - .type(JsonFieldType.STRING) - .description("access token") - .attributes(field("constraint", "문자열(jwt)")) - ) - )) - .andReturn(); - - final AccessTokenResponse expected = new AccessTokenResponse(memberTokens.getAccessToken()); - - final AccessTokenResponse actual = objectMapper.readValue( - mvcResult.getResponse().getContentAsString(), - AccessTokenResponse.class - ); - - // then - assertThat(actual).usingRecursiveComparison().isEqualTo(expected); - } - - @DisplayName("accessToken 재발급을 통해 관리자 로그인을 연장할 수 있다.") - @Test - void extendLogin() throws Exception { - // given - given(adminMemberRepository.existsByIdAndAdminType(anyLong(), any(AdminType.class))) - .willReturn(false); - - final MemberTokens memberTokens = new MemberTokens(REFRESH_TOKEN, RENEW_ACCESS_TOKEN); - final Cookie cookie = new Cookie("refresh-token", memberTokens.getRefreshToken()); - - when(adminLoginService.renewalAccessToken(REFRESH_TOKEN, ACCESS_TOKEN)) - .thenReturn(RENEW_ACCESS_TOKEN); - - // when - final ResultActions resultActions = mockMvc.perform(post("/admin/token") - .contentType(MediaType.APPLICATION_JSON) - .header(AUTHORIZATION, ACCESS_TOKEN) - .cookie(cookie) - ); - - final MvcResult mvcResult = resultActions.andExpect(status().isCreated()) - .andDo(restDocs.document( - requestCookies( - cookieWithName("refresh-token") - .description("갱신 토큰") - ), - requestHeaders( - headerWithName("Authorization") - .description("access token") - .attributes(field("constraint", "문자열(jwt)")) - ), - responseFields( - fieldWithPath("accessToken") - .type(JsonFieldType.STRING) - .description("access token") - .attributes(field("constraint", "문자열(jwt)")) - ) - )) - .andReturn(); - - final AccessTokenResponse expected = new AccessTokenResponse(memberTokens.getAccessToken()); - - final AccessTokenResponse actual = objectMapper.readValue( - mvcResult.getResponse().getContentAsString(), - AccessTokenResponse.class - ); - - // then - assertThat(actual).usingRecursiveComparison().isEqualTo(expected); - } - - @DisplayName("관리자 멤버의 refreshToken을 삭제하고 로그아웃 할 수 있다.") - @Test - void logout() throws Exception { - // given - given(refreshTokenRepository.existsById(any())).willReturn(true); - doNothing().when(jwtProvider).validateTokens(any()); - given(jwtProvider.getSubject(any())).willReturn("1"); - doNothing().when(adminLoginService).removeRefreshToken(anyString()); - given(adminMemberRepository.findById(1L)).willReturn(Optional.of(new AdminMember( - 1L, - "username", - "password", - ADMIN - ))); - - final MemberTokens memberTokens = new MemberTokens(REFRESH_TOKEN, RENEW_ACCESS_TOKEN); - final Cookie cookie = new Cookie("refresh-token", memberTokens.getRefreshToken()); - - // when - final ResultActions resultActions = mockMvc.perform(delete("/admin/logout") - .header(AUTHORIZATION, ACCESS_TOKEN) - .cookie(cookie) - ); - - resultActions.andExpect(status().isNoContent()) - .andDo(restDocs.document( - requestCookies( - cookieWithName("refresh-token") - .description("갱신 토큰") - ), - requestHeaders( - headerWithName("Authorization") - .description("access token") - .attributes(field("constraint", "문자열(jwt)")) - ) - )); - - // then - verify(adminLoginService).removeRefreshToken(anyString()); - } -} diff --git a/src/test/java/liaison/linkit/admin/presentation/AdminMemberControllerTest.java b/src/test/java/liaison/linkit/admin/presentation/AdminMemberControllerTest.java deleted file mode 100644 index f57ec0d3..00000000 --- a/src/test/java/liaison/linkit/admin/presentation/AdminMemberControllerTest.java +++ /dev/null @@ -1,173 +0,0 @@ -package liaison.linkit.admin.presentation; - -import com.fasterxml.jackson.databind.ObjectMapper; -import jakarta.servlet.http.Cookie; -import liaison.linkit.admin.domain.AdminMember; -import liaison.linkit.admin.domain.type.AdminType; -import liaison.linkit.admin.dto.request.AdminMemberCreateRequest; -import liaison.linkit.admin.dto.request.PasswordUpdateRequest; -import liaison.linkit.admin.dto.response.AdminMemberResponse; -import liaison.linkit.admin.service.AdminMemberService; -import liaison.linkit.global.ControllerTest; -import liaison.linkit.login.domain.MemberTokens; -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.restdocs.AutoConfigureRestDocs; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.data.jpa.mapping.JpaMetamodelMappingContext; -import org.springframework.http.MediaType; -import org.springframework.restdocs.payload.JsonFieldType; -import org.springframework.test.web.servlet.MockMvc; - -import java.util.List; -import java.util.Optional; - -import static liaison.linkit.admin.domain.type.AdminType.MASTER; -import static liaison.linkit.global.restdocs.RestDocsConfiguration.field; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.doNothing; -import static org.springframework.http.HttpHeaders.AUTHORIZATION; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.*; -import static org.springframework.restdocs.payload.PayloadDocumentation.*; -import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; -import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; - -@WebMvcTest(AdminMemberController.class) -@MockBean(JpaMetamodelMappingContext.class) -@AutoConfigureRestDocs -class AdminMemberControllerTest extends ControllerTest { - - private static final MemberTokens MEMBER_TOKENS = new MemberTokens("refreshToken", "accessToken"); - private static final Cookie COOKIE = new Cookie("refresh-token", MEMBER_TOKENS.getRefreshToken()); - - @Autowired - private MockMvc mockMvc; - - @Autowired - private ObjectMapper objectMapper; - - @MockBean - private AdminMemberService adminMemberService; - - @BeforeEach - void setUp() { - given(refreshTokenRepository.existsById(any())).willReturn(true); - doNothing().when(jwtProvider).validateTokens(any()); - given(jwtProvider.getSubject(any())).willReturn("1"); - given(adminMemberRepository.findById(1L)).willReturn(Optional.of(new AdminMember( - 1L, - "username", - "password", - MASTER - ))); - } - - @DisplayName("관리자 멤버 목록을 조회한다.") - @Test - void getAdminMembers() throws Exception { - // given - final AdminMember adminMember = new AdminMember(1L, "adminUser", "password", AdminType.MASTER); - final AdminMemberResponse response = AdminMemberResponse.from(adminMember); - - given(adminMemberService.getAdminMembers()).willReturn(List.of(response)); - - // when & then - mockMvc.perform(get("/admin/members") - .header(AUTHORIZATION, MEMBER_TOKENS.getAccessToken()) - .cookie(COOKIE)) - .andExpect(status().isOk()) - .andExpect(jsonPath("$[0].id").value(response.getId())) - .andExpect(jsonPath("$[0].username").value(response.getUsername())) - .andExpect(jsonPath("$[0].adminType").value(response.getAdminType())) - .andDo(restDocs.document( - responseFields( - fieldWithPath("[].id") - .type(JsonFieldType.NUMBER) - .description("멤버 ID") - .attributes(field("constraint", "양의 정수")), - fieldWithPath("[].username") - .type(JsonFieldType.STRING) - .description("사용자 이름") - .attributes(field("constraint", "20자 이내의 문자열")), - fieldWithPath("[].adminType") - .type(JsonFieldType.STRING) - .description("관리자 유형") - .attributes(field("constraint", "ADMIN / MASTER")) - ) - )); - } - - @DisplayName("새로운 관리자 멤버를 생성한다.") - @Test - void createAdminMember() throws Exception { - // given - final AdminMemberCreateRequest request = new AdminMemberCreateRequest( - "newAdmin", - "password", - "ADMIN" - ); - given(adminMemberService.createAdminMember(any(AdminMemberCreateRequest.class))).willReturn(2L); - - // when & then - mockMvc.perform(post("/admin/members") - .header(AUTHORIZATION, MEMBER_TOKENS.getAccessToken()) - .cookie(COOKIE) - .contentType(MediaType.APPLICATION_JSON) - .content(objectMapper.writeValueAsString(request))) - .andExpect(status().isCreated()) - .andExpect(header().string("Location", "/admin/members/2")) - .andDo(restDocs.document( - requestFields( - fieldWithPath("username") - .type(JsonFieldType.STRING) - .description("사용자 이름") - .attributes(field("constraint", "20자 이내의 문자열")), - fieldWithPath("password") - .type(JsonFieldType.STRING) - .description("비밀번호") - .attributes(field("constraint", "4자이상 20자 이하의 문자열")), - fieldWithPath("adminType") - .type(JsonFieldType.STRING) - .description("관리자 유형") - .attributes(field("constraint", "4자이상 20자 이하의 문자열")) - ) - )); - } - - @DisplayName("관리자 멤버의 비밀번호를 업데이트한다.") - @Test - void updatePassword() throws Exception { - // given - final PasswordUpdateRequest request = new PasswordUpdateRequest("oldPassword", "newPassword"); - doNothing().when(adminMemberService).updatePassword(1L, request); - - // when & then - mockMvc.perform(patch("/admin/members/{memberId}/password", 1) - .header(AUTHORIZATION, MEMBER_TOKENS.getAccessToken()) - .cookie(COOKIE) - .contentType(MediaType.APPLICATION_JSON) - .content(objectMapper.writeValueAsString(request))) - .andExpect(status().isNoContent()) - .andDo(restDocs.document( - pathParameters( - parameterWithName("memberId") - .description("관리자 멤버 ID") - ), - requestFields( - fieldWithPath("currentPassword") - .type(JsonFieldType.STRING) - .description("현재 비밀번호") - .attributes(field("constraint", "4자이상 20자 이하의 문자열")), - fieldWithPath("newPassword") - .type(JsonFieldType.STRING) - .description("새 비밀번호") - .attributes(field("constraint", "4자이상 20자 이하의 문자열")) - ) - )); - } -} diff --git a/src/test/java/liaison/linkit/admin/service/AdminLoginServiceTest.java b/src/test/java/liaison/linkit/admin/service/AdminLoginServiceTest.java deleted file mode 100644 index b73e54ff..00000000 --- a/src/test/java/liaison/linkit/admin/service/AdminLoginServiceTest.java +++ /dev/null @@ -1,79 +0,0 @@ -package liaison.linkit.admin.service; - -import liaison.linkit.admin.domain.AdminMember; -import liaison.linkit.admin.domain.repository.AdminMemberRepository; -import liaison.linkit.admin.domain.type.AdminType; -import liaison.linkit.admin.dto.request.AdminLoginRequest; -import liaison.linkit.admin.infrastructure.PasswordEncoder; -import liaison.linkit.global.exception.AdminException; -import liaison.linkit.login.domain.MemberTokens; -import liaison.linkit.login.domain.repository.RefreshTokenRepository; -import liaison.linkit.login.infrastructure.BearerAuthorizationExtractor; -import liaison.linkit.login.infrastructure.JwtProvider; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import java.util.Optional; - -import static org.assertj.core.api.SoftAssertions.assertSoftly; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.when; - -@ExtendWith(MockitoExtension.class) -public class AdminLoginServiceTest { - @InjectMocks - private AdminLoginService adminLoginService; - - @Mock - private AdminMemberRepository adminMemberRepository; - - @Mock - private RefreshTokenRepository refreshTokenRepository; - - @Mock - private JwtProvider jwtProvider; - - @Mock - private BearerAuthorizationExtractor bearerAuthorizationExtractor; - - @Mock - private PasswordEncoder passwordEncoder; - - @Test - public void testLoginSuccess() { - // given - final AdminLoginRequest loginRequest = new AdminLoginRequest("user", "password"); - final AdminMember adminMember = new AdminMember(1L, "user", "password", AdminType.ADMIN); - final MemberTokens memberTokens = new MemberTokens("accessToken", "refreshToken"); - - when(adminMemberRepository.findByUsername(anyString())).thenReturn(Optional.of(adminMember)); - when(passwordEncoder.matches(anyString(), anyString())).thenReturn(true); - when(jwtProvider.generateLoginToken(anyString())).thenReturn(memberTokens); - - // when - final MemberTokens result = adminLoginService.login(loginRequest); - - // then - assertSoftly(softly -> { - softly.assertThat(result).isNotNull(); - softly.assertThat(memberTokens.getAccessToken()).isEqualTo(result.getAccessToken()); - softly.assertThat(memberTokens.getRefreshToken()).isEqualTo(result.getRefreshToken()); - }); - } - - @Test - public void testLoginFailure_InvalidPassword() { - // given - final AdminLoginRequest loginRequest = new AdminLoginRequest("user", "wrongpassword"); - final AdminMember adminMember = new AdminMember("user", "password", AdminType.ADMIN); - - when(adminMemberRepository.findByUsername(anyString())).thenReturn(Optional.of(adminMember)); - when(passwordEncoder.matches(anyString(), anyString())).thenReturn(false); - // when & then - assertThrows(AdminException.class, () -> adminLoginService.login(loginRequest)); - } -} diff --git a/src/test/java/liaison/linkit/admin/service/AdminMemberServiceTest.java b/src/test/java/liaison/linkit/admin/service/AdminMemberServiceTest.java deleted file mode 100644 index 1f7792ed..00000000 --- a/src/test/java/liaison/linkit/admin/service/AdminMemberServiceTest.java +++ /dev/null @@ -1,90 +0,0 @@ -package liaison.linkit.admin.service; - -import liaison.linkit.admin.domain.AdminMember; -import liaison.linkit.admin.domain.repository.AdminMemberRepository; -import liaison.linkit.admin.domain.type.AdminType; -import liaison.linkit.admin.dto.request.AdminMemberCreateRequest; -import liaison.linkit.admin.dto.request.PasswordUpdateRequest; -import liaison.linkit.admin.infrastructure.PasswordEncoder; -import liaison.linkit.global.exception.AdminException; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import java.util.Optional; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.verify; - -@ExtendWith(MockitoExtension.class) -public class AdminMemberServiceTest { - - @InjectMocks - private AdminMemberService adminMemberService; - - @Mock - private AdminMemberRepository adminMemberRepository; - - @Mock - private PasswordEncoder passwordEncoder; - - @DisplayName("관리자 멤버를 생성한 후 관리자 id를 반환한다.") - @Test - void createAdminMember() { - // given - final AdminMemberCreateRequest request = new AdminMemberCreateRequest( - "username", - "password", - "ADMIN" - ); - final AdminMember adminMember = new AdminMember(1L, "username", "password, ", AdminType.ADMIN); - - given(adminMemberRepository.existsByUsername("username")).willReturn(false); - given(adminMemberRepository.save(any(AdminMember.class))).willReturn(adminMember); - given(passwordEncoder.encode("password")).willReturn(anyString()); - // when - final Long actualId = adminMemberService.createAdminMember(request); - - // then - assertThat(actualId).isEqualTo(1L); - } - - @DisplayName("관리자 계정의 비밀번호를 변경한다.") - @Test - void updatePassword() { - // given - final PasswordUpdateRequest request = new PasswordUpdateRequest("password", "newPassword"); - final AdminMember adminMember = new AdminMember(1L, "username", "password", AdminType.ADMIN); - - given(adminMemberRepository.findById(anyLong())).willReturn(Optional.of(adminMember)); - given(passwordEncoder.matches(anyString(), anyString())).willReturn(true); - given(passwordEncoder.encode("newPassword")).willReturn(anyString()); - - // when - adminMemberService.updatePassword(adminMember.getId(), request); - - // then - verify(adminMemberRepository).save(any(AdminMember.class)); - } - - @DisplayName("기존 비밀번호가 일치하지 않으면 비밀번호를 변경할 수 없다.") - @Test - void updatePassword_invalidPassword() { - // given - final PasswordUpdateRequest request = new PasswordUpdateRequest("password", "newPassword"); - final AdminMember adminMember = new AdminMember(1L, "username", "password", AdminType.ADMIN); - - given(adminMemberRepository.findById(anyLong())).willReturn(Optional.of(adminMember)); - given(passwordEncoder.matches(anyString(), anyString())).willReturn(false); - - // when & then - assertThatThrownBy(() -> adminMemberService.updatePassword(adminMember.getId(), request)) - .isInstanceOf(AdminException.class); - } -} diff --git a/src/test/java/liaison/linkit/global/ControllerTest.java b/src/test/java/liaison/linkit/global/ControllerTest.java index 96a3ffb6..d1562b9e 100644 --- a/src/test/java/liaison/linkit/global/ControllerTest.java +++ b/src/test/java/liaison/linkit/global/ControllerTest.java @@ -1,16 +1,12 @@ package liaison.linkit.global; -import liaison.linkit.admin.AdminLoginArgumentResolver; -import liaison.linkit.admin.domain.repository.AdminMemberRepository; +import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; + import liaison.linkit.global.restdocs.RestDocsConfiguration; import liaison.linkit.login.LoginArgumentResolver; import liaison.linkit.login.domain.repository.RefreshTokenRepository; import liaison.linkit.login.infrastructure.BearerAuthorizationExtractor; import liaison.linkit.login.infrastructure.JwtProvider; -import liaison.linkit.member.domain.repository.member.MemberRepository; -import liaison.linkit.profile.browse.ProfileBrowseAccessInterceptor; -import liaison.linkit.profile.domain.repository.profile.ProfileRepository; -import liaison.linkit.team.domain.repository.teamProfile.TeamProfileRepository; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -24,8 +20,6 @@ import org.springframework.web.context.WebApplicationContext; import org.springframework.web.filter.CharacterEncodingFilter; -import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; - @Import(RestDocsConfiguration.class) @ExtendWith(RestDocumentationExtension.class) public abstract class ControllerTest { @@ -39,33 +33,12 @@ public abstract class ControllerTest { @Autowired protected LoginArgumentResolver loginArgumentResolver; - @Autowired - protected AdminLoginArgumentResolver adminLoginArgumentResolver; - - @Autowired - protected ProfileBrowseAccessInterceptor profileBrowseAccessInterceptor; - - @Autowired - protected MatchingAccessInterceptor matchingAccessInterceptor; - @MockBean protected JwtProvider jwtProvider; @MockBean protected RefreshTokenRepository refreshTokenRepository; - @MockBean - protected AdminMemberRepository adminMemberRepository; - - @MockBean - protected MemberRepository memberRepository; - - @MockBean - protected ProfileRepository profileRepository; - - @MockBean - protected TeamProfileRepository teamProfileRepository; - @MockBean BearerAuthorizationExtractor bearerExtractor; diff --git a/src/test/java/liaison/linkit/profile/presentation/AwardsControllerTest.java b/src/test/java/liaison/linkit/profile/presentation/ProfileAwardsControllerTest.java similarity index 98% rename from src/test/java/liaison/linkit/profile/presentation/AwardsControllerTest.java rename to src/test/java/liaison/linkit/profile/presentation/ProfileAwardsControllerTest.java index 8e3f3b82..99f4860d 100644 --- a/src/test/java/liaison/linkit/profile/presentation/AwardsControllerTest.java +++ b/src/test/java/liaison/linkit/profile/presentation/ProfileAwardsControllerTest.java @@ -42,7 +42,7 @@ @WebMvcTest(AwardsController.class) @MockBean(JpaMetamodelMappingContext.class) @AutoConfigureRestDocs -class AwardsControllerTest extends ControllerTest { +class ProfileAwardsControllerTest extends ControllerTest { private static final MemberTokens MEMBER_TOKENS = new MemberTokens("refreshToken", "accessToken"); private static final Cookie COOKIE = new Cookie("refresh-token", MEMBER_TOKENS.getRefreshToken()); @@ -109,10 +109,10 @@ private ResultActions performPostAwardRequest(final AwardsCreateRequest awardsCr private ResultActions performPostAwardsRequest(final List createRequests) throws Exception { return mockMvc.perform( post("/private/awards") - .header(AUTHORIZATION, MEMBER_TOKENS.getAccessToken()) - .cookie(COOKIE) - .contentType(APPLICATION_JSON) - .content(objectMapper.writeValueAsString(createRequests)) + .header(AUTHORIZATION, MEMBER_TOKENS.getAccessToken()) + .cookie(COOKIE) + .contentType(APPLICATION_JSON) + .content(objectMapper.writeValueAsString(createRequests)) ); } @@ -246,7 +246,6 @@ void createAward() throws Exception { } - @DisplayName("수상 항목 리스트를 생성할 수 있다.") @Test void createAwards() throws Exception { diff --git a/src/test/java/liaison/linkit/profile/presentation/ProfileControllerTest.java b/src/test/java/liaison/linkit/profile/presentation/ProfileControllerTest.java index 5a8bcbf3..aee4360b 100644 --- a/src/test/java/liaison/linkit/profile/presentation/ProfileControllerTest.java +++ b/src/test/java/liaison/linkit/profile/presentation/ProfileControllerTest.java @@ -1,17 +1,35 @@ package liaison.linkit.profile.presentation; +import static liaison.linkit.global.restdocs.RestDocsConfiguration.field; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.doNothing; +import static org.springframework.http.HttpHeaders.AUTHORIZATION; +import static org.springframework.http.MediaType.APPLICATION_JSON; +import static org.springframework.restdocs.cookies.CookieDocumentation.cookieWithName; +import static org.springframework.restdocs.cookies.CookieDocumentation.requestCookies; +import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; +import static org.springframework.restdocs.headers.HeaderDocumentation.requestHeaders; +import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; +import static org.springframework.restdocs.payload.PayloadDocumentation.requestFields; +import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; +import static org.springframework.restdocs.payload.PayloadDocumentation.subsectionWithPath; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + import com.fasterxml.jackson.databind.ObjectMapper; import groovy.util.logging.Slf4j; import jakarta.servlet.http.Cookie; +import java.util.Arrays; +import java.util.List; import liaison.linkit.global.ControllerTest; import liaison.linkit.login.domain.MemberTokens; -import liaison.linkit.member.business.MemberService; import liaison.linkit.profile.dto.request.IntroductionRequest; import liaison.linkit.profile.dto.response.ProfileIntroductionResponse; import liaison.linkit.profile.dto.response.ProfileResponse; import liaison.linkit.profile.dto.response.antecedents.AntecedentsResponse; -import liaison.linkit.profile.dto.response.attach.AttachResponse; -import liaison.linkit.profile.dto.response.attach.AttachUrlResponse; import liaison.linkit.profile.dto.response.awards.AwardsResponse; import liaison.linkit.profile.dto.response.completion.CompletionResponse; import liaison.linkit.profile.dto.response.education.EducationResponse; @@ -20,7 +38,15 @@ import liaison.linkit.profile.dto.response.onBoarding.JobAndSkillResponse; import liaison.linkit.profile.dto.response.profileRegion.ProfileRegionResponse; import liaison.linkit.profile.dto.response.teamBuilding.ProfileTeamBuildingFieldResponse; -import liaison.linkit.profile.service.*; +import liaison.linkit.profile.service.AntecedentsService; +import liaison.linkit.profile.service.AwardsService; +import liaison.linkit.profile.service.CompletionService; +import liaison.linkit.profile.service.EducationService; +import liaison.linkit.profile.service.MiniProfileService; +import liaison.linkit.profile.service.ProfileOnBoardingService; +import liaison.linkit.profile.service.ProfileRegionService; +import liaison.linkit.profile.service.ProfileService; +import liaison.linkit.profile.service.TeamBuildingFieldService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -32,23 +58,6 @@ import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.ResultActions; -import java.util.Arrays; -import java.util.List; - -import static liaison.linkit.global.restdocs.RestDocsConfiguration.field; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.doNothing; -import static org.springframework.http.HttpHeaders.AUTHORIZATION; -import static org.springframework.http.MediaType.APPLICATION_JSON; -import static org.springframework.restdocs.cookies.CookieDocumentation.cookieWithName; -import static org.springframework.restdocs.cookies.CookieDocumentation.requestCookies; -import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; -import static org.springframework.restdocs.headers.HeaderDocumentation.requestHeaders; -import static org.springframework.restdocs.payload.PayloadDocumentation.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - @WebMvcTest(ProfileController.class) @MockBean(JpaMetamodelMappingContext.class) @AutoConfigureRestDocs @@ -61,8 +70,6 @@ class ProfileControllerTest extends ControllerTest { @Autowired private ObjectMapper objectMapper; @MockBean - private MemberService memberService; - @MockBean private ProfileService profileService; @MockBean private ProfileOnBoardingService profileOnBoardingService; @@ -71,8 +78,6 @@ class ProfileControllerTest extends ControllerTest { @MockBean private CompletionService completionService; @MockBean - private ProfileSkillService profileSkillService; - @MockBean private TeamBuildingFieldService teamBuildingFieldService; @MockBean private AntecedentsService antecedentsService; @@ -81,8 +86,6 @@ class ProfileControllerTest extends ControllerTest { @MockBean private AwardsService awardsService; @MockBean - private AttachService attachService; - @MockBean private ProfileRegionService profileRegionService; @BeforeEach @@ -296,35 +299,6 @@ void getProfile() throws Exception { final List awardsResponses = Arrays.asList(firstAwardsResponse, secondAwardsResponse); given(awardsService.getAllAwards(1L)).willReturn(awardsResponses); - // 10. 첨부 - final AttachUrlResponse firstAttachUrlResponse = new AttachUrlResponse( - 1L, - "깃허브", - "https://github.com/TEAM-LIAISON" - ); - - final AttachUrlResponse secondAttachUrlResponse = new AttachUrlResponse( - 2L, - "노션", - "https://www.notion.so/ko-kr" - ); - -// final AttachFileResponse firstAttachFileResponse = new AttachFileResponse( -// 1L, -// "A4+-=1.pdf", -// "https://linkit-dev-env-bucket.s3.ap-northeast-1.amazonaws.com/files/A4+-+1.pdf" -// ); - - final List attachUrlResponseList = Arrays.asList(firstAttachUrlResponse, - secondAttachUrlResponse); -// final List attachFileResponseList = Arrays.asList(firstAttachFileResponse); - final AttachResponse attachResponses = new AttachResponse( - attachUrlResponseList -// attachFileResponseList - ); - - given(attachService.getAttachList(1L)).willReturn(attachResponses); - final ProfileResponse profileResponse = new ProfileResponse( isPrivateProfileEssential, miniProfileResponse, @@ -335,8 +309,7 @@ void getProfile() throws Exception { profileRegionResponse, antecedentsResponses, educationResponses, - awardsResponses, - attachResponses + awardsResponses ); given(profileService.getProfileResponse( @@ -349,8 +322,7 @@ void getProfile() throws Exception { profileRegionResponse, antecedentsResponses, educationResponses, - awardsResponses, - attachResponses + awardsResponses )).willReturn(profileResponse); // when diff --git a/src/test/java/liaison/linkit/profile/presentation/EducationControllerTest.java b/src/test/java/liaison/linkit/profile/presentation/ProfileEducationControllerTest.java similarity index 99% rename from src/test/java/liaison/linkit/profile/presentation/EducationControllerTest.java rename to src/test/java/liaison/linkit/profile/presentation/ProfileEducationControllerTest.java index cbe9b9be..475725c3 100644 --- a/src/test/java/liaison/linkit/profile/presentation/EducationControllerTest.java +++ b/src/test/java/liaison/linkit/profile/presentation/ProfileEducationControllerTest.java @@ -41,7 +41,7 @@ @WebMvcTest(EducationController.class) @MockBean(JpaMetamodelMappingContext.class) @AutoConfigureRestDocs -public class EducationControllerTest extends ControllerTest { +public class ProfileEducationControllerTest extends ControllerTest { private static final MemberTokens MEMBER_TOKENS = new MemberTokens("refreshToken", "accessToken"); private static final Cookie COOKIE = new Cookie("refresh-token", MEMBER_TOKENS.getRefreshToken()); diff --git a/src/test/java/liaison/linkit/team/presentation/BrowseTeamProfileControllerTest.java b/src/test/java/liaison/linkit/team/presentation/BrowseTeamProfileControllerTest.java index b6680fbc..e0f49309 100644 --- a/src/test/java/liaison/linkit/team/presentation/BrowseTeamProfileControllerTest.java +++ b/src/test/java/liaison/linkit/team/presentation/BrowseTeamProfileControllerTest.java @@ -37,7 +37,6 @@ import liaison.linkit.team.service.TeamMemberAnnouncementService; import liaison.linkit.team.service.TeamMemberIntroductionService; import liaison.linkit.team.service.TeamMiniProfileService; -import liaison.linkit.team.service.TeamProfileService; import liaison.linkit.team.service.TeamProfileTeamBuildingFieldService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/liaison/linkit/team/presentation/TeamProfileControllerTest.java b/src/test/java/liaison/linkit/team/presentation/TeamProfileControllerTest.java index 903f4fd0..98935ad8 100644 --- a/src/test/java/liaison/linkit/team/presentation/TeamProfileControllerTest.java +++ b/src/test/java/liaison/linkit/team/presentation/TeamProfileControllerTest.java @@ -42,7 +42,6 @@ import liaison.linkit.team.service.TeamMemberAnnouncementService; import liaison.linkit.team.service.TeamMemberIntroductionService; import liaison.linkit.team.service.TeamMiniProfileService; -import liaison.linkit.team.service.TeamProfileService; import liaison.linkit.team.service.TeamProfileTeamBuildingFieldService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName;