# task-2219 완료 보고서

## SCQA

**S**: InsuRo의 소식지분석/보험료분석 AI 채팅이 Supabase Edge Function(`newsletter-chat`, `premium-chat`)에서 외부 Gemini API를 호출하는 구조로 운영 중이다. `GOOGLE_AI_API_KEY` 미설정 + 외부 API 의존 문제가 있다.

**C**: 제이회장님 지시에 따라 아누 서버(InsuRo FastAPI)에서 직접 anthropic SDK로 Claude API를 호출하는 구조로 전환이 필요하다. 소식지는 조직 구분 없이 전체 공개, 보험료는 조직별 접근 제한을 유지해야 한다.

**Q**: Edge Function의 AI 채팅 로직을 InsuRo 서버로 이전하여 anthropic SDK(Claude Haiku)로 SSE 스트리밍 응답을 제공할 수 있는가?

**A**: 서버에 `POST /api/insuro/newsletter-chat`과 `POST /api/insuro/premium-chat` 2개 엔드포인트를 추가하고, 프론트엔드 CHAT_URL을 InsuRo 서버로 변경했다. anthropic SDK의 `messages.stream()`으로 Claude Haiku SSE 응답을 구현했다. npm build 성공, 서버 엔드포인트 등록 확인(55개 라우트), 인증 없는 요청 401 반환 확인.

## 수정 파일 목록

- `server/main.py` — 2개 엔드포인트 + ChatRequest 모델 + anthropic 클라이언트 + 스트리밍 제너레이터 추가 (약 280줄)
- `src/pages/MarketNewsletter.tsx` — CHAT_URL을 INSURO_API_BASE로 변경 + JWT 인증 방식 변경
- `src/pages/PremiumComparison.tsx` — CHAT_URL을 INSURO_API_BASE로 변경

## 구현 상세

- **newsletter-chat**: JWT 인증, newsletters 테이블에서 extracted_text 조회 (organization_id 필터 없음 — 전체 공개), month_key 필터 지원, Edge Function의 시스템 프롬프트 그대로 이전
- **premium-chat**: JWT 인증 + profiles 테이블에서 organization_id 조회 + user_roles에서 system_admin 확인, premium_data 테이블에서 organization_id 필터 적용, system_admin은 전체 접근
- **SSE 형식**: 기존 Edge Function과 동일 (`data: {"choices":[{"delta":{"content":"..."}}]}` + `data: [DONE]`)
- **AI 모델**: `claude-haiku-4-5-20251001`, max_tokens=4096

## 테스트 결과

- npm run build: 성공 (12.30s, 154 precache entries)
- python3 -m py_compile server/main.py: 성공
- Pyright: 기존 warning만 남음, 신규 에러 0건
- 서버 라우트 등록: newsletter-chat ✓, premium-chat ✓ (총 55개)
- 인증 테스트: 두 엔드포인트 모두 인증 없이 401 반환 확인

## L1 스모크테스트 결과

- 서버 재시작: 성공 (worktree 코드로 port 8001 시작)
- API 응답 확인: `GET /api/status` → `{"status":"ok"}` (200), `POST /api/insuro/newsletter-chat` (인증 없이) → `{"detail":"Missing or invalid authorization"}` (401), `POST /api/insuro/premium-chat` (인증 없이) → `{"detail":"Missing or invalid authorization"}` (401)
- 스크린샷: 해당없음 (백엔드 API 작업)

## 환경변수 설정 필요

- `ANTHROPIC_API_KEY`가 InsuRo `.env`에 미설정
- 실서비스 동작을 위해 제이회장님이 `.env`에 `ANTHROPIC_API_KEY=sk-ant-...` 설정 필요
- Max200 플랜의 API 키를 서버 환경변수로 추가해야 함

## 머지 판단

- **머지 필요**: Yes → 완료 (fast-forward merge)
- **브랜치**: task/task-2219-dev2
- **워크트리 경로**: /home/jay/projects/InsuRo/.worktrees/task-2219-dev2
- **머지 의견**: npm build 성공, 타입 에러 0건, 엔드포인트 등록/인증 확인 완료. ANTHROPIC_API_KEY 환경변수 설정 후 실동작 확인 권장. fast-forward 머지 완료.

## 모델 사용 기록

- 토르(백엔드): sonnet — 서버 엔드포인트 구현
- 프레이야(프론트엔드): sonnet — CHAT_URL 변경
- 오딘(팀장): opus — 설계, 검토, 타입 에러 수정, L1 테스트

## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회

