@lemoncloud/ssocio-stacks-api 0.23.313

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.
@@ -0,0 +1,34 @@
1
+ /**
2
+ * `lib/types.ts`
3
+ * - contains only the hyper types.
4
+ * - `publish types` 할때, lemon-core 포함을 최소화하기 위한 조치!
5
+ *
6
+ *
7
+ * @author Steve <steve@lemoncloud.io>
8
+ * @date 2022-10-18 initial version
9
+ *
10
+ * @copyright (C) 2022 LemonCloud Co Ltd. - All Rights Reserved.
11
+ */
12
+ export * from './categories-types';
13
+ /**
14
+ * a node represent.
15
+ */
16
+ export interface GenericNode {
17
+ /** id of this node */
18
+ id?: string;
19
+ }
20
+ /**
21
+ * type: `ProxyAdaptor`
22
+ * - storage adaptor to support fetching the model from storage.
23
+ * - used to adapt w/ `backend-proxy`.
24
+ */
25
+ export interface ProxyAdaptor<T extends GenericNode> {
26
+ /** say hello of this adaptor */
27
+ hello?(): string;
28
+ /** get the model (or load from stocks) */
29
+ get(id: string): Promise<T>;
30
+ /** set the model (or save into stocks) */
31
+ set?(id: string, model: T): Promise<T>;
32
+ /** create new instance with initial data */
33
+ new?(model?: T): Promise<T>;
34
+ }
@@ -0,0 +1,524 @@
1
+ /**
2
+ * - model definitions per account data
3
+ * `backend-model.ts`
4
+ *
5
+ * @author Tim Hong <tim@lemoncloud.io>
6
+ * @date 2021-05-26 initial version
7
+ * @author Steve <steve@lemoncloud.io>
8
+ * @date 2022-03-04 refactoring for activity service.
9
+ *
10
+ * Copyright (C) 2020 LemonCloud Co Ltd. - All Rights Reserved.
11
+ */
12
+ import { CoreModel, NextIdentityAccess } from 'lemon-model';
13
+ import { CategoryNode } from '../lib/categories-types';
14
+ import { BillingType, DeviceType, DiscountType, GenderType, MonthType, PaymentType, ProdStereoType, ProgramStartType, RefundType, ServiceStatus, ComissionRate, PeriodInfo, DayOfTheWeekPolicy, BaseTimeType, FirmStereoType } from './backend-types';
15
+ /**
16
+ * type: model-type
17
+ * - use this type to make pkey per data.
18
+ */
19
+ export declare type ModelType = 'category' | 'program' | 'payment' | 'cancel' | 'display' | 'period' | 'time' | 'push' | 'bank' | 'operator' | 'firm' | 'test' | 'mock';
20
+ /**
21
+ * type: `Model`: common model
22
+ */
23
+ export declare type Model = CoreModel<ModelType>;
24
+ export interface Codable {
25
+ /**
26
+ * encoded string (internal-link)
27
+ * Must be unique in each Model
28
+ */
29
+ code?: string;
30
+ }
31
+ /**
32
+ * Type: `CategoryModel`
33
+ * - 카테고리 모델
34
+ */
35
+ export interface CategoryModel extends Model, CategoryNode {
36
+ /** 상위 부모의 ID */
37
+ parent?: string;
38
+ /** 상위 부모의 Name */
39
+ parentName?: string;
40
+ /** 카테고리 이름 */
41
+ name?: string;
42
+ /** 카테고리 (메뉴) 아이콘 이미지 */
43
+ icon?: string;
44
+ /** 카테고리 (메뉴) 이미지 */
45
+ images?: string[];
46
+ /** 카테고리 (메뉴) 페이지 설명 */
47
+ desc?: string;
48
+ /** 카테고리 (메뉴) 탭 메뉴 ex) ['키즈 프로그램', '여성 프로그램'] */
49
+ tapMenu?: string[];
50
+ /** 카테고리 보여주기 순서 */
51
+ order?: number;
52
+ /** hidden(숨김) flag */
53
+ hidden?: number;
54
+ }
55
+ /**
56
+ * Type: `ProdUniqueCode`
57
+ * - 상품 고유 코드 모델
58
+ * - 프로그램 카테고리와 시간 정보를 담음
59
+ */
60
+ export interface ProdUniqueCode {
61
+ /** 카테고리 ids */
62
+ categoryIds?: string[];
63
+ /** name of parent Category */
64
+ categoryNames?: string[];
65
+ /** path of parent Category */
66
+ categoryPaths?: string[];
67
+ /** 운영요일 (ex: 목,금,토) */
68
+ operateDayOfTheWeek?: string;
69
+ /** 운영 시작 시간 (HH-MM) */
70
+ operateStartTime?: string;
71
+ /** 운영 종료 시간 (HH-MM) */
72
+ operateEndTime?: string;
73
+ /** 프로그램 시작일 (YYYY-MM-DD) */
74
+ startDay?: string;
75
+ /** 프로그램 종료일 (YYYY-MM-DD) */
76
+ endDay?: string;
77
+ /** 1회 운영 시간 */
78
+ hoursPerClass?: number;
79
+ /** 반복 설정 */
80
+ periodic?: string;
81
+ /** 세분화 코드 (stereo: 세분 생성) */
82
+ segmentCodes?: string[];
83
+ }
84
+ /**
85
+ * Type : `ProgramModel`
86
+ * - 프로그램 등록 모델
87
+ */
88
+ export interface ProgramModel extends Model, ProdUniqueCode {
89
+ /** id: <auto-seq> */
90
+ id?: string;
91
+ /** stereo (단일, 세분) */
92
+ stereo?: ProdStereoType;
93
+ /** name of program */
94
+ name?: string;
95
+ /** 푸쉬 관리 이용 여부 (1: 사용, 0: 사용안함) */
96
+ usePushNotification?: number;
97
+ /** 수강인원 제한 (1: 제한 사용, 0: 사용안함) */
98
+ useNumOfPeopleLimit?: number;
99
+ /** 프로그램 수용 최소 인원 */
100
+ minNumOfPeople?: number;
101
+ /** 프로그램 수용 최대 인원 */
102
+ maxNumOfPeople?: number;
103
+ /** 성별 구분 */
104
+ gender?: GenderType;
105
+ /** 프로그램 참가 최소 연령 */
106
+ minAge?: number;
107
+ /** 프로그램 참가 최대 연령 */
108
+ maxAge?: number;
109
+ /** 안내사항 */
110
+ description?: string;
111
+ /** 옵션 상품 */
112
+ option?: string;
113
+ /** 이미지 사용 여부 */
114
+ useImage?: number;
115
+ /** 이미지 정보 */
116
+ images?: string[];
117
+ /** 시설 정보 사용 여부 */
118
+ useFacilityInfo?: number;
119
+ /** 시설 면적 (평) */
120
+ facilitySize?: number;
121
+ /** 시설 설명 */
122
+ facilityDesc?: string;
123
+ /** (optional) 요일 정책 (stereo = 단일 생성) */
124
+ dayOfTheWeekPolicy?: string[];
125
+ /** 자동 연장 사용 여부 */
126
+ useAutoExtend?: number;
127
+ /** 결제 방식등록 id */
128
+ paymentId?: string;
129
+ /** 결제 관리 모델 */
130
+ payment$?: PaymentModel;
131
+ /** 프로그램 취소 관리 id */
132
+ cancelId?: string;
133
+ /** 취소 관리 모델 */
134
+ cancel$?: CancelModel;
135
+ /** 프로그램 노출 관리 id */
136
+ displayId?: string;
137
+ /** 노출 관리 모델 */
138
+ display$?: DisplayModel;
139
+ /** 프로그램 기간 신청 관리 id */
140
+ periodId?: string;
141
+ /** 프로그램 기간 신청 관리 모델 */
142
+ period$?: PeriodEnrollModel;
143
+ /** 프로그램 시간 신청 관리 id */
144
+ timeId?: string;
145
+ /** 프로그램 시간 신청 관리 모델 */
146
+ time$?: TimeEnrollModel;
147
+ /** 푸쉬 관리 id */
148
+ pushId?: string;
149
+ /** 푸쉬 관리 모델 */
150
+ push$?: PushNotificationModel;
151
+ /** 업체/강사 관리 id */
152
+ operatorId?: string;
153
+ /** 업체/강사 관리 모델 */
154
+ operator$?: ProgramOperatorModel;
155
+ }
156
+ /**
157
+ * Type: `PaymentHead`
158
+ */
159
+ export interface PaymentHead {
160
+ /** auto sequence */
161
+ id?: string;
162
+ /** parent program model id */
163
+ programId?: string;
164
+ }
165
+ /**
166
+ * Type: `PaymentModel`
167
+ * - 프로그램 결제 관리 모델
168
+ * - 프로그램 생성 시 같이 생성! (단독 생성 x)
169
+ */
170
+ export interface PaymentModel extends PaymentHead {
171
+ /** 세대원 선택 여부 */
172
+ useTenant?: number;
173
+ /** 추가정책 */
174
+ addPolicies?: string[];
175
+ /** 결제방식 */
176
+ paymentMethod?: PaymentType;
177
+ /** 할인 종류 */
178
+ discountType?: DiscountType;
179
+ /** 청구 방식 */
180
+ billingMethod?: BillingType;
181
+ /** 해당 부가월 */
182
+ targetMonth?: MonthType;
183
+ }
184
+ /**
185
+ * Type: `PeriodEnrollHead`
186
+ */
187
+ export interface PeriodEnrollHead {
188
+ /** auto sequence */
189
+ id?: string;
190
+ /** id of parent */
191
+ programId?: string;
192
+ /** 월권 신청 사용 여부 (1: 사용함, 0: 사용안함) */
193
+ useMonthly?: number;
194
+ /** 일권 신청 사용 여부 (1: 사용함, 0: 사용안함) */
195
+ useDaily?: number;
196
+ }
197
+ /**
198
+ * Type: `PeriodEnrollModel`
199
+ * - 프로그램 기간 신청 관리 모델
200
+ */
201
+ export interface PeriodEnrollModel extends PeriodEnrollHead {
202
+ /** 월권 금액 (원) */
203
+ monthlyPrice?: number;
204
+ /** 월권 시작일자 타입 */
205
+ monthlyStartType?: ProgramStartType;
206
+ /**
207
+ * 월권 예약 가능 일자
208
+ * - 월권 시작 일자 타입이 오늘 기준일 경우.
209
+ * - 오늘 날짜 + 월권 예약 가능 일자까지 예약 가능하게 됨.
210
+ */
211
+ monthlyAvailableReserveDate?: number;
212
+ /** 월권 시작일자 정보
213
+ * - 월권 시작 일자 타입이 기간 설정일 경우.
214
+ */
215
+ monthlyStartDate?: PeriodInfo;
216
+ /** 월권 예약 기간 정보 */
217
+ monthlyReservePeriod?: PeriodInfo;
218
+ /** 우선 등록 여부 (1: 사용함, 0: 사용안함) */
219
+ useEarlyRegister?: number;
220
+ /** 우선 등록 시작 일자 */
221
+ earlyRegisterPeriod?: PeriodInfo;
222
+ /** 자동 연장 사용 여부 (1: 사용함, 0: 사용안함) */
223
+ useAutoExtension?: number;
224
+ /** 일권 금액 (원) */
225
+ dailyPrice?: number;
226
+ /** 일권 시작일자 타입 */
227
+ dailyStartType?: ProgramStartType;
228
+ /**
229
+ * 일권 예약 가능 일자
230
+ * - 일권 시작 일자 타입이 오늘 기준일 경우.
231
+ * - 오늘 날짜 + 일권 예약 가능 일자까지 예약 가능하게 됨.
232
+ */
233
+ dailyAvailableReserveDate?: number;
234
+ /** 일권 시작 일자 정보
235
+ * - 일권 시작일자 타입이 기간 설정일 경우.
236
+ */
237
+ dailyStartDate?: PeriodInfo;
238
+ /** 일권 예약 가능 범위 (일) */
239
+ availableReserveRange?: number;
240
+ /** 일권 예약 불가 범위 (일) */
241
+ inAvailableReserveRange?: number;
242
+ }
243
+ /**
244
+ * Type: `CancelHead`
245
+ */
246
+ export interface CancelHead {
247
+ /** auto sequence */
248
+ id?: string;
249
+ /** 취소 정책명 */
250
+ name?: string;
251
+ /** parent program model id */
252
+ programId?: string;
253
+ }
254
+ /**
255
+ * Type: `CancelModel`
256
+ * - 프로그램 취소 정책 관리 모델
257
+ * - 프로그램 생성 시 같이 생성! (단독 생성 x)
258
+ */
259
+ export interface CancelModel extends Model, CancelHead {
260
+ /** 취소 기간 사용 (허용) 여부 */
261
+ useCancellationPeriod?: number;
262
+ /** 취소 가능 기간*/
263
+ cancellationPeriod?: number;
264
+ /** 취소 정책 */
265
+ cancellationPolicy?: string;
266
+ /** 환불 정책 타입*/
267
+ refundPolicy?: RefundType;
268
+ /** 환불정책 -> 일할 계산시 운영 일수 */
269
+ operationDay?: number;
270
+ /** 환불정책 -> 횟수 계산시 전체 횟수 */
271
+ noOfOperation?: number;
272
+ /** 환불정책 -> 시간기준 수수료 계산시 시간(hour) */
273
+ untilHour?: number;
274
+ /** 환불정책 -> 날짜기준 수수료 계산시 시간(date) */
275
+ untilDate?: number;
276
+ /** 환불정책 -> 날짜기준 수수료 계산시 위약금 비율 */
277
+ eachPenaltyRate?: ComissionRate[];
278
+ /** 위약금 사용 여부 */
279
+ usePenalty?: number;
280
+ /** 위약금 비율 (%) */
281
+ penaltyRate?: number;
282
+ /** 폐강 기준 인원 */
283
+ minNumOfPeople?: number;
284
+ /** 취소 사유 수집 사용 여부*/
285
+ useCollectReason?: number;
286
+ /** 취소 사유 */
287
+ cancellationReason?: string[];
288
+ }
289
+ /**
290
+ * Type: `DisplayHead`
291
+ */
292
+ export interface DisplayHead {
293
+ /** auto-sequence */
294
+ id?: string;
295
+ /** 노출 상태 (1: 노출, 0: 노출안함 )*/
296
+ useDisplay?: number;
297
+ /** 서비스 상태 */
298
+ serviceStatus?: ServiceStatus;
299
+ /** parent program model id */
300
+ programId?: string;
301
+ }
302
+ /**
303
+ * Type: `DisplayModel`
304
+ * - 프로그램 노출 관리 모델
305
+ * - 프로그램 생성 시 같이 생성! (단독 생성 x)
306
+ */
307
+ export interface DisplayModel extends DisplayHead {
308
+ /** 기기 종류 */
309
+ device?: DeviceType;
310
+ /** 대분류 카테고리 */
311
+ mainCategory?: string;
312
+ /** 중분류 카테고리 */
313
+ middleCategory?: string;
314
+ /** 탭 메뉴 */
315
+ tapMenu?: string[];
316
+ }
317
+ /**
318
+ * Type: `TimeEnrollHead`
319
+ */
320
+ export interface TimeEnrollHead {
321
+ /** auto-sequence */
322
+ id?: string;
323
+ /** parent program model id */
324
+ programId?: string;
325
+ }
326
+ /**
327
+ * Type: `TimeEnrollModel`
328
+ * - 시간 신청 관리 모델
329
+ */
330
+ export interface TimeEnrollModel extends TimeEnrollHead {
331
+ /** 금액 */
332
+ price?: number;
333
+ /** 예약 가능 일자 타입 */
334
+ reserveType?: ProgramStartType;
335
+ /**
336
+ * 예약 가능 일자
337
+ * - 예약 가능 일자 타입이 오늘 기준(today)일 경우.
338
+ * - 오늘 날짜 + 예약 가능 일자까지 예약 가능하게 됨.
339
+ */
340
+ availableReserveDate?: number;
341
+ /** 예약 가능 기간 정보.
342
+ * - 예약 가능 일자 타입이 기간 설정(period)일 경우.
343
+ */
344
+ availableReservePeriod?: PeriodInfo;
345
+ /** 예약 가능 범위 기준 (시간 or 분) */
346
+ baseOfReserveAvailableRange?: BaseTimeType;
347
+ /** 예약 가능 범위 */
348
+ reserveAvailableRange?: number;
349
+ /** 시간 간격 기준 (시간 or 분) */
350
+ baseOfTimeInterval?: BaseTimeType;
351
+ /** 시간 간격 */
352
+ timeInterval?: number;
353
+ /** 예약 불가 범위 간격 기준 (시간 or 분) */
354
+ baseOfReserveInAvailableRange?: BaseTimeType;
355
+ /** 예약 불가 범위 (Today 기준) */
356
+ reserveInAvailableRange?: number;
357
+ /** 시간 제한 사용 여부 */
358
+ useTimeLimit?: number;
359
+ /** 시간 제한 (시간 범위) */
360
+ timeLimits?: PeriodInfo[];
361
+ /** 요일 정책 사용 여부 */
362
+ useDayOfTheWeekPolicy?: number;
363
+ /** 요일 정책 */
364
+ dayOfTheWeekPolicies?: DayOfTheWeekPolicy[];
365
+ }
366
+ /**
367
+ * Type: `PushNotificationHead`
368
+ */
369
+ export interface PushNotificationHead {
370
+ /** auto-sequence */
371
+ id?: string;
372
+ /** parent program model id */
373
+ programId?: string;
374
+ }
375
+ /**
376
+ * Type: `PushNotificationModel`
377
+ * - 푸쉬 관리 모델
378
+ */
379
+ export interface PushNotificationModel extends Model, PushNotificationHead {
380
+ /** 메시지 (푸쉬 텍스트) */
381
+ msg?: string;
382
+ /** 발송 일자 (YYMMDD) */
383
+ dateToSent?: string;
384
+ /** 발송 시간 (HHMM) */
385
+ timeToSent?: string;
386
+ /** 발송한 시각 */
387
+ sentAt?: number;
388
+ }
389
+ /**
390
+ * Type: `ProgramOperatorHead`
391
+ */
392
+ export interface ProgramOperatorHead {
393
+ /** auto-sequence */
394
+ id?: string;
395
+ /** 프로필 노출 여부 (1: 사용함, 0: 사용안함) */
396
+ useProfileDisplay?: number;
397
+ /** id of program model */
398
+ programId?: string;
399
+ }
400
+ /**
401
+ * Type: `ProgramOperatorModel`
402
+ * - 프로그램 업체/강사 관리 모델.
403
+ * - 프로그램 관리 및 담당에 대한 정보를 담음.
404
+ */
405
+ export interface ProgramOperatorModel extends Model, ProgramOperatorHead {
406
+ /** 프로그램 담당 협력업체 id */
407
+ firmId?: string;
408
+ /** 프로그램 담당 협력업체 이름 */
409
+ firmName?: string;
410
+ /** 프로그램 담당 실무자/강사 id */
411
+ managerId?: string;
412
+ /** 프로그램 담당 실무자/강사 이름 */
413
+ managerName?: string;
414
+ }
415
+ /**
416
+ * Type: `FirmModel`
417
+ * - 협력 업체 관리 모델
418
+ */
419
+ export interface FirmModel extends Model {
420
+ /** <auto-sequence> */
421
+ id?: string;
422
+ /** stereo type */
423
+ stereo?: FirmStereoType;
424
+ /** uniqueNo: 협력업체 고유 번호 */
425
+ uniqueNo?: string;
426
+ /** name: 업체 이름 */
427
+ name?: string;
428
+ /** type: 협력업체 유형 */
429
+ coopType?: string;
430
+ /** serviceSector: 서비스 분야 */
431
+ serviceSector?: string;
432
+ /** typeCode: 서비스 유형 코드 */
433
+ typeCode?: string;
434
+ /** uniqueTag: 식별 태그 */
435
+ uniqueTag?: string;
436
+ /** registerAt: 등록 일자 */
437
+ registerAt?: string;
438
+ /** endAt: 종료 일자 */
439
+ endAt?: string;
440
+ /** managerId: 책임자 id */
441
+ managerId?: string;
442
+ /** managerName: 책임자 이름 */
443
+ managerName?: string;
444
+ /** isValid: 협력업체 유효 상태 (1: 유효, 0: 종료) */
445
+ isValid?: number;
446
+ }
447
+ /**
448
+ * Bank model (은행 모델)
449
+ */
450
+ export interface BankModel extends Model, Codable {
451
+ /**
452
+ * auto sequence id
453
+ */
454
+ id?: string;
455
+ /**
456
+ * bank code issued by south korea 금융결제원 (금융결제원에서 부여한 은행코드)
457
+ * (ex. 산업은행: 002, 국민은행: 004, 우리은행: 020)
458
+ */
459
+ bankKrCode?: string;
460
+ /**
461
+ * bank name (은행 이름)
462
+ * (ex. 우리은행, 국민은행)
463
+ */
464
+ name?: string;
465
+ }
466
+ /**
467
+ * type: `TestHead`
468
+ * - common head of test-model.
469
+ */
470
+ export interface TestHead {
471
+ /** internal reference */
472
+ _idx?: number;
473
+ /** internal date(YYYY-MM-DD) */
474
+ _date?: string;
475
+ }
476
+ /**
477
+ * `test`: internal test model.
478
+ */
479
+ export interface TestModel extends Model, TestHead {
480
+ /** name of model */
481
+ name?: string;
482
+ /** test count */
483
+ test?: number;
484
+ /**
485
+ * inner Object.
486
+ */
487
+ readonly Model?: Model;
488
+ /**
489
+ * (view) Access Infor.
490
+ */
491
+ readonly $identity?: NextIdentityAccess;
492
+ }
493
+ /**
494
+ * `mock`: internal mock model.
495
+ * - provice mocks data
496
+ */
497
+ export interface MockModel extends Model {
498
+ /** name of this model */
499
+ name?: string;
500
+ /** json encoding all data */
501
+ meta?: string;
502
+ /** support any data-types */
503
+ [key: string]: any;
504
+ }
505
+ /**
506
+ * extract field names from models
507
+ * - only fields start with lowercase, or all upper.
508
+ */
509
+ export declare const filterFields: (fields: string[], base?: string[]) => string[];
510
+ export declare const $FIELD: {
511
+ category: string[];
512
+ program: string[];
513
+ payment: string[];
514
+ cancel: string[];
515
+ display: string[];
516
+ period: string[];
517
+ time: string[];
518
+ push: string[];
519
+ bank: string[];
520
+ operator: string[];
521
+ firm: string[];
522
+ test: string[];
523
+ mock: string[];
524
+ };