Skip to content

Today-s-Sound/crawler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

TodaySound ํฌ๋กค๋Ÿฌ ๊ฐœ์š”

์ด ๋””๋ ‰ํ† ๋ฆฌ์˜ ํฌ๋กค๋Ÿฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋…ํ•œ ์›น์‚ฌ์ดํŠธ(ํ˜„์žฌ: ๋™๊ตญ๋Œ€ SW๊ต์œก์› ๊ณต์ง€์‚ฌํ•ญ) ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํฌ๋กค๋งํ•˜๊ณ , ์ƒˆ๋กœ ์˜ฌ๋ผ์˜จ ๊ฒŒ์‹œ๊ธ€์˜ ํ•ต์‹ฌ ๋‚ด์šฉ์„ ์š”์•ฝํ•ด์„œ ๋ฐฑ์—”๋“œ๋กœ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ๋™์ž‘ ํ๋ฆ„

  1. ๊ตฌ๋… ์ •๋ณด ์กฐํšŒ

    • services/subscription_client.fetch_subscriptions()
    • ๋ฐฑ์—”๋“œ GET /internal/subscriptions ํ˜ธ์ถœ
    • ๊ฐ ๊ตฌ๋…์— ๋Œ€ํ•ด id, user_id, site_url, site_alias, keyword, urgent, last_seen_post_id ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  2. ์‚ฌ์ดํŠธ ํฌ๋กค๋ง

    • main.process_subscription(sub)์—์„œ DonggukSwBoardCrawler ์‚ฌ์šฉ
    • fetch_post_list(site_url)๋กœ ๊ณต์ง€ ๋ชฉ๋ก(์ตœ์‹ โ†’๊ณผ๊ฑฐ)์„ ๊ฐ€์ ธ์˜ค๊ณ , ๊ฐ ๊ฒŒ์‹œ๊ธ€์˜ id, url, title, date๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ƒˆ ๊ฒŒ์‹œ๋ฌผ ํ•„ํ„ฐ๋ง

    • last_seen_post_id ๊ธฐ์ค€์œผ๋กœ ์ด์ „์— ๋ณธ ๊ฒŒ์‹œ๊ธ€๊นŒ์ง€๋Š” ๊ฑด๋„ˆ๋›ฐ๊ณ , ๊ทธ ์ดํ›„์— ์˜ฌ๋ผ์˜จ ๊ฒŒ์‹œ๊ธ€๋งŒ filter_new_posts()๋กœ ์ถ”๋ฆฝ๋‹ˆ๋‹ค.
    • ์ฒซ ์‹คํ–‰(last_seen_post_id == None)์ผ ๋•Œ๋Š” ์•Œ๋ฆผ์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ , ๊ฐ€์žฅ ์ตœ์‹  ๊ฒŒ์‹œ๊ธ€์˜ id๋ฅผ ๊ธฐ์ค€์ ์œผ๋กœ ์ €์žฅ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.
  4. ํ‚ค์›Œ๋“œ ํ•„ํ„ฐ + ์š”์•ฝ ์ƒ์„ฑ

    • ์ƒˆ ๊ฒŒ์‹œ๋ฌผ๋“ค์— ๋Œ€ํ•ด fetch_post_content(post["url"])๋กœ ๋ณธ๋ฌธ ์ „์ฒด๋ฅผ ํฌ๋กค๋ง.
    • ๊ตฌ๋…์— ์„ค์ •๋œ keyword๊ฐ€ ์ œ๋ชฉ/๋ณธ๋ฌธ์— ํฌํ•จ๋  ๋•Œ๋งŒ ์ฒ˜๋ฆฌ (keyword_match).
    • services/summarizer.summarize(text)๋ฅผ ํ˜ธ์ถœํ•ด ์š”์•ฝ ์ƒ์„ฑ
      • GEMINI_API_KEY ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด Gemini API(gemini-2.5-flash) ๋กœ ๊ณต์ง€ ๋ณธ๋ฌธ์—์„œ ์ œ๋ชฉ/์‹œ๊ฐ„/์žฅ์†Œ ์ค‘์‹ฌ์œผ๋กœ ์š”์•ฝ
      • ํ‚ค๊ฐ€ ์—†๊ฑฐ๋‚˜ ์˜ค๋ฅ˜ ์‹œ์—๋Š” ํ…์ŠคํŠธ ์•ž๋ถ€๋ถ„๋งŒ ์ž˜๋ผ์„œ ํด๋ฐฑ.
  5. ์•Œ๋ฆผ ์ƒ์„ฑ + last_seen ๊ฐฑ์‹ 

    • services/notification_client.create_alert(alert_payload)
      • ๋ฐฑ์—”๋“œ POST /internal/alerts ํ˜ธ์ถœ โ†’ Summary/์•Œ๋ฆผ ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ.
    • ๋ชจ๋“  ์ƒˆ ๊ฒŒ์‹œ๋ฌผ์„ ์ฒ˜๋ฆฌํ•œ ๋’ค, ๊ฐ€์žฅ ์ตœ์‹  ๊ฒŒ์‹œ๊ธ€์˜ ID๋กœ
      update_subscription_last_seen(subscription_id, latest_id) ์‹คํ–‰
      โ†’ PATCH /internal/subscriptions/{id}/last_seen ๋กœ ๋งˆ์ง€๋ง‰ ๋ณธ ๊ฒŒ์‹œ๋ฌผ ID ์—…๋ฐ์ดํŠธ.

๋””๋ฒ„๊ทธ ๋ชจ๋“œ (๋‹จ์ผ ๊ฒŒ์‹œ๊ธ€ ํฌ๋กค๋ง ํ…Œ์ŠคํŠธ)

main.debug_fetch_first_post() ๋ฅผ ํ†ตํ•ด:

  • ์ฒซ ๋ฒˆ์งธ ๊ตฌ๋…์˜ site_url์—์„œ ๊ฒŒ์‹œ๋ฌผ ๋ชฉ๋ก๊ณผ ์ฒซ ๊ฒŒ์‹œ๋ฌผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ ,
  • ์ฒซ ๊ฒŒ์‹œ๋ฌผ ๋ณธ๋ฌธ ์ผ๋ถ€์™€ summarize() ๊ฒฐ๊ณผ๋ฅผ ์ฝ˜์†”์— ์ถœ๋ ฅํ•ด์„œ
    ํฌ๋กค๋ง + ์š”์•ฝ์ด ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published