UNPKG

@wishcbg/bobcode

Version:

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

42 lines (41 loc) 2.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MemberLevelConfigResourceSchema = exports.memberLevelConfigResourceSettingSchema = void 0; const zod_1 = require("zod"); // enums 參考 config const validTimeUnits = ['forever', 'month']; const conditions = ['none', 'onceAmount', 'periodCount', 'periodAmount']; const sourceListValues = ['appointment', 'eCommerce', 'memberStore', 'saleRecord', 'externalTransaction']; const SourceListEnum = zod_1.z.enum(sourceListValues); exports.memberLevelConfigResourceSettingSchema = zod_1.z.object({ level: zod_1.z.number().int().describe('會員等級'), name: zod_1.z.string().describe('會員等級名稱'), validTimeUnit: zod_1.z.enum(validTimeUnits).describe('有效時間單位'), validTime: zod_1.z.number().int().optional().describe('此會員等級有效期限數值'), image: zod_1.z.string().optional().describe('會員卡面圖片網址(已棄用)'), color: zod_1.z.string().optional().describe('會員卡面文字顏色(已棄用)'), levelUpCondition: zod_1.z.enum(conditions).describe('升級至此會員等級條件'), levelUpPeriod: zod_1.z.number().int().optional().describe('升級期間條件期間長度(月)'), levelUpThreshold: zod_1.z.number().int().optional().describe('升級金額或次數條件門檻'), levelUpSources: zod_1.z.array(SourceListEnum).optional().describe('升級消費累積管道(可複選)'), levelRemainCondition: zod_1.z.enum(conditions).describe('此會員等級續等條件'), levelRemainPeriod: zod_1.z.number().int().optional().describe('續等期間條件期間長度(月)'), levelRemainThreshold: zod_1.z.number().int().optional().describe('續等金額或次數條件門檻'), levelRemainSources: zod_1.z.array(SourceListEnum).optional().describe('續等消費累積管道(可複選)'), }).describe('會員等級設置'); // 改成export一個 config 而不是class exports.MemberLevelConfigResourceSchema = { // —— 基本欄位 resourceType: 'memberLevelConfig', resourceName: '會員等級設置', resourceSettingSchema: exports.memberLevelConfigResourceSettingSchema, // —— 關聯 relationScope: 'shop', relationType: 'single', relationResources: [], // —— apply API path applySingleUpdateApiPath: '/:shopId/memberLevelConfig', applyCreateApiPath: null, applyUpdateApiPath: null, applyDestroyApiPath: null, };