预订系统(固定)
此存储库包含Andriana Delcheva预订系统的固定版本,解决了之前实现中的几个关键问题。该系统旨在在Cloudflare Workers上运行,并与谷歌日历和MCP服务器集成。
🛠️ 已修复问题
此实现解决了原始系统中存在的以下问题:
- 固定预订完成 -用户现在可以成功选择日期并完成预订。
- 固定确认电子邮件 -成功预订后,现在会发送电子邮件确认。
- 修复了谷歌日历集成问题 -预订现在可以在谷歌日历中创建活动。
- 已实施可用性检查 -在确认预订之前,系统会检查可用的插槽。
- 已实现MCP服务器集成 -后端处理使用MCP服务器来增强功能。
🌟 主要特点
- 多步骤预订流程 -直观的分步预订流程,提供更好的用户体验
- 实时可用性检查 -检查Google日历是否存在冲突
- 自动电子邮件确认 -向客户发送详细信息
- 谷歌日历集成 -创建包含服务详细信息的日历事件
- MCP服务器集成 -跟踪预订事件并提供增强的处理
- 全面的错误处理 -为用户提供有意义的反馈
- 响应式设计 -适用于移动和桌面设备
🚀 部署
先决条件
- Cloudflare Workers帐户
- 启用日历API的谷歌云项目
- 可以访问日历的Google服务帐户
- 用于后端处理的MCP服务器
安装说明
- 克隆存储库
git clone https://github.com/Konstrex/booking-system-fixed.git
cd booking-system-fixed- 安装依赖项
npm install- 配置环境变量
需要在wrangler.toml文件中或使用Cloudflare的机密设置以下环境变量:
- 谷歌日历集成
- GOOGLE_CLIENT_EMAIL -已配置为“andrianadelcheva@totemic-point-453101-s4.iam.gserviceaccount.com" - GOOGLE_PRIVATE_KEY -您的服务帐户私钥 - GOOGLE_CALENDAR_ID -要使用的日历ID
- 电子邮件配置
- EMAIL_FROM -用于发送确认的电子邮件地址 - BUSINESS_NAME -企业名称(已设置为“Andriana Delcheva”) - BUSINESS_EMAIL -用于回复的商务电子邮件
- MCP服务器集成
- MCP_ENABLED -设置为“true”以启用MCP集成 - MCP_SERVER_URL -MCP服务器的URL - MCP_API_KEY -用于与MCP服务器进行身份验证的API密钥
- 使用牧马人设置秘密
对于敏感信息,请使用Wrangler的秘密管理:
wrangler secret put GOOGLE_PRIVATE_KEY
wrangler secret put GOOGLE_CALENDAR_ID
wrangler secret put MCP_SERVER_URL
wrangler secret put MCP_API_KEY- 部署到Cloudflare Workers
npm run deploy:prod📝 谷歌日历设置
为确保Google日历集成正常工作:
- 通过将服务帐户添加到您的Google日历,确保其具有适当的权限:
- 打开谷歌日历 - 转到日历设置 - 在“与特定人员共享”下,添加服务帐户电子邮件: andrianadelcheva@totemic-point-453101-s4.iam.gserviceaccount.com - 将权限设置为“进行更改和管理共享”
- JWT身份验证配置为使用正确的token_uri:
https://oauth2.googleapis.com/token
📧 电子邮件配置
该系统使用MCP服务器来处理电子邮件通知。成功预订后,会发送一封电子邮件,其中包含:
- 主题:“预订确认”
- 预约详情(日期、时间、服务)
- 谷歌日历链接
- 预订参考号
🤖 MCP服务器集成
MCP服务器用于增强功能:
- 事件通知 -MCP收到有关关键事件的通知:
- 可用性检查 - 预订创作 - 电子邮件确认 - 日历事件创建
- 错误处理 -MCP接收详细的错误信息以进行监控和调试。
- 预订处理 -如果配置好,该系统可以将整个预订过程卸载给MCP。
🧪 测试
要在本地测试系统:
npm run dev:local对于端到端测试:
- 选择日期和服务
- 检查可用时隙
- 输入客户详细信息
- 完成预订
- 验证约会是否显示在谷歌日历中
- 确认收到确认邮件
📚 技术实施细节
固定预订流量
预订流程已完全重新设计,以确保在预订时发出单个API请求。主要改进:
- 多步骤表单,每一步都有验证
- 针对最终预订请求的单个API调用
- 清除失败预订的错误消息
- 在API调用期间加载指示器
修复了谷歌日历集成问题
Google日历集成现在:
- 对服务帐户使用正确的JWT身份验证
- 预订前检查现有活动
- 使用所有预订信息创建详细的日历事件
- 正确格式化日期和时间
- 包括与会者和提醒
增强的错误处理
已实施全面的错误处理:
- 特定消息的验证错误
- 具有重试选项的网络错误处理
- 使用MCP集成记录服务器错误
- 用户友好的错误消息
📋 API终点
检查可用性
POST /api/availability请求正文:
{
"date": "2025-03-15",
"duration": 60
}答复:
{
"success": true,
"availableSlots": [
{ "startTime": "09:00", "endTime": "10:00" },
{ "startTime": "10:00", "endTime": "11:00" },
/* ... */
]
}预订预约
POST /api/book请求正文:
{
"name": "John Doe",
"email": "john@example.com",
"phone": "+1234567890",
"date": "2025-03-15",
"time": "10:00",
"services": [
{
"name": "Massage",
"duration": 60,
"price": 80
}
],
"notes": "Optional notes",
"agreed": true
}答复:
{
"success": true,
"message": "Booking created successfully",
"bookingId": "BK-JOHNDO-123456",
"eventId": "calendar_event_id"
}🔄 持续改进
未来的改进可能包括:
- 添加用于管理预订的仪表板
- 执行预订取消/重新安排
- 添加支付集成
- 创建客户账户系统
