Wedge 01
預約 Storefront
貼入 Cursor 或 Claude:
import FavCRM from '@favcrm/sdk';
const sdk = new FavCRM({
baseUrl: 'https://api.favcrm.io',
companyId: process.env.FAVCRM_COMPANY_ID,
});
const services = await sdk.bookings.listServices();
const slots = await sdk.bookings.getTimeSlots(serviceId, {
date: '2026-06-01',
});
const booking = await sdk.bookings.createBooking({
serviceId,
slotTime: slots[0].startTime,
participants: 2,
});Agent workflow
A · 商戶設定
一次性商戶設定。完全 MCP-native,跟 customer flow 使用同一套 tool surface。
- 01
create_service_category({ name })— 可選分組(「療程」、「課堂」)。 - 02
create_service({ name, durationMinutes, price, capacity, categoryId? })— 定義可預約服務。按需要加入 cancellationPolicy / requiresStaff / requiresResource。 - 03
set_staff_availability({ memberId, dayOfWeek, startTime, endTime })— 每位 staff 的每週工作時間。一次性改動可用 date 代替 dayOfWeek。 - 04
create_resource({ name, type }) + set_resource_availability(...)— (可選)用於需要房間或設備的預約。
B · 客戶流程
面向客人的 storefront。支援 MCP tools、SDK 或 raw REST。
- 01
list_services— 顯示 service cards,包括名稱、價格、時長、容量。 - 02
get_service_detail(serviceId)— (可選)在詳情頁顯示 prep notes 同 cancellation policy。 - 03
get_available_slots(serviceId, { startDate, endDate })— 顯示 date picker 同可預約時間。已滿時回傳 []。 - 04
create_booking({ serviceId, slotTime, participants, customer })— 確認預約。回傳 booking ID 同 status。 - 05
cancel_booking({ bookingId, reason? })— 取消流程。Server 檢查政策並計算 refund eligibility。
Agents 必須處理的 edge cases
- • get_available_slots → []:顯示「沒有可預約時段」,不要當成錯誤。
- • create_booking → 409 Conflict:fetch 同 book 之間時段被其他客人搶走,需要重新 fetch slots。
- • cancel_booking → cooldown error 會包含 cancellationPolicy field,原文顯示給用戶。
- • Capacity > 1 的服務:讓用戶選 participants count,最多到 service.capacity。