# 작업 보고서: task-242.1

## 작업 요약
- **작업명**: InfoKeyword Step 5/6/7 개선 설계 문서 준비
- **팀**: 개발2팀 (오딘/토르/프레이야/미미르)
- **유형**: 설계 문서 작성 (코드 수정 없음)

## 작업 내용

제이회장님 요구사항에 따라 InfoKeyword Worker의 Step 5(광고성 여부), Step 6(외부 블로그), Step 7(카페 뱃지) 개선을 위한 설계 문서를 작성했습니다.

### 분석 범위
- Worker 코드: `analyzer.py`, `blog_search.py`, `blog_content.py`, `cafe_search.py`, `llm_promotional.py`, `external_links.py`
- Frontend 코드: `report/[id]/page.tsx`, `types/index.ts`, `step-badge.tsx`, `analysis-summary.tsx`
- 설정 파일: `config.py`

### 주요 설계 결정

**Step 5 개선**:
- 블로그 항목에 `rank`(순위), `is_ad`(광고 여부) 필드 추가
- 광고를 크롤러에서 제거하지 않고 태깅만 하여 분석기로 전달
- `_is_ad()` 함수에 `adcr.naver.com`, "광고" 텍스트 라벨 등 추가 감지 패턴 보완
- 결과에 `informational_positions`, `promotional_positions`, `ad_excluded_positions` 추가
- Frontend: 광고 제외 배너 + 정보성/홍보성 2분할 숫자 카드 + 순위 배지 목록

**Step 6 개선**:
- `total_base`, `external_positions` 필드 추가
- Frontend: "외부 블로그 N개 / TOP10 중" 형식 + 순위 배지

**Step 7 개선**:
- `representative_positions` 필드 추가, `details[].rank` 추가
- Frontend: "대표카페 N개 / TOP10 중" 형식 + Progress bar

**네이버 광고 라벨 조사**:
- 파워컨텐츠(2024.02~), 파워링크 확장(2024.08~), 체험단/협찬(공정위 고시) 3유형 분류
- 체험단/협찬은 HTML 구조 감지 불가 → `_is_ad()` 범위 밖으로 두는 것이 올바른 설계
- `adcr.naver.com`/`ader.naver.com` 도메인, "광고" 텍스트 라벨 등 추가 감지 필요

## 생성/수정 파일 목록

- `/home/jay/workspace/memory/specs/step567-improvement-spec.md` — 설계 문서 (신규 생성)
- `/home/jay/workspace/memory/reports/task-242.1.md` — 작업 보고서 (신규 생성)

## 테스트 결과

코드 수정 없는 문서 작업이므로 테스트 해당 없음.

## 버그 유무

없음 (코드 수정 없음)

## 비고

- 1팀의 Step 2/3/4 수정 결과와 Merge 후 실제 구현 예정
- `search_blogs()` 반환 구조 변경은 파이프라인 전체에 영향 → 1팀과 인터페이스 합의 필요
- 구현 순서: Step 7(독립) → Step 5(핵심) → Step 6(Step 5 의존)
- 실제 구현 전 브라우저 개발자 도구로 네이버 블로그 탭 DOM 구조 직접 확인 필수

## QC 자동 검증 결과

```json
{
  "task_id": "task-242.1",
  "overall": "PASS",
  "checks": {
    "api_health": "SKIP (서버 작업 아님)",
    "file_check": "PASS",
    "data_integrity": "PASS",
    "test_runner": "SKIP (코드 수정 없음)",
    "schema_contract": "SKIP (workers 변경 없음)"
  }
}
```
