feat: 이메일 폴더 필터링 — 테크니컬코리아/Gmail/개인 지정 가능

"테크니컬코리아 메일만" → Technicalkorea 폴더만 검색
"구글 메일" → Gmail만, "개인 메일" → INBOX만
폴더 미지정 시 전체 검색 유지

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-04-06 14:49:54 +09:00
parent 12ca8f19d9
commit 37c5616735
3 changed files with 15 additions and 5 deletions

View File

@@ -127,9 +127,17 @@ def _pre_route(message: str) -> dict | None:
if any(k in msg for k in ["메일", "이메일", "mail", "편지"]):
query = ""
days = 7
if "오늘" in msg:
folder = ""
if "오늘" in msg or "4월 6일" in msg or "6일" in msg:
days = 1
return {"action": "tools", "tool": "email", "operation": "search", "params": {"query": query, "days": days}}
# 폴더 필터링
if any(k in msg for k in ["테크니컬", "회사", "technicalkorea", "네이버웍스"]):
folder = "Technicalkorea"
elif any(k in msg for k in ["gmail", "구글", "지메일"]):
folder = "Gmail"
elif any(k in msg for k in ["개인", "inbox"]):
folder = "INBOX"
return {"action": "tools", "tool": "email", "operation": "search", "params": {"query": query, "days": days, "folder": folder}}
# 문서 키워드
if any(k in msg for k in ["문서", "도큐먼트", "자료", "파일"]) and any(k in msg for k in ["찾아", "검색", "확인"]):

View File

@@ -79,8 +79,8 @@ def _connect():
return conn
async def search(query: str = "", days: int = 7) -> dict:
"""전체 폴더에서 최근 메일 검색."""
async def search(query: str = "", days: int = 7, folder: str = "") -> dict:
"""메일 검색. folder 지정 시 해당 폴더만, 없으면 전체."""
try:
conn = _connect()
if not conn:
@@ -92,10 +92,11 @@ async def search(query: str = "", days: int = 7) -> dict:
else:
criteria = f"(SINCE {since})"
search_folders = [folder] if folder else FOLDERS
all_results = []
failed_folders = []
for folder in FOLDERS:
for folder in search_folders:
try:
conn.select(folder, readonly=True)
_, data = conn.search(None, criteria)

View File

@@ -83,6 +83,7 @@ async def _exec_email(operation: str, params: dict) -> dict:
return await email_tool.search(
params.get("query", ""),
params.get("days", 7),
params.get("folder", ""),
)
elif operation == "read":
return await email_tool.read(params.get("uid", ""))