11import React , { useEffect , useState } from 'react'
2- import apiClient from '../../utils/apiClient '
3- import { RecruitHeaderProps } from './types '
2+ import { formatKoreanDate , useRecruitSchedule } from '../../pages/recruit/useRecruitSchedule '
3+ import { RecruitScheduleData } from '@/pages/recruit/Recruittype '
44
55interface RecruitUIProps {
6- name : string
6+ name ?: string
7+ }
8+
9+ interface RecruitHeaderProps {
10+ title : string
711}
812
913export const RecruitHeader : React . FC < RecruitHeaderProps > = ( { title } ) => {
1014 return (
11- < div className = 'w-auto bg-[#00B493] text-white font-pretendardBold text-[13px] p-1 pl-2 mx-2 mt-16 ' >
15+ < div className = 'w-auto bg-[#00B493] text-white font-pretendardBold text-[13px] md:text-base p-1 pl-2 mx-2 mt-4 ' >
1216 { title }
1317 </ div >
1418 )
1519}
1620
1721export const RecruitUI : React . FC = ( ) => {
18- const [ recruitmentData , setRecruitmentData ] = useState < Record <
19- string ,
20- string
21- > | null > ( null )
22+ const { loadSchedule } = useRecruitSchedule ( )
23+ const [ scheduleData , setScheduleData ] = useState < RecruitScheduleData | null > ( null )
2224
2325 useEffect ( ( ) => {
2426 const fetchRecruit = async ( ) => {
2527 try {
26- const res = await apiClient . get ( '/recruit' )
27- const data = res . data
28- if ( Array . isArray ( data ) ) {
29- const formattedData : Record < string , string > = { }
30- data . forEach ( ( item : any ) => {
31- formattedData [ item . key ] = item . value
32- } )
33- setRecruitmentData ( formattedData )
34- } else {
35- console . error ( '예상하지 못한 응답 형식:' , data )
36- }
28+ const { scheduleData } = await loadSchedule ( )
29+ setScheduleData ( scheduleData )
3730 } catch ( error ) {
38- console . error ( 'API 요청 오류 :' , error )
31+ console . error ( '모집 기간 확인 중 오류 발생 :' , error )
3932 }
4033 }
4134 fetchRecruit ( )
42- } , [ ] )
35+ } , [ loadSchedule ] )
4336
44- {
45- /* 데이터 형식 번경 기능 */
46- }
4737 const formatDate = ( isoString : string ) => {
4838 const date = new Date ( isoString )
4939 const options : Intl . DateTimeFormatOptions = {
@@ -55,35 +45,34 @@ export const RecruitUI: React.FC = () => {
5545 }
5646
5747 return (
58- < div className = 'text-white font-pretendardRegular flex flex-col text-[12px] items-start w-auto shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2' >
48+ < div className = 'text-white font-pretendardRegular flex flex-col text-[12px] md:text-sm items-start w-auto shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2' >
5949 < p className = 'pl-2 pt-2' >
6050 < span className = 'font-pretendardBold' > 다솜</ span > 에서 개발자로서 성장해
6151 갈 < span className = 'font-pretendardBold' > 34기 멤버분들</ span > 을
6252 찾습니다!
6353 </ p >
6454 < div className = 'mt-2 pl-2' >
6555 < p className = 'text-mainColor font-pretendardSemiBold' > 📅 모집 일정 :</ p >
66- { recruitmentData ? (
56+ { scheduleData ? (
6757 < p >
68- 모집 폼 제출 :{ ' ' }
69- { formatDate ( recruitmentData . RECRUITMENT_PERIOD_START ) } ~{ ' ' }
70- { formatDate ( recruitmentData . RECRUITMENT_PERIOD_END ) }
58+ 모집 폼 제출 : { formatDate ( scheduleData . recruitmentPeriodStart ) } ~{ ' ' }
59+ { formatDate ( scheduleData . recruitmentPeriodEnd ) }
7160 </ p >
7261 ) : (
7362 < p > 모집 일정 불러오는 중...</ p >
7463 ) }
75- { recruitmentData ? (
64+ { scheduleData ? (
7665 < p >
77- 대면 면접 : { formatDate ( recruitmentData . INTERVIEW_PERIOD_START ) } ~{ ' ' }
78- { formatDate ( recruitmentData . INTERVIEW_PERIOD_END ) }
66+ 대면 면접 : { formatDate ( scheduleData . interviewPeriodStart ) } ~{ ' ' }
67+ { formatDate ( scheduleData . interviewPeriodEnd ) }
7968 </ p >
8069 ) : (
8170 < p > 대면 일정 불러오는 중...</ p >
8271 ) }
83- { recruitmentData ? (
72+ { scheduleData ? (
8473 < p >
8574 최종 합격자 발표 :{ ' ' }
86- { formatDate ( recruitmentData . INTERVIEW_PASS_ANNOUNCEMENT ) }
75+ { formatDate ( scheduleData . interviewPassAnnouncement ) }
8776 </ p >
8877 ) : (
8978 < p > 최종 합격 일정 불러오는 중...</ p >
@@ -119,8 +108,23 @@ export const RecruitUI: React.FC = () => {
119108}
120109
121110export const RecruitUI_SUB : React . FC < RecruitUIProps > = ( { name } ) => {
111+ const { loadSchedule } = useRecruitSchedule ( )
112+ const [ scheduleData , setScheduleData ] = useState < RecruitScheduleData | null > ( null )
113+
114+ useEffect ( ( ) => {
115+ const fetchRecruit = async ( ) => {
116+ try {
117+ const { scheduleData } = await loadSchedule ( )
118+ setScheduleData ( scheduleData )
119+ } catch ( error ) {
120+ console . error ( '모집 기간 확인 중 오류 발생:' , error )
121+ }
122+ }
123+ fetchRecruit ( )
124+ } , [ loadSchedule ] )
125+
122126 return (
123- < div className = 'whitespace-pre-line text-white flex flex-col items-start w-auto h-[auto] shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2 font-pretendardRegular pl-2 text-[12px] ' >
127+ < div className = 'whitespace-pre-line text-white flex flex-col items-start w-auto h-[auto] shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2 font-pretendardRegular pl-2 text-[12px] md:text-sm ' >
124128 < p className = 'pt-3 ' >
125129 { `${ name } 님 안녕하세요 컴퓨터공학부 전공동아리 다솜입니다.
126130 먼저 다솜 34기에 많은 관심을 갖고 지원해 주셔서 감사드리며, ` }
@@ -133,19 +137,17 @@ export const RecruitUI_SUB: React.FC<RecruitUIProps> = ({ name }) => {
133137 </ p >
134138
135139 < p >
136- { `다음 전형인 대면 인터뷰에서 뵐 수 있게 되어 기쁜 마음을 담아
137- 안내드립니다.` }
140+ { '다음 전형인 대면 인터뷰에서 뵐 수 있게 되어 기쁜 마음을 담아 안내드립니다.' }
138141 </ p >
139142
140- < p className = 'mb-3' > { `대면 인터뷰는 3/12(수)~14(금) 중에 진행 될 예정이며 편한 시간대로
141- 폼을 작성해주시면 감사하겠습니다.` } </ p >
143+ < p className = 'mb-3' > 대면 인터뷰는 { formatKoreanDate ( scheduleData ?. interviewPeriodStart ) } ~ { formatKoreanDate ( scheduleData ?. interviewPeriodEnd ) } 중에 진행 될 예정이며 편한 시간대로 폼을 작성해주시면 감사하겠습니다.</ p >
142144 </ div >
143145 )
144146}
145147
146148export const RecruitUI_SUB2 : React . FC < RecruitUIProps > = ( { name } ) => {
147149 return (
148- < div className = 'whitespace-pre-line text-white flex flex-col items-start w-auto h-[auto] shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2 font-pretendardRegular pl-2 text-[12px] ' >
150+ < div className = 'whitespace-pre-line text-white flex flex-col items-start w-auto h-[auto] shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2 font-pretendardRegular pl-2 text-[12px] md:text-sm ' >
149151 < p className = 'pt-3 ' >
150152 { `${ name } 님 안녕하세요 컴퓨터공학부 전공동아리 다솜입니다.
151153 먼저 다솜 34기에 많은 관심을 갖고 지원해 주셔서 감사드리며, ` }
@@ -165,7 +167,7 @@ export const RecruitUI_SUB2: React.FC<RecruitUIProps> = ({ name }) => {
165167
166168export const RecruitUI_FINAL : React . FC < RecruitUIProps > = ( { name } ) => {
167169 return (
168- < div className = 'whitespace-pre-line text-white flex flex-col items-start w-auto h-[auto] shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2 font-pretendardRegular pl-2 text-[12px] ' >
170+ < div className = 'whitespace-pre-line text-white flex flex-col items-start w-auto h-[auto] shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2 font-pretendardRegular pl-2 text-[12px] md:text-sm ' >
169171 < p className = 'pt-3 font-pretendardBold ' >
170172 안녕하세요 { `${ name } ` } 님, < br /> 다솜 34기에
171173 < span className = 'text-mainColor font-pretendardBold' > 최종합격</ span > { ' ' }
@@ -189,7 +191,7 @@ export const RecruitUI_FINAL: React.FC<RecruitUIProps> = ({ name }) => {
189191
190192export const RecruitUI_FINAL2 : React . FC < RecruitUIProps > = ( { name } ) => {
191193 return (
192- < div className = 'whitespace-pre-line text-white flex flex-col items-start w-auto h-[auto] shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2 font-pretendardRegular pl-2 text-[12px] ' >
194+ < div className = 'whitespace-pre-line text-white flex flex-col items-start w-auto h-[auto] shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2 font-pretendardRegular pl-2 text-[12px] md:text-sm ' >
193195 < p className = 'pt-3 ' >
194196 { `${ name } 님 안녕하세요. 컴퓨터공학부 전공동아리 다솜입니다.
195197 먼저, 다솜 34기에 관심을 갖고 지원해 주시고 소중한 시간을 내어
@@ -208,16 +210,15 @@ export const RecruitUI_FINAL2: React.FC<RecruitUIProps> = ({ name }) => {
208210
209211 < p className = 'mb-3' >
210212 { `다시 한번 지원해 주셔서 감사드리며,
211- 앞으로의 모든 도전을 응원하겠습니다.
212- 수고 많으셨습니다.` }
213+ 앞으로의 모든 도전을 응원하겠습니다. 수고 많으셨습니다.` }
213214 </ p >
214215 </ div >
215216 )
216217}
217218
218219export const SomRecruitUI : React . FC = ( ) => {
219220 return (
220- < div className = 'text-white font-pretendardRegular flex flex-col text-[12px] items-start w-auto shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2' >
221+ < div className = 'text-white font-pretendardRegular flex flex-col text-[12px] md:text-sm items-start w-auto shadow-[0px_2px_3px_rgba(255,255,255,0.2)] bg-#17171B] gap-2 mx-2' >
221222 < p className = 'pl-2 pt-2' >
222223 < span className = 'font-pretendardBold' > 솜커톤</ span > 에서 멋진 프로젝트를
223224 만들어 주실 학우 여러분들을 모집합니다!
0 commit comments