@wishcbg/bobcode
Version:
基於店家同步功能的需求,讓店家能夠在不同的店家之間同步各項功能設定,並且能夠檢視各項功能的異動情況。 規劃出一套店家設定即程式碼的機制,讓店家能夠以 config file (.sac) 來定義各項功能設定,並且能夠還原店家各項功能設定。 暫且稱這個機制為「Settings as Code」「店家設定即程式碼」。
81 lines (80 loc) • 6.58 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinePushConfigResourceSchema = exports.linePushConfigResourceSettingSchema = void 0;
const zod_1 = require("zod");
const couponSettingSchema = zod_1.z.object({
couponId: zod_1.z.string().optional().describe('票券ID'),
notify: zod_1.z.boolean().optional().describe('是否啟用通知'),
}).optional().describe('票券設定');
const couponRecordAdvancedSettingSchema = zod_1.z.object({
defaultCouponSetting: zod_1.z.object({
notify: zod_1.z.boolean().optional().describe('是否啟用通知'),
}).optional().describe('預設票券設定'),
couponSettings: zod_1.z.array(couponSettingSchema).optional().describe('票券設定'),
});
exports.linePushConfigResourceSettingSchema = zod_1.z.object({
appointmentOpen: zod_1.z.boolean().default(true).describe('是否啟用預約建立通知'),
appointmentChangeTime: zod_1.z.boolean().default(true).describe('是否啟用預約更改時間通知'),
appointmentCancel: zod_1.z.boolean().default(true).describe('是否啟用預約取消通知'),
appointmentTomorrow: zod_1.z.boolean().default(true).describe('是否啟用預約提醒(不僅限明日通知)'),
appointmentEnd: zod_1.z.boolean().default(true).describe('是否啟用預約結束提醒'),
appointmentDepositRefund: zod_1.z.boolean().default(true).describe('是否啟用預約訂金退款通知'),
walletDeposit: zod_1.z.boolean().default(true).describe('是否啟用儲值金儲值通知'),
walletUse: zod_1.z.boolean().default(true).describe('是否啟用儲值金使用通知'),
classTicketOpen: zod_1.z.boolean().default(true).describe('是否啟用堂票建立通知'),
classTicketUse: zod_1.z.boolean().default(true).describe('是否啟用堂票使用通知'),
cancelClassTicket: zod_1.z.boolean().default(true).describe('是否啟用堂票取消通知'),
cancelClassTicketUse: zod_1.z.boolean().default(true).describe('是否啟用堂票取消使用通知'),
phoneVerifyHelp: zod_1.z.boolean().default(true).describe('是否啟用手機驗證協助通知(已棄用)'),
allianceActivityAddQualification: zod_1.z.boolean().default(true).describe('是否啟用聯盟行銷資格通知(已棄用)'),
couponRecordOpen: zod_1.z.boolean().default(true).describe('是否啟用票券建立通知'),
couponRecordExpireNotification: zod_1.z.boolean().default(true).describe('是否啟用票券到期通知'),
shopCashbackExpirationNotify: zod_1.z.boolean().default(true).describe('是否啟用回饋金到期通知'),
shopCashbackAddPoint: zod_1.z.boolean().default(true).describe('是否啟用回饋金增加通知'),
shopCashbackUsePoint: zod_1.z.boolean().default(true).describe('是否啟用回饋金使用通知'),
shopCashbackCancelPoint: zod_1.z.boolean().default(true).describe('是否啟用回饋金取消通知'),
classTicketExpireNotification: zod_1.z.boolean().default(true).describe('是否啟用堂票到期通知'),
shopPointExpirationNotify: zod_1.z.boolean().default(true).describe('是否啟用點數到期通知'),
shopPointAddPoint: zod_1.z.boolean().default(true).describe('是否啟用點數增加通知'),
shopPointUsePoint: zod_1.z.boolean().default(true).describe('是否啟用點數使用通知'),
shopPointCancelPoint: zod_1.z.boolean().default(true).describe('是否啟用店家點數取消通知'),
memberLevelUp: zod_1.z.boolean().default(true).describe('是否啟用會員升等通知'),
memberLevelDown: zod_1.z.boolean().default(false).describe('是否啟用會員降等通知'),
memberLevelRemain: zod_1.z.boolean().default(true).describe('是否啟用會員續等通知'),
memberLevelExpire: zod_1.z.boolean().default(true).describe('是否啟用會員等級到期通知'),
memberSuccessReferral: zod_1.z.boolean().default(true).describe('是否啟用會員成功推薦通知'),
punchCardOpen: zod_1.z.boolean().default(true).describe('是否啟用次卡新增/作廢訊息通知'),
punchCardUse: zod_1.z.boolean().default(true).describe('是否啟用次卡使用/補發訊息通知'),
punchCardExpireNotification: zod_1.z.boolean().default(true).describe('是否啟用次卡到期訊息通知'),
pointCardOpen: zod_1.z.boolean().default(true).describe('是否啟用點數卡新增/作廢訊息通知'),
pointCardUse: zod_1.z.boolean().default(true).describe('是否啟用點數卡使用/補發訊息通知'),
pointCardExpireNotification: zod_1.z.boolean().default(true).describe('是否啟用點數卡到期訊息通知'),
periodicBenefitRecordOpen: zod_1.z.boolean().default(true).describe('是否啟用會員權益紀錄新增推播'),
periodicBenefitRecordPause: zod_1.z.boolean().default(true).describe('是否啟用會員權益紀錄暫停推播'),
periodicBenefitRecordTerminate: zod_1.z.boolean().default(true).describe('是否啟用會員權益紀錄終止推播'),
bindLineVisibleNotify: zod_1.z.boolean().default(true).describe('完成綁定後是否於群組傳送會員姓名與電話'),
couponRecordOpenAdvancedSetting: couponRecordAdvancedSettingSchema.describe('票券建立進階設定通知'),
couponRecordExpireNotificationAdvancedSetting: couponRecordAdvancedSettingSchema.describe('票券到期進階設定通知'),
courseOrderConfirm: zod_1.z.boolean().default(true).describe('是否啟用課程報名成功'),
courseOrderCancel: zod_1.z.boolean().default(true).describe('是否啟用課程報名取消'),
courseOrderChange: zod_1.z.boolean().default(true).describe('是否啟用課程報名資訊變更'),
courseSessionCancel: zod_1.z.boolean().default(true).describe('是否啟用課程報名停課'),
courseOrderRefundSuccess: zod_1.z.boolean().default(true).describe('是否啟用課程報名退款成功'),
courseOrderRefundFail: zod_1.z.boolean().default(true).describe('是否啟用課程報名退款失敗'),
}).describe('LINE訊息通知設定');
// 改成export一個 config 而不是class
exports.LinePushConfigResourceSchema = {
// —— 基本欄位
resourceType: 'linePushConfig',
resourceName: 'LINE訊息通知設定',
resourceSettingSchema: exports.linePushConfigResourceSettingSchema,
// —— 關聯
relationScope: 'shop',
relationType: 'single',
relationResources: [],
// —— apply API path
applySingleUpdateApiPath: '/:shopId/linePushConfig',
applyCreateApiPath: null,
applyUpdateApiPath: null,
applyDestroyApiPath: null,
};