# 네이버 SA 성과 데이터 자동 수집 (2026-08-26)

## S (상황)
매일 02:00 정기 cron(`BFA48D87`)으로 네이버 검색광고(SA) 성과 데이터를 수집한다.
직전 수집본은 `2026-08-25T02:00:29+09:00` 기준이었다.

## C (문제)
2026-07-16 이래 전 지표가 0으로 수집되고 있다. 원인은 2026-08-13에 확정되어
`memory/reports/naver-sa-collect-260813.md` 및 기억에 박제되어 있다.
한편 이 수집기는 **예외를 삼키고 전 지표 0 파일을 그대로 저장**하는 구조라
(`collect()`의 except → `_save(_empty_output(...))`), "0 저장 성공"만으로는
정상 수집과 API 실패를 구분할 수 없다.

## Q (질문)
`--days 7` 수집이 정상 실행되고 대상 JSON이 갱신되었는가?
그리고 이번 0은 **실패 은폐형 0**인가, **확정 원인에 따른 정상 0**인가?

## A (답변)
정상 실행·정상 저장되었다. 수치는 여전히 전 지표 0이며, stderr 로그와 독립 프로브로
**실패 은폐형 0이 아님**을 확인했다. 기존 확정 원인에 따른 예상된 정상 출력이다.

### 실행
```
python3 /home/jay/workspace/tools/naver-ads/collect_sa_stats.py --days 7
→ EXIT=0
→ NaverSAClient 초기화 완료 (customer_id=1419414)
→ naver-sa-stats.json 저장 완료
```
stderr에 `캠페인 조회 실패` / `stats 조회 실패` / `HTTP` 오류 **0건** →
예외 fallback 경로를 타지 않았음(= 폴백 빈 파일이 아니라 실제 수집 결과).

### 수정 파일별 검증 상태
| 파일 | 변경 | 검증 방법 | 상태 |
|---|---|---|---|
| /home/jay/workspace/dashboard/data/naver-sa-stats.json | 데이터 갱신 | md5 전후 대조 + json 파싱 필드 전수 확인 + stderr 무오류 확인 | verified |

- md5 before: `a5362ec0c285d8edcbd01a61c27c32e9`
- md5 after : `71e42307c025e6d88acfa185e8ea8c8f`
- mtime: `2026-08-26 02:00:39 +0900`
- `last_collected`: `2026-08-26T02:00:39+09:00`
- 크기 2,126 bytes (전후 동일 — 구조 동일, 날짜창만 이동)

### 수집 결과
- summary.today / yesterday: 노출·클릭·비용·전환 전부 0
- keyword_groups(보험영업 / 개인사업·지점장 / 무자본창업): 전부 0
- daily_trend: 7행, `2026-08-20` ~ `2026-08-26`, 비영(非零) 행 0건
- budget: daily 21,000 / spent_today 0 / burn_rate 0.0
- campaigns: `전국민 꿀잠 프로젝트! "나이스드림"`(ELIGIBLE), `나이스드림 쇼핑검색#1`(ELIGIBLE)

## 0 수치에 대한 판단 — 재조사 불요 (독립 재현으로 확정 원인 일치 확인)
이번 실행에서 확정 원인 2건을 **직접 재현**했고, 결과가 2026-08-13 판정과 일치한다.

1. **계정 불일치(핵심)** — `NAVER_SEARCHAD_CUSTOMER_ID=1419414` 계정에는
   나이스드림 캠페인 2건만 존재한다. 이번 프로브에서 `/stats`를
   `since=2026-08-20 / until=2026-08-26`로 직접 호출한 결과
   **HTTP 200 + `[]` (len=0)** — 파싱 버그가 아니라 실적 레코드 자체가 없음을 재확인.
   수집기 `_GROUP_RULES`가 기대하는 리쿠르팅 광고그룹은 이 계정에 0건이다.
2. **수집기 구조적 결함 2건(미해소)** —
   - `group_agg`가 초기화만 되고 **어디에서도 증가하지 않음** →
     `keyword_groups`는 API 데이터와 무관하게 **구조적으로 항상 0**
     (`collect_sa_stats.py`의 group_agg 초기화 이후 갱신 코드 부재).
   - `breakdown` 없이 호출한 응답에는 `date` 필드가 없는데
     `record.get("date","")`로 분기 → daily_trend/today/yesterday 충전 불가.

→ 해소 조건: **회장님의 API 계정 교체 승인** + 결함 수정 위임.
   그 전까지 이 0은 정상 출력이며 재조사 불필요.

## 미확인 사항
- 나이스드림 캠페인 2건이 ELIGIBLE로 표시되나, 해당 계정의 실제 집행(노출) 여부는
  이번 실행에서 별도 확인하지 않았다(기존 확정 원인 범위 내로 판단).
- 결함 2건은 **보고만 하고 수정하지 않았다**(이번 작업 범위는 수집 실행·저장 확인).

관련: `memory/reports/naver-sa-collect-260825.md`, `memory/reports/naver-sa-collect-260813.md`
