@wishcbg/bobcode
Version:
基於店家同步功能的需求,讓店家能夠在不同的店家之間同步各項功能設定,並且能夠檢視各項功能的異動情況。 規劃出一套店家設定即程式碼的機制,讓店家能夠以 config file (.sac) 來定義各項功能設定,並且能夠還原店家各項功能設定。 暫且稱這個機制為「Settings as Code」「店家設定即程式碼」。
42 lines (41 loc) • 2.49 kB
JavaScript
"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,
};