@platform-modules/civil-aviation-authority 2.3.298 → 2.3.299
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.
|
@@ -58,6 +58,15 @@ export declare function renderSynchronizedWorkflowMessage(templateKey: string, e
|
|
|
58
58
|
export declare function renderSynchronizedChatMessage(templateKey: string, enParams: Record<string, string>, arParams: Record<string, string>): BilingualText;
|
|
59
59
|
export declare function buildBilingualFromTemplate(templateCatalog: Record<string, BilingualText>, key: string, params?: Record<string, string>, arParams?: Record<string, string>): BilingualText;
|
|
60
60
|
export declare function workflowTemplate(key: string, params?: Record<string, string>, arParams?: Record<string, string>): BilingualText;
|
|
61
|
+
/** Create/submit step for assign-tasks-emp workflow logs. */
|
|
62
|
+
export declare function buildAssignTasksEmpAssignedWorkflowFields(): BilingualText;
|
|
63
|
+
/** Approval step — pending from assigned employee. */
|
|
64
|
+
export declare function buildAssignTasksEmpPendingFromWorkflowFields(params: {
|
|
65
|
+
userName: string;
|
|
66
|
+
userArabicName?: string | null;
|
|
67
|
+
}): BilingualText;
|
|
68
|
+
/** Approval step fallback when assignee name is unavailable. */
|
|
69
|
+
export declare function buildAssignTasksEmpPendingWorkflowFields(): BilingualText;
|
|
61
70
|
export declare function chatTemplate(key: string, params?: Record<string, string>, arParams?: Record<string, string>): BilingualText;
|
|
62
71
|
/**
|
|
63
72
|
* Standard entry point for workflow `content` + `content_ar`.
|
|
@@ -17,6 +17,9 @@ exports.renderSynchronizedWorkflowMessage = renderSynchronizedWorkflowMessage;
|
|
|
17
17
|
exports.renderSynchronizedChatMessage = renderSynchronizedChatMessage;
|
|
18
18
|
exports.buildBilingualFromTemplate = buildBilingualFromTemplate;
|
|
19
19
|
exports.workflowTemplate = workflowTemplate;
|
|
20
|
+
exports.buildAssignTasksEmpAssignedWorkflowFields = buildAssignTasksEmpAssignedWorkflowFields;
|
|
21
|
+
exports.buildAssignTasksEmpPendingFromWorkflowFields = buildAssignTasksEmpPendingFromWorkflowFields;
|
|
22
|
+
exports.buildAssignTasksEmpPendingWorkflowFields = buildAssignTasksEmpPendingWorkflowFields;
|
|
20
23
|
exports.chatTemplate = chatTemplate;
|
|
21
24
|
exports.buildSynchronizedWorkflowMessage = buildSynchronizedWorkflowMessage;
|
|
22
25
|
exports.buildSynchronizedChatMessage = buildSynchronizedChatMessage;
|
|
@@ -154,6 +157,45 @@ function buildBilingualFromTemplate(templateCatalog, key, params = {}, arParams)
|
|
|
154
157
|
function workflowTemplate(key, params = {}, arParams) {
|
|
155
158
|
return buildBilingualFromTemplate(WORKFLOW_TEMPLATES, key, params, arParams);
|
|
156
159
|
}
|
|
160
|
+
/** Assign-tasks-emp workflow templates (catalog + runtime fallback when dist JSON is stale). */
|
|
161
|
+
const ASSIGN_TASKS_EMP_WF_FALLBACKS = {
|
|
162
|
+
request_assigned: { en: 'Request Assigned', ar: 'تم تعيين الطلب' },
|
|
163
|
+
request_pending_from: { en: 'Request Pending from {{name}}', ar: 'الطلب قيد الانتظار من {{name}}' },
|
|
164
|
+
request_pending: { en: 'Request Pending', ar: 'الطلب قيد الانتظار' },
|
|
165
|
+
};
|
|
166
|
+
function resolveAssignTasksEmpWorkflowTemplate(key, enParams = {}, arParams) {
|
|
167
|
+
const tpl = WORKFLOW_TEMPLATES[key] ?? ASSIGN_TASKS_EMP_WF_FALLBACKS[key];
|
|
168
|
+
const arabicParams = arParams ?? enParams;
|
|
169
|
+
return {
|
|
170
|
+
en: interpolate(tpl.en, enParams),
|
|
171
|
+
ar: interpolate(tpl.ar, arabicParams),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/** Create/submit step for assign-tasks-emp workflow logs. */
|
|
175
|
+
function buildAssignTasksEmpAssignedWorkflowFields() {
|
|
176
|
+
return resolveAssignTasksEmpWorkflowTemplate('request_assigned');
|
|
177
|
+
}
|
|
178
|
+
/** Approval step — pending from assigned employee. */
|
|
179
|
+
function buildAssignTasksEmpPendingFromWorkflowFields(params) {
|
|
180
|
+
const nameEn = params.userName.trim() || 'Unknown User';
|
|
181
|
+
const nameAr = resolveBilingualName(nameEn, params.userArabicName);
|
|
182
|
+
return resolveAssignTasksEmpWorkflowTemplate('request_pending_from', { name: nameEn }, { name: nameAr });
|
|
183
|
+
}
|
|
184
|
+
/** Approval step fallback when assignee name is unavailable. */
|
|
185
|
+
function buildAssignTasksEmpPendingWorkflowFields() {
|
|
186
|
+
return resolveAssignTasksEmpWorkflowTemplate('request_pending');
|
|
187
|
+
}
|
|
188
|
+
function resolveStoredAssignTasksEmpTemplateKey(content, actors) {
|
|
189
|
+
const normalized = content?.trim();
|
|
190
|
+
if (!normalized || !(normalized in ASSIGN_TASKS_EMP_WF_FALLBACKS))
|
|
191
|
+
return null;
|
|
192
|
+
if (normalized === 'request_pending_from') {
|
|
193
|
+
const nameEn = actors?.userName?.trim() || 'Unknown User';
|
|
194
|
+
const nameAr = resolveArabicWorkflowActorName(actors, nameEn);
|
|
195
|
+
return resolveAssignTasksEmpWorkflowTemplate('request_pending_from', { name: nameEn }, { name: nameAr });
|
|
196
|
+
}
|
|
197
|
+
return resolveAssignTasksEmpWorkflowTemplate(normalized);
|
|
198
|
+
}
|
|
157
199
|
function chatTemplate(key, params = {}, arParams) {
|
|
158
200
|
return buildBilingualFromTemplate(CHAT_TEMPLATES, key, params, arParams);
|
|
159
201
|
}
|
|
@@ -1144,6 +1186,9 @@ function resolveWorkflowContentAr(content, actors) {
|
|
|
1144
1186
|
if (content == null || content.trim() === '')
|
|
1145
1187
|
return null;
|
|
1146
1188
|
const normalized = content.trim();
|
|
1189
|
+
const assignTasksEmpFromKey = resolveStoredAssignTasksEmpTemplateKey(normalized, actors);
|
|
1190
|
+
if (assignTasksEmpFromKey)
|
|
1191
|
+
return assignTasksEmpFromKey.ar;
|
|
1147
1192
|
const embeddedAssignment = tryParseRequestAssignedComment(normalized);
|
|
1148
1193
|
if (embeddedAssignment) {
|
|
1149
1194
|
return buildAssignmentWorkflowFieldsFromActors(embeddedAssignment, actors).ar;
|
|
@@ -1269,9 +1314,11 @@ function isSystemGeneratedChatMessage(message, actors) {
|
|
|
1269
1314
|
/** Generic workflow log enricher — use in all module repositories. */
|
|
1270
1315
|
function enrichWorkflowLog(log) {
|
|
1271
1316
|
const status = log.status != null ? String(log.status) : null;
|
|
1272
|
-
const
|
|
1317
|
+
const rawContent = log.content != null ? String(log.content) : null;
|
|
1273
1318
|
const actors = extractBilingualActorsFromRecord(log);
|
|
1274
|
-
const
|
|
1319
|
+
const assignTasksEmpResolved = resolveStoredAssignTasksEmpTemplateKey(rawContent, actors);
|
|
1320
|
+
const content = assignTasksEmpResolved?.en ?? rawContent;
|
|
1321
|
+
const resolvedAr = assignTasksEmpResolved?.ar ?? resolveWorkflowContentAr(content, actors);
|
|
1275
1322
|
const existingAr = log.content_ar != null && String(log.content_ar).trim() !== ''
|
|
1276
1323
|
? String(log.content_ar)
|
|
1277
1324
|
: null;
|
|
@@ -1341,8 +1388,12 @@ function enrichWorkflowLog(log) {
|
|
|
1341
1388
|
if (notificationAr)
|
|
1342
1389
|
content_ar = notificationAr;
|
|
1343
1390
|
}
|
|
1391
|
+
if (assignTasksEmpResolved) {
|
|
1392
|
+
content_ar = assignTasksEmpResolved.ar;
|
|
1393
|
+
}
|
|
1344
1394
|
return {
|
|
1345
1395
|
...log,
|
|
1396
|
+
...(content !== rawContent ? { content } : {}),
|
|
1346
1397
|
content_ar,
|
|
1347
1398
|
status_ar: log.status_ar ?? resolveWorkflowStatusAr(status),
|
|
1348
1399
|
};
|
package/package.json
CHANGED
|
@@ -199,6 +199,70 @@ export function workflowTemplate(
|
|
|
199
199
|
return buildBilingualFromTemplate(WORKFLOW_TEMPLATES, key, params, arParams);
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
+
/** Assign-tasks-emp workflow templates (catalog + runtime fallback when dist JSON is stale). */
|
|
203
|
+
const ASSIGN_TASKS_EMP_WF_FALLBACKS = {
|
|
204
|
+
request_assigned: { en: 'Request Assigned', ar: 'تم تعيين الطلب' },
|
|
205
|
+
request_pending_from: { en: 'Request Pending from {{name}}', ar: 'الطلب قيد الانتظار من {{name}}' },
|
|
206
|
+
request_pending: { en: 'Request Pending', ar: 'الطلب قيد الانتظار' },
|
|
207
|
+
} as const;
|
|
208
|
+
|
|
209
|
+
type AssignTasksEmpWorkflowTemplateKey = keyof typeof ASSIGN_TASKS_EMP_WF_FALLBACKS;
|
|
210
|
+
|
|
211
|
+
function resolveAssignTasksEmpWorkflowTemplate(
|
|
212
|
+
key: AssignTasksEmpWorkflowTemplateKey,
|
|
213
|
+
enParams: Record<string, string> = {},
|
|
214
|
+
arParams?: Record<string, string>,
|
|
215
|
+
): BilingualText {
|
|
216
|
+
const tpl = WORKFLOW_TEMPLATES[key] ?? ASSIGN_TASKS_EMP_WF_FALLBACKS[key];
|
|
217
|
+
const arabicParams = arParams ?? enParams;
|
|
218
|
+
return {
|
|
219
|
+
en: interpolate(tpl.en, enParams),
|
|
220
|
+
ar: interpolate(tpl.ar, arabicParams),
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/** Create/submit step for assign-tasks-emp workflow logs. */
|
|
225
|
+
export function buildAssignTasksEmpAssignedWorkflowFields(): BilingualText {
|
|
226
|
+
return resolveAssignTasksEmpWorkflowTemplate('request_assigned');
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/** Approval step — pending from assigned employee. */
|
|
230
|
+
export function buildAssignTasksEmpPendingFromWorkflowFields(params: {
|
|
231
|
+
userName: string;
|
|
232
|
+
userArabicName?: string | null;
|
|
233
|
+
}): BilingualText {
|
|
234
|
+
const nameEn = params.userName.trim() || 'Unknown User';
|
|
235
|
+
const nameAr = resolveBilingualName(nameEn, params.userArabicName);
|
|
236
|
+
return resolveAssignTasksEmpWorkflowTemplate(
|
|
237
|
+
'request_pending_from',
|
|
238
|
+
{ name: nameEn },
|
|
239
|
+
{ name: nameAr },
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/** Approval step fallback when assignee name is unavailable. */
|
|
244
|
+
export function buildAssignTasksEmpPendingWorkflowFields(): BilingualText {
|
|
245
|
+
return resolveAssignTasksEmpWorkflowTemplate('request_pending');
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
function resolveStoredAssignTasksEmpTemplateKey(
|
|
249
|
+
content: string | null | undefined,
|
|
250
|
+
actors?: BilingualActorNames,
|
|
251
|
+
): BilingualText | null {
|
|
252
|
+
const normalized = content?.trim();
|
|
253
|
+
if (!normalized || !(normalized in ASSIGN_TASKS_EMP_WF_FALLBACKS)) return null;
|
|
254
|
+
if (normalized === 'request_pending_from') {
|
|
255
|
+
const nameEn = actors?.userName?.trim() || 'Unknown User';
|
|
256
|
+
const nameAr = resolveArabicWorkflowActorName(actors, nameEn);
|
|
257
|
+
return resolveAssignTasksEmpWorkflowTemplate(
|
|
258
|
+
'request_pending_from',
|
|
259
|
+
{ name: nameEn },
|
|
260
|
+
{ name: nameAr },
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
return resolveAssignTasksEmpWorkflowTemplate(normalized as AssignTasksEmpWorkflowTemplateKey);
|
|
264
|
+
}
|
|
265
|
+
|
|
202
266
|
export function chatTemplate(
|
|
203
267
|
key: string,
|
|
204
268
|
params: Record<string, string> = {},
|
|
@@ -1746,6 +1810,9 @@ export function resolveWorkflowContentAr(
|
|
|
1746
1810
|
if (content == null || content.trim() === '') return null;
|
|
1747
1811
|
const normalized = content.trim();
|
|
1748
1812
|
|
|
1813
|
+
const assignTasksEmpFromKey = resolveStoredAssignTasksEmpTemplateKey(normalized, actors);
|
|
1814
|
+
if (assignTasksEmpFromKey) return assignTasksEmpFromKey.ar;
|
|
1815
|
+
|
|
1749
1816
|
const embeddedAssignment = tryParseRequestAssignedComment(normalized);
|
|
1750
1817
|
if (embeddedAssignment) {
|
|
1751
1818
|
return buildAssignmentWorkflowFieldsFromActors(embeddedAssignment, actors).ar;
|
|
@@ -1885,9 +1952,11 @@ export function isSystemGeneratedChatMessage(
|
|
|
1885
1952
|
/** Generic workflow log enricher — use in all module repositories. */
|
|
1886
1953
|
export function enrichWorkflowLog(log: Record<string, unknown>): Record<string, unknown> {
|
|
1887
1954
|
const status = log.status != null ? String(log.status) : null;
|
|
1888
|
-
const
|
|
1955
|
+
const rawContent = log.content != null ? String(log.content) : null;
|
|
1889
1956
|
const actors = extractBilingualActorsFromRecord(log);
|
|
1890
|
-
const
|
|
1957
|
+
const assignTasksEmpResolved = resolveStoredAssignTasksEmpTemplateKey(rawContent, actors);
|
|
1958
|
+
const content = assignTasksEmpResolved?.en ?? rawContent;
|
|
1959
|
+
const resolvedAr = assignTasksEmpResolved?.ar ?? resolveWorkflowContentAr(content, actors);
|
|
1891
1960
|
const existingAr =
|
|
1892
1961
|
log.content_ar != null && String(log.content_ar).trim() !== ''
|
|
1893
1962
|
? String(log.content_ar)
|
|
@@ -1970,8 +2039,12 @@ export function enrichWorkflowLog(log: Record<string, unknown>): Record<string,
|
|
|
1970
2039
|
const notificationAr = resolveWorkflowContentAr(content, actors);
|
|
1971
2040
|
if (notificationAr) content_ar = notificationAr;
|
|
1972
2041
|
}
|
|
2042
|
+
if (assignTasksEmpResolved) {
|
|
2043
|
+
content_ar = assignTasksEmpResolved.ar;
|
|
2044
|
+
}
|
|
1973
2045
|
return {
|
|
1974
2046
|
...log,
|
|
2047
|
+
...(content !== rawContent ? { content } : {}),
|
|
1975
2048
|
content_ar,
|
|
1976
2049
|
status_ar: log.status_ar ?? resolveWorkflowStatusAr(status),
|
|
1977
2050
|
};
|