From f73c46de3ab3aec52aa078d97c0702779535ad0c Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Mon, 6 Apr 2026 14:12:07 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=BA=98=EB=A6=B0=EB=8D=94=20=EC=A2=85?= =?UTF-8?q?=EB=A3=8C=20=EC=8B=9C=EA=B0=84(end=5Ftime)=20=EC=A7=80=EC=9B=90?= =?UTF-8?q?=20=E2=80=94=201=EC=8B=9C=EA=B0=84=20=EA=B3=A0=EC=A0=95=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit create_draft/create_confirmed에 end_time 파라미터 추가. 없으면 기본 1시간, 있으면 사용자 지정 종료 시간 사용. Co-Authored-By: Claude Opus 4.6 (1M context) --- nanoclaude/services/backend_registry.py | 2 +- nanoclaude/tools/calendar_tool.py | 14 ++++++++++---- nanoclaude/tools/registry.py | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/nanoclaude/services/backend_registry.py b/nanoclaude/services/backend_registry.py index 8f332ab..d76c655 100644 --- a/nanoclaude/services/backend_registry.py +++ b/nanoclaude/services/backend_registry.py @@ -22,7 +22,7 @@ CLASSIFIER_PROMPT = """\ 사용 가능한 도구: - calendar.today() — 오늘 일정 조회 - calendar.search(date_from, date_to) — 기간 일정 검색. 날짜는 YYYY-MM-DD -- calendar.create_draft(title, date, time, description) — 일정 생성 초안. 시간은 HH:MM. 실제 생성 아님 +- calendar.create_draft(title, date, time, end_time, description) — 일정 생성 초안. 시간은 HH:MM. end_time 없으면 1시간. 실제 생성 아님 - calendar.create_confirmed() — pending_draft가 있을 때, 사용자가 "확인/예/yes" 한 경우만 사용 - email.search(query, days) — 메일 검색. days 기본 7 - email.read(uid) — 메일 본문 조회 diff --git a/nanoclaude/tools/calendar_tool.py b/nanoclaude/tools/calendar_tool.py index 8ae9fbb..498b7ac 100644 --- a/nanoclaude/tools/calendar_tool.py +++ b/nanoclaude/tools/calendar_tool.py @@ -104,15 +104,17 @@ async def search(date_from: str, date_to: str) -> dict: return _make_result(False, "search", error=str(e)) -async def create_draft(title: str, date: str, time: str, description: str = "") -> dict: - """일정 생성 초안 (실제 생성 안 함).""" +async def create_draft(title: str, date: str, time: str, description: str = "", end_time: str = "") -> dict: + """일정 생성 초안 (실제 생성 ��� 함).""" title = title or "일정" + time_display = f"{time} ~ {end_time}" if end_time else time draft = { "title": title, "date": date, "time": time, + "end_time": end_time, "description": description, - "display": f"📅 제목: {title}\n날짜: {date} {time}\n설명: {description or '없음'}", + "display": f"📅 제목: {title}\n날짜: {date} {time_display}\n설명: {description or '없음'}", } return _make_result(True, "create_draft", data=draft, summary=draft["display"]) @@ -127,10 +129,14 @@ async def create_confirmed(draft_data: dict) -> dict: title = draft_data.get("title", "일정") date_str = draft_data.get("date", "") time_str = draft_data.get("time", "00:00") + end_time_str = draft_data.get("end_time", "") description = draft_data.get("description", "") dt_start = datetime.strptime(f"{date_str} {time_str}", "%Y-%m-%d %H:%M") - dt_end = dt_start + timedelta(hours=1) + if end_time_str: + dt_end = datetime.strptime(f"{date_str} {end_time_str}", "%Y-%m-%d %H:%M") + else: + dt_end = dt_start + timedelta(hours=1) uid = str(uuid.uuid4()) vcal = f"""BEGIN:VCALENDAR diff --git a/nanoclaude/tools/registry.py b/nanoclaude/tools/registry.py index 76fc06e..1d91754 100644 --- a/nanoclaude/tools/registry.py +++ b/nanoclaude/tools/registry.py @@ -71,6 +71,7 @@ async def _exec_calendar(operation: str, params: dict) -> dict: params.get("date", ""), params.get("time", "00:00"), params.get("description", ""), + params.get("end_time", ""), ) elif operation == "create_confirmed": return await calendar_tool.create_confirmed(params)