diff --git a/src/Apis/recruitment.ts b/src/Apis/recruitment.ts index 6244fbc3..cccba94e 100644 --- a/src/Apis/recruitment.ts +++ b/src/Apis/recruitment.ts @@ -48,6 +48,6 @@ export const getRecruitmentDetail = (recruitmentId: number): Promise<{ data: { d export const deleteRecruitment = (studyId: number): Promise<{ data: { data: RecruitmentDetail } }> => httpClient.get(API_END_POINT.DELETE_RECRUITMENT(studyId)); -// ??? +// 모집공고 마감 export const closeRecruitment = (studyId: number) => httpClient.patch(API_END_POINT.CLOSE_RECRUITMENT(studyId), null, { params: { status: 'RECRUITED' } }); diff --git a/src/Assets/Profile.stories.ts b/src/Assets/Profile.stories.ts deleted file mode 100644 index 8e673433..00000000 --- a/src/Assets/Profile.stories.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -import { Profile } from './Profile'; - -const meta = { - component: Profile, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -export const Primary: Story = {} satisfies Story; - -/** 이메일 주소가 있을 경우, 해당 이메일 주소의 Gravatar 이미지를 불러옵니다. */ -export const Gravatar: Story = { - args: { - email: 'support@ludo.study', - }, -} satisfies Story; diff --git a/src/Assets/icons/clip.svg b/src/Assets/icons/clip.svg new file mode 100644 index 00000000..15c0125d --- /dev/null +++ b/src/Assets/icons/clip.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/Assets/images/loading.gif b/src/Assets/images/loading.gif new file mode 100644 index 00000000..51095804 Binary files /dev/null and b/src/Assets/images/loading.gif differ diff --git a/src/Assets/index.tsx b/src/Assets/index.tsx index bfc5048e..0970f12e 100644 --- a/src/Assets/index.tsx +++ b/src/Assets/index.tsx @@ -35,6 +35,7 @@ export { default as NextArrow } from './icons/nextArrow.svg?react'; export { default as CreateStudy } from './icons/createstudy.svg?react'; export { default as DefaultStudyThumbnail } from './icons/studyThumbnail.svg'; export { default as SearchRecruitment } from './icons/recruitment.svg?react'; +export { default as Clip } from './icons/clip.svg?react'; // Logo export { default as BlankLogo } from './images/blank-logo.webp'; @@ -47,7 +48,7 @@ export { default as NotFound } from './images/character1.webp'; export { default as LoginFail } from './images/character2.webp'; export { default as SignUpFail } from './images/character3.webp'; export { default as ErrorBoundaryImage } from './images/character4.webp'; -export { default as LoadingImage } from './images/character1.webp'; +export { default as LoadingImage } from './images/loading.gif'; // Background export { default as SignUpBackground } from './images/background1.webp'; diff --git a/src/Components/LoadingSpinner/index.tsx b/src/Components/LoadingSpinner/index.tsx index 7af30dc8..a32f58f0 100644 --- a/src/Components/LoadingSpinner/index.tsx +++ b/src/Components/LoadingSpinner/index.tsx @@ -4,7 +4,7 @@ import styled from 'styled-components'; export const LoadingSpinner = () => { return ( - + loading spinner ); }; @@ -19,26 +19,3 @@ const LoadingSpinnerBox = styled.div` justify-content: center; align-items: center; `; - -const SpinnerImg = styled.img` - opacity: 0.7; - animation: rotateImage 1.2s linear infinite; - transform-origin: 50% 50%; - @keyframes rotateImage { - 0% { - transform: rotate(0deg); - } - 25% { - transform: rotate(20deg); - } - 50% { - transform: rotate(0deg); - } - 75% { - transform: rotate(-20deg); - } - 100% { - transform: rotate(0deg); - } - } -`; diff --git a/src/Components/Modal/RecruitmentDetailModal/RecruitmentDetailModal.stories.ts b/src/Components/Modal/RecruitmentDetailModal/RecruitmentDetailModal.stories.ts new file mode 100644 index 00000000..011ec889 --- /dev/null +++ b/src/Components/Modal/RecruitmentDetailModal/RecruitmentDetailModal.stories.ts @@ -0,0 +1,16 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import { RecruitmentDetailModal } from '.'; + +const meta = { + component: RecruitmentDetailModal, + args: { + handleModal: () => {}, + recruitmentId: 1, + }, +} satisfies Meta; + +export default meta; + +type Story = StoryObj; + +export const Primary: Story = {}; diff --git a/src/Components/Modal/RecruitmentDetailModal/index.tsx b/src/Components/Modal/RecruitmentDetailModal/index.tsx new file mode 100644 index 00000000..6144fd5a --- /dev/null +++ b/src/Components/Modal/RecruitmentDetailModal/index.tsx @@ -0,0 +1,355 @@ +import { Close, Loading, MemberImage } from '@/Assets'; +import Button from '@/Components/Common/Button'; +import { ColumnDivider } from '@/Components/Common/Divider/ColumnDivider'; +import { RowDivider } from '@/Components/Common/Divider/RowDivider'; +import { InfoField } from '@/Components/Common/InfoField'; +import { useCloseRecruitmentMutation } from '@/Hooks/recruitments/useCloseRecruitmentMutation'; +import { useRecruitmentDetail } from '@/Hooks/recruitments/useRecruitmentDetail'; +import { useOutSideClick } from '@/Hooks/useOutsideClick'; +import { media } from '@/Styles/theme'; +import { Position, Stack } from '@/Types/study'; +import { dateFormatter, getDayById, getPeriod, isEdited } from '@/utils/date'; +import { SetStateAction, useRef } from 'react'; +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; + +export interface RecruitmentDetailModlProps { + recruitmentId: number; + handleModal: React.Dispatch>; +} + +export const RecruitmentDetailModal = ({ recruitmentId, handleModal }: RecruitmentDetailModlProps) => { + const { data: recruitmentDetail, isLoading } = useRecruitmentDetail(recruitmentId); + const navigate = useNavigate(); + const studyInfo = recruitmentDetail?.study; + const recruitmentInfo = recruitmentDetail?.recruitment; + + const { mutate: closeRecruitmentMutate } = useCloseRecruitmentMutation(studyInfo?.id); + + const modalRef = useRef(null); + + useOutSideClick(modalRef, () => handleModal(false)); + + return ( + e.stopPropagation()}> + {isLoading ? ( + + ) : ( + + + + {recruitmentInfo?.title} + + {studyInfo?.owner?.nickname} + + {dateFormatter(recruitmentInfo?.createdDateTime)} + + {isEdited(recruitmentInfo?.createdDateTime, recruitmentInfo?.updatedDateTime) ? '수정됨' : '생성'} + + + + { + e.stopPropagation(); + handleModal(false); + }} + > + + + + + + + + + + + + + + + + + + + 모집안내 + + + + + + position.name).join(', ') || '포지션' + } + fontSize={18} + flexDirection="column" + /> + stack.name).join(', ') || '기술 스택'} + fontSize={18} + flexDirection="column" + /> + + + + + + + )} + + + + + + ); +}; + +const ModalLayout = styled.div` + display: flex; + padding: 30px; + flex-direction: column; + align-items: flex-end; + position: fixed; + z-index: 100; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + gap: 40px; + width: 90%; + border-radius: ${({ theme }) => theme.borderRadius.small}; + border: 1px solid ${({ theme }) => theme.color.black1}; + background: ${({ theme }) => theme.color.white2}; + overflow-y: scroll; + + ${media.custom(700)} { + gap: 30px; + height: 90%; + } +`; + +const ModalInner = styled.div` + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 24px; + align-self: stretch; +`; + +const ModalHeader = styled.div` + display: flex; + align-items: flex-start; + gap: 12px; + align-self: stretch; + width: 100%; +`; + +const HeaderContentBox = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + gap: 12px; + flex: 1 0 0; + width: 100%; +`; + +const Title = styled.div` + display: flex; + height: 40px; + flex-direction: column; + justify-content: center; + align-self: stretch; + color: ${({ theme }) => theme.color.black5}; + font-family: 'Pretendard800'; + font-size: ${({ theme }) => theme.font.xxlarge}; + font-style: normal; + font-weight: 800; + line-height: 40px; + + ${media.custom(500)} { + font-size: ${({ theme }) => theme.font.large}; + } +`; + +const CreationInfoRows = styled.div` + display: flex; + width: 100%; + align-items: center; + gap: 12px; + align-self: stretch; + + & > span:first-child { + color: ${({ theme }) => theme.color.black4}; + } +`; + +const CreationInfoRow = styled.span` + color: ${({ theme }) => theme.color.black2}; + font-family: 'Pretendard500'; + font-size: 18px; + font-style: normal; + font-weight: 500; + line-height: 32px; +`; + +const CloseIcon = styled.div` + padding: 8px; + + ${media.custom(600)} { + svg { + width: 24px; + height: 24px; + } + } +`; + +const ModalBody = styled.div` + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 24px; + align-self: stretch; +`; + +const RecruitmentInfoBox = styled.section` + display: flex; + flex-direction: column; + align-items: center; + gap: 24px; + align-self: stretch; +`; + +const SectionTitleBox = styled.div` + display: flex; + width: 100%; + align-items: center; + gap: 8px; + align-self: stretch; +`; + +const SectionTitle = styled.span` + color: ${({ theme }) => theme.color.black5}; + font-family: 'Pretendard800'; + font-size: ${({ theme }) => theme.font.medium}; + font-style: normal; + font-weight: 800; + line-height: 24px; + width: 100%; +`; + +const RecruitmentInfoLayout = styled.div` + display: grid; + grid-template-columns: repeat(3, 1fr); + flex-wrap: wrap; + grid-gap: 24px; + width: 100%; + + ${media.custom(700)} { + grid-template-columns: repeat(2, 1fr); + } + ${media.custom(500)} { + grid-template-columns: repeat(1, 1fr); + } +`; + +const StudyInfoBox = styled.section` + display: flex; + padding: 16px; + flex-direction: column; + align-items: flex-start; + gap: 16px; + align-self: stretch; + border-radius: 16px; + border: 1px solid ${({ theme }) => theme.color.black1}; + width: 100%; +`; + +const StudyInfoLayout = styled.section` + display: grid; + grid-template-columns: repeat(3, 1fr); + flex-wrap: wrap; + grid-gap: 24px; + width: 100%; + + ${media.custom(700)} { + grid-template-columns: repeat(2, 1fr); + } + + ${media.custom(500)} { + grid-template-columns: repeat(1, 1fr); + } +`; + +const ModalBtns = styled.div` + display: flex; + align-items: flex-start; + gap: 24px; + align-self: stretch; +`; diff --git a/src/Components/MyStudyCard/index.tsx b/src/Components/MyStudyCard/index.tsx index 9f81ccba..4aecac62 100644 --- a/src/Components/MyStudyCard/index.tsx +++ b/src/Components/MyStudyCard/index.tsx @@ -1,5 +1,5 @@ import styled from 'styled-components'; -import { StudyThumbnail } from '@/Assets'; +import { Clip, StudyThumbnail } from '@/Assets'; import StudyToken from '../Common/StudyToken'; import { InfoField } from '../Common/InfoField'; import Button from '../Common/Button'; @@ -9,6 +9,8 @@ import { useCancelAppyMutation } from '@/Hooks/study/useCancelAppyMutation'; import { useQueryClient } from '@tanstack/react-query'; import { STUDY } from '@/Constants/queryString'; import { media, textEllipsis } from '@/Styles/theme'; +import { RecruitmentDetailModal } from '../Modal/RecruitmentDetailModal'; +import { useState } from 'react'; interface MyStudyCardProps { id: number; @@ -16,6 +18,9 @@ interface MyStudyCardProps { /** 스터디 제목 */ title: string; + /** 모집공고 Id */ + recruitmnetId?: number; + /** 현재 상태 */ status: StudyStatus | ApplyStatus; @@ -45,12 +50,15 @@ export const MyStudyCard = ({ participantCount, isOwner, hasRecruitment, + recruitmnetId, }: MyStudyCardProps) => { const navigate = useNavigate(); const queryClient = useQueryClient(); const cancelApplySuccessHandler = () => { queryClient.invalidateQueries({ queryKey: [...STUDY.MYPAGE_INFO()] }); }; + const [isOpen, setIsOpen] = useState(false); + const { mutate: cancelMutate } = useCancelAppyMutation(1, id, cancelApplySuccessHandler); const isApplyStatus = status === 'UNCHECKED' || status === 'REFUSED' || status === 'ACCEPTED'; @@ -76,7 +84,7 @@ export const MyStudyCard = ({ title="나의 포지션" content={position?.name || '나의 포지션'} disabled={status === 'COMPLETED'} - fontSize={18} + fontSize={16} titleWidth={120} /> {period && ( @@ -84,7 +92,7 @@ export const MyStudyCard = ({ title="진행 기간" content={period || '진행 기간'} disabled={status === 'COMPLETED'} - fontSize={18} + fontSize={16} titleWidth={120} /> )} @@ -93,7 +101,7 @@ export const MyStudyCard = ({ title="팀원 수" content={participantCount || '팀원 수'} disabled={status === 'COMPLETED'} - fontSize={18} + fontSize={16} titleWidth={120} /> )} @@ -111,6 +119,18 @@ export const MyStudyCard = ({ 스터디원 모집 공고 작성하기 )} + {(status === 'PROGRESS' || status === 'RECRUITING') && hasRecruitment && isOwner && ( + + )} {status === 'UNCHECKED' && ( } + {isOpen && } ); }; @@ -145,7 +166,7 @@ const MyStudyCardWrapper = styled.div<{ cursor: pointer; } - svg { + & > svg:first-child { border-radius: 16px 0 0 16px; } @@ -157,7 +178,7 @@ const MyStudyCardWrapper = styled.div<{ width: 302px; height: auto; - svg { + & > svg:first-child { width: 300px; height: 300px; border-radius: 16px 16px 0 0; @@ -186,11 +207,7 @@ const StudyInfoWrapper = styled.div<{ padding: 16px 24px; flex-direction: column; align-items: center; - gap: ${(props) => - ((props.status === 'PROGRESS' || props.status === 'RECRUITING') && !props.hasRecruitment && props.isOwner) || - props.isApplyStatus - ? '24px' - : 0}; + gap: 24px; align-self: stretch; } `; @@ -278,5 +295,6 @@ const MyStudyCardButtonsWrapper = styled.div<{ isApplyStatus: boolean }>` ${media.custom(600)} { justify-content: center; + gap: 24px; } `; diff --git a/src/Mocks/data/mockMypage.ts b/src/Mocks/data/mockMypage.ts index 98fb1369..414d688e 100644 --- a/src/Mocks/data/mockMypage.ts +++ b/src/Mocks/data/mockMypage.ts @@ -18,7 +18,7 @@ export const mockMypage = { participateStudies: [ { studyId: 1, - title: 'string', + title: '스터디 주인 / 모집공고 없는 경우', position: { id: 0, name: 'string', @@ -32,7 +32,8 @@ export const mockMypage = { }, { studyId: 2, - title: 'stringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstring', + title: '스터디 주인 / 모집공고 있는 경우', + recruitmentId: 2, position: { id: 0, name: 'string', @@ -42,7 +43,21 @@ export const mockMypage = { endDateTime: '2024-03-06T01:19:09.182Z', participantCount: 2, isOwner: true, - hasRecruitment: false, + hasRecruitment: true, + }, + { + studyId: 3, + title: '스터디 주인이 아닌 경우', + position: { + id: 0, + name: 'string', + }, + status: 'RECRUITING', + startDateTime: '2024-03-06T01:19:09.182Z', + endDateTime: '2024-03-06T01:19:09.182Z', + participantCount: 2, + isOwner: false, + hasRecruitment: true, }, ], applicantRecruitments: [ @@ -66,8 +81,8 @@ export const mockMypage = { }, status: 'COMPLETED', startDateTime: '2024-03-06T01:19:09.182Z', - endDateTime: '2024-03-06T01:19:09.182Z', - participantCount: 0, + endDateTime: '2024-03-06T01:19:10.182Z', + participantCount: 1, isOwner: true, hasRecruitment: false, }, diff --git a/src/Mocks/data/mockRecruitments.ts b/src/Mocks/data/mockRecruitments.ts index 2d836f4a..733ba534 100644 --- a/src/Mocks/data/mockRecruitments.ts +++ b/src/Mocks/data/mockRecruitments.ts @@ -1,4 +1,6 @@ -export const recruitmentDetailMockData = [ +import { RecruitmentDetail } from '@/Types/study'; + +export const recruitmentDetailMockData: RecruitmentDetail[] = [ { recruitment: { id: 1, @@ -6,10 +8,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-01-01T03:16:03.598Z`, + updatedDateTime: `2024-01-01T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -22,10 +26,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -35,10 +41,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 45, name: 'Javascript', imageUrl: '/static/stack/images/javascript.png' }], positions: [{ id: 2, name: '프론트엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-01-02T03:16:03.598Z`, + updatedDateTime: `2024-01-02T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -51,10 +59,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -64,10 +74,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-01-03T03:16:03.598Z`, + updatedDateTime: `2024-01-03T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -80,10 +92,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -93,10 +107,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-01-04T03:16:03.598Z`, + updatedDateTime: `2024-01-04T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -109,10 +125,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -125,10 +143,12 @@ export const recruitmentDetailMockData = [ { id: 2, name: '프론트엔드' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-01-05T03:16:03.598Z`, + updatedDateTime: `2024-01-05T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -141,10 +161,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -154,10 +176,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-01-06T03:16:03.598Z`, + updatedDateTime: `2024-01-06T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -170,10 +194,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -183,10 +209,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-07T03:16:03.598Z`, + updatedDateTime: `2024-01-07T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -199,10 +227,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -215,10 +245,12 @@ export const recruitmentDetailMockData = [ { id: 2, name: '프론트엔드' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-08T03:16:03.598Z`, + updatedDateTime: `2024-01-08T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -231,10 +263,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -244,10 +278,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-09T03:16:03.598Z`, + updatedDateTime: `2024-01-09T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -260,10 +296,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -273,10 +311,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-10T03:16:03.598Z`, + updatedDateTime: `2024-01-10T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -289,10 +329,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -302,10 +344,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-01-11T03:16:03.598Z`, + updatedDateTime: `2024-01-11T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -318,10 +362,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -334,10 +380,12 @@ export const recruitmentDetailMockData = [ { id: 2, name: '프론트엔드' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-01-12T03:16:03.598Z`, + updatedDateTime: `2024-01-12T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -349,10 +397,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], category: { id: 2, name: '코딩 테스트' }, }, @@ -364,10 +414,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-01-13T03:16:03.598Z`, + updatedDateTime: `2024-01-13T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -379,10 +431,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], category: { id: 2, name: '코딩 테스트' }, }, @@ -394,10 +448,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-01-14T03:16:03.598Z`, + updatedDateTime: `2024-01-14T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -410,10 +466,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -426,10 +484,12 @@ export const recruitmentDetailMockData = [ { id: 2, name: '프론트엔드' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-01-15T03:16:03.598Z`, + updatedDateTime: `2024-01-15T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -442,10 +502,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -455,10 +517,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-01-16T03:16:03.598Z`, + updatedDateTime: `2024-01-16T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -471,10 +535,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -484,10 +550,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-17T03:16:03.598Z`, + updatedDateTime: `2024-01-17T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -500,10 +568,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -516,10 +586,12 @@ export const recruitmentDetailMockData = [ { id: 2, name: '프론트엔드' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-18T03:16:03.598Z`, + updatedDateTime: `2024-01-18T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -532,10 +604,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -545,10 +619,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-19T03:16:03.598Z`, + updatedDateTime: `2024-01-19T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -561,10 +637,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -574,10 +652,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-20T03:16:03.598Z`, + updatedDateTime: `2024-01-20T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -590,10 +670,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -603,10 +685,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-01-21T03:16:03.598Z`, + updatedDateTime: `2024-01-21T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -619,10 +703,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -635,10 +721,12 @@ export const recruitmentDetailMockData = [ { id: 2, name: '프론트엔드' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-01-22T03:16:03.598Z`, + updatedDateTime: `2024-01-22T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -650,10 +738,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], category: { id: 2, name: '코딩 테스트' }, }, @@ -665,10 +755,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-01-23T03:16:03.598Z`, + updatedDateTime: `2024-01-23T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -680,10 +772,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], category: { id: 2, name: '코딩 테스트' }, }, @@ -695,10 +789,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-01-24T03:16:03.598Z`, + updatedDateTime: `2024-01-24T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -711,10 +807,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -727,10 +825,12 @@ export const recruitmentDetailMockData = [ { id: 2, name: '프론트엔드' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-01-25T03:16:03.598Z`, + updatedDateTime: `2024-01-25T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -743,10 +843,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -756,10 +858,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-01-26T03:16:03.598Z`, + updatedDateTime: `2024-01-26T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -772,10 +876,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -785,10 +891,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-27T03:16:03.598Z`, + updatedDateTime: `2024-01-27T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -801,10 +909,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -817,10 +927,12 @@ export const recruitmentDetailMockData = [ { id: 2, name: '프론트엔드' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-28T03:16:03.598Z`, + updatedDateTime: `2024-01-28T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -833,10 +945,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -849,10 +963,12 @@ export const recruitmentDetailMockData = [ { id: 3, name: '디자이너' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-29T03:16:03.598Z`, + updatedDateTime: `2024-01-29T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -865,10 +981,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -885,10 +1003,12 @@ export const recruitmentDetailMockData = [ { id: 4, name: '데브옵스' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-01-30T03:16:03.598Z`, + updatedDateTime: `2024-01-30T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -901,10 +1021,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -914,10 +1036,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-01-31T03:16:03.598Z`, + updatedDateTime: `2024-01-31T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -930,10 +1054,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -949,10 +1075,12 @@ export const recruitmentDetailMockData = [ { id: 3, name: '디자이너' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-02-01T03:16:03.598Z`, + updatedDateTime: `2024-02-01T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -964,10 +1092,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], category: { id: 2, name: '코딩 테스트' }, }, @@ -985,10 +1115,12 @@ export const recruitmentDetailMockData = [ { id: 4, name: '데브옵스' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'coding test', createdDateTime: `2024-02-02T03:16:03.598Z`, + updatedDateTime: `2024-02-02T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -1000,10 +1132,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], category: { id: 2, name: '코딩 테스트' }, }, @@ -1018,10 +1152,12 @@ export const recruitmentDetailMockData = [ ], positions: [{ id: 3, name: '디자이너' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-02-03T03:16:03.598Z`, + updatedDateTime: `2024-02-03T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -1034,10 +1170,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -1055,10 +1193,12 @@ export const recruitmentDetailMockData = [ { id: 2, name: '프론트엔드' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-02-04T03:16:03.598Z`, + updatedDateTime: `2024-02-04T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -1071,10 +1211,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -1084,10 +1226,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'interview', createdDateTime: `2024-02-05T03:16:03.598Z`, + updatedDateTime: `2024-02-05T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -1100,10 +1244,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -1113,10 +1259,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-02-06T03:16:03.598Z`, + updatedDateTime: `2024-02-06T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -1129,10 +1277,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'OFFLINE', participantLimit: 7, startDateTime: '2024-03-01T03:16:03.598Z', endDateTime: '2024-04-01T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -1145,10 +1295,12 @@ export const recruitmentDetailMockData = [ { id: 2, name: '프론트엔드' }, ], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-02-07T03:16:03.598Z`, + updatedDateTime: `2024-02-07T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -1161,10 +1313,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GOOGLE_MEET', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-02-03T03:16:03.598Z', endDateTime: '2024-02-29T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -1174,10 +1328,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-02-08T03:16:03.598Z`, + updatedDateTime: `2024-02-08T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -1190,10 +1346,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, { @@ -1203,10 +1361,12 @@ export const recruitmentDetailMockData = [ stacks: [{ id: 44, name: 'Java', imageUrl: '/static/stack/images/java.png' }], positions: [{ id: 1, name: '백엔드' }], applicantCount: 5, - contact: '디스코드', + applicantLimit: 5, + contact: 'KAKAO', callUrl: 'https:z//open.kakao.com/o/222222', content: 'project', createdDateTime: `2024-02-09T03:16:03.598Z`, + updatedDateTime: `2024-02-09T03:16:03.598Z`, endDateTime: '2024-02-01T03:16:03.598Z', }, study: { @@ -1219,10 +1379,12 @@ export const recruitmentDetailMockData = [ email: 'aaa@bb1.cc', }, platform: 'GATHER', + platformUrl: 'www.naver.com', way: 'ONLINE', participantLimit: 7, startDateTime: '2024-03-03T03:16:03.598Z', endDateTime: '2024-04-03T03:16:03.598Z', + attendanceDay: [1, 2, 3], }, }, ]; diff --git a/src/Pages/MyPageHome/StudiesSection.tsx b/src/Pages/MyPageHome/StudiesSection.tsx index ce5b7027..199bbd1e 100644 --- a/src/Pages/MyPageHome/StudiesSection.tsx +++ b/src/Pages/MyPageHome/StudiesSection.tsx @@ -51,6 +51,7 @@ const StudiesSection = () => { ({ studyId, title, + recruitmentId, status, position, startDateTime, @@ -62,6 +63,7 @@ const StudiesSection = () => {
  • ; - positionIds?: Array; - positionId?: number; - applicantCount?: number; -}; - -// export type Position = '프론트엔드' | '백엔드' | '디자이너' | '기획자'; -// export type stackId = 4 | 5 | 6 | 8 | 9 | 10; -export type ItemCategory = { - categoryName?: string; - categoryId?: number; - stacks?: string; - stackId?: number; - stackImg?: string; - name?: string; - id?: number; -}; - -export type StackItem = { - id?: number; - name?: string; - imageUrl?: string; - category?: ItemCategory; -}; - -export type StackCategory = { - id: number; - name: string; - stacks: Stack; -}; - -export type Modify = { - title: string; - category: string; - max: string; - progress: string; - platform: string; - period: string; -}; diff --git a/src/Types/study.ts b/src/Types/study.ts index 8a7bc6a6..0ac3152d 100644 --- a/src/Types/study.ts +++ b/src/Types/study.ts @@ -226,6 +226,7 @@ export interface ApplicantsDetail { export interface ParticipateStudy { studyId: number; + recruitmentId?: number; title: string; position: Position; startDateTime: string;