---
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 작성, 구현 시작 |
