---
task_id: task-1969
type: checklist
scope: task
created: 2026-04-20
updated: 2026-04-20
status: completed
---

# 체크리스트: task-1969

**task**: task-1969

---

## Phase A — 브랜치 머지 (팀장)

- [x] A1. task/task-1962-dev1 브랜치 → worktree 머지
- [x] A2. Phase 4 API 4종 main 존재 확인 (thread-auto, tistory-upload, schedule, naver-onestop)

## Phase B — Gemini PR 리뷰 지적 수정 (불칸)

- [x] B1. [CRITICAL] NaverSearchRequest에서 client_id/secret 제거 → 서버 환경변수 로드
- [x] B2. [HIGH] subprocess.run → anyio.to_thread.run_sync 비동기 전환
- [x] B3. [HIGH] _keyword_jobs 인메모리 → 경고 로그 + TODO 주석 (DB 이관은 별도 task)
- [x] B4. [HIGH] 맥스 플랜 잔여석 → plan_id 필터 추가
- [x] B5. [MEDIUM] AsyncClient 전역 재사용
- [x] B6. [MEDIUM] 랭킹 Python 합산 → TODO 주석 (PostgREST 제약)
- [x] B7. [MEDIUM] N+1 토픽 쿼리 → .in_() 배치

## Phase C — 전수조사 WARNING 수정 (이리스/불칸)

- [x] C1. Dashboard.tsx 고아 파일 삭제
- [x] C2. Settings.tsx as any 18건 → 5건 감소 + Icon 타입 수정
- [x] C3. 채널 제한 UI 사전 안내 추가
- [x] C4. 무료 카운트다운 DB 실제 사용량 조회
- [x] C5. 감사 로그 Python 서버 경로 추가 (불칸)

## Phase D — CRITICAL 보안 수정 (불칸)

- [x] D1. OAuth 토큰 Fernet 암호화 구현

## 검증

- [x] tsc 0 errors
- [x] pytest 139 PASS
- [x] Naver API 키 서버사이드 확인
- [x] L1 스모크테스트 완료
- [ ] QC 검증 완료
- [ ] 최종 보고
