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:
@@ -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) — 메일 본문 조회
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user