Skip to content

Commit

Permalink
release/v1.2.0 (#246)
Browse files Browse the repository at this point in the history
* [IDLE-000] Production CI 스크립트 작성

* [IDLE-000] 센터 공고 수정 API 내 접수 방법 null 비허용

* [IDLE-000] 공고 지원자 조회 시, 삭제된 유저는 조회되지 않도록 수정

* [IDLE-363] 센터 관리자 전화 인증 요청 API

* [IDLE-363] 개발 환경 ddl-auto 옵션 임시로 create 옵션으로 변경

* [IDLE-365] 공고 크롤러 selenium 로직 수정 및 로컬 동작 확인

* [IDLE-365] 테스트를 위한 스케줄러 기준 시각 변경

* [IDLE-365] batch job enable 옵션 비활성화

* [IDLE-365] ddl-auto update로 변경

* [IDLE-365] 크롤링 공고 필드 null 비허용

* [IDLE-365] 스케줄러 시간 02시로 설정

* [IDLE-366] spring batch selenium 크롤링을 위한 빌드 스크립트 수정

* [IDLE-366] worknet 사이트가 고용 24 사이트로 통합됨에 따라, 크롤링 스크립트 수정

* [IDLE-366] 크롤러 동작 스케줄링 시간 변경

* [IDLE-366] 스프링 초기 실행 시, spring batch 자동 실행 방지 옵션 추가

* [IDLE-366] spring batch 5 버전에서 업데이트 된 변경사항 적용 및 별도의 JobLauncher 구현

* [IDLE-366] 불필요 의존성 및 옵션 제거

* [IDLE-366] 크롤링 조회 API 내 entity status 필드 추가 및 쿼리 수정

* [IDLE-358] 운영 환경 CD 구축 및 운영 환경 profile 설정 추가

* [IDLE-358] 운영 환경 docker run 실행 시 예외 처리

* [IDLE-000] 크롤링 전체 조회 DTO 생성자 추가

* [IDLE-000] 공고 전체 조회 fetchJoin() 중복 이슈 해결을 위한 subquery 분리

* [IDLE-000] AI 코드리뷰 coderabbit 도입

* [IDLE-000] 크롤링 공고 반경범위 조회 필터를 위한 where절 추가

* [IDLE-000] TimeZone 설정이 적용되지 않는 문제 해결

* [IDLE-000] TimeZone 지정 및 @EnableScheduling 설정

* [IDLE-000] TimeZone 설정 제거

* [IDLE-000] 공고 전체 조회 쿼리 롤백

* [IDLE-000] 기존 공고 내 location을 기반으로 위.경도 값을 decoding하도록 변경

* [IDLE-000] 배포 전 최종 QA

* [IDLE-000] 크롤링 공고 생성일자 필드 type 변경(timestamp -> date)

* [IDLE-000] Redis 비밀번호 설정 추가 (#171)

* [IDLE-000] Redis 비밀번호 설정 추가

* [IDLE-000] yaml 파일에 password 필드 추가

* [IDLE-000] redis local default password 설정

* [IDLE-000] compose 파일 내, 비밀번호 지정 command 설정

* [IDLE-000] Redis 볼륨 설정

* [IDLE-000] ci triggering branch 임시 변경

* [IDLE-000] ci triggering branch 롤백

* [IDLE-000] 테스트 심사 통과를 위한 전화번호 검증 로직 추가

* [IDLE-000] 테스트 심사 통과를 위한 전화번호 검증 로직 추가

* [IDLE-389] 센터 인증 요청 이벤트 발생 시, 디스코드 웹훅 알림을 전송하는 로직 작성

* [IDLE-389] 사업자 등록번호 client properties 클래스명 변경

* [IDLE-389] 코드 리뷰 반영

* [IDLE-000] 트랜잭션 전파 레벨 변경(REQUIRED -> REQUIRES_NEW)

* [IDLE-396] FCM 모듈 추가 및 firebase 의존성 설정

* readme 제목 수정

* readme 제목 수정

* [IDLE-399] FCM Device Token 관리 API

* [IDLE-399] 알림 도메인 설계

* [IDLE-000] fcm service 설정값 주입을 위한 디렉토리 구조 변경

* [IDLE-000] fcm service 설정값 주입을 위한 디렉토리 구조 변경

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다.

* [IDLE-400] fcm 모듈 설정 추가

* [IDLE-400] 공고 지원자 발생 시, 모든 센터 관리자들에게 다중 알림을 발송한다.

* [IDLE-415] 알림 조회 처리 API

* [IDLE-417] 읽지 않은 알림 수 집계 API

* [IDLE-418] 알림 목록 조회 API

* [IDLE-418] 피드백 반영

* [IDLE-423] soft-delete가 적용된 즐겨찾기 entity에서, 즐겨찾기 해제 후 다시 설정하는 경우 발생하는 버그를 해결한다.

* [IDLE-424] 요양 보호사 공고 전체 조회 시, 삭제된 공고가 함께 보이는 문제 해결

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다. (#183)

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다.

* [IDLE-400] fcm 모듈 설정 추가

* [IDLE-400] 공고 지원자 발생 시, 모든 센터 관리자들에게 다중 알림을 발송한다.

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다.

* [IDLE-400] fcm 모듈 설정 추가

* [IDLE-400] 공고 지원자 발생 시, 모든 센터 관리자들에게 다중 알림을 발송한다.

* [IDLE-415] 알림 조회 처리 API

* [IDLE-417] 읽지 않은 알림 수 집계 API

* [IDLE-418] 알림 목록 조회 API

* [IDLE-418] 피드백 반영

* [IDLE-423] soft-delete가 적용된 즐겨찾기 entity에서, 즐겨찾기 해제 후 다시 설정하는 경우 발생하는 버그를 해결한다.

* [IDLE-424] 요양 보호사 공고 전체 조회 시, 삭제된 공고가 함께 보이는 문제 해결

* [IDLE-400] 알림 명세 변경

* [IDLE-400] fcm 설정 파일 디렉토리 path 변경

* [IDLE-400] ddl 옵션 변경

* [IDLE-400] ci/cd 옵션 변경

* [IDLE-000] ci triggering branch 복구

* [IDLE-000] develop 환경에서 fcm service 설정 파일 path 수정

* [IDLE-000] fcm service json 파일명 변경

* [IDLE-000] firebase service key 설정 경로 체크를 위해, cd 스크립트를 수정합니다.

* Update README.md

* [IDLE-000] fcm service key 경로를 class path 경로로 수정 시도

* [IDLE-000] ci triggering branch 임시 변경

* [IDLE-000] firebaseApp 초기화 임시 비활성화

* [IDLE-000] firebaseApp 초기화 임시 비활성화

* [IDLE-000] firebaseApp 초기화 임시 비활성화

* [IDLE-000] file path 앞에 ./ 제외

* [IDLE-000] 절대 경로로 변경 시도

* [IDLE-000] fcm service key 생성 path 수정

* [IDLE-000] fcm service key json file 생성 스크립트 작성

* [IDLE-000] ci triggering branch develop으로 롤백

* [IDLE-000] 불필요 스크립트 제거

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가 (#197)

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] ci triggering branch 수정

* [IDLE-000] ci triggering branch 수정

* [IDLE-000] firebase app 초기화 로직 주석 처리

* [IDLE-000] firebase app 초기화 로직 주석 처리

* [IDLE-000] firebase app 초기화 로직 주석 처리

* [IDLE-000] file 대신 string으로 주입받아 초기화하는 방식으로 전환

* [IDLE-000] 일반 string 대신 base64 인코딩 된 문자열을 주입하도록 처리

* [IDLE-000] 일반 string 주입으로 rollback

* [IDLE-000] json string log 추가

* [IDLE-000] base64 문자열로 재 변경

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-429] DB 형상관리를 위한 Flyway 적용

* [IDLE-429] Flyway latest version으로 설정

* [IDLE-429] 피드백 반영

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] 알림 조회 처리 로직에 @transactional 추가

* [IDLE-000] 알림 조회 시, 생성 시각 기준이 아닌 uuid v7 id 기준으로 내림차순 정렬하도록 변경

* [IDLE-000] CI 트리거 브랜치 복구

* [IDLE-454] 테스트를 위한 크롤링 수행 시각 변경 및 로깅 추가

* [IDLE-000] 공고 범위 검색 내 중복 데이터 발생 방지

* [IDLE-000] ci 트리거 브랜치 변경

* [IDLE-000] ci 트리거 브랜치 롤백

* [IDLE-000] monitoring 모듈 추가 및 actuator, prometheus 의존성 추가

* [IDLE-456] monitoring.yml 작성

* [IDLE-456] monitoring profile 추가

* [IDLE-456] actuator dependency group name 수정

* [IDLE-000] 크롤링 주기 하루 2회로 변경

* [IDLE-000] 불필요 로그 제거

* [IDLE-000] 인증번호 SMS 내용 수정

* [IDLE-000] classPath 하위 yaml 파일 확장자 모두 .yml로 통일

* [IDLE-000] 즐겨찾기 facade service에 트랜잭션 추가 (#206)

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] facade service에 transaction 추가

* [IDLE-461] 유저가 다중 디바이스에서 알림을 받을 수 있도록 개선한다. (#207)

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-461] 한 유저가 다중 디바이스 설정이 가능하도록 한다.

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] presentation module의 gradle 파일에 monitoring 모듈 dependency 추가

* [IDLE-000] deviceToken 서비스에서 트랜잭션 어노테이션 추가

* [IDLE-000] batch 테스트를 위해 30분마다 동작하도록 변경

* [IDLE-475] 채팅, 채팅방 도메인 설계

* [IDLE-475] 채팅 메세지 최소, 최대 길이 제한 설정

* [IDLE-000] Batch 메타데이터 테이블 스크립트 변경 및 크롤링 수행 주기 설정

* [IDLE-000] 운영 환경 CD 스크립트에서 불필요한 step 제거

* [IDLE-000] 도텐브 파일 공백 제거 스크립트 작성, 크롤링 대상일자 전날 등록된 공고로 변경

* [IDLE-000] 크롤링 기준 시각 15시로 임시 변경

* [IDLE-000] cd env 파일 생성 스크립트 변경

* [IDLE-492] 동일 유저가 여러 개의 디바이스를 사용 시, 알림이 중복해서 누적되는 현상

* [IDLE-493] flyway 스크립트 오탈자 수정

* [IDLE-493] flyway 스크립트 오탈자 수정

* [IDLE-494] 요양 보호사 및 센터 프로필에서 긴 텍스트를 입력 가능한 항목을 TEXT 컬럼으로 지정한다.

* [IDLE-495] 요양 보호사는 마감된 공고에 지원이 불가능하다.

* [IDLE-495] 공고 마감 처리 메서드명 변경 complete -> completed

* [IDLE-496] 스프링 프로파일 지정을 위한 환경변수 주입

* [IDLE-496] 로그 일부 수정

* [IDLE-000] 안드로이드 app link를 위한 asset 추가

* [IDLE-190] 센터 관리자 인증 요청 목록 조회 API

* [IDLE-000] 크롤링 주기 변경 및 테스트용 에러 로그 추가

* [IDLE-000] 크롤링 대상 사이트에 알림창(alert)이 뜨는 케이스에 대한 처리

* [IDLE-509] 크롤링 전체 조회 시, 공고가 중복 노출되는 현상 해결

* [IDLE-509] 피드백 반영

* [IDLE-509] 사용하지 않는 하위 서비스 의존성 제거

* [IDLE-000] 크롤링 진행 시각 저녁 11시로 변경

* [IDLE-000] 크롤링 공고 즐겨찾기 조회 로직 버그 수정

* [IDLE-000] 요양 보호사 및 센터 관리자 전화번호 컬럼에 unique index 추가

* [IDLE-512] 센터 관리자 인증 요청 event 변경 및 NotificationInfo 인터페이스 패키지 이동

* [IDLE-512] 센터 관리자 인증 요청 event 변경 및 NotificationInfo 인터페이스 패키지 이동

* [IDLE-513] 요양 보호사 location 필드 추가 및 기존 데이터 마이그레이션

* [IDLE-513] 센터 관리자 공고 등록 시, 주변 요양보호사에게 FCM 알림을 일괄 전송한다.

* [IDLE-513] 센터 관리자 공고 등록 시, 주변 요양보호사에게 FCM 알림을 일괄 전송한다.

* [IDLE-000] notification type enum 속성 추가

* [IDLE-000] 센터 공고 등록 알림 제목 및 프로필 url null로 수정

* [IDLE-000] 크롤러 에러 로그 추가

* [IDLE-000] 컴파일 에러 해결
  • Loading branch information
wonjunYou authored Nov 14, 2024
1 parent c1f5b29 commit b9241cd
Show file tree
Hide file tree
Showing 34 changed files with 492 additions and 98 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.swm.idle.application.applys.event

import com.swm.idle.domain.applys.event.ApplyEvent
import org.springframework.context.ApplicationEventPublisher
import org.springframework.stereotype.Service

@Service
class CarerApplyEventPublisher(
private val eventPublisher: ApplicationEventPublisher,
) {

fun publish(applyEvent: ApplyEvent) {
eventPublisher.publishEvent(applyEvent)
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.swm.idle.application.applys.facade

import com.swm.idle.application.applys.domain.CarerApplyEventPublisher
import com.swm.idle.application.applys.domain.CarerApplyService
import com.swm.idle.application.applys.event.CarerApplyEventPublisher
import com.swm.idle.application.applys.vo.CarerApplyNotificationInfo
import com.swm.idle.application.common.security.getUserAuthentication
import com.swm.idle.application.jobposting.domain.JobPostingService
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.swm.idle.application.applys.vo

import com.swm.idle.domain.notification.enums.NotificationType
import com.swm.idle.domain.notification.jpa.NotificationInfo
import com.swm.idle.domain.notification.event.NotificationInfo
import java.util.*

data class CarerApplyNotificationInfo(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.swm.idle.application.jobposting.event

import com.swm.idle.domain.jobposting.event.CreateJobPostingEvent
import org.springframework.context.ApplicationEventPublisher
import org.springframework.stereotype.Service

@Service
class CreateJobPostingEventPublisher(
private val eventPublisher: ApplicationEventPublisher,
) {

fun publish(createJobPostingEvent: CreateJobPostingEvent) {
eventPublisher.publishEvent(createJobPostingEvent)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,18 @@ import com.swm.idle.application.jobposting.domain.JobPostingApplyMethodService
import com.swm.idle.application.jobposting.domain.JobPostingLifeAssistanceService
import com.swm.idle.application.jobposting.domain.JobPostingService
import com.swm.idle.application.jobposting.domain.JobPostingWeekdayService
import com.swm.idle.application.jobposting.event.CreateJobPostingEventPublisher
import com.swm.idle.application.jobposting.vo.CreateJobPostingNotificationInfo
import com.swm.idle.application.jobposting.vo.JobPostingInfo
import com.swm.idle.application.notification.domain.DeviceTokenService
import com.swm.idle.application.notification.domain.NotificationService
import com.swm.idle.application.user.carer.domain.CarerService
import com.swm.idle.application.user.center.service.domain.CenterManagerService
import com.swm.idle.application.user.center.service.domain.CenterService
import com.swm.idle.application.user.common.service.domain.DeletedUserInfoService
import com.swm.idle.domain.jobposting.entity.jpa.JobPosting
import com.swm.idle.domain.jobposting.event.CreateJobPostingEvent
import com.swm.idle.domain.notification.enums.NotificationType
import com.swm.idle.domain.user.carer.entity.jpa.Carer
import com.swm.idle.domain.user.center.exception.CenterException
import com.swm.idle.domain.user.center.vo.BusinessRegistrationNumber
Expand Down Expand Up @@ -43,6 +49,9 @@ class CenterJobPostingFacadeService(
private val carerApplyService: CarerApplyService,
private val applicantService: ApplicantService,
private val deletedUserInfoService: DeletedUserInfoService,
private val deviceTokenService: DeviceTokenService,
private val notificationService: NotificationService,
private val createJobPostingEventPublisher: CreateJobPostingEventPublisher,
) {

@Transactional
Expand All @@ -56,39 +65,79 @@ class CenterJobPostingFacadeService(

val geoCodeSearchResult = geoCodeService.search(request.roadNameAddress)

jobPostingService.create(
val jobPosting = jobPostingService.create(
centerId = centerId,
jobPostingInfo = JobPostingInfo.of(
request = request,
latitude = geoCodeSearchResult.addresses[0].y,
longitude = geoCodeSearchResult.addresses[0].x
)
).let { jobPosting ->
coroutineScope {
request.lifeAssistance?.let {
jobPostingLifeAssistanceService.create(
jobPostingId = jobPosting.id,
lifeAssistance = request.lifeAssistance!!,
)
}
)

launch {
jobPostingWeekdayService.create(
jobPostingId = jobPosting.id,
weekdays = request.weekdays,
)
}
coroutineScope {
request.lifeAssistance?.let {
jobPostingLifeAssistanceService.create(
jobPostingId = jobPosting.id,
lifeAssistance = request.lifeAssistance!!,
)
}

launch {
jobPostingWeekdayService.create(
jobPostingId = jobPosting.id,
weekdays = request.weekdays,
)
}

launch {
jobPostingApplyMethodService.create(
jobPostingId = jobPosting.id,
applyMethods = request.applyMethod,
)
}
}

launch {
jobPostingApplyMethodService.create(
jobPostingId = jobPosting.id,
applyMethods = request.applyMethod,
)
val carers = carerService.findAllByLocationWithinRadius(jobPosting.location)

carers?.forEach { carer ->
val deviceTokens = deviceTokenService.findAllByUserId(carer.id)

val notificationInfo = CreateJobPostingNotificationInfo(
title = "주변에 새로운 공고가 등록되었어요!",
body = createBodyMessage(jobPosting),
receiverId = carer.id,
notificationType = NotificationType.NEW_JOB_POSTING,
imageUrl = null,
notificationDetails = mapOf(
"jobPostingId" to jobPosting.id,
)
)

val notification = notificationService.create(notificationInfo)

deviceTokens?.forEach { deviceToken ->
CreateJobPostingEvent.of(
deviceToken = deviceToken,
notificationId = notification.id,
notificationInfo = notificationInfo
).also {
createJobPostingEventPublisher.publish(it)
}
}
}
}

private fun createBodyMessage(jobPosting: JobPosting): String {
val filteredLotNumberAddress = jobPosting.lotNumberAddress.split(" ")
.take(3)
.joinToString(" ")

return "$filteredLotNumberAddress " +
"${jobPosting.careLevel}등급 " +
"${BirthYear.calculateAge(jobPosting.birthYear)}" +
jobPosting.gender.value
}

@Transactional
fun update(
jobPostingId: UUID,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.swm.idle.application.jobposting.vo

import com.swm.idle.application.applys.vo.CarerApplyNotificationInfo
import com.swm.idle.domain.notification.enums.NotificationType
import com.swm.idle.domain.notification.event.NotificationInfo
import java.util.*

class CreateJobPostingNotificationInfo(
override val title: String,
override val body: String,
override val receiverId: UUID,
override val notificationType: NotificationType,
override val imageUrl: String?,
override val notificationDetails: Map<String, Any>?,
) : NotificationInfo {

companion object {

fun create(
title: String,
body: String,
receiverId: UUID,
notificationType: NotificationType,
imageUrl: String?,
jobPostingId: UUID,
): CarerApplyNotificationInfo {
val notificationDetails = mapOf(
"jobPostingId" to jobPostingId,
)
return CarerApplyNotificationInfo(
title,
body,
receiverId,
notificationType,
imageUrl,
notificationDetails,
)
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ class DeviceTokenService(
return deviceTokenJpaRepository.findAllByUserId(userId)
}

fun findByUserId(userId: UUID): DeviceToken? {
return deviceTokenJpaRepository.findByUserId(userId)
}

@Transactional
fun updateDeviceTokenUserId(
deviceToken: DeviceToken,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package com.swm.idle.application.notification.domain

import com.swm.idle.domain.common.dto.NotificationQueryDto
import com.swm.idle.domain.common.exception.PersistenceException
import com.swm.idle.domain.notification.event.NotificationInfo
import com.swm.idle.domain.notification.jpa.Notification
import com.swm.idle.domain.notification.jpa.NotificationInfo
import com.swm.idle.domain.notification.repository.jpa.NotificationJpaRepository
import com.swm.idle.domain.notification.repository.querydsl.NotificationQueryRepository
import org.springframework.data.repository.findByIdOrNull
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package com.swm.idle.application.user.carer.domain

import com.swm.idle.application.common.converter.PointConverter
import com.swm.idle.domain.common.exception.PersistenceException
import com.swm.idle.domain.user.carer.entity.jpa.Carer
import com.swm.idle.domain.user.carer.enums.JobSearchStatus
import com.swm.idle.domain.user.carer.repository.jpa.CarerJpaRepository
import com.swm.idle.domain.user.carer.repository.jpa.CarerQueryRepository
import com.swm.idle.domain.user.common.enum.GenderType
import com.swm.idle.domain.user.common.vo.BirthYear
import com.swm.idle.domain.user.common.vo.PhoneNumber
import org.locationtech.jts.geom.Point
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
Expand All @@ -16,6 +19,7 @@ import java.util.*
@Service
class CarerService(
private val carerJpaRepository: CarerJpaRepository,
private val carerQueryRepository: CarerQueryRepository,
) {

@Transactional
Expand All @@ -39,6 +43,10 @@ class CarerService(
lotNumberAddress = lotNumberAddress,
longitude = BigDecimal(longitude),
latitude = BigDecimal(latitude),
location = PointConverter.convertToPoint(
latitude = latitude.toDouble(),
longitude = longitude.toDouble(),
)
)
)
}
Expand Down Expand Up @@ -72,6 +80,10 @@ class CarerService(
introduce = introduce,
speciality = speciality,
jobSearchStatus = jobSearchStatus,
location = PointConverter.convertToPoint(
longitude.toDouble(),
latitude.toDouble()
)
)
}

Expand All @@ -95,4 +107,8 @@ class CarerService(
carerJpaRepository.deleteById(id)
}

fun findAllByLocationWithinRadius(location: Point): List<Carer>? {
return carerQueryRepository.findAllByLocationWithinRadius(location)
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.swm.idle.application.user.center.service.event

import com.swm.idle.domain.user.center.event.CenterManagerVerificationRequestEvent
import org.springframework.context.ApplicationEventPublisher
import org.springframework.stereotype.Service

@Service
class CenterManagerVerificationRequestEventPublisher(
private val eventPublisher: ApplicationEventPublisher,
) {

fun publish(centerManagerVerificationRequestEvent: CenterManagerVerificationRequestEvent) {
eventPublisher.publishEvent(centerManagerVerificationRequestEvent)
}

}
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.swm.idle.application.user.center.service.facade

import com.swm.idle.application.common.security.getUserAuthentication
import com.swm.idle.application.user.center.service.domain.CenterManagerEventPublisher
import com.swm.idle.application.user.center.service.domain.CenterManagerService
import com.swm.idle.application.user.center.service.event.CenterManagerVerificationRequestEventPublisher
import com.swm.idle.application.user.common.service.domain.DeletedUserInfoService
import com.swm.idle.application.user.common.service.domain.RefreshTokenService
import com.swm.idle.application.user.common.service.util.JwtTokenService
import com.swm.idle.domain.common.enums.EntityStatus
import com.swm.idle.domain.common.exception.PersistenceException
import com.swm.idle.domain.user.center.event.CenterManagerVerifyEvent.Companion.createVerifyEvent
import com.swm.idle.domain.user.center.event.CenterManagerVerificationRequestEvent.Companion.createVerifyEvent
import com.swm.idle.domain.user.center.exception.CenterException
import com.swm.idle.domain.user.center.vo.BusinessRegistrationNumber
import com.swm.idle.domain.user.center.vo.Identifier
Expand All @@ -34,7 +34,7 @@ class CenterAuthFacadeService(
private val deletedUserInfoService: DeletedUserInfoService,
private val jwtTokenService: JwtTokenService,
private val refreshTokenService: RefreshTokenService,
private val centerManagerEventPublisher: CenterManagerEventPublisher,
private val centerManagerVerificationRequestEventPublisher: CenterManagerVerificationRequestEventPublisher,
) {

fun join(
Expand Down Expand Up @@ -147,7 +147,7 @@ class CenterAuthFacadeService(
.let { centerManagerService.getById(it) }

if (centerManager.entityStatus == EntityStatus.ACTIVE && centerManager.isNew()) {
centerManagerEventPublisher.publish(centerManager.createVerifyEvent())
centerManagerVerificationRequestEventPublisher.publish(centerManager.createVerifyEvent())
centerManagerService.updateAccountStatusToPending(centerManager)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class CrawlingJobScheduler(
private val crawlingJobConfig: CrawlingJobConfig,
) {

@Scheduled(cron = "0 00 23 * * *")
@Scheduled(cron = "0 0 23 * * *")
fun scheduleJob() {
val jobParameters: JobParameters = JobParametersBuilder()
.addLong("timestamp", System.currentTimeMillis())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,15 @@ class CrawlingJobPostingTasklet(
private val logger = KotlinLogging.logger { }

override fun execute(contribution: StepContribution, chunkContext: ChunkContext): RepeatStatus {
val crawlingJobPostings: List<CrawledJobPostingDto>? = WorknetCrawler.run()
val crawlingJobPostings: List<CrawledJobPostingDto>? = try {
WorknetCrawler.run()
} catch (e: Exception) {
logger.warn {
e.toString()
}
e.printStackTrace() // 오류 로그 출력
null // 오류 발생
}

if (crawlingJobPostings != null) {
crawlingJobPostings.mapNotNull { crawledJobPosting ->
Expand Down
Loading

0 comments on commit b9241cd

Please sign in to comment.