# task-320.1 완료 보고서: 비너스(Venus) Gemini CLI 연동 구현

## 작업 내용
비너스(디자인센터)를 호출할 때 실제 Gemini 모델을 사용하도록 파이프라인 구현.

## 수행 항목

### 1. gemini CLI 인증 수정
- `~/.gemini/settings.json`의 `authMode: "gcloud"` → `security.auth.selectedType: "oauth-personal"` 변경
- gemini CLI v0.31.0은 `authMode`가 아닌 `security.auth.selectedType` 키를 사용
- 유효한 AuthType 값: `"oauth-personal"`, `"gemini-api-key"`, `"vertex-ai"`, `"cloud-shell"`, `"compute-default-credentials"`
- 변경 후 인증 테스트 정상 통과

### 2. invoke_venus.py 생성
- **파일**: `/home/jay/workspace/scripts/invoke_venus.py`
- **기능**: 프롬프트 + 컨텍스트 파일을 Gemini CLI에 전달, 비너스 페르소나 응답 반환
- **인터페이스**: `invoke_venus(prompt, context_files=None, timeout=120) -> str`
- **비너스 시스템 프롬프트**: 디자인 디렉터 페르소나 + 전문 분야 + 답변 지침 포함
- **에러 처리**: TimeoutExpired, CalledProcessError, FileNotFoundError, 일반 Exception
- **CLI**: `python3 invoke_venus.py --prompt "질문" --files file1.py --timeout 120`

### 3. 비너스 호출 방법 문서화
- **파일**: `/home/jay/workspace/prompts/VENUS-INVOCATION.md`
- CLI 직접 호출, 파일 참조 포함, Python 임포트 방법 기술

## 생성/수정 파일 목록
- `~/.gemini/settings.json` (수정: 인증 방식 변경)
- `/home/jay/workspace/scripts/invoke_venus.py` (신규: 비너스 호출 스크립트)
- `/home/jay/workspace/prompts/VENUS-INVOCATION.md` (신규: 호출 가이드 문서)

## 테스트 결과

| # | 테스트 | 결과 |
|---|--------|------|
| 1 | gemini CLI 인증 테스트 | PASS - "안녕하세요" 프롬프트 정상 응답 |
| 2 | invoke_venus.py 기본 프롬프트 | PASS - 비너스 페르소나 자기소개 응답 |
| 3 | 컨텍스트 파일 전달 | PASS - invoke_venus.py 자체를 참조하여 코드 리뷰 응답 |
| 4 | 존재하지 않는 파일 참조 | PASS - "[경고]" 포함 후 정상 동작 |
| 5 | 타임아웃 테스트 (2초) | PASS - "[Venus 오류] 응답 대기 시간이 초과되었습니다" 반환 |
| 6 | pyright 체크 | PASS - 0 errors, 0 warnings |
| 7 | black + isort 스타일 | PASS |

## QC 자동 검증 결과
```json
{
  "task_id": "task-320.1",
  "overall": "PASS (file_check는 보고서/done 생성 전이라 FAIL이었으나 최종 재검증 예정)",
  "pyright_check": "PASS - 0 errors, 0 warnings",
  "style_check": "PASS - black: OK, isort: OK",
  "data_integrity": "PASS"
}
```

## 완료 기준 충족
- [x] gemini CLI 인증 정상 동작
- [x] invoke_venus.py 생성 + 동작 확인
- [x] Gemini 실제 응답 수신 확인
- [x] 팀장 호출 방법 문서화
- [x] pyright 에러 0건

## 버그 유무
- 없음

## 비고
- gemini CLI settings.json 구조: `authMode`(구버전 키)가 아닌 `security.auth.selectedType`이 올바른 키
- 대용량 컨텍스트 파일은 CLI 인자 길이 제한(ARG_MAX)에 걸릴 수 있으므로, 향후 stdin 전달 방식 고려 가능
