koriweb and Claude Opus 5
0b315b9c6a
v2.2.323: /naver-trend contains 모드 — "분야 + 포함단어 + 기간"으로 검색어 뽑기
...
`/naver-trend 경제 방법 8월1일부터 오늘까지` → 경제 분야 인기 검색어 중
"방법"이 들어간 것을 검색량 상위 10개로.
- contains 모드(intentParser): topic/containsWord/limit 추출 + 포함 단어를
가진 후보 최대 30개 제안. 포함 여부는 LLM을 믿지 않고 keywordContains()로
코드에서 재검사(공백 무시, 단어 자체만인 후보 제외). 후보가 얇으면
generateContainingKeywords()로 보충. containsWord가 비면 discover로 강등.
- rankKeywordsAnchored: 검색어트렌드 ratio는 "요청 하나 안에서" 최댓값=100인
상대값이라 5개씩 끊어 호출하면 6위 이하 순위가 무의미했다. 첫 배치 최댓값을
앵커로 잡아 모든 배치에 끼워 넣고 되돌린 뒤 1위=100으로 재정규화. 정렬은
하루치 최신값 대신 구간 평균(avgRatio).
- dateRange.ts 신설: 기간을 LLM에 맡기지 않고 규칙으로 확정 —
"8월1일부터 오늘까지", "8/1~8/10", "최근 일주일", "지난 30일", "최근 한 달".
연도 생략 시 미래면 작년. 범위 연결어 없는 날짜 나열/버전 문자열은 미인식.
- 날짜 UTC 밀림 수정: toISOString() → ymdLocal() (KST 새벽에 "오늘"이 하루 전으로
밀리던 문제). 긴 구간은 timeUnit을 week/month로 자동 하향.
검증: tsc 무오류 + jest 1044 통과(신규 24) + esbuild 정상.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-11 21:43:08 +09:00
..
2026-05-25 09:59:32 +09:00
2026-05-25 09:59:32 +09:00
2026-05-08 23:14:47 +09:00
2026-05-25 09:59:32 +09:00
2026-06-12 23:46:07 +09:00
2026-05-09 01:16:12 +09:00
2026-07-11 21:02:15 +09:00
2026-07-20 13:21:41 +09:00
2026-05-12 23:23:23 +09:00
2026-08-06 18:51:22 +09:00
2026-07-03 18:57:12 +09:00
2026-07-05 18:59:47 +09:00
2026-05-16 22:07:06 +09:00
2026-07-11 21:02:15 +09:00
2026-07-02 19:50:06 +09:00
2026-07-20 13:21:41 +09:00
2026-06-11 13:42:09 +09:00
2026-06-11 13:42:09 +09:00
2026-06-18 17:08:49 +09:00
2026-06-11 19:28:46 +09:00
2026-06-11 13:42:09 +09:00
2026-05-01 18:04:56 +09:00
2026-05-18 08:15:01 +09:00
2026-07-11 21:02:15 +09:00
2026-07-03 18:57:12 +09:00
2026-07-03 18:57:12 +09:00
2026-06-12 11:44:58 +09:00
2026-05-08 23:14:47 +09:00
2026-07-11 21:02:15 +09:00
2026-06-12 13:50:26 +09:00
2026-05-16 22:07:06 +09:00
2026-05-23 23:13:21 +09:00
2026-08-05 18:20:32 +09:00
2026-06-11 13:42:09 +09:00
2026-06-19 18:05:44 +09:00
2026-07-11 21:02:15 +09:00
2026-05-12 23:23:23 +09:00
2026-06-12 13:25:28 +09:00
2026-07-14 18:18:49 +09:00
2026-06-19 18:05:44 +09:00
2026-06-19 18:05:44 +09:00
2026-05-25 09:59:32 +09:00
2026-08-05 18:20:32 +09:00
2026-06-22 18:10:32 +09:00
2026-07-02 18:22:52 +09:00
2026-07-03 18:57:12 +09:00
2026-08-11 21:43:08 +09:00
2026-06-11 13:42:09 +09:00
2026-05-09 01:16:12 +09:00
2026-05-16 22:07:06 +09:00
2026-05-06 11:46:38 +09:00
2026-05-03 20:40:40 +09:00
2026-05-09 01:16:12 +09:00
2026-07-20 13:21:41 +09:00
2026-05-18 08:15:01 +09:00
2026-07-11 21:02:15 +09:00
2026-07-20 13:21:41 +09:00
2026-06-11 13:42:09 +09:00
2026-05-23 23:13:21 +09:00
2026-05-05 21:37:45 +09:00
2026-05-13 00:15:45 +09:00
2026-06-11 18:13:11 +09:00
2026-06-11 19:02:56 +09:00
2026-06-18 18:18:20 +09:00
2026-07-05 18:59:47 +09:00
2026-05-06 13:59:14 +09:00
2026-05-04 12:58:43 +09:00
2026-08-05 18:20:32 +09:00
2026-06-12 11:59:05 +09:00
2026-06-12 23:46:07 +09:00
2026-05-16 22:07:06 +09:00
2026-05-09 01:16:12 +09:00
2026-06-12 11:29:40 +09:00
2026-07-14 18:18:49 +09:00
2026-07-01 18:43:04 +09:00
2026-06-15 13:55:18 +09:00
2026-07-01 18:43:04 +09:00
2026-07-20 13:21:41 +09:00
2026-08-05 18:20:32 +09:00
2026-05-23 15:52:19 +09:00
2026-05-09 01:16:12 +09:00
2026-05-16 22:07:06 +09:00
2026-05-09 01:16:12 +09:00
2026-07-11 21:02:15 +09:00
2026-04-30 00:19:06 +09:00
2026-08-05 18:20:32 +09:00
2026-06-12 13:42:43 +09:00
2026-04-30 00:19:06 +09:00
2026-06-12 23:46:07 +09:00
2026-08-05 18:20:32 +09:00
2026-07-03 18:57:12 +09:00
2026-07-14 18:18:49 +09:00