UNPKG

@wishcbg/bobcode

Version:

基於店家同步功能的需求,讓店家能夠在不同的店家之間同步各項功能設定,並且能夠檢視各項功能的異動情況。 規劃出一套店家設定即程式碼的機制,讓店家能夠以 config file (.sac) 來定義各項功能設定,並且能夠還原店家各項功能設定。 暫且稱這個機制為「Settings as Code」「店家設定即程式碼」。

62 lines (61 loc) 4.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AppointmentConfigResourceSchema = void 0; const zod_1 = require("zod"); // enums 參考 config const notSpecifyOrderRules = ['first', 'last']; const notSpecifyRules = ['order', 'reservation', 'notSpecifyReservation', 'random']; const secondOrderStartDefaults = ['continue', 'same']; const pageStyles = ['beauty', 'ohbot']; const appointmentConfigClientOrderModes = ['normal', 'otherReservation', 'batchOrder']; const appointmentConfigChargeTypes = ['none', 'deposit', 'checkout']; const appointmentConfigBatchOrderNotifyModes = ['merge', 'independent']; const appointmentConfigOrderServiceAttachClientNullOptionPositions = ['first', 'last']; const appointmentConfigResourceSettingSchema = zod_1.z.object({ timeUnit: zod_1.z.number().int().min(10).optional().describe('預約時間單位,單位為分鐘'), timeUnitOffset: zod_1.z.number().int().min(0).optional().describe('預約時間單位偏移量,單位為分鐘'), minReservationInterval: zod_1.z.number().int().optional().describe('最早可預約時間,單位為分鐘(-1為不限制)'), maxReservationInterval: zod_1.z.number().int().optional().describe('最晚可預約時間,單位為分鐘(-1為不限制)'), cancelInterval: zod_1.z.number().int().optional().describe('預約最晚可取消時間,單位為分鐘'), useNotSpecify: zod_1.z.boolean().optional().describe('是否啟用不指定人員'), notSpecifyOrderRule: zod_1.z.enum(notSpecifyOrderRules).optional().describe('不指定人員顯示排序方式'), notSpecifySkipUnit: zod_1.z.boolean().optional().describe('不指定人員時是否跳過選擇服務人員'), notSpecifyName: zod_1.z.string().optional().describe('不指定人員顯示名稱'), notSpecifyRule: zod_1.z.enum(notSpecifyRules).optional().describe('不指定人員安排規則'), pageStyle: zod_1.z.enum(pageStyles).optional().describe('預約頁面樣式'), pageText: zod_1.z.record(zod_1.z.string()).optional().describe('預約頁面替換文字'), clientOrderMode: zod_1.z.enum(appointmentConfigClientOrderModes).optional().describe('Client預約流程模式'), allowOrderMorePeople: zod_1.z.boolean().optional().describe('是否允許多人預約'), maxOrderMorePeopleCount: zod_1.z.number().int().min(0).max(10).optional().describe('最大多人預約人數'), allowOtherReservation: zod_1.z.boolean().optional().describe('是否允許其他預約'), secondOrderStartDefault: zod_1.z.enum(secondOrderStartDefaults).optional().describe('其他預約默認開始時間方式(接續、同時)'), secondOrderStartClientChange: zod_1.z.boolean().optional().describe('是否允許客戶修改其他預約開始時間'), orderServiceAttachClientCheck: zod_1.z.boolean().optional().describe('是否顯示附加服務客戶確認'), orderServiceAttachClientNullOption: zod_1.z.boolean().optional().describe('客戶是否有不選擇附加服務的選項'), orderServiceAttachClientNullOptionPosition: zod_1.z.enum(appointmentConfigOrderServiceAttachClientNullOptionPositions).optional().describe('客戶是否有不選擇附加服務的選項位置'), orderServiceAttachClientMultipleSelection: zod_1.z.boolean().optional().describe('客戶是否可以多選附加服務'), enableUserAddress: zod_1.z.boolean().optional().describe('是否啟用預約地址'), orderSystemCommentTemplate: zod_1.z.string().optional().describe('預約訂單系統備註文字樣板'), chargeType: zod_1.z.enum(appointmentConfigChargeTypes).optional().describe('收款模式'), allowBatchOrder: zod_1.z.boolean().optional().describe('是否啟用批次預約'), batchOrderNotifyMode: zod_1.z.enum(appointmentConfigBatchOrderNotifyModes).optional().describe('批次預約通知模式'), // append fields notSpecifyImageLogicId: zod_1.z.string().uuid().optional().describe('不指定人員圖片ID'), notSpecifyUnitLogicIds: zod_1.z.array(zod_1.z.string()).optional().describe('不指定人員綁定ID'), }).describe('預約模組設定'); // 改成export一個 config 而不是class exports.AppointmentConfigResourceSchema = { // —— 基本欄位 resourceType: 'appointmentConfig', resourceName: '預約模組設定', resourceSettingSchema: appointmentConfigResourceSettingSchema, // —— 關聯 relationScope: 'shop', relationType: 'single', relationResources: [], // —— apply API path applySingleUpdateApiPath: '/:shopId/appointmentConfig', applyCreateApiPath: null, applyUpdateApiPath: null, applyDestroyApiPath: null, };