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