---
task_id: task-1983
type: plan
scope: task
created: 2026-04-20
updated: 2026-04-20
status: completed
---

# 계획서: task-1983

**task**: task-1983
**목표**: 인슈로 전수조사 적발 + Gemini PR 리뷰 지적 잔여 항목 일괄 수정
**근거**: memory/reports/task-1967+1.md (전수조사 보고서), memory/reports/task-1968.md (Gemini 원인 분석)

---

## 목표

전수조사 적발 16건 + Gemini PR 리뷰 지적 7건 중 미해결 항목을 수정하여 코드 품질 개선.
task-1969, task-1973에서 대부분 수정 완료된 상태. 잔여 3건 수정.

## 범위

### 포함
1. B-3: _keyword_jobs 인메모리 → Supabase 테이블 이관 (HIGH)
2. B-6: 랭킹 DB 집계 — Python 합산 → Supabase RPC (GROUP BY + ORDER BY) (MEDIUM)
3. C-9: Settings.tsx as any 4건 타입 수정 (MEDIUM)

### 제외 (이전 task에서 완료 또는 별도 task)
- Phase A: 브랜치 머지 (task-1969에서 완료)
- B-1: Naver API 키 서버사이드 이동 (task-1969 완료)
- B-2: subprocess.run 비동기 전환 (task-1973 완료, ai_parser.py는 동기 함수로 별도 task)
- B-4: 맥스 플랜 잔여석 필터 (task-1969 완료)
- B-5: AsyncClient 전역 재사용 (task-1969 완료)
- B-7: N+1 토픽 쿼리 (task-1969 완료)
- C-8: Dashboard.tsx 삭제 (task-1969 완료)
- C-10: 채널 제한 UI (task-1969에서 구현 확인됨)
- C-11: 무료 카운트다운 (DB 조회 구현 확인됨)
- C-12: 감사 로그 (task-1969 완료)
- D-13: OAuth 토큰 암호화 (task-1969 Fernet 구현 완료)
- M3: subprocess→API 대규모 전환 (별도 task)
- 기타 WARNING 항목 (별도 task/의도적 미구현)

## 위임 계획

- B-3 _keyword_jobs DB 이관: **불칸(백엔드)** — Supabase 테이블 + CRUD 로직
- B-6 랭킹 RPC: **불칸(백엔드)** — Supabase RPC 함수 + 엔드포인트 리팩토링
- C-9 Settings.tsx 타입: **이리스(프론트엔드)** — Supabase 타입 활용하여 as any 제거

## 검증 기준

- B-3: `grep "_keyword_jobs" server/main.py` → Supabase CRUD 호출 확인, 인메모리 dict 제거
- B-6: `grep "GROUP BY\|rpc\|aggregate" server/main.py` → SQL 집계 확인
- C-9: `grep "as any" src/pages/Settings.tsx` → 0건
- 전체: `pytest` PASS, `npx tsc --noEmit` 0 errors
