@@ -14,14 +14,18 @@ const RecruitInfo: React.FC = () => {
1414
1515 const navigate = useNavigate ( )
1616 const { loadSchedule } = useRecruitSchedule ( )
17- const [ periodData , setPeriodData ] = useState ( {
18- recruitmentPeriodStart : '' ,
19- recruitmentPeriodEnd : '' ,
20- documentPassAnnouncement : '' ,
21- interviewPeriodStart : '' ,
22- interviewPeriodEnd : '' ,
23- interviewPassAnnouncement : '' ,
24- } )
17+
18+ // 기본 모집 일정 (API 실패 시 사용)
19+ const defaultPeriodData = {
20+ recruitmentPeriodStart : '2026-02-23' , // 02월 23일
21+ recruitmentPeriodEnd : '2026-03-10' , // 03월 10일
22+ documentPassAnnouncement : '2026-03-11' , // 03월 11일
23+ interviewPeriodStart : '2026-03-11' , // 03월 11일
24+ interviewPeriodEnd : '2026-03-13' , // 03월 13일
25+ interviewPassAnnouncement : '2026-03-14' , // 03월 14일
26+ }
27+
28+ const [ periodData , setPeriodData ] = useState ( defaultPeriodData )
2529 const [ buttonState , setButtonState ] = useState ( {
2630 text : '' ,
2731 disabled : false ,
@@ -47,10 +51,11 @@ const RecruitInfo: React.FC = () => {
4751 } = periodData
4852
4953 if ( ! recruitmentPeriodStart || ! recruitmentPeriodEnd ) {
54+ // API 호출 실패 시 기본값으로 지원하기 버튼 표시
5055 return {
51- text : '모집 일정 준비 중' ,
52- disabled : true ,
53- onClick : ( ) => { } ,
56+ text : ` ${ currentGeneration } 기 지원하기` ,
57+ disabled : false ,
58+ onClick : ( ) => navigate ( '/recruit' ) ,
5459 }
5560 }
5661
@@ -133,16 +138,18 @@ const RecruitInfo: React.FC = () => {
133138 const fetchData = async ( ) => {
134139 try {
135140 const { scheduleData } = await loadSchedule ( )
141+ // API 성공 시 서버 데이터로 업데이트
136142 setPeriodData ( {
137- recruitmentPeriodStart : scheduleData . recruitmentPeriodStart ,
138- recruitmentPeriodEnd : scheduleData . recruitmentPeriodEnd ,
139- documentPassAnnouncement : scheduleData . documentPassAnnouncement ,
140- interviewPeriodStart : scheduleData . interviewPeriodStart ,
141- interviewPeriodEnd : scheduleData . interviewPeriodEnd ,
142- interviewPassAnnouncement : scheduleData . interviewPassAnnouncement ,
143+ recruitmentPeriodStart : scheduleData . recruitmentPeriodStart || defaultPeriodData . recruitmentPeriodStart ,
144+ recruitmentPeriodEnd : scheduleData . recruitmentPeriodEnd || defaultPeriodData . recruitmentPeriodEnd ,
145+ documentPassAnnouncement : scheduleData . documentPassAnnouncement || defaultPeriodData . documentPassAnnouncement ,
146+ interviewPeriodStart : scheduleData . interviewPeriodStart || defaultPeriodData . interviewPeriodStart ,
147+ interviewPeriodEnd : scheduleData . interviewPeriodEnd || defaultPeriodData . interviewPeriodEnd ,
148+ interviewPassAnnouncement : scheduleData . interviewPassAnnouncement || defaultPeriodData . interviewPassAnnouncement ,
143149 } )
144150 } catch ( error ) {
145- console . error ( 'Error fetching recruit configs:' , error )
151+ console . warn ( 'API를 통한 모집 일정 조회 실패, 기본 일정을 사용합니다:' , error )
152+ // API 실패 시 기본 일정 데이터 유지 (이미 useState로 설정됨)
146153 }
147154 }
148155
0 commit comments