# task-941.2: 인스타그램 업로드 + 크로스포스팅 End-to-End 검증 (한정위임)

## 배경
- ThreadAuto에 Instagram 크로스포스팅 기능이 구현되어 있음 (InstagramPublisher + CrossPublisher)
- Instagram 토큰 유효 (~2026-05-21), CROSS_POST_ENABLED=true 설정 완료
- 실전 E2E 테스트로 인스타그램 단독 업로드 + 크로스포스팅(Threads+Instagram 동시) 검증 필요

## 프로젝트 경로
- **ThreadAuto**: `/home/jay/projects/ThreadAuto/`
- **CLI 가이드**: `/home/jay/workspace/memory/projects/threadauto/cardnews-cli-guide.md` (반드시 읽고 시작)
- **Instagram Client**: `/home/jay/projects/ThreadAuto/api/instagram_client.py`
- **Instagram Publisher**: `/home/jay/projects/ThreadAuto/publisher/instagram_publisher.py`
- **Cross Publisher**: `/home/jay/projects/ThreadAuto/publisher/cross_publisher.py`
- **Instagram Token**: `/home/jay/projects/ThreadAuto/.tokens/instagram_token.json`
- **Instagram OAuth**: `/home/jay/projects/ThreadAuto/auth/instagram_oauth.py`

## 작업 범위

### Phase 1: Instagram 인프라 점검
1. Instagram 토큰 유효성 확인 (만료일, API 호출 테스트)
2. instagram_business_account_id 확인
3. 필요 권한 확인: instagram_basic, instagram_content_publish, pages_read_engagement, pages_show_list
4. Graph API v22.0 엔드포인트 접근 테스트
5. 기존 Instagram 관련 테스트 실행: `cd /home/jay/projects/ThreadAuto && python3 -m pytest tests/test_cross_publisher.py -x -q`

### Phase 2: Instagram 단독 업로드 테스트
1. 카드뉴스 이미지 생성 (업로드 없이): `python3 cli.py pipeline -t cardnews --source news`
2. InstagramPublisher를 사용해 생성된 카드뉴스를 Instagram에 직접 업로드
3. Instagram 캐러셀 발행 3단계 확인: 컨테이너 생성 → 캐러셀 컨테이너 생성 → 발행
4. 업로드 성공/실패 로그 전부 보존
5. Instagram API 응답, post_id 기록

### Phase 3: CrossPublisher 통합 테스트
1. CrossPublisher를 사용해 Threads + Instagram 동시 발행 테스트
2. CROSS_POST_ENABLED=true 상태에서 양쪽 모두 성공하는지 확인
3. 한쪽 실패 시 다른 쪽 정상 진행 확인 (overall_success 로직)
4. Firestore 이력 기록 확인
5. 결과: threads_post_id + instagram_post_id 모두 기록

### Phase 4: 이슈 발견 시 수정
- ImageServer(Tailscale Funnel) 이미지 URL 접근성 확인
- Instagram API 에러 (권한, 토큰, 이미지 포맷 등) 대응
- 캡션 길이 제한(2200자), 해시태그 제한(30개) 준수 확인
- 발견한 모든 이슈 수정 및 보고서 기록

## 제약사항
- **외부 서비스 테스트 규칙**: 테스트 게시물은 제이회장님 확인 후에만 삭제 (자동 삭제 금지)
- 실패 로그 보존 필수, 성공 건만 보고 금지
- 의미 있는 콘텐츠로 테스트 (검정 화면, 더미 텍스트 금지)
- API 키/토큰 값을 보고서에 노출 금지
- 1팀(task-941.1)이 Threads 테스트를 별도 진행 중이므로, 크로스포스팅 테스트 시 **별도 콘텐츠** 사용 (중복 게시 방지)

## 산출물
1. 보고서: `memory/reports/task-941.2.md`
2. Instagram 업로드 결과 (post_id, 성공/실패 로그)
3. CrossPublisher 통합 테스트 결과
