# Task-253.1 완료 보고서: 블로그 검색 크롤러 셀렉터 수정 + 검색량 기준 변경

## 작업 개요
네이버 HTML 구조 변경으로 Step 5 블로그 검색이 0건 반환되던 critical 이슈를 수정.

## 수정 내용

### 1. 블로그 검색 URL 변경
- **파일**: `worker/crawler/blog_search.py` (라인 13-15)
- **변경**: `where=blog` → `ssc=tab.blog.all&sm=tab_jum`
- **이유**: 네이버 블로그탭 직접 URL이 더 많은 결과를 반환하고, 기존 URL은 HTML 구조가 달라 파싱 실패

### 2. 앵커 셀렉터 수정
- **파일**: `worker/crawler/blog_search.py` (라인 96-103)
- **변경**: 신규 셀렉터 3개 추가 (`.nblg`, `.tit`, `.link`) + 레거시 3개 유지
- **이유**: 네이버 2026-03 HTML 구조에 맞는 `data-heatmap-target` 셀렉터 적용

### 3. 광고 감지 강화
- **파일**: `worker/crawler/blog_search.py` (라인 71-73)
- **변경**: `articleSourceJSX_adtag` 기반 광고 감지 추가 (추가 4)
- **이유**: 블로그탭 광고 표시 태그 방어적 감지

### 4. SEARCH_VOLUME_THRESHOLD 변경
- **파일**: `worker/config.py` (라인 35)
- **변경**: 20 → 30

### 5. 리포트 description 문구 업데이트
- **파일**: `worker/reporter/report_generator.py` (라인 9, 170)
- **변경**: 하드코딩 "20" → `SEARCH_VOLUME_THRESHOLD` 변수 참조
- **추가**: `from worker.config import SEARCH_VOLUME_THRESHOLD` import

## 생성/수정 파일 목록
- `/home/jay/projects/InfoKeyword/worker/crawler/blog_search.py` (수정)
- `/home/jay/projects/InfoKeyword/worker/config.py` (수정)
- `/home/jay/projects/InfoKeyword/worker/reporter/report_generator.py` (수정)

## 테스트 결과

### 블로그 검색 기능 테스트
- **"가공육 암"**: 10건 반환, 모두 is_ad=False ✅
- **"암보험 추천"**: 10건 반환, 광고 5건 + 일반 5건 ✅

### Worker 재시작 및 Health Check
- `curl http://localhost:8100/health` → `{"status": "ok", "service": "inforkeyword-worker"}` ✅

## 버그 유무
- 발견된 버그 없음

## 비고
- 레거시 셀렉터 3개를 그대로 유지하여 하위 호환성 확보
- 컨테이너 셀렉터(`ugcItem`)와 블로그명 셀렉터(`articleSourceJSX_title`)는 변경 불필요하여 미수정

## QC 자동 검증 결과

```json
{
  "task_id": "task-253.1",
  "overall": "PASS",
  "checks": {
    "api_health": "SKIP (--skip flag)",
    "file_check": "PASS (5/5 checks passed)",
    "data_integrity": "PASS",
    "test_runner": "SKIP",
    "schema_contract": "SKIP"
  }
}
```

## 마아트 독립 검증 결과

**판정: PASS**

- 명세 §1 URL 변경: PASS (정확히 일치)
- 명세 §2 앵커 셀렉터: PASS (순서, 주석까지 일치)
- 명세 §3 광고 감지 강화: PASS (방어적 추가 완료)
- 명세 §4 THRESHOLD 변경: PASS (20→30)
- 명세 §5 description 동적화: PASS (import 추가 + f-string)
- 실행 테스트: "가공육 암" 10건/is_ad=False, "암보험 추천" 10건/광고5+일반5
- Worker health: 정상 (`status: ok`)
- 재작업 요청 사항: 없음
