Skip to content

[Feature/#55] Velog RSS 자동 연동 - #56

Merged
jjjsun merged 5 commits into
developfrom
feature/#55
Oct 29, 2026
Merged

jjjsun merged 5 commits into
developfrom
feature/#55

Conversation

@jjjsun

@jjjsun jjjsun commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

📜 관련 이슈 링크

📌 PR 유형

  • ✨ Feature: 새로운 기능 추가 및 개선
  • 🐛 Bugfix: 버그/오류 수정
  • 📃 Docs: 문서 수정
  • ♻️ Refactor: 코드 리팩토링
  • 🧪 Test: 테스트 코드
  • 🎨 UI/UX: 디자인 수정
  • ⚙️ Setting: 개발 환경 세팅
  • 🌏 Deploy: 배포

🎤 작업 내용

  • Velog RSS를 Build 시점에 가져와서 ILog[]로 변환하는 getVelogLogs 추가 (최근 글 4개 가져오도록 작성, 실패하면 throw로 이전 배포 유지)
  • TechLog를 async Server Components로 바꾸고 하드코딩 LOGS 제거
  • RSS는 태그를 가져오지 않아서 ILog.tags는 그대로 두고 빈 배열로 채워둠. LogItem은 태그가 없으면 태그 영역을 랜더링하지 않도록 구현
  • 새 글이 자동으로 반영될 수 있도록 deploy.yml에 KST기준 09:00 schedule 추가.
  • schedule은 기본 브랜치 기준으로 실행되기 때문에 현재 개발 브랜치인 devleop 브랜치이기에, 배포 브랜치인 main으로 지정(ref: main)
  • 태그 연동은 다른 디벨롭 작업 구현후 추후 필요하다 판단이 되면 velog가 쓰는 GraphQL API로 가져오는 방법 고려할 예정

💻작업 화면

image

내용 정리

RSS(Really Simple Syndication): 뉴스나 블로그 같은 자주 업데이트되는 최신 콘텐츠들을 자동으로 수집하고 배급해주는 표준 포맷.
여러 사이트를 직접 찾아다니지 않고, 구독 개념 하나로 한곳에서 모아보는 기술이다.

  • RSS 작동방식
    1. 웹사이트 XML형식의 RSS 피드 주소 URL을 제공한다.
    2. 사용자는 RSS리더 프로그램이나 앱에 해당 주소를 등록한다.
    3. 사이트에 새로운 글이 올라오면 리더기가 자동으로 감지해서 이메일처럼 업데이트된 내용을 보여준다.

🪧 미완성 작업

  • 글 태그 연동 (추후에 필요하다 판단되면 도입예정)

Summary by CodeRabbit

  • 새로운 기능
    • 연락처 영역에서 Velog의 최신 글을 최대 4개까지 확인할 수 있습니다. 각 글의 제목, 링크, 발행일이 표시됩니다.
  • 개선 사항
    • 표시할 태그가 없는 글에서는 빈 태그 영역이 나타나지 않습니다. 발행일은 YYYY.MM.DD 형식으로 표시됩니다. Velog에서 글을 가져오지 못하거나 글이 없는 경우에는 해당 상황을 오류로 처리합니다.

@jjjsun jjjsun self-assigned this Oct 29, 2026
@jjjsun jjjsun added the Feature 기능 추가 label Oct 29, 2026
@coderabbitai

coderabbitai Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between fd8ff2b and 3ceefa3.

Files selected for processing: 5
  • .github/workflows/deploy.yml
  • components/Contact/LogItem.tsx
  • components/Contact/TechLog.tsx
  • components/Contact/constants.ts
  • components/Contact/getVelogLogs.ts

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Walkthrough

TechLog가 Velog RSS에서 최대 4개의 글을 가져와 표시하도록 변경했습니다. 태그가 없으면 태그 영역을 렌더링하지 않습니다. 배포 워크플로는 매일 UTC 자정에 실행되며 main 브랜치를 체크아웃합니다.

Changes: Velog RSS 연동

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: Normal

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: Passed 3 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Linked Issues check Warning [#55] 요구사항을 확인했어요. 대부분 잘 구현되어 있어요.

충족한 항목:
- RSS fetch 및 XML → ILog[] 변환: components/Contact/getVelogLogs.ts의 getVelogLogs()가 <item>에서 title, link, pubDate를 추출해요. tags는 []로 설정해요. 태그는 이번 이…
둘 중 하나를 선택해 주세요.
1. 코드 수준 fallback을 추가해 주세요. 예를 들어 getVelogLogs() 호출부(TechLog)에서 실패를 잡고, 빈 목록 또는 Velog 전체 글 링크만 보여주는 상태를 렌더링하는 방식이에요. 이 경우 빌드가 실패하지 않아요.
2. 빌드 실패 시 이전 배포를 유지하는 방식을 fallback으로 인정하도록 #55 이슈 본문을 수정해 주세요. 이 경우 PR 설명과 체크리스트 항…
Docstring Coverage Warning 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. Documentat… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed 제목 "[Feature/#55] Velog RSS 자동 연동"은 이번 변경의 핵심인 Velog RSS 기반 Tech Logs 자동 연동을 잘 나타냅니다. 템플릿 형식(타입/이슈번호)도 지켜졌습니다. 다만 build 시점 fetch와 GitHub Actions 스케줄 추가는 제목에 드러나지 않지만, 이는 세부 사항이므로 문제가 되지 않습니다.
Description check Passed PR 설명은 템플릿의 주요 섹션(관련 이슈 링크, PR 유형, 작업 내용, 작업 화면, 미완성 작업)을 모두 채웠습니다. 작업 내용에서 getVelogLogs 추가, TechLog async 전환, LogItem 태그 처리, deploy.yml 스케줄과 ref: main 지정 이유를 구체적으로 설명합니다. 다만 실패 처리 방식이 이슈 요구사항(fallbac…
Out of Scope Changes check Passed 변경 파일은 모두 [#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

필수 항목은 충족되었습니다. 다만 아래 사항을 보완하면 리뷰어가 판단하기 쉬워집니다.

  1. 이슈 #55 체크리스트에는 fetch 실패 또는 빈 응답 시 fallback 처리가 있습니다. 현재 구현은 throw로 이전 배포를 유지합니다. 이 차이를 설명하거나, fallback 처리를 추가하는 방향을 명시해 주세요.
  2. "Close #55 "와 같이 끝에 남은 공백을 정리해 주세요.
  3. 오타로 보이는 부분을 수정해 주세요. 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()가 &lt;item&gt;에서 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 &gt; 0일 때만 태그 영역을 렌더링해요.

미충족 항목:

  • [#55] fetch 실패/빈 응답 시 fallback 처리: getVelogLogs()는 !res.ok이면 Error를 던지고, 글이 없으면 Error를 던져요. TechLog에는 try/catch나 대체 데이터 경로가 없어요. 따라서 코드에는 fallback 동작이 없어요.
  • PR 설명은 이 throw가 이전 배포를 유지하기 위한 의도라고 밝혀요. 빌드 job이 실패하면 deploy job(needs: build)이 실행되지 않으므로, 이전 Pages 배포가 유지되는 것은 사실이에요. 하지만 이 동작은 배포 단위의 결과일 뿐이고, 이슈 체크리스트는 코드 수준의 fallback 처리를 요구해요. 이슈 요구와 PR 의도가 충돌해요.
  • 체크리스트 항목은 [x]로 표시되어 있지만, 현재 코드에서 fallback 경로를 확인할 수 없어요.

Resolution

둘 중 하나를 선택해 주세요.

  1. 코드 수준 fallback을 추가해 주세요. 예를 들어 getVelogLogs() 호출부(TechLog)에서 실패를 잡고, 빈 목록 또는 Velog 전체 글 링크만 보여주는 상태를 렌더링하는 방식이에요. 이 경우 빌드가 실패하지 않아요.
  2. 빌드 실패 시 이전 배포를 유지하는 방식을 fallback으로 인정하도록 #55 이슈 본문을 수정해 주세요. 이 경우 PR 설명과 체크리스트 항목이 같은 의미를 가지게 돼요.
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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@jjjsun
jjjsun merged commit 0788ebd into develop Oct 29, 2026
2 checks passed
@jjjsun
jjjsun deleted the feature/#55 branch October 29, 2026 06:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature 기능 추가

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Velog RSS 자동 연동

1 participant