tango-api-schema 2.4.1 → 2.4.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.
package/index.js CHANGED
@@ -107,6 +107,16 @@ import templateLogSchema from "./schema/templateLog.model.js";
107
107
  import eyeTestConfigurationModel from "./schema/eyeTestConfiguration.model.js";
108
108
  import copilotMachineConfigModel from "./schema/copilotMachineConfig.model.js";
109
109
 
110
+ import planoDuplicateModel from './schema/planogramDuplicate.model.js'
111
+ import storeLayoutDuplicateModel from './schema/storeLayoutDuplicate.model.js'
112
+ import storeFixtureDuplicateModel from './schema/storeFixtureDuplicate.model.js'
113
+ import fixtureConfigDuplicateModel from "./schema/fixtureConfigDuplicate.model.js";
114
+ import fixtureLibraryDuplicateModel from "./schema/fixtureLibraryDuplicate.model.js";
115
+ import fixtureShelfDuplicateModel from "./schema/fixtureShelfDuplicate.model.js";
116
+ import planoMappingDuplicateModel from "./schema/planoMappingDuplicate.model.js";
117
+ import planoVmDetailDuplicateModel from "./schema/planoVmDetailDuplicate.model.js";
118
+ import planoProductDetailDuplicateModel from "./schema/planoProductDetailDuplicate.model.js";
119
+
110
120
 
111
121
  export default {
112
122
  leadModel,
@@ -214,5 +224,14 @@ export default {
214
224
  runAIFeaturesModel,
215
225
  templateLogSchema,
216
226
  eyeTestConfigurationModel,
217
- copilotMachineConfigModel
227
+ copilotMachineConfigModel,
228
+ planoDuplicateModel,
229
+ storeLayoutDuplicateModel,
230
+ storeFixtureDuplicateModel,
231
+ fixtureConfigDuplicateModel,
232
+ fixtureLibraryDuplicateModel,
233
+ fixtureShelfDuplicateModel,
234
+ planoMappingDuplicateModel,
235
+ planoVmDetailDuplicateModel,
236
+ planoProductDetailDuplicateModel,
218
237
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tango-api-schema",
3
- "version": "2.4.1",
3
+ "version": "2.4.3",
4
4
  "description": "tangoEye model schema",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -131,7 +131,7 @@ const checklistconfigSchema = new mongoose.Schema({
131
131
  checkListType:{
132
132
  type:String,
133
133
  default:"custom",
134
- enum: ["storeopenandclose","mobileusagedetection","uniformdetection","custom","customerunattended","staffleftinthemiddle",'eyetest', 'remoteoptometrist', 'storehygienemonitoring','queuealert','cleaning','scrum','suspiciousactivity','boxalert','suspiciousfootfall','drinking','bagdetection','inventorycount','carsattended','numberplateinfo','vehicle_check_in','unauthorisedentry','backroommonitoring','outsidebusinesshoursqueuetracking']
134
+ enum: ["storeopenandclose","mobileusagedetection","uniformdetection","custom","customerunattended","staffleftinthemiddle",'eyetest', 'remoteoptometrist', 'storehygienemonitoring','queuealert','cleaning','scrum','suspiciousactivity','boxalert','suspiciousfootfall','drinking','bagdetection','inventorycount','carsattended','numberplateinfo','vehicle_check_in','unauthorisedentry','backroommonitoring','outsidebusinesshoursqueuetracking','halfshutter']
135
135
  },
136
136
  createdAt: {
137
137
  type: Date,
@@ -209,7 +209,7 @@ const checklistconfigSchema = new mongoose.Schema({
209
209
  users:{
210
210
  type:Array
211
211
  },
212
- },
212
+ },
213
213
  alertSendTo: {
214
214
  mobile: {
215
215
  type:Array
@@ -288,6 +288,97 @@ const checklistconfigSchema = new mongoose.Schema({
288
288
  type:String
289
289
  },
290
290
  },
291
+ halfshutter:{
292
+ schedule:{
293
+ afterOpenTime:{
294
+ type:Number
295
+ },
296
+ beforeCloseTime:{
297
+ type:Number
298
+ },
299
+ },
300
+ },
301
+ alertConfig: {
302
+ allowBuffer:{
303
+ enabled:{
304
+ type:Boolean,
305
+ default:false
306
+ },
307
+ afterOpenTime:{
308
+ type:Number
309
+ },
310
+ beforeCloseTime:{
311
+ type:Number
312
+ },
313
+ },
314
+ alertSendTo: {
315
+ enabled:{
316
+ type:Boolean,
317
+ default:false
318
+ },
319
+ syncMobileWeb:{
320
+ type:Boolean,
321
+ default:false
322
+ },
323
+ mobile:{
324
+ type:Array
325
+ },
326
+ web:{
327
+ type:Array
328
+ },
329
+ },
330
+ },
331
+ autoTaskConfig:{
332
+ enabled:{
333
+ type:Boolean,
334
+ default:false
335
+ },
336
+ approver:{
337
+ type:Array,
338
+ default:[]
339
+ },
340
+ },
341
+ exportConfig:{
342
+ enabled:{
343
+ type:Boolean,
344
+ default:false
345
+ },
346
+ format:{
347
+ type:Array,
348
+ default:[]
349
+ },
350
+ },
351
+ advancedConfig:{
352
+ dataProcessing:{
353
+ live:{
354
+ type:Boolean,
355
+ default:false
356
+ },
357
+ daily:{
358
+ type:Boolean,
359
+ default:false
360
+ },
361
+ },
362
+ detectedStatus:{
363
+ enabled:{
364
+ type:Boolean,
365
+ default:false
366
+ },
367
+ detections:{
368
+ type:Array,
369
+ default:[]
370
+ },
371
+ },
372
+ auditConfig:{
373
+ enabled:{
374
+ type:Boolean,
375
+ default:false
376
+ },
377
+ inputSourceFile:{
378
+ type:String
379
+ },
380
+ },
381
+ },
291
382
  },
292
383
  rawVideoUpload: {
293
384
  type: Boolean,
@@ -0,0 +1,223 @@
1
+ import mongoose from 'mongoose';
2
+
3
+ const fixtureConfigSchema = new mongoose.Schema(
4
+ {
5
+ clientId: {
6
+ type: String,
7
+ required: true,
8
+ },
9
+ fixtureCategory: {
10
+ type: String,
11
+ },
12
+ fixtureType: {
13
+ type: String,
14
+ enum: ['wall', 'floor'],
15
+ },
16
+ fixtureName: {
17
+ type: String,
18
+ required: true,
19
+ },
20
+ description: {
21
+ type: String,
22
+ },
23
+ fixtureLength: {
24
+ value: {
25
+ type: Number,
26
+ default: 0,
27
+ },
28
+ unit: {
29
+ type: String,
30
+ default: '',
31
+ },
32
+ },
33
+ fixtureWidth: {
34
+ value: {
35
+ type: Number,
36
+ default: 0,
37
+ },
38
+ unit: {
39
+ type: String,
40
+ default: '',
41
+ },
42
+ },
43
+ fixtureStaticLength: {
44
+ value: {
45
+ type: Number,
46
+ default: 0,
47
+ },
48
+ unit: {
49
+ type: String,
50
+ default: '',
51
+ },
52
+ },
53
+ fixtureStaticWidth: {
54
+ value: {
55
+ type: Number,
56
+ default: 0,
57
+ },
58
+ unit: {
59
+ type: String,
60
+ default: '',
61
+ },
62
+ },
63
+ shelfConfig: [{
64
+ shelfNumber: {
65
+ type: Number,
66
+ required: true,
67
+ },
68
+ shelfType: {
69
+ type: String,
70
+ enum: ['shelf', 'tray'],
71
+ },
72
+ productPerShelf: {
73
+ type: Number,
74
+ default: 0,
75
+ },
76
+ trayRows: {
77
+ type: Number,
78
+ default: 0,
79
+ },
80
+ label: {
81
+ type: String,
82
+ default: '',
83
+ },
84
+ productBrandName: {
85
+ type: Array,
86
+ },
87
+ productSubBrandName: {
88
+ type: Array,
89
+ },
90
+ productCategory: {
91
+ type: Array
92
+ },
93
+ productSubCategory: {
94
+ type: Array
95
+ },
96
+ zone: {
97
+ type: String,
98
+ },
99
+ }],
100
+ vmConfig: [
101
+ {
102
+ vmId: {
103
+ type: mongoose.Types.ObjectId,
104
+ },
105
+ startYPosition: {
106
+ type: Number,
107
+ },
108
+ endYPosition: {
109
+ type: Number,
110
+ },
111
+ xZone: {
112
+ type: String,
113
+ },
114
+ yZone: {
115
+ type: String,
116
+ },
117
+ position: {
118
+ type: String,
119
+ },
120
+ },
121
+ ],
122
+ header: {
123
+ height: {
124
+ value: {
125
+ type: Number,
126
+ default: 0,
127
+ },
128
+ unit: {
129
+ type: String,
130
+ default: '',
131
+ },
132
+ },
133
+ label: {
134
+ type: String,
135
+ },
136
+ isEnabled: {
137
+ type: Boolean,
138
+ default: true,
139
+ },
140
+ },
141
+ footer: {
142
+ height: {
143
+ value: {
144
+ type: Number,
145
+ default: 0,
146
+ },
147
+ unit: {
148
+ type: String,
149
+ default: '',
150
+ },
151
+ },
152
+ label: {
153
+ type: String,
154
+ },
155
+ isEnabled: {
156
+ type: Boolean,
157
+ default: true,
158
+ },
159
+ },
160
+ isBodyEnabled: {
161
+ type: Boolean,
162
+ default: true,
163
+ },
164
+ productResolutionLevel: {
165
+ type: String,
166
+ enum: ['L1', 'L2', 'L3', 'L4'],
167
+ },
168
+ fixtureLibraryId: {
169
+ type: mongoose.Types.ObjectId,
170
+ required: true,
171
+ index: true
172
+ },
173
+ fixtureCapacity: {
174
+ type: Number,
175
+ default: 0,
176
+ },
177
+ productBrandName: {
178
+ type: Array,
179
+ },
180
+ productCategory: {
181
+ type: Array
182
+ },
183
+ productSubCategory: {
184
+ type: Array
185
+ },
186
+ status: {
187
+ type: String,
188
+ enum: ['draft', 'complete'],
189
+ default: 'draft',
190
+ },
191
+ crestMapKey: {
192
+ type: String,
193
+ },
194
+ templateIndex: {
195
+ type: Number,
196
+ default: 1,
197
+ },
198
+ templateType: {
199
+ type: String,
200
+ enum: ['master', 'sub'],
201
+ default: 'sub',
202
+ index: true
203
+ },
204
+ masterTemplateId: {
205
+ type: mongoose.Types.ObjectId,
206
+ index: true
207
+ },
208
+ templateGroupName: {
209
+ type: String,
210
+ index: true
211
+ },
212
+ isEdited: {
213
+ type: Boolean,
214
+ }
215
+ },
216
+ {
217
+ strict: true,
218
+ versionKey: false,
219
+ timestamps: true,
220
+ },
221
+ );
222
+
223
+ export default mongoose.model('fixtureConfigDuplicate', fixtureConfigSchema);
@@ -0,0 +1,168 @@
1
+ import mongoose from 'mongoose';
2
+
3
+ const fixtureLibrarySchema = new mongoose.Schema(
4
+ {
5
+ clientId: {
6
+ type: String,
7
+ required: true,
8
+ },
9
+ fixtureCategory: {
10
+ type: String,
11
+ },
12
+ fixtureType: {
13
+ type: String,
14
+ enum: ['wall', 'floor'],
15
+ },
16
+ fixtureLength: {
17
+ value: {
18
+ type: Number,
19
+ default: 0,
20
+ },
21
+ unit: {
22
+ type: String,
23
+ default: 'ft',
24
+ },
25
+ },
26
+ fixtureWidth: {
27
+ value: {
28
+ type: Number,
29
+ default: 0,
30
+ },
31
+ unit: {
32
+ type: String,
33
+ default: 'ft',
34
+ },
35
+ },
36
+ fixtureStaticLength: {
37
+ value: {
38
+ type: Number,
39
+ default: 1524,
40
+ },
41
+ unit: {
42
+ type: String,
43
+ default: 'mm',
44
+ },
45
+ },
46
+ fixtureStaticWidth: {
47
+ value: {
48
+ type: Number,
49
+ default: 1220,
50
+ },
51
+ unit: {
52
+ type: String,
53
+ default: 'mm',
54
+ },
55
+ },
56
+ header: {
57
+ isEnabled: {
58
+ type: Boolean,
59
+ default: true,
60
+ },
61
+ height: {
62
+ value: {
63
+ type: Number,
64
+ default: 0,
65
+ },
66
+ unit: {
67
+ type: String,
68
+ default: 'mm',
69
+ },
70
+ }
71
+ },
72
+ footer: {
73
+ isEnabled: {
74
+ type: Boolean,
75
+ default: true,
76
+ },
77
+ height: {
78
+ value: {
79
+ type: Number,
80
+ default: 0,
81
+ },
82
+ unit: {
83
+ type: String,
84
+ default: 'mm',
85
+ },
86
+ }
87
+ },
88
+ isBodyEnabled: {
89
+ type: Boolean,
90
+ default: true,
91
+ },
92
+ fixtureCapacity: {
93
+ type: Number,
94
+ default: 0,
95
+ },
96
+ status: {
97
+ type: String,
98
+ enum: ['draft', 'complete'],
99
+ default: 'draft',
100
+ },
101
+ shelfConfig: [
102
+ {
103
+ shelfNumber: {
104
+ type: Number,
105
+ required: true,
106
+ },
107
+ shelfType: {
108
+ type: String,
109
+ enum: ['shelf', 'tray'],
110
+ },
111
+ zone: {
112
+ type: String,
113
+ },
114
+ shelfZone: {
115
+ type: String,
116
+ },
117
+ productPerShelf: {
118
+ type: Number,
119
+ default: 0,
120
+ },
121
+ trayRows: {
122
+ type: Number,
123
+ default: 0,
124
+ },
125
+ label: {
126
+ type: String,
127
+ default: '',
128
+ },
129
+ },
130
+ ],
131
+ vmConfig: [
132
+ {
133
+ vmNumber: {
134
+ type: Number,
135
+ },
136
+ vmHeightmm: {
137
+ type: Number,
138
+ },
139
+ vmWidthmm: {
140
+ type: Number,
141
+ },
142
+ startShelf: {
143
+ type: Number,
144
+ },
145
+ endShelf: {
146
+ type: Number,
147
+ },
148
+ zone: {
149
+ type: String,
150
+ },
151
+ position: {
152
+ type: String,
153
+ },
154
+ },
155
+ ],
156
+ fixtureLibCode:{
157
+ type:String
158
+ },
159
+ },
160
+ {
161
+ strict: true,
162
+ versionKey: false,
163
+ timestamps: true,
164
+ },
165
+ );
166
+
167
+ export default mongoose.model( 'fixtureLibraryDuplicate', fixtureLibrarySchema );
168
+
@@ -0,0 +1,78 @@
1
+ import mongoose from 'mongoose';
2
+
3
+ const fixtureShelfSchema = new mongoose.Schema(
4
+ {
5
+ clientId: {
6
+ type: String,
7
+ required: true,
8
+ },
9
+ storeName: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ storeId: {
14
+ type: String,
15
+ required: true,
16
+ },
17
+ planoId: {
18
+ type: mongoose.Types.ObjectId,
19
+ required: true,
20
+ index:true
21
+ },
22
+ floorId: {
23
+ type: mongoose.Types.ObjectId,
24
+ required: true,
25
+ index:true
26
+ },
27
+ fixtureId: {
28
+ type: mongoose.Types.ObjectId,
29
+ required: true,
30
+ index:true
31
+ },
32
+ shelfNumber: {
33
+ type: Number,
34
+ required: true,
35
+ },
36
+ productBrandName: {
37
+ type: Array,
38
+ },
39
+ productCategory: {
40
+ type: Array
41
+ },
42
+ productSubCategory: {
43
+ type: Array
44
+ },
45
+ zone: {
46
+ type: String
47
+ },
48
+ rfId: {
49
+ type: String
50
+ },
51
+ sectionName: {
52
+ type: String
53
+ },
54
+ shelfType: {
55
+ type: String,
56
+ enum: ['shelf', 'tray'],
57
+ },
58
+ productPerShelf: {
59
+ type: Number,
60
+ default: 0,
61
+ },
62
+ trayRows: {
63
+ type: Number,
64
+ default: 0,
65
+ },
66
+ label: {
67
+ type: String,
68
+ default: '',
69
+ },
70
+ },
71
+ {
72
+ strict: true,
73
+ versionKey: false,
74
+ timestamps: true,
75
+ },
76
+ );
77
+
78
+ export default mongoose.model('fixtureShelfDuplicate', fixtureShelfSchema);
@@ -0,0 +1,62 @@
1
+ import mongoose from 'mongoose';
2
+
3
+ const planoMappingSchema = new mongoose.Schema(
4
+ {
5
+ clientId: {
6
+ type: String,
7
+ required: true,
8
+ },
9
+ storeName: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ storeId: {
14
+ type: String,
15
+ required: true,
16
+ },
17
+ type: {
18
+ type: String,
19
+ enum: [ 'product', 'vm' ],
20
+ required: true,
21
+ },
22
+ planoId: {
23
+ type: mongoose.Types.ObjectId,
24
+ required: true,
25
+ },
26
+ floorId: {
27
+ type: mongoose.Types.ObjectId,
28
+ required: true,
29
+ },
30
+ fixtureId: {
31
+ type: mongoose.Types.ObjectId,
32
+ },
33
+ shelfId: {
34
+ type: mongoose.Types.ObjectId,
35
+ },
36
+ shelfPosition: {
37
+ type: Number,
38
+ },
39
+ productId: {
40
+ type: mongoose.Types.ObjectId,
41
+ },
42
+ pid:{
43
+ type: String,
44
+ },
45
+ rfId: {
46
+ type: String,
47
+ },
48
+ category: {
49
+ type: String,
50
+ },
51
+ productDetails: {
52
+ type: Object,
53
+ },
54
+ },
55
+ {
56
+ strict: true,
57
+ versionKey: false,
58
+ timestamps: true,
59
+ },
60
+ );
61
+
62
+ export default mongoose.model( 'planoMappingDuplicate', planoMappingSchema );
@@ -0,0 +1,63 @@
1
+ import mongoose from 'mongoose';
2
+
3
+ const planoProductDetailSchema = new mongoose.Schema(
4
+ {
5
+ clientId: {
6
+ type: String,
7
+ required: true,
8
+ },
9
+ productId: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ productName: {
14
+ type: String,
15
+ },
16
+ productSku: {
17
+ type: String,
18
+ },
19
+ productBrand: {
20
+ type: String,
21
+ },
22
+ productType: {
23
+ type: String,
24
+ },
25
+ productHeight: {
26
+ value: {
27
+ type: Number,
28
+ },
29
+ unit: {
30
+ type: String,
31
+ },
32
+ },
33
+ productWidth: {
34
+ value: {
35
+ type: Number,
36
+ },
37
+ unit: {
38
+ type: String,
39
+ },
40
+ },
41
+ productWeight: {
42
+ value: {
43
+ type: Number,
44
+ },
45
+ unit: {
46
+ type: String,
47
+ },
48
+ },
49
+ productSize: {
50
+ type: String,
51
+ },
52
+ productImageUrl: {
53
+ type: String,
54
+ }
55
+ },
56
+ {
57
+ strict: false,
58
+ versionKey: false,
59
+ timestamps: true,
60
+ },
61
+ );
62
+
63
+ export default mongoose.model( 'planoProductDetailDuplicate', planoProductDetailSchema );
@@ -0,0 +1,63 @@
1
+ import mongoose from 'mongoose';
2
+
3
+ const planoVmDetailSchema = new mongoose.Schema(
4
+ {
5
+ clientId: {
6
+ type: String,
7
+ required: true,
8
+ },
9
+ vmName: {
10
+ type: String,
11
+ },
12
+ vmType: {
13
+ type: String,
14
+ },
15
+ vmHeight: {
16
+ value: {
17
+ type: Number,
18
+ },
19
+ unit: {
20
+ type: String,
21
+ },
22
+ },
23
+ vmWidth: {
24
+ value: {
25
+ type: Number,
26
+ },
27
+ unit: {
28
+ type: String,
29
+ },
30
+ },
31
+ vmImageUrl: {
32
+ type: String,
33
+ },
34
+ isDoubleSided: {
35
+ type: Boolean,
36
+ },
37
+ status: {
38
+ type: String,
39
+ enum: [ 'draft', 'complete' ],
40
+ default: 'draft',
41
+ },
42
+ vmBrand:{
43
+ type:String
44
+ },
45
+ vmSubBrand: {
46
+ type: String,
47
+ },
48
+ vmCategory: {
49
+ type: String,
50
+ },
51
+ crestImageId: {
52
+ type: String,
53
+ },
54
+
55
+ },
56
+ {
57
+ strict: false,
58
+ versionKey: false,
59
+ timestamps: true,
60
+ },
61
+ );
62
+
63
+ export default mongoose.model( 'planoVmDetailDuplicate', planoVmDetailSchema );
@@ -0,0 +1,66 @@
1
+ import mongoose from 'mongoose';
2
+
3
+ const planogramSchema = new mongoose.Schema( {
4
+ storeName: {
5
+ type: String,
6
+ required: true,
7
+ },
8
+ storeId: {
9
+ type: String,
10
+ required: true,
11
+ },
12
+ layoutName: {
13
+ type: String,
14
+ required: true,
15
+ },
16
+ clientId: {
17
+ type: String,
18
+ required: true,
19
+ },
20
+ attachments: {
21
+ type: Array,
22
+ default: [],
23
+ },
24
+ createdBy: {
25
+ type: mongoose.Types.ObjectId,
26
+ required: true,
27
+ },
28
+ createdByName: {
29
+ type: String,
30
+ required: true,
31
+ },
32
+ createdByEmail: {
33
+ type: String,
34
+ required: true,
35
+ },
36
+ status: {
37
+ type: String,
38
+ enum: [ 'draft', 'completed' ],
39
+ default: 'draft',
40
+ },
41
+ floorNumber: {
42
+ type: Number,
43
+ default: 1,
44
+ },
45
+ productResolutionLevel: {
46
+ type: String,
47
+ enum: [ 'L1', 'L2', 'L3', 'L4', 'L5' ],
48
+ // L1- floor level, L2- fixture level, L3- fixture-shelf level, L4- fixture-shelf-product level
49
+ default: 'L3',
50
+ },
51
+ scanType: {
52
+ type: String,
53
+ enum: [ 'rfid', 'qr' ],
54
+ },
55
+ validateShelfSections: {
56
+ type: Boolean
57
+ }
58
+ },
59
+ {
60
+ strict: true,
61
+ versionKey: false,
62
+ timestamps: true,
63
+ },
64
+ );
65
+
66
+ export default mongoose.model( 'planogramDuplicate', planogramSchema );
@@ -81,7 +81,7 @@ const processedchecklistSchema = new mongoose.Schema({
81
81
  checkListType: {
82
82
  type: String,
83
83
  default: "custom",
84
- enum: ["storeopenandclose","mobileusagedetection","uniformdetection","custom","customerunattended","staffleftinthemiddle",'eyetest', 'remoteoptometrist', 'storehygienemonitoring','queuealert','cleaning','scrum','suspiciousactivity','boxalert','suspiciousfootfall','drinking','bagdetection','inventorycount','carsattended','numberplateinfo','vehicle_check_in','unauthorisedentry','backroommonitoring','outsidebusinesshoursqueuetracking']
84
+ enum: ["storeopenandclose","mobileusagedetection","uniformdetection","custom","customerunattended","staffleftinthemiddle",'eyetest', 'remoteoptometrist', 'storehygienemonitoring','queuealert','cleaning','scrum','suspiciousactivity','boxalert','suspiciousfootfall','drinking','bagdetection','inventorycount','carsattended','numberplateinfo','vehicle_check_in','unauthorisedentry','backroommonitoring','outsidebusinesshoursqueuetracking','halfshutter']
85
85
  },
86
86
  store_id: {
87
87
  type: String,
@@ -81,7 +81,7 @@ const processedchecklistconfigSchema = new mongoose.Schema({
81
81
  checkListType: {
82
82
  type: String,
83
83
  default: "custom",
84
- enum: ["storeopenandclose","mobileusagedetection","uniformdetection","custom","customerunattended","staffleftinthemiddle",'eyetest', 'remoteoptometrist', 'storehygienemonitoring','queuealert','cleaning','scrum','suspiciousactivity','boxalert','suspiciousfootfall','drinking','bagdetection','inventorycount','carsattended','numberplateinfo','vehicle_check_in','unauthorisedentry','backroommonitoring','outsidebusinesshoursqueuetracking']
84
+ enum: ["storeopenandclose","mobileusagedetection","uniformdetection","custom","customerunattended","staffleftinthemiddle",'eyetest', 'remoteoptometrist', 'storehygienemonitoring','queuealert','cleaning','scrum','suspiciousactivity','boxalert','suspiciousfootfall','drinking','bagdetection','inventorycount','carsattended','numberplateinfo','vehicle_check_in','unauthorisedentry','backroommonitoring','outsidebusinesshoursqueuetracking','halfshutter']
85
85
  },
86
86
  startTime:{
87
87
  type:Date
@@ -140,7 +140,7 @@ const processedchecklistconfigSchema = new mongoose.Schema({
140
140
  users:{
141
141
  type:Array
142
142
  },
143
- },
143
+ },
144
144
  alertSendTo: {
145
145
  mobile: {
146
146
  type:Array
@@ -219,6 +219,97 @@ const processedchecklistconfigSchema = new mongoose.Schema({
219
219
  type:String
220
220
  },
221
221
  },
222
+ halfshutter:{
223
+ schedule:{
224
+ afterOpenTime:{
225
+ type:Number
226
+ },
227
+ beforeCloseTime:{
228
+ type:Number
229
+ },
230
+ },
231
+ },
232
+ alertConfig: {
233
+ allowBuffer:{
234
+ enabled:{
235
+ type:Boolean,
236
+ default:false
237
+ },
238
+ afterOpenTime:{
239
+ type:Number
240
+ },
241
+ beforeCloseTime:{
242
+ type:Number
243
+ },
244
+ },
245
+ alertSendTo: {
246
+ enabled:{
247
+ type:Boolean,
248
+ default:false
249
+ },
250
+ syncMobileWeb:{
251
+ type:Boolean,
252
+ default:false
253
+ },
254
+ mobile:{
255
+ type:Array
256
+ },
257
+ web:{
258
+ type:Array
259
+ },
260
+ },
261
+ },
262
+ autoTaskConfig:{
263
+ enabled:{
264
+ type:Boolean,
265
+ default:false
266
+ },
267
+ approver:{
268
+ type:Array,
269
+ default:[]
270
+ },
271
+ },
272
+ exportConfig:{
273
+ enabled:{
274
+ type:Boolean,
275
+ default:false
276
+ },
277
+ format:{
278
+ type:Array,
279
+ default:[]
280
+ },
281
+ },
282
+ advancedConfig:{
283
+ dataProcessing:{
284
+ live:{
285
+ type:Boolean,
286
+ default:false
287
+ },
288
+ daily:{
289
+ type:Boolean,
290
+ default:false
291
+ },
292
+ },
293
+ detectedStatus:{
294
+ enabled:{
295
+ type:Boolean,
296
+ default:false
297
+ },
298
+ detections:{
299
+ type:Array,
300
+ default:[]
301
+ },
302
+ },
303
+ auditConfig:{
304
+ enabled:{
305
+ type:Boolean,
306
+ default:false
307
+ },
308
+ inputSourceFile:{
309
+ type:String
310
+ },
311
+ },
312
+ },
222
313
  },
223
314
  rawVideoUpload: {
224
315
  type: Boolean,
@@ -0,0 +1,231 @@
1
+ import mongoose from 'mongoose';
2
+
3
+ const storeFixtureSchema = new mongoose.Schema(
4
+ {
5
+ clientId: {
6
+ type: String,
7
+ required: true,
8
+ },
9
+ storeName: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ storeId: {
14
+ type: String,
15
+ required: true,
16
+ },
17
+ planoId: {
18
+ type: mongoose.Types.ObjectId,
19
+ required: true,
20
+ index:true
21
+ },
22
+ floorId: {
23
+ type: mongoose.Types.ObjectId,
24
+ required: true,
25
+ index:true
26
+ },
27
+ fixtureName: {
28
+ type: String,
29
+ required: true,
30
+ },
31
+ description: {
32
+ type: String,
33
+ },
34
+ fixtureCategory: {
35
+ type: String,
36
+ },
37
+ productBrandName: {
38
+ type: Array,
39
+ },
40
+ productCategory:{
41
+ type:Array
42
+ },
43
+ productSubCategory:{
44
+ type:Array
45
+ },
46
+ fixtureType: {
47
+ type: String,
48
+ enum: [ 'wall', 'floor', 'other' ],
49
+ required: true,
50
+ },
51
+ fixtureLength: {
52
+ value: {
53
+ type: Number,
54
+ default: 0,
55
+ },
56
+ unit: {
57
+ type: String,
58
+ default: '',
59
+ },
60
+ },
61
+ fixtureWidth: {
62
+ value: {
63
+ type: Number,
64
+ default: 0,
65
+ },
66
+ unit: {
67
+ type: String,
68
+ default: '',
69
+ },
70
+ },
71
+ fixtureStaticLength: {
72
+ value: {
73
+ type: Number,
74
+ default: 0,
75
+ },
76
+ unit: {
77
+ type: String,
78
+ default: '',
79
+ },
80
+ },
81
+ fixtureStaticWidth: {
82
+ value: {
83
+ type: Number,
84
+ default: 0,
85
+ },
86
+ unit: {
87
+ type: String,
88
+ default: '',
89
+ },
90
+ },
91
+ fixtureCapacity: {
92
+ type: Number,
93
+ },
94
+ associatedElementType: {
95
+ type: String,
96
+ enum: [ 'wall', 'facade' ],
97
+ },
98
+ associatedElementNumber: {
99
+ type: Number,
100
+ },
101
+ relativePosition: {
102
+ x: {
103
+ type: Number,
104
+ },
105
+ y: {
106
+ type: Number,
107
+ },
108
+ unit: {
109
+ type: String,
110
+ },
111
+ angle:{
112
+ type: Number,
113
+ }
114
+ },
115
+ productResolutionLevel: {
116
+ type: String,
117
+ enum: [ 'L1', 'L2', 'L3', 'L4' ],
118
+ // L1- fixture level, L2- shelf level, L3- section level, L4- product level
119
+ },
120
+ imageUrl: {
121
+ type: String,
122
+ },
123
+ header: {
124
+ height: {
125
+ value: {
126
+ type: Number,
127
+ default: 0,
128
+ },
129
+ unit: {
130
+ type: String,
131
+ default: '',
132
+ },
133
+ },
134
+ label: {
135
+ type: String,
136
+ },
137
+ isEnabled: {
138
+ type: Boolean,
139
+ default: true,
140
+ },
141
+ },
142
+ footer: {
143
+ height: {
144
+ value: {
145
+ type: Number,
146
+ default: 0,
147
+ },
148
+ unit: {
149
+ type: String,
150
+ default: '',
151
+ },
152
+ },
153
+ label: {
154
+ type: String,
155
+ },
156
+ isEnabled: {
157
+ type: Boolean,
158
+ default: true,
159
+ },
160
+ },
161
+ isBodyEnabled: {
162
+ type: Boolean,
163
+ default: true,
164
+ },
165
+ associatedElementFixtureNumber: {
166
+ type: Number,
167
+ },
168
+ vmConfig: [
169
+ {
170
+ vmId: {
171
+ type: mongoose.Types.ObjectId,
172
+ },
173
+ startYPosition: {
174
+ type: Number,
175
+ },
176
+ endYPosition: {
177
+ type: Number,
178
+ },
179
+ xZone: {
180
+ type: String,
181
+ },
182
+ yZone: {
183
+ type: String,
184
+ },
185
+ position: {
186
+ type: String,
187
+ },
188
+ },
189
+ ],
190
+ fixtureLibraryId: {
191
+ type: mongoose.Types.ObjectId,
192
+ index:true
193
+ },
194
+ fixtureConfigId: {
195
+ type: mongoose.Types.ObjectId,
196
+ index:true
197
+ },
198
+ fixtureNumber: {
199
+ type: Number,
200
+ },
201
+ templateIndex: {
202
+ type: Number,
203
+ default: 1,
204
+ },
205
+ isMerchEdited: {
206
+ type: Boolean,
207
+ default: false,
208
+ },
209
+ isVmEdited: {
210
+ type: Boolean,
211
+ default: false,
212
+ },
213
+ masterTemplateId:{
214
+ type: mongoose.Types.ObjectId,
215
+ },
216
+ templateGroupName: {
217
+ type: String
218
+ },
219
+
220
+ },
221
+ {
222
+ strict: true,
223
+ versionKey: false,
224
+ timestamps: true,
225
+ },
226
+ );
227
+
228
+ export default mongoose.model( 'storeFixtureDuplicate', storeFixtureSchema );
229
+
230
+
231
+
@@ -0,0 +1,74 @@
1
+ import mongoose from 'mongoose';
2
+
3
+ const storeLayoutSchema = new mongoose.Schema( {
4
+ storeName: {
5
+ type: String,
6
+ required: true,
7
+ },
8
+ storeId: {
9
+ type: String,
10
+ required: true,
11
+ },
12
+ layoutName: {
13
+ type: String,
14
+ required: true,
15
+ },
16
+ clientId: {
17
+ type: String,
18
+ required: true,
19
+ },
20
+ floorNumber: {
21
+ type: Number,
22
+ default: 1,
23
+ },
24
+ floorName: {
25
+ type: String,
26
+ required: true,
27
+ },
28
+ layoutPolygon: {
29
+ type: Array,
30
+ default: [],
31
+ },
32
+ createdBy: {
33
+ type: mongoose.Types.ObjectId,
34
+ required: true,
35
+ },
36
+ createdByName: {
37
+ type: String,
38
+ required: true,
39
+ },
40
+ createdByEmail: {
41
+ type: String,
42
+ required: true,
43
+ },
44
+ status: {
45
+ type: String,
46
+ enum: [ 'draft', 'completed' ],
47
+ default: 'draft',
48
+ },
49
+ planoId: {
50
+ type: mongoose.Types.ObjectId,
51
+ required: true,
52
+ index:true
53
+ },
54
+ storeOrder: {
55
+ type: String,
56
+ enum: [ 'LTR', 'RTL' ],
57
+ // LTR - Left to Right, RTL - Right to Left
58
+ },
59
+ isEdited: {
60
+ type: Boolean,
61
+ },
62
+ planoProgress:{
63
+ type:Number,
64
+ default:25
65
+ }
66
+ },
67
+ {
68
+ strict: true,
69
+ versionKey: false,
70
+ timestamps: true,
71
+ },
72
+ );
73
+
74
+ export default mongoose.model( 'storeLayoutDuplicate', storeLayoutSchema );