Skip to content

Latest commit

Β 

History

History
102 lines (81 loc) Β· 4.04 KB

File metadata and controls

102 lines (81 loc) Β· 4.04 KB

TubeDigest 개발 μ§„ν–‰ 이λ ₯


2026-03-06 (μ„Έμ…˜ 3)

μ™„λ£Œ μž‘μ—…

κΈ°λŠ₯ μΆ”κ°€

μž‘μ—… 파일 컀밋
κ΅¬λ…μ·¨μ†Œ λ²„νŠΌ UI (채널 헀더 우츑) frontend/src/app/page.tsx 3912a7b
ꡬ독 신청일 ν‘œμ‹œ (ꡬ독일: MMμ›” DD일) frontend/src/app/page.tsx 3912a7b
DELETE /api/youtube/subscriptions/{channel_id} backend/routers/youtube.py 3912a7b
YouTube API ꡬ독 μ·¨μ†Œ (unsubscribe_channel) backend/services/youtube.py 3912a7b
Next.js ν”„λ‘μ‹œ: [channel_id]/route.ts frontend/src/app/api/youtube/subscriptions/ 3912a7b
DB subscribed_at 컬럼 + λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ backend/database.py 3912a7b
OAuth μŠ€μ½”ν”„: youtube.readonly β†’ youtube frontend/src/app/api/auth/[...nextauth]/route.ts 3912a7b

2026-03-06 (μ„Έμ…˜ 2)

μ™„λ£Œ μž‘μ—…

UI κ°œμ„ 

μ‹œκ°„ μž‘μ—… 컀밋
μ˜€μ „ <img> β†’ next/image <Image> ꡐ체 (ν”„λ‘œν•„/채널/μ˜μƒ 썸넀일) 23f9295
μ˜€μ „ next.config.ts remotePatterns 4개 도메인 μΆ”κ°€ 23f9295
μ˜€ν›„ κ³„μΈ΅ν˜• μΉ΄ν…Œκ³ λ¦¬ μ‚¬μ΄λ“œλ°” (λΆ€λͺ¨>μžμ‹, μ ‘κΈ°/펼치기) ccc5fc8
μ˜€ν›„ 졜근 3일 이내 μ˜μƒλ§Œ ν‘œμ‹œ ccc5fc8
μ˜€ν›„ ꡬ독 동기화 μ‹œ playlistItems.list둜 μ˜μƒ μžλ™ μ €μž₯ ccc5fc8
μ˜€ν›„ 채널λͺ… 클릭 β†’ YouTube μƒˆ νƒ­ d19fce5
μ˜€ν›„ μΉ΄ν…Œκ³ λ¦¬ invisible (ꡬ독 μ—†λŠ” μΉ΄ν…Œκ³ λ¦¬ μˆ¨κΉ€) d19fce5
μ˜€ν›„ μΉ΄ν…Œκ³ λ¦¬ 간격 μ‘°λ°€ν™” d19fce5
μ˜€ν›„ μΉ΄ν…Œκ³ λ¦¬λͺ… μ˜† ꡬ독 채널 수 ν‘œμ‹œ b97722d
μ˜€ν›„ ꡬ독 0개 μΉ΄ν…Œκ³ λ¦¬ μ™„μ „ μˆ¨κΉ€ ν•„ν„° 862005b

버그 μˆ˜μ •

증상 원인 ν•΄κ²°
전체 Uncategorized channel_title λ§€ν•‘ 뢈일치 channel_id ν‚€λ‘œ λ³€κ²½
Gemini 429 였λ₯˜ gemini-2.0-flash 무료 ν‹°μ–΄ μ†Œμ§„ gemini-3-flash-preview μ „ν™˜
μΉ΄ν…Œκ³ λ¦¬ μ „ν˜€ μ•ˆλ³΄μž„ μΉ΄ν…Œκ³ λ¦¬ API에 3일 ν•„ν„° 과적용 μΉ΄ν…Œκ³ λ¦¬ 기쀀을 ꡬ독 유무둜 볡ꡬ

2026-03-05 (μ„Έμ…˜ 1)

μ™„λ£Œ μž‘μ—…

인프라 / 인증

μž‘μ—… κ²°κ³Ό
Google OAuth 401 (invalid_client) GOOGLE_CLIENT_SECRET μ˜¬λ°”λ₯Έ κ°’μœΌλ‘œ ꡐ체
403 access_denied OAuth λ™μ˜ ν™”λ©΄ ν…ŒμŠ€νŠΈ μ‚¬μš©μž 등둝
OAuthCallback 였λ₯˜ Next.js 포트 3000 κ³ μ •
μ„œλ²„ 연동 μ‹€νŒ¨ JWT_SECRET_KEY ν™˜κ²½λ³€μˆ˜ μΆ”κ°€
uvicorn --reload .env λ―Έλ‘œλ“œ --reload 제거, 포트 8003 μ‚¬μš©
Turbopack μΊμ‹œ 손상 .next μ‚­μ œ ν›„ μž¬κΈ°λ™

κΈ°λŠ₯ κ΅¬ν˜„

μž‘μ—… 파일
GET /api/youtube/categories κ΅¬ν˜„ backend/routers/youtube.py
GET /api/youtube/subscriptions κ΅¬ν˜„ backend/routers/youtube.py
ν”„λŸ°νŠΈμ—”λ“œ μΉ΄ν…Œκ³ λ¦¬ μ‹€μ œ API 연동 frontend/src/app/page.tsx
ν”„λŸ°νŠΈμ—”λ“œ μ˜μƒ μΉ΄λ“œ μ‹€μ œ API 연동 frontend/src/app/page.tsx
N+1 쿼리 β†’ JOIN 단일 쿼리 μ΅œμ ν™” backend/routers/youtube.py
Gemini λΆ„λ₯˜: channel_id 기반 λ§€ν•‘ backend/services/gemini.py
Gemini 50개 배치 처리 backend/services/gemini.py
.gitignore μΆ”κ°€ .gitignore
GitHub μ €μž₯μ†Œ 초기 배포 21fa07d

ν˜„μž¬ μƒνƒœ (2026-03-06 μ„Έμ…˜ 3 κΈ°μ€€)

μž‘λ™ 쀑

  • Google OAuth 둜그인 (youtube μŠ€μ½”ν”„)
  • ꡬ독 동기화 + AI μΉ΄ν…Œκ³ λ¦¬ λΆ„λ₯˜
  • 졜근 3일 μ˜μƒ μžλ™ μˆ˜μ§‘
  • κ³„μΈ΅ν˜• μΉ΄ν…Œκ³ λ¦¬ μ‚¬μ΄λ“œλ°” (ꡬ독 수 ν‘œμ‹œ)
  • 채널λͺ… 클릭 β†’ YouTube 채널 μƒˆ νƒ­
  • 채널 κ΅¬λ…μ·¨μ†Œ (YouTube API + DB λ™μ‹œ μ‚­μ œ)
  • ꡬ독 신청일 ν‘œμ‹œ

λ―Έμ™„μ„±

  • ai_summary μžλ™ 생성 (ν˜„μž¬ summarize-recent μˆ˜λ™ 호좜)
  • μ˜μƒ 제λͺ© 클릭 β†’ YouTube 링크
  • 동기화 μ§„ν–‰λ₯  UI (채널 λ§Žμ„ λ•Œ λŒ€κΈ° μ‹œκ°„ μ—†μŒ)
  • refresh_token κ°±μ‹  둜직
  • Turso ν”„λ‘œλ•μ…˜ μ „ν™˜

μ§„ν–‰ μ˜ˆμ • (λ‹€μŒ μ„Έμ…˜)

  1. ai_summary μžλ™ 생성 νŒŒμ΄ν”„λΌμΈ (동기화 μ‹œ 배치 μš”μ•½)
  2. μ˜μƒ 제λͺ© 클릭 β†’ YouTube μ˜μƒ 링크
  3. 동기화 μ§„ν–‰λ₯  ν‘œμ‹œ (SSE λ˜λŠ” 폴링)