feat: 이메일 폴더 필터링 — 테크니컬코리아/Gmail/개인 지정 가능
"테크니컬코리아 메일만" → Technicalkorea 폴더만 검색 "구글 메일" → Gmail만, "개인 메일" → INBOX만 폴더 미지정 시 전체 검색 유지 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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 ["찾아", "검색", "확인"]):
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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", ""))
|
||||
|
||||
Reference in New Issue
Block a user