fix: 캘린더 종료 시간(end_time) 지원 — 1시간 고정 제거

create_draft/create_confirmed에 end_time 파라미터 추가.
없으면 기본 1시간, 있으면 사용자 지정 종료 시간 사용.

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

View File

@@ -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) — 메일 본문 조회

View File

@@ -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:
"""일정 생성 초안 (실제 생성 <EFBFBD><EFBFBD><EFBFBD> 함)."""
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

View File

@@ -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)