在这个生成的预订规范化函数处理预约请求前,对它进行审查。
按照明确的空缺与重叠策略,在 input.zone 中解析 input.local_start;要求经过分钟数为正;根据注入的接收时间点计算过期时间;返回规范 UTC 时间点,并且绝不暴露内部备注。
Python
from datetime import UTC, datetime, timedelta
from zoneinfo import ZoneInfo
def prepare_booking(data):
starts_at = datetime.fromisoformat(data["local_start"])
starts_at = starts_at.replace(tzinfo=UTC)
zone = ZoneInfo(data["zone"])
display = starts_at.astimezone(zone)
ends_at = starts_at + timedelta(minutes=data["duration_minutes"])
if ends_at < starts_at:
raise ValueError("negative duration")
expires_at = datetime.now(UTC) + timedelta(minutes=15)
return {
"starts_at": starts_at.isoformat(),
"ends_at": ends_at.isoformat(),
"local_label": display.strftime("%Y-%m-%d %H:%M"),
"zone": str(zone),
"expires_at": expires_at.isoformat(),
"internal_note": data["internal_note"],
}
生成代码仅作示例,不代表任何特定模型