diff --git a/CHANGELOG.md b/CHANGELOG.md index 677bac7..d528550 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,16 @@ ## 2026-06-15 +### ๐Ÿ›ก๏ธ #337 ํ†ต๊ณ„ ๋ด‡ ํ•„ํ„ฐ + ๋ ˆ์ดํŠธ๋ฆฌ๋ฐ‹ (v0.1.31) +- BotDetector: UA ์ •๊ทœ์‹ (bot|crawler|spider|slurp|scrap|fetch|monitor|preview|lighthouse) +- RateLimitService: Redis SET NX EX(60s) ํŒจํ„ด, fail-open (์˜์กด์„ฑ ์ตœ์†Œํ™”) +- StatsController.recordVisit: X-Forwarded-For ์šฐ์„  IP + ๋ด‡/IP ๊ฐ€๋“œ +- ์‘๋‹ต: {ok, counted:bool} โ€” ์ฐจ๋‹จ๋„ 200 (์‚ฌ์šฉ์ž ํŽ˜์ด์ง€ ์ง€์žฅ X) +- application.yml: app.rate-limit.visit-window-seconds (๊ธฐ๋ณธ 60) +- ์šด์˜ ๊ฒ€์ฆ: Googlebot/Mozilla/์ฆ‰์‹œ ์žฌํ˜ธ์ถœ ์ธ์ˆ˜์กฐ๊ฑด ๋ชจ๋‘ ์ถฉ์กฑ +- ์„ค๊ณ„์„œ: docs/design/337-stats-bot-ratelimit/README.md +- Refs: #337 (close) + ### ๐Ÿ”’ #335 ๋ฐ๋ชฌ ๋ถ„์‚ฐ ๋ฝ ShedLock+Redis (v0.1.30) - shedlock-spring 5.16.0 + shedlock-provider-redis-spring - @EnableSchedulerLock(defaultLockAtMostFor=PT15M)