BE

๐Ÿ  ๋‰ด์Šค ํฌ๋กค๋ง ๊ธฐ๋Šฅ ์„ค์ • ๊ฐ€์ด๋“œ

๊ฐœ์š”

๋ถ€๋™์‚ฐ ๋ฐ ์ฒญ์•ฝ ๊ด€๋ จ ๋‰ด์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•˜์—ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ํฌ์ŠคํŠธ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

# ๋„ค์ด๋ฒ„ ๋‰ด์Šค API
NAVER_CLIENT_ID=your_naver_client_id
NAVER_CLIENT_SECRET=your_naver_client_secret

๋„ค์ด๋ฒ„ API ํ‚ค ๋ฐœ๊ธ‰

  1. ๋„ค์ด๋ฒ„ ๊ฐœ๋ฐœ์ž ์„ผํ„ฐ ์ ‘์†
  2. ๋กœ๊ทธ์ธ ํ›„ โ€œApplication ๋“ฑ๋กโ€ ํด๋ฆญ
  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •๋ณด ์ž…๋ ฅ:
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„: CheonYakPlanet News
    • ์‚ฌ์šฉ API: ๊ฒ€์ƒ‰ API ์„ ํƒ
    • ์„œ๋น„์Šค ํ™˜๊ฒฝ: ์›น ์„œ๋น„์Šค URL ๋“ฑ๋ก

๊ธฐ๋Šฅ ์ƒ์„ธ

์ž๋™ ์Šค์ผ€์ค„๋ง

ํฌ๋กค๋ง ํ‚ค์›Œ๋“œ

๋‹ค์Œ ํ‚ค์›Œ๋“œ๋กœ ๋‰ด์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค:

ํฌ์ŠคํŠธ ๋ถ„๋ฅ˜

์ค‘๋ณต ๋ฐฉ์ง€

์ˆ˜๋™ ์‹คํ–‰

๊ด€๋ฆฌ์ž๋Š” ๋‹ค์Œ API๋ฅผ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ ๋‰ด์Šค ํฌ๋กค๋ง์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

POST /api/news/crawl
Authorization: Bearer {access_token}

์‹œ์Šคํ…œ ์‚ฌ์šฉ์ž

๋‰ด์Šค ํฌ์ŠคํŠธ๋Š” jjsus0307@gmail.com ๊ณ„์ •์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ณ„์ •์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ์˜ต์…˜

application.properties์—์„œ ๋‹ค์Œ ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# ๋‰ด์Šค ํฌ๋กค๋ง ์„ค์ •
news.api.max-results=10                    # ํ‚ค์›Œ๋“œ๋‹น ์ตœ๋Œ€ ๋‰ด์Šค ์ˆ˜
news.api.delay-between-requests=1000       # API ์š”์ฒญ ๊ฐ„ ์ง€์—ฐ์‹œ๊ฐ„(ms)
news.scheduling.enabled=true               # ์ž๋™ ์Šค์ผ€์ค„๋ง ํ™œ์„ฑํ™”
news.scheduling.cron=0 0 9 * * ?          # ํฌ๋ก  ํ‘œํ˜„์‹
news.scheduling.max-daily-posts=20        # ์ผ์ผ ์ตœ๋Œ€ ํฌ์ŠคํŠธ ์ˆ˜

๋กœ๊ทธ ํ™•์ธ

๋‹ค์Œ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ์‹คํ–‰ ์ƒํ™ฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

INFO  - ๋ถ€๋™์‚ฐ ๋‰ด์Šค ํฌ๋กค๋ง ์‹œ์ž‘
INFO  - ๋‰ด์Šค ํฌ์ŠคํŠธ ์ƒ์„ฑ: [๋‰ด์Šค ์ œ๋ชฉ]
INFO  - ๋ถ€๋™์‚ฐ ๋‰ด์Šค ํฌ๋กค๋ง ์™„๋ฃŒ
ERROR - ๋‰ด์Šค ํฌ๋กค๋ง ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ - ํ‚ค์›Œ๋“œ: {keyword}

๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ