# task-544.1 완료 보고서

## SCQA

**S**: InsuRo 플랫폼에서 사용자가 개인 AI API 키(Gemini/Claude/OpenAI)를 입력하여 관리자 설정을 우회할 수 있으며, 콘텐츠 캘린더는 /contents 페이지 내 탭으로만 접근 가능하다.

**C**: 개인 API 키 기능은 플랜 기반 비즈니스 모델을 훼손하고, 콘텐츠 캘린더의 독립 라우트 부재로 사용자 접근성이 떨어진다.

**Q**: 개인 AI API 키를 제거하면서 기존 소셜 토큰(Threads/Instagram) 기능은 유지하고, 콘텐츠 캘린더를 독립 메뉴로 분리할 수 있는가?

**A**: Settings 페이지에서 AI API 키 입력 UI 제거, generate-content Edge Function에서 개인 키 override 로직 제거, /content-calendar 독립 라우트 추가로 3개 작업 모두 완료. `npx tsc --noEmit` 에러 0건, `npm run build` 성공 (7.19초, 129 entries).

---

## 작업 내용

### 1. Personal API Key 기능 제거
- **Settings.tsx**: `AI_PROVIDERS` 상수 제거, AI API 키 Card UI 제거 (Gemini/Claude/OpenAI 3개 프로바이더)
- **generate-content/index.ts**: `user_api_keys` 테이블 조회 및 개인 키 override 로직 전체 제거
- Threads/Instagram 토큰, Naver Search API 키 기능은 유지 (소셜 미디어 토큰은 플랜과 무관)
- AdminAIConfig (관리자 AI 엔진 설정) 유지

### 2. 콘텐츠 캘린더 라우트 추가
- **routes.ts**: `/content-calendar` 라우트 추가 (Calendar 아이콘, "콘텐츠 생성" 섹션)
- **ContentCalendar.tsx**: 기존 `ContentCalendarTab` 컴포넌트를 `DashboardLayout`으로 감싼 독립 페이지 생성

### 3. ANTHROPIC_API_KEY 문서
- **docs/ANTHROPIC_KEY_SETUP.md**: Supabase secrets에 Anthropic API 키 등록 안내 문서 생성

---

## 생성/수정 파일 목록

- **수정**: `src/pages/Settings.tsx` — AI API 키 UI 제거
- **수정**: `supabase/functions/generate-content/index.ts` — 개인 키 override 로직 제거
- **수정**: `src/config/routes.ts` — /content-calendar 라우트 추가
- **생성**: `src/pages/ContentCalendar.tsx` — 콘텐츠 캘린더 독립 페이지
- **생성**: `docs/ANTHROPIC_KEY_SETUP.md` — Anthropic API 키 설정 안내

---

## 테스트 결과

- `npx tsc --noEmit`: EXIT_CODE=0, 에러 0건
- `npm run build`: 성공 (7.19s, 129 precache entries)
- `grep "AI_PROVIDERS" src/`: 0건
- `grep "user_api_keys" supabase/functions/generate-content/index.ts`: 0건
- Settings.tsx 잔여 `user_api_keys` 참조: Threads/Instagram 소셜 토큰용 (정상)

---

## 발견 이슈

1. **FloatingGuide.tsx 잔여 참조**: `user_api_keys` 테이블을 조회하여 가이드 스텝 완료 여부 판단. Threads/Instagram 토큰에도 유효하므로 현재 유지. 향후 가이드 문구 업데이트 고려 필요.
2. **Settings.tsx "API 키" 탭**: AI 키 제거 후 Naver/Threads/Instagram만 남음. 탭 라벨 변경 검토 가능 (예: "외부 서비스 연동").
3. **types.ts user_api_keys 타입**: Supabase 자동 생성 타입이므로 DB 스키마가 유지되는 한 그대로 둠 (데이터 보존 원칙).

---

## 머지 판단

- **머지 필요**: Yes
- **브랜치**: task/task-544.1-dev1
- **워크트리 경로**: /home/jay/projects/InsuRo/.worktrees/task-544.1-dev1
- **머지 의견**: tsc 에러 0건, 빌드 성공 확인. 5개 파일 변경 (68 insertions, 75 deletions). 기존 소셜 토큰 기능 영향 없음. 충돌 가능성 낮음.

---

## QC 셀프 체크

- [x] 1. 영향 파일 확인: Settings.tsx, generate-content/index.ts, routes.ts (3개 수정 + 2개 생성)
- [x] 2. 엣지 케이스: 이미 저장된 AI API 키 데이터는 DB에 보존 (테이블/컬럼 미삭제), UI만 제거
- [x] 3. 작업 지시 일치: 3개 작업 항목 모두 완료
- [x] 4. 에러/보안: API 키 입력 경로 차단 완료, AdminAIConfig 유지
- [x] 5. 테스트: tsc + build 검증 완료
