51 lines
2.8 KiB
Markdown
51 lines
2.8 KiB
Markdown
# 작업: 채팅 이미지 입력
|
|
|
|
## Phase 1: 계약 기반
|
|
|
|
- [x] T001 `2_frontend/src/features/snap/contract/types.ts`에 이미지 입력과 stream 요청 계약 추가
|
|
- [x] T002 [P] `2_frontend/src/features/snap/api/snap.stream.test.ts`에 images 요청 전달 테스트 추가
|
|
|
|
## Phase 2: 사용자 스토리 1 - 캡쳐 이미지 전송
|
|
|
|
**독립 테스트**: 캡쳐 한 장만으로 새 세션을 만들고 이미지 요청을 전송함.
|
|
|
|
- [x] T003 [US1] `2_frontend/src/features/snap/components/Composer.test.tsx`에 캡쳐 이미지-only 전송과 제한 테스트 추가
|
|
- [x] T004 [US1] `2_frontend/src/features/snap/components/Composer.tsx`에 이미지 계약 변환·검증·전송 구현
|
|
- [x] T005 [US1] `2_frontend/src/features/snap/pages/NewChatPage.tsx`와 `2_frontend/src/features/snap/pages/SessionChatPage.tsx`에 첫 이미지 전달 구현
|
|
- [x] T006 [US1] `2_frontend/src/features/snap/hooks/useSnapChat.test.tsx`에 images 요청 body 테스트 추가
|
|
- [x] T007 [US1] `2_frontend/src/features/snap/hooks/useSnapChat.ts`에 이미지 전송 연결
|
|
|
|
## Phase 3: 사용자 스토리 2 - 클립보드 이미지 전송
|
|
|
|
**독립 테스트**: 기존 대화에서 지원 이미지를 클립보드로 가져오면 썸네일과 함께 요청에 포함됨.
|
|
|
|
- [x] T008 [US2] `2_frontend/src/features/snap/components/Composer.test.tsx`에 클립보드 이미지 첨부 테스트 추가
|
|
- [x] T009 [US2] `2_frontend/src/features/snap/components/Composer.tsx`에서 클립보드 이미지를 질문 첨부로 누적
|
|
- [x] T010 [US2] `2_frontend/src/features/snap/pages/SessionChatPage.tsx`에서 기존 대화 이미지 입력 허용
|
|
|
|
## Phase 4: 사용자 스토리 3 - 제한과 입력 보존
|
|
|
|
**독립 테스트**: 형식·개수·크기 제한을 넘으면 요청 없이 안내하고 작성 내용을 유지함.
|
|
|
|
- [x] T011 [US3] `2_frontend/src/features/snap/components/Composer.test.tsx`에 형식·개수·크기·입력 보존 회귀 테스트 추가
|
|
- [x] T012 [US3] `2_frontend/src/features/snap/components/Composer.tsx`의 오류 안내와 경계 처리를 완성
|
|
|
|
## Phase 5: 마무리
|
|
|
|
- [x] T013 `specs/005-chat-image-input/stage-1.md`에 구현 및 단계 검증 결과 기록
|
|
- [x] T014 `2_frontend`에서 format, lint, test, build 실행
|
|
- [x] T015 `specs/005-chat-image-input/report.md`에 계획 대비 결과와 검증 기록
|
|
|
|
## 의존 관계
|
|
|
|
- T001 뒤에 T003~T012를 진행함.
|
|
- US1이 새 대화 전달 경로를 완성하고, US2는 같은 Composer 계약을 기존 대화까지 넓힘.
|
|
- US3은 US1·US2의 공통 입력 경계를 잠금.
|
|
|
|
## 구현 전략
|
|
|
|
- MVP는 US1의 캡쳐 이미지-only 전송임.
|
|
- 다음으로 기존 대화 클립보드 입력을 연결하고 마지막에 제한 회귀를 잠금.
|
|
- 모든 구현 작업은 대응 테스트 실패를 먼저 확인한 뒤 통과시킴.
|
|
|