Skip to content

✨ 크롤러 초기 구현 및 Flyway 마이그레이션 적용#4

Merged
hyun-1210 merged 5 commits intomainfrom
feat/crawler-setup
Jan 7, 2026
Merged

✨ 크롤러 초기 구현 및 Flyway 마이그레이션 적용#4
hyun-1210 merged 5 commits intomainfrom
feat/crawler-setup

Conversation

@hyun-1210
Copy link
Collaborator

이 PR이 어떤 기능을 추가했나요?

Mysnu Crawler 구현(Controller는 test 용으로 구현)
Article data model 도 필요해서 구현
V1 init table 변경사항: title 추가, content Text->LongText(게시글 양이 많아서)

주의해야 할 점이나 유의사항이 있나요?

test 하시려면 controller와 V1 init table 주석처리한 것들 풀고 해보시면 됩니다(방법은 코드에 적혀있습니다)

Copy link
Collaborator

@tteokgook1 tteokgook1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hyun-1210 크롤러 간격 짧게 설정해서 주기적으로 실행되는지 확인해보셨나요?

@tteokgook1
Copy link
Collaborator

feat: 부분 이모지로 바꿔주세요

@hyun-1210 hyun-1210 changed the title feat: 크롤러 초기 구현 및 Flyway 마이그레이션 적용 ✨ 크롤러 초기 구현 및 Flyway 마이그레이션 적용 Jan 6, 2026
@hyun-1210 hyun-1210 changed the title ✨ 크롤러 초기 구현 및 Flyway 마이그레이션 적용 ✨ 크롤러 초기 구현 및 Flyway 마이그레이션 적용 Jan 6, 2026
Copy link
Collaborator

@tteokgook1 tteokgook1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hyun-1210 해결하고 멘션 달아주세요
pr 합칠 때 squash merge를 할 건데, 그러면 pr 전체가 main에 커밋 하나로 들어가요. 그래서 pr head 브랜치에서의 커밋 기록은 관리할 필요가 없어요. force push는 되도록 자제해주세요.

@tteokgook1
Copy link
Collaborator

ci 테스트 실패하는데 해결해주세요

@hyun-1210
Copy link
Collaborator Author

@tteokgook1 crawl abstract 구현 관련해서는 다른 크롤러도 동작 구조 자체는 비슷할 것 같아서 수정만 할 수 있게 open으로 열어놓는건 어떨까요?

@tteokgook1
Copy link
Collaborator

@tteokgook1 crawl abstract 구현 관련해서는 다른 크롤러도 동작 구조 자체는 비슷할 것 같아서 수정만 할 수 있게 open으로 열어놓는건 어떨까요?

코드 보니까 목록 fetch를 한 번만 하는 것 같은데 그렇게 구현하기 어려운 서이트가 있을 수도 있어요. (컴공 페이지는 공지를 4페이지 정도 넘겨야 새 공지가 나와요)

@hyun-1210
Copy link
Collaborator Author

@tteokgook1 crawl abstract 구현 관련해서는 다른 크롤러도 동작 구조 자체는 비슷할 것 같아서 수정만 할 수 있게 open으로 열어놓는건 어떨까요?

코드 보니까 목록 fetch를 한 번만 하는 것 같은데 그렇게 구현하기 어려운 서이트가 있을 수도 있어요. (컴공 페이지는 공지를 4페이지 정도 넘겨야 새 공지가 나와요)

아 컴공 사이트는 그런데 앱의 확장을 생각했을때 아마 대부분의 사이트는 첫페이지에서 볼 수 있을거라 open으로 열어놓고 컴공 사이트 같은 곳만 수정하는게 어때요?? 어차피 abstract로 설정하고 새로 짜나 open으로 열어놓고 필요한 경우에만 override 하나 드는 노력은 똑같으니까요

@tteokgook1
Copy link
Collaborator

@tteokgook1 crawl abstract 구현 관련해서는 다른 크롤러도 동작 구조 자체는 비슷할 것 같아서 수정만 할 수 있게 open으로 열어놓는건 어떨까요?

코드 보니까 목록 fetch를 한 번만 하는 것 같은데 그렇게 구현하기 어려운 서이트가 있을 수도 있어요. (컴공 페이지는 공지를 4페이지 정도 넘겨야 새 공지가 나와요)

아 컴공 사이트는 그런데 앱의 확장을 생각했을때 아마 대부분의 사이트는 첫페이지에서 볼 수 있을거라 open으로 열어놓고 컴공 사이트 같은 곳만 수정하는게 어때요?? 어차피 abstract로 설정하고 새로 짜나 open으로 열어놓고 필요한 경우에만 override 하나 드는 노력은 똑같으니까요

확인했어요👍

1 similar comment
@tteokgook1
Copy link
Collaborator

@tteokgook1 crawl abstract 구현 관련해서는 다른 크롤러도 동작 구조 자체는 비슷할 것 같아서 수정만 할 수 있게 open으로 열어놓는건 어떨까요?

코드 보니까 목록 fetch를 한 번만 하는 것 같은데 그렇게 구현하기 어려운 서이트가 있을 수도 있어요. (컴공 페이지는 공지를 4페이지 정도 넘겨야 새 공지가 나와요)

아 컴공 사이트는 그런데 앱의 확장을 생각했을때 아마 대부분의 사이트는 첫페이지에서 볼 수 있을거라 open으로 열어놓고 컴공 사이트 같은 곳만 수정하는게 어때요?? 어차피 abstract로 설정하고 새로 짜나 open으로 열어놓고 필요한 경우에만 override 하나 드는 노력은 똑같으니까요

확인했어요👍

@tteokgook1
Copy link
Collaborator

tteokgook1 commented Jan 7, 2026

@hyun-1210 crawl 함수 맨 앞에 이거 관련해서 주석 조금 자세히 적어주세요
javadoc처럼 코틀린도 /**로 시작하는 주석 작성 방식이 있나 봐요

@hyun-1210
Copy link
Collaborator Author

@hyun-1210 crawl 함수 맨 앞에 이거 관련해서 주석 조금 자세히 적어주세요 javadoc처럼 코틀린도 /**로 시작하는 주석 작성 방식이 있나 봐요

알겠습니다!

@hyun-1210
Copy link
Collaborator Author

@tteokgook1 test 할때마다 실제 크롤링까지 해서 응답받는 식보다 API가 잘 연결됐는지 (controller가 잘 요청받아서 실행되는지)로 test 구현하면 될까요??

@hyun-1210
Copy link
Collaborator Author

ci 테스트 실패하는데 해결해주세요

이거 오류나는게 sql이 한글을 못받는거라 일단은 한글을 다 영어로 바꿔서 해결했습니다.

@hyun-1210
Copy link
Collaborator Author

@tteokgook1 반영해서 수정했습니다!

Copy link
Collaborator

@tteokgook1 tteokgook1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hyun-1210 LocalDateTime 다 Instant 로 바꿔주세요
서버에서는 UTC로 처리하고 프엔에서 필요하면 시간대 설정하는 게 좋아 보여요

@hyun-1210
Copy link
Collaborator Author

@hyun-1210 LocalDateTime 다 Instant 로 바꿔주세요 서버에서는 UTC로 처리하고 프엔에서 필요하면 시간대 설정하는 게 좋아 보여요

다 Instant로 바꿨는데 한국 시간대로 저장되서 이걸 억지로 UTC로 변환하게 프로펄티를 변경할 필요는 없겠죠??

@hyun-1210
Copy link
Collaborator Author

@tteokgook1 리뷰반영했습니다

@tteokgook1
Copy link
Collaborator

@hyun-1210 LocalDateTime 다 Instant 로 바꿔주세요 서버에서는 UTC로 처리하고 프엔에서 필요하면 시간대 설정하는 게 좋아 보여요

다 Instant로 바꿨는데 한국 시간대로 저장되서 이걸 억지로 UTC로 변환하게 프로펄티를 변경할 필요는 없겠죠??

@hyun-1210 current_timestamp로 자동으로 되는 거는 상관없는데 크롤러를 통해서 published_at 수집한 값은 9시간 빼서 UTC로 바꿔주세요

tteokgook1
tteokgook1 previously approved these changes Jan 7, 2026
Copy link
Collaborator

@tteokgook1 tteokgook1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hyun-1210 크롤러에 KST -> UTC 변환 부분 있는 게 맞으면 확인하고 머지해주세요

@hyun-1210
Copy link
Collaborator Author

@hyun-1210 크롤러에 KST -> UTC 변환 부분 있는 게 맞으면 확인하고 머지해주세요

val publishedAt =
try {
val localDateTime = LocalDateTime.parse(dateStr, formatter)
localDateTime.atZone(ZoneId.of("Asia/Seoul")).toInstant()
} catch (e: Exception) {
Instant.now()
}
이 코드가 그 변환 부분인데 DB에 저장은 KTC로 되네요 DB접속주소가 한국시간으로 되어있어서 그런 것 같아요

@hyun-1210
Copy link
Collaborator Author

@tteokgook1
이거에 대해 (@hyun-1210 크롤러에 KST -> UTC 변환 부분 있는 게 맞으면 확인하고 머지해주세요)
수정한건 아니고 원래는 형식이 잘못되서 잘못된 값이 들어갔더라고요. 이렇게 수정하고 변환 로직이 있어도 한국 시간으로 계속 저장됩니다.

Copy link
Collaborator

@tteokgook1 tteokgook1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hyun-1210 UTC로 잘 저장된다는 거죠? 맞으면 머지해주세요

@hyun-1210 hyun-1210 merged commit a2382fa into main Jan 7, 2026
1 check passed
@hyun-1210 hyun-1210 deleted the feat/crawler-setup branch January 7, 2026 15:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants