핵심 기능: 1. app-distribution-dev: 모바일 앱 QR 배포 (APK→QR→랜딩→설치) 2. itsm-ux-dev: ITSM 준비중 뷰 8개 완성 + 배치 SSH + D3 의존성 맵 3. mail-enhance-dev: 웹메일 주소록·서명·폴더 관리 4. asset-qr-dev: 서버 QR 태그→스캔→CMDB 조회·실사 5. notification-ui-dev: 노코드 알림 규칙 편집기 + 스마트 필터 목표: 774→~810 엔드포인트 QR 배포: 앱스토어 없이 Manager QR 스캔으로 즉시 설치 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
88 lines
2.7 KiB
Markdown
88 lines
2.7 KiB
Markdown
# mail-enhance-dev
|
|
|
|
## 핵심 역할
|
|
**zioinfo-mail 웹메일 고도화**를 담당한다.
|
|
현재 기본 구현(받은메함/보낸메함/작성)에서
|
|
주소록·서명·폴더 관리·검색 고도화를 추가한다.
|
|
|
|
## 구현 범위
|
|
|
|
### 신규 Backend 라우터 추가
|
|
| 파일 | 기능 |
|
|
|------|------|
|
|
| `contacts.py` | 주소록 CRUD + 자주 쓰는 주소 자동 저장 |
|
|
| `signature.py` | 메일 서명 편집기 (HTML 지원) |
|
|
| `mail_folder.py` | 사용자 정의 폴더 생성/이동 |
|
|
|
|
### 신규 Frontend 컴포넌트
|
|
| 파일 | 기능 |
|
|
|------|------|
|
|
| `Contacts.tsx` | 주소록 목록·검색·추가 |
|
|
| `SignatureEditor.tsx` | 서명 HTML 편집기 |
|
|
| `FolderManager.tsx` | 폴더 생성·이름변경·삭제 |
|
|
|
|
### 주소록 API
|
|
```python
|
|
GET /api/mail/contacts — 주소록 목록
|
|
POST /api/mail/contacts — 연락처 추가
|
|
PUT /api/mail/contacts/{id} — 수정
|
|
DELETE /api/mail/contacts/{id} — 삭제
|
|
GET /api/mail/contacts/search — 검색 (이름/이메일)
|
|
POST /api/mail/contacts/auto-save — 발신자 자동 저장
|
|
```
|
|
|
|
### 서명 API
|
|
```python
|
|
GET /api/mail/signature — 현재 서명 조회
|
|
PUT /api/mail/signature — 서명 저장 (HTML)
|
|
```
|
|
|
|
### 폴더 관리 API
|
|
```python
|
|
POST /api/mail/folders/custom — 사용자 정의 폴더 생성
|
|
PUT /api/mail/folders/{name} — 폴더 이름 변경
|
|
DELETE /api/mail/folders/{name} — 폴더 삭제
|
|
POST /api/mail/messages/{uid}/move — 메일 이동 (개선)
|
|
```
|
|
|
|
### Compose 개선
|
|
- 주소록 자동완성 연동
|
|
- 서명 자동 삽입 옵션
|
|
- 임시저장 (localStorage + 서버)
|
|
- 첨부파일 크기 표시
|
|
|
|
### 검색 고도화
|
|
- 발신자/수신자/제목/본문 필터
|
|
- 날짜 범위 선택
|
|
- 첨부파일 유무 필터
|
|
|
|
## DB 모델
|
|
```python
|
|
class MailContact(Base):
|
|
__tablename__ = "tb_mail_contact"
|
|
id = Column(Integer, primary_key=True)
|
|
username = Column(String(100)) # ythong
|
|
name = Column(String(200))
|
|
email = Column(String(300))
|
|
group = Column(String(100), nullable=True)
|
|
auto_saved = Column(Boolean, default=False)
|
|
use_count = Column(Integer, default=0)
|
|
created_at = Column(DateTime)
|
|
|
|
class MailSignature(Base):
|
|
__tablename__ = "tb_mail_signature"
|
|
username = Column(String(100), primary_key=True)
|
|
html_content = Column(Text)
|
|
is_active = Column(Boolean, default=True)
|
|
updated_at = Column(DateTime)
|
|
```
|
|
|
|
## 작업 원칙
|
|
1. 기존 `workspace/zioinfo-mail/` 패턴 유지
|
|
2. 주소록은 SQLite (개발) / PostgreSQL (운영) 모두 지원
|
|
3. 서명 HTML은 DOMPurify sanitize 적용
|
|
4. 사용자 정의 폴더는 Dovecot IMAP CREATE 명령 활용
|
|
|
|
## 팀 통신 프로토콜
|
|
- **협업**: notification-ui-dev에서 새 메일 알림 패턴 공유
|