@trusted-solutions/sdit.models 0.66.0-alpha.1 → 0.66.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { Address, DayOfWeekTimePeriod, GalleryConfig, Operator, PointProvider } from '../models/store';
1
+ import { Address, DayOfWeekTimePeriod, DeliveryFeeConfig, GalleryConfig, Operator, PointProvider } from '../models/store';
2
2
  import { CustomerPointDetail, MultiLanguageText, OrderDiscount } from '../models';
3
3
  import { PaymentServiceProvider, ServeType } from '../enums';
4
4
  import { SOPublicMenu, SOPublicCategory, SOPublicProduct, SOPublicProductAttribute, SOPublicProductAttributeCategory, SOPaymentMethod, SOValidateCart, SOOrderState, SOOrder, SOEater, SOPublicDiscountRule, SOMemberCoupon } from '../models/online-ordering';
@@ -139,6 +139,13 @@ export interface SOGetStoreInfoResponse {
139
139
  * 0=沒有限制
140
140
  */
141
141
  storeDeliveryDistanceLimit: number;
142
+ /** 新版外送費規則;未設定時仍依舊版三個 storeDelivery 欄位。 */
143
+ deliveryFeeConfig?: DeliveryFeeConfig;
144
+ /**
145
+ * 是否可使用地址定位與距離計算。
146
+ * 此值由後端依門市合約權限衍生,前端不得自行用方案 ID 推導。
147
+ */
148
+ deliveryLocationEnabled: boolean;
142
149
  /**
143
150
  * 內用桌ID
144
151
  */
@@ -315,6 +322,25 @@ export interface SOValidateMutationRequest {
315
322
  isUsePoints?: boolean;
316
323
  /** 要套用的會員優惠券 ID */
317
324
  memberCouponId?: string;
325
+ /** 消費者填寫的結構化外送地址。 */
326
+ deliveryAddress?: Address;
327
+ /**
328
+ * PROMAX 定位流程由後端簽發的短效 quote。
329
+ * 不接受由瀏覽器自行傳入的距離作為計價依據。
330
+ */
331
+ deliveryLocationQuoteId?: string;
332
+ }
333
+ /** 請求後端建立 PROMAX 外送定位與距離 quote。 */
334
+ export interface SOCreateDeliveryLocationQuoteRequest {
335
+ storeId: string;
336
+ deliveryAddress: Address;
337
+ }
338
+ /** 後端簽發的短效配送 quote;座標與距離只供本次下單流程使用。 */
339
+ export interface SOCreateDeliveryLocationQuoteResponse {
340
+ quoteId: string;
341
+ deliveryAddressLonLat: [number, number];
342
+ distanceKm: number;
343
+ expiresAt: number;
318
344
  }
319
345
  /**
320
346
  * @throw `SOOrderError`
@@ -415,6 +441,11 @@ export interface SOSendOrderRequest {
415
441
  * 這是消費者收件位置,不應從店家設定推導;serveType === deliveryByStore 時建議送出。
416
442
  */
417
443
  deliveryAddressLonLat?: number[];
444
+ /** 下單前驗價使用的配送距離(公里)。 */
445
+ /** @deprecated 改用 deliveryLocationQuoteId,後端不再信任瀏覽器傳入的距離。 */
446
+ deliveryDistanceKm?: number;
447
+ /** PROMAX 定位流程由後端簽發的短效配送 quote。 */
448
+ deliveryLocationQuoteId?: string;
418
449
  /** 內用桌ID serveType === dineIn 時有效 */
419
450
  tableId?: string;
420
451
  /** 折抵點數 */
@@ -0,0 +1,16 @@
1
+ import { DeliveryProvider } from '../../models/delivery';
2
+ export interface GetStoreDeliveryProviderRequest {
3
+ storeId: string;
4
+ provider: DeliveryProvider;
5
+ }
6
+ /** 僅供受權限的 Admin 設定第三方物流門市資料。 */
7
+ export interface UpsertStoreDeliveryProviderRequest {
8
+ storeId: string;
9
+ provider: DeliveryProvider;
10
+ providerStoreId: string;
11
+ enabled: boolean;
12
+ credentials: {
13
+ clientId: string;
14
+ clientSecret: string;
15
+ };
16
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../../projects/sdit-model-lib/src/lambda/request/delivery.ts"],"names":[],"mappings":""}
@@ -19,3 +19,4 @@ export * from './real-time-switch';
19
19
  export * from './custom-analysis-group';
20
20
  export * from './import-data';
21
21
  export * from './item-availability';
22
+ export * from './delivery';
@@ -22,4 +22,5 @@ tslib_1.__exportStar(require("./real-time-switch"), exports);
22
22
  tslib_1.__exportStar(require("./custom-analysis-group"), exports);
23
23
  tslib_1.__exportStar(require("./import-data"), exports);
24
24
  tslib_1.__exportStar(require("./item-availability"), exports);
25
+ tslib_1.__exportStar(require("./delivery"), exports);
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/sdit-model-lib/src/lambda/request/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,oDAA0B;AAC1B,iDAAuB;AACvB,oDAA0B;AAC1B,kDAAwB;AACxB,qDAA2B;AAC3B,mDAAyB;AACzB,kDAAwB;AACxB,qDAA2B;AAC3B,4DAAkC;AAClC,yDAA+B;AAC/B,oDAA0B;AAC1B,oDAA0B;AAC1B,oDAA0B;AAC1B,kDAAwB;AACxB,6DAAmC;AACnC,kEAAwC;AACxC,wDAA8B;AAC9B,8DAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/sdit-model-lib/src/lambda/request/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,oDAA0B;AAC1B,iDAAuB;AACvB,oDAA0B;AAC1B,kDAAwB;AACxB,qDAA2B;AAC3B,mDAAyB;AACzB,kDAAwB;AACxB,qDAA2B;AAC3B,4DAAkC;AAClC,yDAA+B;AAC/B,oDAA0B;AAC1B,oDAA0B;AAC1B,oDAA0B;AAC1B,kDAAwB;AACxB,6DAAmC;AACnC,kEAAwC;AACxC,wDAA8B;AAC9B,8DAAoC;AACpC,qDAA2B"}
@@ -0,0 +1,7 @@
1
+ import { StoreDeliveryProvider } from '../../models/delivery';
2
+ export interface GetStoreDeliveryProviderResponse {
3
+ item?: StoreDeliveryProvider;
4
+ }
5
+ export interface UpsertStoreDeliveryProviderResponse {
6
+ item: StoreDeliveryProvider;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../../projects/sdit-model-lib/src/lambda/response/delivery.ts"],"names":[],"mappings":""}
@@ -16,3 +16,4 @@ export * from './closing';
16
16
  export * from './chain';
17
17
  export * from './custom-analysis-group';
18
18
  export * from './item-availability';
19
+ export * from './delivery';
@@ -19,4 +19,5 @@ tslib_1.__exportStar(require("./closing"), exports);
19
19
  tslib_1.__exportStar(require("./chain"), exports);
20
20
  tslib_1.__exportStar(require("./custom-analysis-group"), exports);
21
21
  tslib_1.__exportStar(require("./item-availability"), exports);
22
+ tslib_1.__exportStar(require("./delivery"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/sdit-model-lib/src/lambda/response/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,oDAA0B;AAC1B,iDAAuB;AACvB,oDAA0B;AAC1B,kDAAwB;AACxB,qDAA2B;AAC3B,mDAAyB;AACzB,kDAAwB;AACxB,qDAA2B;AAC3B,4DAAkC;AAClC,oDAA0B;AAC1B,oDAA0B;AAC1B,oDAA0B;AAC1B,kDAAwB;AACxB,kEAAwC;AACxC,8DAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/sdit-model-lib/src/lambda/response/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,oDAA0B;AAC1B,iDAAuB;AACvB,oDAA0B;AAC1B,kDAAwB;AACxB,qDAA2B;AAC3B,mDAAyB;AACzB,kDAAwB;AACxB,qDAA2B;AAC3B,4DAAkC;AAClC,oDAA0B;AAC1B,oDAA0B;AAC1B,oDAA0B;AAC1B,kDAAwB;AACxB,kEAAwC;AACxC,8DAAoC;AACpC,qDAA2B"}
@@ -25,11 +25,31 @@ export interface DeliveryTaskProviderData {
25
25
  export declare enum DeliveryProvider {
26
26
  METE = "METE"
27
27
  }
28
+ /**
29
+ * 儲存在 TS-SDIT-DataTable 的 StoreDeliveryProvider:* 項目。
30
+ * credentials 依產品決策以明文保存;此模型只能由專用的管理 Lambda 讀寫。
31
+ */
32
+ export interface StoreDeliveryProvider {
33
+ storeId: string;
34
+ provider: DeliveryProvider;
35
+ providerStoreId: string;
36
+ enabled: boolean;
37
+ credentials: {
38
+ clientId: string;
39
+ clientSecret: string;
40
+ };
41
+ schemaVersion: 1;
42
+ createdBy?: string;
43
+ createdAt?: number;
44
+ updatedAt?: number;
45
+ }
28
46
  /** POS/backend 使用的標準化第三方配送任務資料。 */
29
47
  export interface DeliveryTask {
30
48
  provider: DeliveryProvider;
31
49
  /** 我們給第三方的訂單 ID;目前 METE 使用 POS orderNo。 */
32
50
  clientOrderId: string;
51
+ /** 店家、司機與前端用來顯示及核對的配送編號。 */
52
+ deliveryReferenceOrderId: string;
33
53
  /** 第三方平台自己的配送單號。 */
34
54
  providerOrderId?: string;
35
55
  normalizedStatus?: DeliveryTaskStatus;
@@ -104,6 +104,8 @@ export interface SOCart {
104
104
  export interface SODeliveryTask {
105
105
  /** 外送服務商,目前為 METE */
106
106
  provider: DeliveryProvider;
107
+ /** 店家、司機與前端用來顯示及核對的配送編號 */
108
+ deliveryReferenceOrderId: string;
107
109
  /** 後端標準化後的外送狀態 */
108
110
  normalizedStatus?: DeliveryTaskStatus;
109
111
  /** 配送狀態發生時間,timestamp ms */
@@ -1 +1 @@
1
- {"version":3,"file":"online-ordering.js","sourceRoot":"","sources":["../../../projects/sdit-model-lib/src/models/online-ordering.ts"],"names":[],"mappings":";;;AAiBA,IAAY,gBAmBX;AAnBD,WAAY,gBAAgB;IAC1B,YAAY;IACZ,qDAAiC,CAAA;IACjC,eAAe;IACf,iEAA6C,CAAA;IAC7C,WAAW;IACX,+CAA2B,CAAA;IAC3B,aAAa;IACb,mDAA+B,CAAA;IAC/B,YAAY;IACZ,uDAAmC,CAAA;IACnC,gBAAgB;IAChB,uDAAmC,CAAA;IACnC,YAAY;IACZ,6DAAyC,CAAA;IACzC,YAAY;IACZ,2DAAuC,CAAA;IACvC,cAAc;IACd,2DAAuC,CAAA;AACzC,CAAC,EAnBW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAmB3B;AAoED,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,iCAAe,CAAA;IACf,mCAAiB,CAAA;AACnB,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB;AA8JD,IAAY,+BAGX;AAHD,WAAY,+BAA+B;IACzC,sDAAmB,CAAA;IACnB,kEAA+B,CAAA;AACjC,CAAC,EAHW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAG1C;AAuCD,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,qCAAqB,CAAA;AACvB,CAAC,EANW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAMvB"}
1
+ {"version":3,"file":"online-ordering.js","sourceRoot":"","sources":["../../../projects/sdit-model-lib/src/models/online-ordering.ts"],"names":[],"mappings":";;;AAiBA,IAAY,gBAmBX;AAnBD,WAAY,gBAAgB;IAC1B,YAAY;IACZ,qDAAiC,CAAA;IACjC,eAAe;IACf,iEAA6C,CAAA;IAC7C,WAAW;IACX,+CAA2B,CAAA;IAC3B,aAAa;IACb,mDAA+B,CAAA;IAC/B,YAAY;IACZ,uDAAmC,CAAA;IACnC,gBAAgB;IAChB,uDAAmC,CAAA;IACnC,YAAY;IACZ,6DAAyC,CAAA;IACzC,YAAY;IACZ,2DAAuC,CAAA;IACvC,cAAc;IACd,2DAAuC,CAAA;AACzC,CAAC,EAnBW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAmB3B;AAoED,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,iCAAe,CAAA;IACf,mCAAiB,CAAA;AACnB,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB;AAgKD,IAAY,+BAGX;AAHD,WAAY,+BAA+B;IACzC,sDAAmB,CAAA;IACnB,kEAA+B,CAAA;AACjC,CAAC,EAHW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAG1C;AAuCD,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,qCAAqB,CAAA;AACvB,CAAC,EANW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAMvB"}
package/models/store.d.ts CHANGED
@@ -223,6 +223,11 @@ export interface Store {
223
223
  onlineStoreDeliveryFreeThresholdAmount?: number;
224
224
  /** 最大外送距離(km) */
225
225
  onlineStoreDeliveryDistanceLimit?: number;
226
+ /**
227
+ * 外送費設定。新欄位優先於舊版的 onlineStoreDelivery* 欄位;
228
+ * 舊欄位會持續保留,以相容尚未進入外送設定頁的門市。
229
+ */
230
+ deliveryFeeConfig?: DeliveryFeeConfig;
226
231
  /** LINE LIFF ID */
227
232
  onlineLiffId?: string;
228
233
  /** Cognito user pool 登入的 OIDC provider */
@@ -326,6 +331,32 @@ export interface Address {
326
331
  zipCode?: number;
327
332
  address?: string;
328
333
  note?: string;
334
+ /** 地址座標,格式為 [longitude, latitude]。 */
335
+ lonLat?: [number, number];
336
+ }
337
+ export declare type DeliveryFeeMode = 'fixed' | 'tiered';
338
+ /** 依直線配送距離的計費級距;upTo 為此級距的上限(公里)。 */
339
+ export interface DeliveryDistanceTier {
340
+ upTo: number;
341
+ fee: number;
342
+ }
343
+ /** 訂單滿額之外送費折抵。discount 為 FREE 時代表免外送費。 */
344
+ export interface DeliveryAmountTier {
345
+ amount: number;
346
+ discount: number | 'FREE';
347
+ }
348
+ export interface DeliveryFeeConfig {
349
+ /** 取件地址來源:店家基本資料或線上點餐地址。 */
350
+ origin: 'store' | 'online';
351
+ /** 超過此距離(公里)即不提供外送。 */
352
+ maxDistanceKm: number;
353
+ mode: DeliveryFeeMode;
354
+ /** mode 為 fixed 時使用的固定外送費。 */
355
+ fee?: number;
356
+ /** mode 為 tiered 時使用的距離級距,必須依 upTo 遞增。 */
357
+ distanceTiers?: DeliveryDistanceTier[];
358
+ /** 依訂單商品小計(折扣後)折抵外送費的級距。 */
359
+ amountTiers?: DeliveryAmountTier[];
329
360
  }
330
361
  export interface DayOfWeekTimePeriod {
331
362
  /** 每週星期幾 */
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../projects/sdit-model-lib/src/models/store.ts"],"names":[],"mappings":";;;AAEA,oCAAkJ;AA+SlJ,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,kDAAiC,CAAA;AACnC,CAAC,EAHW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAGxB"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../projects/sdit-model-lib/src/models/store.ts"],"names":[],"mappings":";;;AAEA,oCAAkJ;AAoTlJ,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,kDAAiC,CAAA;AACnC,CAAC,EAHW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAGxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trusted-solutions/sdit.models",
3
- "version": "0.66.0-alpha.1",
3
+ "version": "0.66.0-alpha.3",
4
4
  "description": "TODO: Give a short introduction of your project. Let this section explain the objectives or the motivation behind this project.",
5
5
  "main": "index.js",
6
6
  "scripts": {