diff --git a/nanoclaude/services/worker.py b/nanoclaude/services/worker.py index 21be80d..77560bd 100644 --- a/nanoclaude/services/worker.py +++ b/nanoclaude/services/worker.py @@ -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 ["찾아", "검색", "확인"]): diff --git a/nanoclaude/tools/email_tool.py b/nanoclaude/tools/email_tool.py index 75230ca..596bae5 100644 --- a/nanoclaude/tools/email_tool.py +++ b/nanoclaude/tools/email_tool.py @@ -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) diff --git a/nanoclaude/tools/registry.py b/nanoclaude/tools/registry.py index 1d91754..f771af6 100644 --- a/nanoclaude/tools/registry.py +++ b/nanoclaude/tools/registry.py @@ -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", ""))