# task-1947: blog_writer.py codex exec → codex-cc-plugin 전환

## 배경
dashboard/blog_writer.py에서 codex/gpt provider가 `codex exec` CLI를 직접 호출 중.
Codex 환경이 codex-cc-plugin으로 전환되었으므로, codex-companion.mjs를 통해 호출해야 함.

## ★ 핵심 원칙 ★
- `codex exec` 직접 호출 완전 제거
- codex-cc-plugin (codex-companion.mjs) 방식으로 전환
- 플러그인 경로: `/home/jay/.claude/plugins/cache/openai-codex/codex/1.0.3/scripts/codex-companion.mjs`
- 호출: `node codex-companion.mjs task "<프롬프트>"`
- **API 직접 호출도 금지** — CLI/플러그인만 사용

## 수정 대상
- 파일: `dashboard/blog_writer.py`
- 182~192행: codex provider 분기 → companion.mjs 호출로 전환
- 194~203행: gpt provider 분기 → companion.mjs 호출로 전환 (또는 codex와 통합)

## 수정 방향
```python
elif provider == "codex":
    companion_path = "/home/jay/.claude/plugins/cache/openai-codex/codex/1.0.3/scripts/codex-companion.mjs"
    result = subprocess.run(
        ["node", companion_path, "task", prompt_text],
        capture_output=True, text=True, timeout=timeout,
    )
    # JSON 응답 파싱 또는 stdout 직접 사용
```

## 검증 시나리오
1. grep "codex.*exec" dashboard/blog_writer.py → 0건
2. codex 모델로 글 생성 → companion 경로로 호출 확인
3. companion 실패 시 적절한 에러 메시지 반환
4. `python3 -m pytest tests/ -q` → 0 failed

## 프로젝트
- insuwiki

## 레벨
- normal
