diff --git a/core/src/main/java/com/terning/core/designsystem/component/item/InternItem.kt b/core/src/main/java/com/terning/core/designsystem/component/item/InternItem.kt index 88d4dd4ed..8511fc81c 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/item/InternItem.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/item/InternItem.kt @@ -29,6 +29,7 @@ import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.request.ImageRequest import com.terning.core.R +import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.Grey400 import com.terning.core.designsystem.theme.TerningMain import com.terning.core.designsystem.theme.TerningPointTheme @@ -86,7 +87,7 @@ fun InternItem( Text( text = dateDeadline, style = TerningTheme.typography.detail0, - color = TerningMain, + color = if (dateDeadline == stringResource(id = R.string.intern_apply_closed)) Grey300 else TerningMain, ) TwoLineHeightText( text = title, diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 3237f106a..0d70c933c 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -16,6 +16,7 @@ %s개월 D-%s 스크랩 + 지원마감 previous @@ -23,11 +24,11 @@ list - 채용 마감 이른순 - 짧은 근무 기간순 - 긴 근무 기간순 - 스크랩 많은순 - 조회수 많은순 + 채용 마감 이른 순 + 짧은 근무 기간 순 + 긴 근무 기간 순 + 스크랩 많은 순 + 조회수 많은 순 정렬 기준 공고 정렬 순서 @@ -76,8 +77,8 @@ 3학년 4학년 희망 근무 기간 - 1개월 ~ 3개월 - 4개월 ~ 6개월 + 1 ~ 3개월 + 4 ~ 6개월 7개월 이상 근무 시작 시기 diff --git a/data/src/main/java/com/terning/data/dto/request/ChangeFilterRequestDto.kt b/data/src/main/java/com/terning/data/dto/request/ChangeFilterRequestDto.kt index b126a02c2..770af1abf 100644 --- a/data/src/main/java/com/terning/data/dto/request/ChangeFilterRequestDto.kt +++ b/data/src/main/java/com/terning/data/dto/request/ChangeFilterRequestDto.kt @@ -7,9 +7,9 @@ import kotlinx.serialization.Serializable @Serializable data class ChangeFilterRequestDto( @SerialName("grade") - val grade: Int, + val grade: String, @SerialName("workingPeriod") - val workingPeriod: Int, + val workingPeriod: String, @SerialName("startYear") val startYear: Int, @SerialName("startMonth") diff --git a/data/src/main/java/com/terning/data/dto/response/HomeFilteringInfoResponseDto.kt b/data/src/main/java/com/terning/data/dto/response/HomeFilteringInfoResponseDto.kt index 0b0a43308..6ea43e383 100644 --- a/data/src/main/java/com/terning/data/dto/response/HomeFilteringInfoResponseDto.kt +++ b/data/src/main/java/com/terning/data/dto/response/HomeFilteringInfoResponseDto.kt @@ -6,9 +6,9 @@ import kotlinx.serialization.Serializable @Serializable data class HomeFilteringInfoResponseDto( @SerialName("grade") - val grade: Int?, + val grade: String?, @SerialName("workingPeriod") - val workingPeriod: Int?, + val workingPeriod: String?, @SerialName("startYear") val startYear: Int?, @SerialName("startMonth") diff --git a/data/src/main/java/com/terning/data/dto/response/HomeUpcomingInternResponseDto.kt b/data/src/main/java/com/terning/data/dto/response/HomeUpcomingInternResponseDto.kt index 25ed289d1..f51a028d9 100644 --- a/data/src/main/java/com/terning/data/dto/response/HomeUpcomingInternResponseDto.kt +++ b/data/src/main/java/com/terning/data/dto/response/HomeUpcomingInternResponseDto.kt @@ -23,4 +23,6 @@ data class HomeUpcomingInternResponseDto( val color: String, @SerialName("startYearMonth") val startYearMonth: String, -) \ No newline at end of file + @SerialName("companyInfo") + val companyInfo: String, +) diff --git a/data/src/main/java/com/terning/data/mapper/home/HomeUpcomingInternMapper.kt b/data/src/main/java/com/terning/data/mapper/home/HomeUpcomingInternMapper.kt index 3521339f9..3d8a760b2 100644 --- a/data/src/main/java/com/terning/data/mapper/home/HomeUpcomingInternMapper.kt +++ b/data/src/main/java/com/terning/data/mapper/home/HomeUpcomingInternMapper.kt @@ -14,4 +14,5 @@ fun HomeUpcomingInternResponseDto.toHomeUpcomingInternList(): HomeUpcomingIntern isScrapped = this.isScrapped, startYearMonth = this.startYearMonth, color = this.color, - ) \ No newline at end of file + companyInfo = this.companyInfo, + ) diff --git a/domain/src/main/java/com/terning/domain/entity/home/HomeFilteringInfo.kt b/domain/src/main/java/com/terning/domain/entity/home/HomeFilteringInfo.kt index 657fce14d..4334dfdb6 100644 --- a/domain/src/main/java/com/terning/domain/entity/home/HomeFilteringInfo.kt +++ b/domain/src/main/java/com/terning/domain/entity/home/HomeFilteringInfo.kt @@ -1,8 +1,8 @@ package com.terning.domain.entity.home data class HomeFilteringInfo( - val grade: Int?, - val workingPeriod: Int?, + val grade: String?, + val workingPeriod: String?, val startYear: Int?, val startMonth: Int?, ) diff --git a/domain/src/main/java/com/terning/domain/entity/home/HomeUpcomingIntern.kt b/domain/src/main/java/com/terning/domain/entity/home/HomeUpcomingIntern.kt index 806849c34..60072a616 100644 --- a/domain/src/main/java/com/terning/domain/entity/home/HomeUpcomingIntern.kt +++ b/domain/src/main/java/com/terning/domain/entity/home/HomeUpcomingIntern.kt @@ -10,4 +10,5 @@ data class HomeUpcomingIntern( val isScrapped: Boolean, val color: String, val startYearMonth: String, + val companyInfo: String, ) diff --git a/domain/src/main/java/com/terning/domain/entity/request/ChangeFilteringRequestModel.kt b/domain/src/main/java/com/terning/domain/entity/request/ChangeFilteringRequestModel.kt index 7e155fa5f..b908fb3f9 100644 --- a/domain/src/main/java/com/terning/domain/entity/request/ChangeFilteringRequestModel.kt +++ b/domain/src/main/java/com/terning/domain/entity/request/ChangeFilteringRequestModel.kt @@ -1,8 +1,8 @@ package com.terning.domain.entity.request data class ChangeFilteringRequestModel( - val grade: Int, - val workingPeriod: Int, + val grade: String, + val workingPeriod: String, val startYear: Int, val startMonth: Int, ) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index 5cc35bf73..5a3bfea05 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -86,6 +86,7 @@ fun HomeRoute( val context = LocalContext.current LaunchedEffect(key1 = true) { + viewModel.getProfile() viewModel.getFilteringInfo() } @@ -158,9 +159,9 @@ fun HomeScreen( if (changeFilteringSheetState) { HomeFilteringBottomSheet( - defaultGrade = homeFilteringInfo.grade?.let { Grade.entries[it] }, + defaultGrade = homeFilteringInfo.grade?.let { Grade.fromString(it) }, defaultWorkingPeriod = homeFilteringInfo.workingPeriod?.let { - WorkingPeriod.entries[it] + WorkingPeriod.fromString(it) }, defaultStartYear = homeFilteringInfo.startYear, defaultStartMonth = homeFilteringInfo.startMonth, @@ -178,18 +179,48 @@ fun HomeScreen( } } - LaunchedEffect( - homeState.homeRecommendDialogVisibility, - homeState.homeUpcomingDialogVisibility - ) { - with(homeState) { - if (!homeRecommendDialogVisibility && !homeUpcomingDialogVisibility) { - viewModel.getRecommendInternsData( - sortBy = sortBy.ordinal, - startYear = homeFilteringInfo.startYear ?: Calendar.getInstance().currentYear, - startMonth = homeFilteringInfo.startMonth - ?: Calendar.getInstance().currentMonth, - ) + if (homeState.homeRecommendDialogVisibility) { + with(homeState.homeInternModel) { + if (this != null) { + if (isScrapped) { + ScrapCancelDialog( + internshipAnnouncementId = internshipAnnouncementId, + onDismissRequest = { + viewModel.updateRecommendDialogVisibility(false) + viewModel.getHomeUpcomingInternList() + viewModel.getRecommendInternsData( + sortBy = homeState.sortBy.ordinal, + startYear = homeFilteringInfo.startYear ?: Calendar.getInstance().currentYear, + startMonth = homeFilteringInfo.startMonth + ?: Calendar.getInstance().currentMonth, + ) + } + ) + } else { + ScrapDialog( + title = title, + scrapColor = CalRed, + deadline = deadline, + startYearMonth = startYearMonth, + workingPeriod = workingPeriod, + internshipAnnouncementId = internshipAnnouncementId, + companyImage = companyImage, + isScrapped = isScrapped, + onDismissRequest = { + viewModel.updateRecommendDialogVisibility( + false + ) + viewModel.getHomeUpcomingInternList() + viewModel.getRecommendInternsData( + sortBy = homeState.sortBy.ordinal, + startYear = homeFilteringInfo.startYear ?: Calendar.getInstance().currentYear, + startMonth = homeFilteringInfo.startMonth + ?: Calendar.getInstance().currentMonth, + ) + }, + onClickNavigateButton = navigateToIntern + ) + } } } } @@ -216,10 +247,7 @@ fun HomeScreen( .fillMaxWidth(), ) { item { - Column( - modifier = Modifier - .padding(bottom = 16.dp) - ) { + Column { ShowMainTitleWithName(homeUserName) ShowUpcomingIntern( homeUpcomingInternState = homeState.homeUpcomingInternState, @@ -300,41 +328,6 @@ fun HomeScreen( } } ) - - if (homeState.homeRecommendDialogVisibility) { - with(homeState.homeInternModel) { - if (this != null) { - if (isScrapped) { - ScrapCancelDialog( - internshipAnnouncementId = internshipAnnouncementId, - onDismissRequest = { - viewModel.updateRecommendDialogVisibility(false) - viewModel.getHomeUpcomingInternList() - } - ) - } else { - ScrapDialog( - title = title, - scrapColor = CalRed, - deadline = deadline, - startYearMonth = startYearMonth, - workingPeriod = workingPeriod, - internshipAnnouncementId = internshipAnnouncementId, - companyImage = companyImage, - isScrapped = isScrapped, - onDismissRequest = { - viewModel.updateRecommendDialogVisibility( - false - ) - viewModel.getHomeUpcomingInternList() - }, - onClickChangeColor = { /*TODO*/ }, - onClickNavigateButton = navigateToIntern - ) - } - } - } - } } } else { item { @@ -382,8 +375,12 @@ private fun ShowMainTitleWithName(userName: String) { else userName ), modifier = Modifier - .padding(top = 11.dp, bottom = 19.dp) - .padding(horizontal = 24.dp), + .padding( + top = 2.dp, + bottom = 20.dp, + start = 24.dp, + end = 24.dp, + ), style = TerningTheme.typography.title1, color = Black, ) @@ -422,8 +419,11 @@ private fun ShowRecommendTitle() { style = TerningTheme.typography.title1, color = Black, modifier = Modifier - .padding(top = 5.dp) - .padding(horizontal = 24.dp), + .padding( + top = 22.dp, + start = 24.dp, + end = 24.dp, + ), ) } diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt index b12d647b6..eb65774a3 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt @@ -32,11 +32,6 @@ class HomeViewModel @Inject constructor( private val _homeSideEffect = MutableSharedFlow() val homeSideEffect get() = _homeSideEffect.asSharedFlow() - init { - getProfile() - getFilteringInfo() - } - fun getRecommendInternsData(sortBy: Int, startYear: Int?, startMonth: Int?) { viewModelScope.launch { homeRepository.getRecommendIntern( @@ -94,7 +89,7 @@ class HomeViewModel @Inject constructor( } } - fun putFilteringInfo(grade: Int, workingPeriod: Int, year: Int, month: Int) { + fun putFilteringInfo(grade: String, workingPeriod: String, year: Int, month: Int) { viewModelScope.launch { homeRepository.putFilteringInfo( ChangeFilteringRequestModel(grade, workingPeriod, year, month) @@ -102,7 +97,7 @@ class HomeViewModel @Inject constructor( } } - private fun getProfile() { + fun getProfile() { viewModelScope.launch { myPageRepository.getProfile().onSuccess { response -> _homeState.value = _homeState.value.copy( @@ -138,6 +133,7 @@ class HomeViewModel @Inject constructor( isScrapped: Boolean, color: String?, startYearMonth: String, + companyInfo: String = "", ) { _homeState.update { it.copy( @@ -152,6 +148,7 @@ class HomeViewModel @Inject constructor( isScrapped = isScrapped, color = color ?: "", startYearMonth = startYearMonth, + companyInfo = companyInfo, ) ) } diff --git a/feature/src/main/java/com/terning/feature/home/home/component/HomeFilteringBottomSheet.kt b/feature/src/main/java/com/terning/feature/home/home/component/HomeFilteringBottomSheet.kt index 096c0952e..ca8b6778d 100644 --- a/feature/src/main/java/com/terning/feature/home/home/component/HomeFilteringBottomSheet.kt +++ b/feature/src/main/java/com/terning/feature/home/home/component/HomeFilteringBottomSheet.kt @@ -44,7 +44,7 @@ fun HomeFilteringBottomSheet( defaultStartYear: Int?, defaultStartMonth: Int?, onDismiss: () -> Unit, - onChangeButtonClick: (Int, Int, Int, Int) -> Unit, + onChangeButtonClick: (String, String, Int, Int) -> Unit, ) { val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) @@ -126,8 +126,8 @@ fun HomeFilteringBottomSheet( YearMonthPicker( chosenYear = defaultStartYear ?: Calendar.getInstance().currentYear, - chosenMonth = defaultStartMonth?.minus(1) - ?: Calendar.getInstance().currentMonth.minus(1), + chosenMonth = defaultStartMonth + ?: Calendar.getInstance().currentMonth, onYearChosen = { currentStartYear = it }, onMonthChosen = { currentStartMonth = it } ) @@ -142,8 +142,8 @@ fun HomeFilteringBottomSheet( currentGrade?.let { grade -> currentPeriod?.let { workingPeriod -> onChangeButtonClick( - grade.ordinal, - workingPeriod.ordinal, + grade.stringValue, + workingPeriod.stringValue, currentStartYear, currentStartMonth, ) @@ -184,7 +184,7 @@ fun ChangeFilteringRadioGroup( LazyVerticalGrid( columns = GridCells.Fixed(optionList.size), - horizontalArrangement = Arrangement.spacedBy(12.dp), + horizontalArrangement = Arrangement.spacedBy(13.dp), modifier = modifier .fillMaxWidth() .wrapContentHeight() diff --git a/feature/src/main/java/com/terning/feature/home/home/component/HomeFilteringScreen.kt b/feature/src/main/java/com/terning/feature/home/home/component/HomeFilteringScreen.kt index a3db7832b..242cf6537 100644 --- a/feature/src/main/java/com/terning/feature/home/home/component/HomeFilteringScreen.kt +++ b/feature/src/main/java/com/terning/feature/home/home/component/HomeFilteringScreen.kt @@ -60,7 +60,11 @@ fun HomeFilteringScreen( painter = painterResource(id = R.drawable.ic_home_filtering_28), contentDescription = stringResource(id = R.string.home_recommend_filtering), modifier = modifier - .padding(start = 1.dp), + .padding( + start = 2.dp, + top = 2.dp, + bottom = 2.dp, + ), tint = TerningMain, ) Text( @@ -69,7 +73,7 @@ fun HomeFilteringScreen( color = TerningMain, textAlign = TextAlign.Center, modifier = Modifier - .padding(start = 5.dp, end = 10.dp) + .padding(start = 5.dp, end = 11.dp) .align(Alignment.CenterVertically), ) } @@ -79,19 +83,23 @@ fun HomeFilteringScreen( verticalAlignment = Alignment.CenterVertically, ) { HomeFilteringInfoText( - text = stringResource(id = Grade.entries[grade!!].stringResId), + text = stringResource(id = Grade.fromString(grade).stringResId), modifier = Modifier .padding(end = 6.dp), ) HomeFilteringInfoDivider() HomeFilteringInfoText( - text = stringResource(WorkingPeriod.entries[workingPeriod!!].stringResId), + text = stringResource(WorkingPeriod.fromString(workingPeriod).stringResId), modifier = Modifier .padding(horizontal = 6.dp), ) HomeFilteringInfoDivider() HomeFilteringInfoText( - text = "$startYear 년 $startMonth 월", + text = stringResource( + id = R.string.home_recommend_filtering_startYearMonth, + startYear.toString(), + startMonth.toString() + ), modifier = Modifier .padding(start = 6.dp), ) diff --git a/feature/src/main/java/com/terning/feature/home/home/component/HomeRecommendEmptyIntern.kt b/feature/src/main/java/com/terning/feature/home/home/component/HomeRecommendEmptyIntern.kt index e05dad5ed..c29f55ae1 100644 --- a/feature/src/main/java/com/terning/feature/home/home/component/HomeRecommendEmptyIntern.kt +++ b/feature/src/main/java/com/terning/feature/home/home/component/HomeRecommendEmptyIntern.kt @@ -38,7 +38,7 @@ fun HomeRecommendEmptyIntern( ) Text( text = stringResource(id = text), - style = TerningTheme.typography.body4, + style = TerningTheme.typography.detail2, color = Grey400, textAlign = TextAlign.Center, modifier = modifier diff --git a/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingEmptyFilter.kt b/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingEmptyFilter.kt index 11de75c49..a39e54459 100644 --- a/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingEmptyFilter.kt +++ b/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingEmptyFilter.kt @@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -29,7 +28,6 @@ fun HomeUpcomingEmptyFilter( Column( modifier = modifier .fillMaxWidth() - .padding(top = 19.dp) .padding(horizontal = 24.dp) .customShadow( color = Grey200, @@ -40,22 +38,21 @@ fun HomeUpcomingEmptyFilter( color = White, shape = RoundedCornerShape(5.dp) ), - verticalArrangement = Arrangement.Center + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, ) { TerningImage( painter = R.drawable.ic_home_scrap_empty, modifier = Modifier - .align(Alignment.CenterHorizontally) - .padding(top = 24.dp) + .padding(top = 23.dp) ) Text( text = stringResource(id = R.string.home_upcoming_no_scrap), modifier = Modifier - .padding(top = 8.dp, bottom = 25.dp) - .fillMaxWidth() - .wrapContentWidth(Alignment.CenterHorizontally), + .padding(top = 12.dp, bottom = 23.dp) + .fillMaxWidth(), textAlign = TextAlign.Center, - style = TerningTheme.typography.detail3, + style = TerningTheme.typography.detail2, color = Grey500, ) } diff --git a/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingEmptyIntern.kt b/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingEmptyIntern.kt index 863488adc..7363df1aa 100644 --- a/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingEmptyIntern.kt +++ b/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingEmptyIntern.kt @@ -33,7 +33,6 @@ fun HomeUpcomingEmptyIntern( Column( modifier = modifier .fillMaxWidth() - .padding(top = 19.dp) .padding(horizontal = 24.dp) .customShadow( color = Grey200, @@ -53,19 +52,19 @@ fun HomeUpcomingEmptyIntern( Text( text = stringResource(id = R.string.home_upcoming_empty), modifier = modifier - .padding(top = 27.dp), + .padding(top = 26.dp), textAlign = TextAlign.Center, - style = TerningTheme.typography.detail3, + style = TerningTheme.typography.detail2, color = Grey500, ) Card( colors = CardDefaults.cardColors(White), modifier = modifier - .padding(top = 8.dp, bottom = 27.dp) + .padding(top = 8.dp, bottom = 25.dp) .border( width = 1.dp, color = TerningMain, - shape = RoundedCornerShape(12.dp), + shape = RoundedCornerShape(14.dp), ) .noRippleClickable(navigateToCalendar), ) { diff --git a/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingInternScreen.kt b/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingInternScreen.kt index a0bdbf50c..77228a7bc 100644 --- a/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingInternScreen.kt +++ b/feature/src/main/java/com/terning/feature/home/home/component/HomeUpcomingInternScreen.kt @@ -37,10 +37,12 @@ import coil.request.ImageRequest import com.terning.core.designsystem.component.item.ScrapBox import com.terning.core.designsystem.theme.Black import com.terning.core.designsystem.theme.Grey150 +import com.terning.core.designsystem.theme.Grey200 import com.terning.core.designsystem.theme.Grey500 import com.terning.core.designsystem.theme.TerningMain import com.terning.core.designsystem.theme.TerningSub3 import com.terning.core.designsystem.theme.TerningTheme +import com.terning.core.extension.customShadow import com.terning.core.extension.noRippleClickable import com.terning.domain.entity.home.HomeUpcomingIntern import com.terning.feature.R @@ -70,11 +72,14 @@ fun HomeUpcomingInternScreen( ScrapBox( modifier = Modifier - .width(246.dp), + .width(246.dp) + .customShadow( + color = Grey200, + shadowRadius = 5.dp, + shadowWidth = 1.dp + ), cornerRadius = 5.dp, scrapColor = Color(android.graphics.Color.parseColor(homeUpcomingIntern.color)), - borderWidth = 1.dp, - borderColor = Grey150, content = { Column( modifier = Modifier @@ -125,7 +130,7 @@ fun HomeUpcomingInternScreen( ) Text( - text = "유한킴벌리", + text = homeUpcomingIntern.companyInfo, style = TerningTheme.typography.button5, color = Grey500, maxLines = 1, @@ -173,7 +178,7 @@ fun HomeUpcomingInternScreen( onDismissRequest = { homeViewModel.updateUpcomingDialogVisibility(false) }, - onClickChangeColor = { }, + onClickChangeColor = homeViewModel::getHomeUpcomingInternList, onClickNavigateButton = { navigateToIntern(internshipAnnouncementId) } ) } diff --git a/feature/src/main/res/values/strings.xml b/feature/src/main/res/values/strings.xml index 8c283460c..89f20b9fd 100644 --- a/feature/src/main/res/values/strings.xml +++ b/feature/src/main/res/values/strings.xml @@ -74,15 +74,13 @@ 곧 마감되는 %s님의 관심 공고 아직 스크랩된 인턴 공고가 없어요! - 오늘 마감인 공고가 없어요\n캘린더에서 가까운 공고 일정을 확인해 보세요 + 일주일 내에 마감인 공고가 없어요\n캘린더에서 스크랩한 공고 일정을 확인해 보세요 공고 마감 일정 확인하기 근무기간 내 계획에 딱 맞는 대학생 인턴 공고 필터링 - 학년 - - + %s년 %s월 필터링 설정에 일치하는 인턴 공고가 없어요! 인턴 공고가 없어요! @@ -129,20 +127,6 @@ 원하는 근무 시작 시기에 맞는 인턴 공고를 찾아드려요 다음으로 - - 필터링 재설정 - 재학 상태 - 저장하기 - 1학년 - 2학년 - 3학년 - 4학년 - 희망 근무 기간 - 1개월 ~ 3개월 - 4개월 ~ 6개월 - 7개월 이상 - 근무 시작 시기 - 공유 아이콘 지원 사이트로 이동하기