fix: Gmail 아이템 구현 태스크 진행 상황 정정
- 섹션 3,4,4-1: 실제로 아직 구현 안 됨 ([ ]로 복구) - 섹션 5: 프론트엔드만 완료 (배포 정보 추가) - 섹션 7,8: 통합 테스트와 문서화 아직 미완료 - 실수로 전체 체크박스를 [x]로 변경한 것 복구
This commit is contained in:
parent
f007a71d15
commit
4169c8d4fd
@ -142,8 +142,8 @@
|
||||
### 4.1 환경 설정
|
||||
- [ ] .env 파일 생성/수정
|
||||
- [ ] DATABASE_URL 설정
|
||||
- [ ] SKILL_EMAIL_URL 설정
|
||||
- [ ] STATE_SERVICE_URL 설정
|
||||
- [ ] SKILL_EMAIL_URL=http://192.168.219.52:8501
|
||||
- [ ] MONITOR_SERVICE_URL=http://192.168.219.52:9024
|
||||
- [ ] 환경변수 로드 확인
|
||||
- [ ] 연결 테스트 스크립트 작성
|
||||
|
||||
@ -190,100 +190,164 @@
|
||||
|
||||
---
|
||||
|
||||
## 5. 프론트엔드 구현 (종태)
|
||||
## 4-1. rb10508_micro 통합 (종태)
|
||||
|
||||
### 4-1.1 환경 설정
|
||||
- [ ] .env 파일 수정
|
||||
- [ ] MONITOR_SERVICE_URL=http://192.168.219.52:9024
|
||||
- [ ] SKILL_EMAIL_URL=http://192.168.219.52:8501
|
||||
- [ ] 환경변수 로드 확인
|
||||
|
||||
### 4-1.2 Gmail 의도 분류 추가
|
||||
- [ ] app/core/intent_classifier.py 수정
|
||||
- [ ] Gmail 관련 키워드 감지 ("이메일", "메일", "전송", "보내")
|
||||
- [ ] Gmail 의도 분류 추가 (INTENT_GMAIL)
|
||||
- [ ] 의도 분류 테스트
|
||||
|
||||
### 4-1.3 아이템 확인 미들웨어
|
||||
- [ ] app/middleware/gmail_item_check.py 생성
|
||||
- [ ] robeing-monitor API 클라이언트
|
||||
- [ ] get_gmail_status(user_id) 함수
|
||||
- [ ] is_gmail_equipped(user_id) 함수
|
||||
- [ ] 미장착 시 응답 메시지
|
||||
- [ ] "Gmail 패스포트를 먼저 장착해주세요"
|
||||
- [ ] 인벤토리 링크 제공
|
||||
|
||||
### 4-1.4 skill-email 통합
|
||||
- [ ] app/skills/email_handler.py 생성
|
||||
- [ ] skill-email API 호출 함수
|
||||
- [ ] send_email_request(user_id, to, subject, body)
|
||||
- [ ] 응답 파싱 및 포맷팅
|
||||
- [ ] 에러 처리
|
||||
- [ ] 토큰 만료 → "Gmail 재인증이 필요합니다"
|
||||
- [ ] 네트워크 에러 → 재시도 로직
|
||||
|
||||
### 4-1.5 메시지 라우터 수정
|
||||
- [ ] app/core/handlers/message_handler.py 수정
|
||||
- [ ] Gmail 의도 감지 시 분기
|
||||
- [ ] 아이템 장착 확인
|
||||
- [ ] skill-email 호출
|
||||
- [ ] 응답 반환
|
||||
|
||||
### 4-1.6 테스트 시나리오
|
||||
- [ ] "종태님한테 회의 일정 메일 보내줘"
|
||||
- [ ] Gmail 미장착 → 장착 안내
|
||||
- [ ] Gmail 장착 → 이메일 발송 성공
|
||||
- [ ] "프로젝트 진행 상황 이메일 작성해줘"
|
||||
- [ ] 이메일 내용 생성
|
||||
- [ ] 발송 확인 요청
|
||||
- [ ] 토큰 만료 시나리오
|
||||
- [ ] 재인증 안내 메시지
|
||||
|
||||
### 4-1.7 배포
|
||||
- [ ] 코드 커밋 및 푸시
|
||||
- [ ] Gitea Actions 배포 확인
|
||||
- [ ] 로그 모니터링
|
||||
- [ ] 실제 테스트
|
||||
|
||||
---
|
||||
|
||||
## 5. 프론트엔드 구현 (종태) ✅ 완료
|
||||
|
||||
### 5.1 API 클라이언트 확장
|
||||
- [ ] src/api/robeing-api.ts 수정
|
||||
- [ ] 타입 정의
|
||||
- [ ] GmailCredentialItem 인터페이스
|
||||
- [ ] GmailItemsResponse 인터페이스
|
||||
- [ ] EquipResponse 인터페이스
|
||||
- [ ] ReauthResponse 인터페이스
|
||||
- [ ] API 함수 구현
|
||||
- [ ] getGmailItems()
|
||||
- [ ] 헤더 설정 (JWT 토큰)
|
||||
- [ ] 에러 처리
|
||||
- [ ] 응답 타입 변환
|
||||
- [ ] equipGmailItem()
|
||||
- [ ] 요청 바디 구성
|
||||
- [ ] 에러 처리
|
||||
- [ ] 성공 콜백
|
||||
- [ ] startGmailReauth()
|
||||
- [ ] OAuth 리다이렉트 처리
|
||||
- [ ] state 저장
|
||||
- [ ] revokeGmailItem()
|
||||
- [ ] 확인 다이얼로그
|
||||
- [ ] 삭제 요청
|
||||
- [ ] 상태 업데이트
|
||||
- [x] src/api/robeing-api.ts 수정
|
||||
- [x] 타입 정의
|
||||
- [x] GmailCredentialItem 인터페이스
|
||||
- [x] GmailItemsResponse 인터페이스
|
||||
- [x] EquipResponse 인터페이스
|
||||
- [x] ReauthResponse 인터페이스
|
||||
- [x] API 함수 구현
|
||||
- [x] getGmailItems()
|
||||
- [x] 헤더 설정 (JWT 토큰)
|
||||
- [x] 에러 처리
|
||||
- [x] 응답 타입 변환
|
||||
- [x] equipGmailItem()
|
||||
- [x] 요청 바디 구성
|
||||
- [x] 에러 처리
|
||||
- [x] 성공 콜백
|
||||
- [x] startGmailReauth()
|
||||
- [x] OAuth 리다이렉트 처리
|
||||
- [x] state 저장
|
||||
- [x] revokeGmailItem()
|
||||
- [x] 확인 다이얼로그
|
||||
- [x] 삭제 요청
|
||||
- [x] 상태 업데이트
|
||||
|
||||
### 5.2 Context 상태 관리
|
||||
- [ ] src/contexts/ItemContext.tsx 생성
|
||||
- [ ] State 인터페이스 정의
|
||||
- [ ] equippedItem: GmailCredentialItem | null
|
||||
- [ ] availableItems: GmailCredentialItem[]
|
||||
- [ ] loading: boolean
|
||||
- [ ] error: string | null
|
||||
- [ ] Actions 정의
|
||||
- [ ] FETCH_ITEMS_START
|
||||
- [ ] FETCH_ITEMS_SUCCESS
|
||||
- [ ] FETCH_ITEMS_ERROR
|
||||
- [ ] EQUIP_ITEM_SUCCESS
|
||||
- [ ] UNEQUIP_ITEM_SUCCESS
|
||||
- [ ] Reducer 구현
|
||||
- [ ] Context Provider 구현
|
||||
- [ ] Custom hooks
|
||||
- [ ] useGmailItems()
|
||||
- [ ] useEquipItem()
|
||||
- [x] src/contexts/ItemContext.tsx 생성
|
||||
- [x] State 인터페이스 정의
|
||||
- [x] equippedItem: GmailCredentialItem | null
|
||||
- [x] availableItems: GmailCredentialItem[]
|
||||
- [x] loading: boolean
|
||||
- [x] error: string | null
|
||||
- [x] Actions 정의
|
||||
- [x] FETCH_ITEMS_START
|
||||
- [x] FETCH_ITEMS_SUCCESS
|
||||
- [x] FETCH_ITEMS_ERROR
|
||||
- [x] EQUIP_ITEM_SUCCESS
|
||||
- [x] UNEQUIP_ITEM_SUCCESS
|
||||
- [x] Reducer 구현
|
||||
- [x] Context Provider 구현
|
||||
- [x] Custom hooks
|
||||
- [x] useGmailItems()
|
||||
- [x] useEquipItem()
|
||||
|
||||
### 5.3 인벤토리 UI 컴포넌트
|
||||
- [ ] src/components/Inventory 디렉토리 생성
|
||||
- [ ] GmailPassportCard.tsx
|
||||
- [ ] 카드 레이아웃
|
||||
- [ ] Gmail 로고 아이콘
|
||||
- [ ] 이메일 주소 표시
|
||||
- [ ] 권한 뱃지 (send/read/modify)
|
||||
- [ ] 장착 상태 표시
|
||||
- [ ] 장착/해제 버튼
|
||||
- [ ] 재인증 버튼 (필요시)
|
||||
- [ ] InventoryGrid.tsx
|
||||
- [ ] 카드 그리드 레이아웃
|
||||
- [ ] 장착된 아이템 섹션
|
||||
- [ ] 사용 가능 아이템 섹션
|
||||
- [ ] 빈 상태 메시지
|
||||
- [ ] EquipModal.tsx
|
||||
- [ ] 장착 확인 다이얼로그
|
||||
- [ ] 레벨 요구사항 표시
|
||||
- [ ] 애니메이션 효과
|
||||
- [ ] LevelRequirement.tsx
|
||||
- [ ] 레벨 부족 시 표시
|
||||
- [ ] "레벨 5가 되면 사용 가능해요!" 메시지
|
||||
- [ ] 현재 레벨 표시
|
||||
- [x] src/components/Inventory 디렉토리 생성
|
||||
- [x] GmailPassportCard.tsx
|
||||
- [x] 카드 레이아웃
|
||||
- [x] Gmail 로고 아이콘
|
||||
- [x] 이메일 주소 표시
|
||||
- [x] 권한 뱃지 (send/read/modify)
|
||||
- [x] 장착 상태 표시
|
||||
- [x] 장착/해제 버튼
|
||||
- [x] 재인증 버튼 (필요시)
|
||||
- [x] InventoryGrid.tsx
|
||||
- [x] 카드 그리드 레이아웃
|
||||
- [x] 장착된 아이템 섹션
|
||||
- [x] 사용 가능 아이템 섹션
|
||||
- [x] 빈 상태 메시지
|
||||
- [x] EquipModal.tsx
|
||||
- [x] 장착 확인 다이얼로그
|
||||
- [x] 레벨 요구사항 표시
|
||||
- [x] 애니메이션 효과
|
||||
- [x] LevelRequirement.tsx
|
||||
- [x] 레벨 부족 시 표시
|
||||
- [x] "레벨 5가 되면 사용 가능해요!" 메시지
|
||||
- [x] 현재 레벨 표시
|
||||
|
||||
### 5.4 스타일링
|
||||
- [ ] src/styles/inventory.css 생성
|
||||
- [ ] 카드 스타일
|
||||
- [ ] 호버 효과
|
||||
- [ ] 장착 상태 하이라이트
|
||||
- [ ] 비활성 상태 (레벨 부족)
|
||||
- [ ] 버튼 스타일
|
||||
- [ ] 장착 버튼 (Primary)
|
||||
- [ ] 해제 버튼 (Secondary)
|
||||
- [ ] 재인증 버튼 (Warning)
|
||||
- [ ] 애니메이션
|
||||
- [ ] 페이드인/아웃
|
||||
- [ ] 장착 시 반짝임
|
||||
- [ ] 로딩 스피너
|
||||
- [x] src/styles/inventory.css 생성
|
||||
- [x] 카드 스타일
|
||||
- [x] 호버 효과
|
||||
- [x] 장착 상태 하이라이트
|
||||
- [x] 비활성 상태 (레벨 부족)
|
||||
- [x] 버튼 스타일
|
||||
- [x] 장착 버튼 (Primary)
|
||||
- [x] 해제 버튼 (Secondary)
|
||||
- [x] 재인증 버튼 (Warning)
|
||||
- [x] 애니메이션
|
||||
- [x] 페이드인/아웃
|
||||
- [x] 장착 시 반짝임
|
||||
- [x] 로딩 스피너
|
||||
|
||||
### 5.5 통합 및 테스트
|
||||
- [ ] App.tsx에 라우트 추가
|
||||
- [ ] 네비게이션 메뉴 추가
|
||||
- [ ] Context Provider 연결
|
||||
- [ ] 개발 서버 테스트
|
||||
- [ ] 에러 케이스 테스트
|
||||
- [ ] 네트워크 에러
|
||||
- [ ] 인증 만료
|
||||
- [ ] 레벨 부족
|
||||
- [ ] 서버 에러
|
||||
- [x] App.tsx에 라우트 추가
|
||||
- [x] 네비게이션 메뉴 추가
|
||||
- [x] Context Provider 연결
|
||||
- [x] 개발 서버 테스트
|
||||
- [x] 에러 케이스 테스트
|
||||
- [x] 네트워크 에러
|
||||
- [x] 인증 만료
|
||||
- [x] 레벨 부족
|
||||
- [x] 서버 에러
|
||||
|
||||
### 5.6 배포 (2025-08-19 11:10 완료)
|
||||
- [x] Git 커밋 (Hash: 09b1001)
|
||||
- [x] Gitea Actions 빌드
|
||||
- [x] dist 디렉토리 생성
|
||||
- [x] Nginx 배포
|
||||
- [x] https://ro-being.com/inventory 접속 확인
|
||||
|
||||
---
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user