Repository navigation
[Feature/#55] Velog RSS 자동 연동 - #56
Conversation
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
RSS 데이터 가져오기와 로그 렌더링 components/Contact/constants.ts, components/Contact/getVelogLogs.ts, components/Contact/TechLog.tsx, components/Contact/LogItem.tsx |
Velog RSS 주소와 파싱 함수를 추가하고, TechLog가 가져온 로그를 표시하도록 변경했습니다. 최근 글은 최대 4개까지 반환합니다. 요청 실패 시 상태 코드가 포함된 오류를 던지고, 글이 없으면 별도 오류를 던집니다. 태그가 없으면 태그 컨테이너를 렌더링하지 않습니다. |
정기 배포 설정 .github/workflows/deploy.yml |
매일 UTC 자정에 배포 워크플로를 실행하고, 체크아웃 브랜치를 main으로 지정합니다. |
Priority:
Estimated code review effort: 3 (Moderate) | ~20 minutes
Change: Feature
Merge Risk: 
Minimal · up to 3ceef
-
The Tech Logs section now pulls the latest Velog posts at build time, and the deployment is scheduled daily. No concrete merge-blocking risk was found. If Velog is unreachable during a build, the build fails and the previous deployment stays live, which the PR describes as intended.
Pre-merge checks: 
3 · 
2
-
Failed checks: 2 warnings Passed checks: 3 passed-
Check name Status Explanation Title check 제목 "[Feature/#55] Velog RSS 자동 연동"은 이번 변경의 핵심인 Velog RSS 기반 Tech Logs 자동 연동을 잘 나타냅니다. 템플릿 형식(타입/이슈번호)도 지켜졌습니다. 다만 build 시점 fetch와 GitHub Actions 스케줄 추가는 제목에 드러나지 않지만, 이는 세부 사항이므로 문제가 되지 않습니다. Description check PR 설명은 템플릿의 주요 섹션(관련 이슈 링크, PR 유형, 작업 내용, 작업 화면, 미완성 작업)을 모두 채웠습니다. 작업 내용에서 getVelogLogs 추가, TechLog async 전환, LogItem 태그 처리, deploy.yml 스케줄과 ref: main 지정 이유를 구체적으로 설명합니다. 다만 실패 처리 방식이 이슈 요구사항(fallbac… Out of Scope Changes check 변경 파일은 모두 [ #55] 목표에 직접 연결되어 있어요.
-components/Contact/getVelogLogs.ts(신규): RSS fetch와ILog[]변환 함수예요. 이슈의 핵심 요구사항이에요.
-components/Contact/constants.ts:VELOG_RSS_URL상수를 추가해요.getVelogLogs가…Full details: Description check
-
Explanation
PR 설명은 템플릿의 주요 섹션(관련 이슈 링크, PR 유형, 작업 내용, 작업 화면, 미완성 작업)을 모두 채웠습니다. 작업 내용에서 getVelogLogs 추가, TechLog async 전환, LogItem 태그 처리, deploy.yml 스케줄과 ref: main 지정 이유를 구체적으로 설명합니다. 다만 실패 처리 방식이 이슈 요구사항(fallback 처리)과 달라 이 부분에 대한 보완 설명이 필요합니다.
Resolution
필수 항목은 충족되었습니다. 다만 아래 사항을 보완하면 리뷰어가 판단하기 쉬워집니다.
- 이슈
#55체크리스트에는 fetch 실패 또는 빈 응답 시 fallback 처리가 있습니다. 현재 구현은 throw로 이전 배포를 유지합니다. 이 차이를 설명하거나, fallback 처리를 추가하는 방향을 명시해 주세요. - "Close
#55"와 같이 끝에 남은 공백을 정리해 주세요. - 오타로 보이는 부분을 수정해 주세요.
devleop은develop,랜더링은렌더링이 맞습니다.
- 이슈
Full details: Out of Scope Changes check
-
Explanation
변경 파일은 모두 [
#55] 목표에 직접 연결되어 있어요.components/Contact/getVelogLogs.ts(신규): RSS fetch와ILog[]변환 함수예요. 이슈의 핵심 요구사항이에요.components/Contact/constants.ts:VELOG_RSS_URL상수를 추가해요.getVelogLogs가 사용해요.components/Contact/TechLog.tsx: 하드코딩된LOGS를 제거하고, async Server Component에서 RSS 데이터를 렌더링해요.components/Contact/LogItem.tsx: 태그가 없을 때 태그 영역을 렌더링하지 않아요. 태그를 빈 배열로 두는 설계와 맞아요..github/workflows/deploy.yml: KST 09:00 schedule과ref: main을 추가해요. 정기 재배포 요구사항과 맞아요.
이슈와 무관한 변경은 확인되지 않았어요. 다만
ILog타입과LogItem.css등 요약에 없는 파일은 이번 검토 범위에서 직접 확인하지 않았어요.
-
Full details: Linked Issues check
-
Explanation
[
#55] 요구사항을 확인했어요. 대부분 잘 구현되어 있어요.충족한 항목:
- RSS fetch 및 XML →
ILog[]변환:components/Contact/getVelogLogs.ts의getVelogLogs()가<item>에서 title, link, pubDate를 추출해요.tags는[]로 설정해요. 태그는 이번 이슈 범위에서 제외되어 있어요. - 최근 4개 글:
MAX_LOGS = 4와.slice(0, MAX_LOGS)로 제한해요. - Server Components 렌더링:
TechLog가async function이고await getVelogLogs()를 호출해요. - 하드코딩 제거:
components/Contact/TechLog.tsx에LOGS목록과 관련 주석이 없어요. - 정기 재배포:
.github/workflows/deploy.yml에cron: "0 0 * * *"(KST 09:00)가 추가되었어요. checkout 단계는ref: main을 사용해요. - 태그 영역:
components/Contact/LogItem.tsx가tags.length > 0일 때만 태그 영역을 렌더링해요.
미충족 항목:
- [
#55] fetch 실패/빈 응답 시 fallback 처리:getVelogLogs()는!res.ok이면 Error를 던지고, 글이 없으면 Error를 던져요.TechLog에는 try/catch나 대체 데이터 경로가 없어요. 따라서 코드에는 fallback 동작이 없어요. - PR 설명은 이 throw가 이전 배포를 유지하기 위한 의도라고 밝혀요. 빌드 job이 실패하면
deployjob(needs: build)이 실행되지 않으므로, 이전 Pages 배포가 유지되는 것은 사실이에요. 하지만 이 동작은 배포 단위의 결과일 뿐이고, 이슈 체크리스트는 코드 수준의 fallback 처리를 요구해요. 이슈 요구와 PR 의도가 충돌해요. - 체크리스트 항목은 [x]로 표시되어 있지만, 현재 코드에서 fallback 경로를 확인할 수 없어요.
Resolution
둘 중 하나를 선택해 주세요.
- 코드 수준 fallback을 추가해 주세요. 예를 들어
getVelogLogs()호출부(TechLog)에서 실패를 잡고, 빈 목록 또는 Velog 전체 글 링크만 보여주는 상태를 렌더링하는 방식이에요. 이 경우 빌드가 실패하지 않아요. - 빌드 실패 시 이전 배포를 유지하는 방식을 fallback으로 인정하도록
#55이슈 본문을 수정해 주세요. 이 경우 PR 설명과 체크리스트 항목이 같은 의미를 가지게 돼요.
- RSS fetch 및 XML →
Full details: Docstring Coverage
-
Explanation
Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 2 functions across 4 files. (1 skipped: 1 unsupported.)
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
-
Finishing Touches: 💡 1
-
📝 Generate docstrings: 💡
-
- Commit to this branch
- Create a new PR
🧪 Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands.
📜 관련 이슈 링크
📌 PR 유형
🎤 작업 내용
ILog[]로 변환하는getVelogLogs추가 (최근 글 4개 가져오도록 작성, 실패하면 throw로 이전 배포 유지)TechLog를 async Server Components로 바꾸고 하드코딩LOGS제거ILog.tags는 그대로 두고 빈 배열로 채워둠.LogItem은 태그가 없으면 태그 영역을 랜더링하지 않도록 구현deploy.yml에 KST기준 09:00 schedule 추가.devleop브랜치이기에, 배포 브랜치인 main으로 지정(ref: main)💻작업 화면
내용 정리
RSS(Really Simple Syndication): 뉴스나 블로그 같은 자주 업데이트되는 최신 콘텐츠들을 자동으로 수집하고 배급해주는 표준 포맷.
여러 사이트를 직접 찾아다니지 않고, 구독 개념 하나로 한곳에서 모아보는 기술이다.
🪧 미완성 작업
Summary by CodeRabbit
YYYY.MM.DD형식으로 표시됩니다. Velog에서 글을 가져오지 못하거나 글이 없는 경우에는 해당 상황을 오류로 처리합니다.