--- name: IMX[체크] IMAP 메일 기능 확장 description: 구현 및 검증 체크리스트 type: checklist --- # IMX 체크리스트 — IMAP 메일 기능 확장 ## 공정 상태: 0% ## 구현 체크리스트 ### Unit A — 백엔드 서비스 - [ ] `userMailImapService.ts`: `listFolders()` 추가 - [ ] `userMailImapService.ts`: `streamMailsByFolder()` 추가 - [ ] `userMailImapService.ts`: `moveMail()` 추가 - [ ] `userMailImapService.ts`: `downloadAttachment()` 추가 - [ ] `userMailSmtpService.ts` 신규 생성 (nodemailer 기반) - [ ] TypeScript 에러 없음 ### Unit B — 백엔드 컨트롤러/라우트 - [ ] `userMailController.ts`: `listFolders`, `streamFolderMails`, `moveMail`, `downloadAttachment`, `sendMail` 핸들러 - [ ] `userMailRoutes.ts`: 5개 신규 라우트 등록 - [ ] TypeScript 에러 없음 ### Unit C — 프론트엔드 API - [ ] `userMail.ts`: `getUserMailFolders()` 추가 - [ ] `userMail.ts`: `streamFolderMails()` 추가 - [ ] `userMail.ts`: `moveUserMail()` 추가 - [ ] `userMail.ts`: `sendUserMail()` 추가 - [ ] `userMail.ts`: 첨부파일 다운로드 URL 헬퍼 추가 ### Unit D — 프론트엔드 UI (TipTap 설치 포함) - [ ] TipTap 패키지 설치 (`@tiptap/react`, `@tiptap/starter-kit`, `@tiptap/extension-link`) - [ ] 좌측 패널: 폴더 목록 + 미읽음 수 - [ ] 폴더 클릭 → 해당 폴더 메일 스트리밍 - [ ] 메일 상세: 답장/전달/이동/삭제 버튼 - [ ] ComposeDialog: TipTap 에디터 + to/cc/subject - [ ] 답장/전달 시 원문 인용 자동 삽입 - [ ] 첨부파일 목록 + 다운로드 링크 - [ ] TypeScript 에러 없음 ## 검증 체크리스트 - [ ] 폴더 목록이 좌측 패널에 표시됨 (INBOX, Sent, Trash 등) - [ ] 폴더 클릭 시 해당 폴더 메일이 로드됨 - [ ] 메일 삭제 버튼 클릭 → Trash로 이동됨 - [ ] 메일 이동 드롭다운 → 다른 폴더로 이동됨 - [ ] 첨부파일 있는 메일에서 다운로드 버튼 동작 - [ ] 새 메일 작성 → 발송 성공 - [ ] 답장 → To 자동 입력, 원문 인용 포함 - [ ] 전달 → 원문 전체 포함 ## 변경 이력 | 일자 | 내용 | |------|------| | 2026-03-27 | PCC 작성, 구현 시작 |