@webitel/api-services 26.8.20 → 26.8.22

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webitel/api-services",
3
- "version": "26.8.20",
3
+ "version": "26.8.22",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -158,13 +158,13 @@ describe('queueSchema', () => {
158
158
 
159
159
  /** A cleared *required* number still fails — with the rule's message, not zod's. */
160
160
  it('reports a cleared required number as required', () => {
161
- const queue = validQueueFor(QueueType.OUTBOUND_IVR_QUEUE);
162
- set(queue, 'payload.maxAttempts', null);
161
+ const queue = validQueueFor(QueueType.PROGRESSIVE_DIALER);
162
+ set(queue, 'payload.progressiveCount', null);
163
163
 
164
164
  const result = queueSchema.safeParse(queue);
165
165
 
166
166
  expect(issuePaths(result)).toEqual([
167
- 'payload.maxAttempts',
167
+ 'payload.progressiveCount',
168
168
  ]);
169
169
  expect(result.error?.issues[0]).toMatchObject({
170
170
  code: 'custom',
@@ -174,6 +174,24 @@ describe('queueSchema', () => {
174
174
  });
175
175
  });
176
176
 
177
+ /**
178
+ * Dialing numbers the legacy switch required and the backend does not.
179
+ * WTEL-10292, WTEL-10326
180
+ */
181
+ const legacyRequiredNumbers = [
182
+ 'payload.maxAttempts',
183
+ 'payload.originateTimeout',
184
+ 'payload.waitBetweenRetries',
185
+ 'payload.maxWaitTime',
186
+ ];
187
+
188
+ it.each(allQueueTypes)('lets type %i save with those cleared', (type) => {
189
+ const queue = validQueueFor(type);
190
+ for (const path of legacyRequiredNumbers) set(queue, path, null);
191
+
192
+ expect(issuePaths(queueSchema.safeParse(queue))).toEqual([]);
193
+ });
194
+
177
195
  /**
178
196
  * Regle builds `$fields` from state keys, so anything the defaults seed must
179
197
  * survive the schema — a key the schema strips has no validation entry, and
@@ -12,13 +12,17 @@ export interface QueueTypeRule {
12
12
  * Per-queue-type validation, transcribed from the admin app's
13
13
  * `opened-queue.vue` `validations()` switch.
14
14
  *
15
- * Two things in here look like mistakes and are not:
15
+ * Three things in here look like mistakes and are not:
16
16
  *
17
17
  * - `team` is commented "required" in every legacy queue schema but was never
18
18
  * actually validated. That is preserved — adding it would start rejecting
19
19
  * queues that save fine today.
20
20
  * - `priority` and `payload.minOnlineAgents` carry `minValue(0)` for *all* ten
21
21
  * types, including the ones whose form never shows `minOnlineAgents`.
22
+ * - `payload.originateTimeout`, `payload.waitBetweenRetries`, `payload.maxWaitTime`
23
+ * (WTEL-10292) and `payload.maxAttempts` (WTEL-10326) drop the legacy
24
+ * `required`: the backend takes a queue without them, so it only blocked
25
+ * saving a cleared field. Their `minValue` stays — it skips an empty value.
22
26
  */
23
27
  export const sharedQueueRules: QueueTypeRule = {
24
28
  required: [
@@ -43,7 +47,6 @@ export const queueTypeRules: Record<number, QueueTypeRule> = {
43
47
  [QueueType.INBOUND_QUEUE]: {
44
48
  required: [
45
49
  'payload.timeBaseScore',
46
- 'payload.maxWaitTime',
47
50
  ],
48
51
  minValue: {
49
52
  'payload.maxWaitTime': 0,
@@ -55,7 +58,6 @@ export const queueTypeRules: Record<number, QueueTypeRule> = {
55
58
  'strategy',
56
59
  'calendar',
57
60
  'schema',
58
- 'payload.maxAttempts',
59
61
  'payload.resourceStrategy',
60
62
  ],
61
63
  minValue: {
@@ -68,7 +70,6 @@ export const queueTypeRules: Record<number, QueueTypeRule> = {
68
70
  required: [
69
71
  'strategy',
70
72
  'calendar',
71
- 'payload.maxAttempts',
72
73
  'payload.resourceStrategy',
73
74
  ],
74
75
  minValue: {
@@ -80,7 +81,6 @@ export const queueTypeRules: Record<number, QueueTypeRule> = {
80
81
  required: [
81
82
  'strategy',
82
83
  'calendar',
83
- 'payload.maxAttempts',
84
84
  'payload.resourceStrategy',
85
85
  'payload.progressiveCount',
86
86
  ],
@@ -94,7 +94,6 @@ export const queueTypeRules: Record<number, QueueTypeRule> = {
94
94
  required: [
95
95
  'strategy',
96
96
  'calendar',
97
- 'payload.maxAttempts',
98
97
  'payload.resourceStrategy',
99
98
  'payload.progressiveCount',
100
99
  ],
@@ -109,7 +108,6 @@ export const queueTypeRules: Record<number, QueueTypeRule> = {
109
108
  required: [
110
109
  'strategy',
111
110
  'payload.timeBaseScore',
112
- 'payload.maxWaitTime',
113
111
  ],
114
112
  minValue: {
115
113
  'payload.maxWaitTime': 0,
@@ -121,7 +119,6 @@ export const queueTypeRules: Record<number, QueueTypeRule> = {
121
119
  required: [
122
120
  'strategy',
123
121
  'payload.timeBaseScore',
124
- 'payload.maxWaitTime',
125
122
  ],
126
123
  minValue: {
127
124
  'payload.maxWaitTime': 0,
@@ -132,8 +129,6 @@ export const queueTypeRules: Record<number, QueueTypeRule> = {
132
129
  required: [
133
130
  'strategy',
134
131
  'calendar',
135
- 'payload.maxAttempts',
136
- 'payload.waitBetweenRetries',
137
132
  ],
138
133
  minValue: {
139
134
  'payload.waitBetweenRetries': 0,
@@ -144,7 +139,6 @@ export const queueTypeRules: Record<number, QueueTypeRule> = {
144
139
  'strategy',
145
140
  'calendar',
146
141
  'schema',
147
- 'payload.maxAttempts',
148
142
  ],
149
143
  minValue: {
150
144
  'payload.originateTimeout': 0,