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

# 체크리스트: task-1983

**task**: task-1983

---

## Phase 1 — 불칸(백엔드)

- [x] A. _keyword_jobs 인메모리 → Supabase keyword_jobs 테이블 CRUD 이관
- [x] B. 랭킹 조회 Python 합산 → Supabase RPC (SQL GROUP BY + SUM + ORDER BY)

## Phase 2 — 이리스(프론트엔드)

- [x] A. Settings.tsx as any 4건 → Supabase Database 타입으로 교체

## Phase 3 — 헤르메스(팀장 직접)

- [x] A. Settings.tsx fcpa_settings 타입 캐스팅 + error 변수 타입 명시

## Phase 4 — 아르고스(테스터)

- [x] A. 테스트 mock 패턴 Supabase CRUD/RPC 방식으로 전환

## 검증

- [x] grep "_keyword_jobs" → 인메모리 dict 제거 확인 (0건)
- [x] grep "as any" Settings.tsx → 0건 확인
- [x] grep "score_map" main.py → Python 합산 제거 확인 (0건)
- [x] grep "rpc" main.py → RPC 호출 존재 확인
- [x] pytest PASS (158/158, 기존 1건 제외)
- [x] tsc --noEmit 0 errors
- [x] L1 스모크테스트 (서버 기동 + API 응답 확인)
- [x] QC 검증 완료
- [x] 최종 보고
