@acorex/connectivity 21.0.0-next.46 → 21.0.0-next.48

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.
Files changed (16) hide show
  1. package/fesm2022/{acorex-connectivity-mock-acorex-connectivity-mock-CPvIJXWl.mjs → acorex-connectivity-mock-acorex-connectivity-mock-CwWGrnVs.mjs} +1071 -665
  2. package/fesm2022/acorex-connectivity-mock-acorex-connectivity-mock-CwWGrnVs.mjs.map +1 -0
  3. package/fesm2022/{acorex-connectivity-mock-assign-to-manager.activity-Bl5qwPIP.mjs → acorex-connectivity-mock-assign-to-manager.activity-B8bbsEQx.mjs} +2 -2
  4. package/fesm2022/{acorex-connectivity-mock-assign-to-manager.activity-Bl5qwPIP.mjs.map → acorex-connectivity-mock-assign-to-manager.activity-B8bbsEQx.mjs.map} +1 -1
  5. package/fesm2022/{acorex-connectivity-mock-chat-generate-image.command-B5IoaRXb.mjs → acorex-connectivity-mock-chat-generate-image.command-CBlDsPWY.mjs} +2 -2
  6. package/fesm2022/{acorex-connectivity-mock-chat-generate-image.command-B5IoaRXb.mjs.map → acorex-connectivity-mock-chat-generate-image.command-CBlDsPWY.mjs.map} +1 -1
  7. package/fesm2022/{acorex-connectivity-mock-chat-synthesize-speech.command-C1fGlYi6.mjs → acorex-connectivity-mock-chat-synthesize-speech.command-BCSsNdNv.mjs} +2 -2
  8. package/fesm2022/{acorex-connectivity-mock-chat-synthesize-speech.command-C1fGlYi6.mjs.map → acorex-connectivity-mock-chat-synthesize-speech.command-BCSsNdNv.mjs.map} +1 -1
  9. package/fesm2022/{acorex-connectivity-mock-chat-transcribe-speech.command-Dhe8T9vA.mjs → acorex-connectivity-mock-chat-transcribe-speech.command-DM6JF63R.mjs} +2 -2
  10. package/fesm2022/{acorex-connectivity-mock-chat-transcribe-speech.command-Dhe8T9vA.mjs.map → acorex-connectivity-mock-chat-transcribe-speech.command-DM6JF63R.mjs.map} +1 -1
  11. package/fesm2022/{acorex-connectivity-mock-user-roles-for-list-column.query-DOXlY-R3.mjs → acorex-connectivity-mock-user-roles-for-list-column.query-2PnIbRxO.mjs} +2 -2
  12. package/fesm2022/{acorex-connectivity-mock-user-roles-for-list-column.query-DOXlY-R3.mjs.map → acorex-connectivity-mock-user-roles-for-list-column.query-2PnIbRxO.mjs.map} +1 -1
  13. package/fesm2022/acorex-connectivity-mock.mjs +1 -1
  14. package/package.json +2 -2
  15. package/types/acorex-connectivity-mock.d.ts +22 -1
  16. package/fesm2022/acorex-connectivity-mock-acorex-connectivity-mock-CPvIJXWl.mjs.map +0 -1
@@ -22,21 +22,22 @@ import { RootConfig as RootConfig$2, AXMPermissionsKeys, AXMApplicationService,
22
22
  import { AXMAssetManagementFeatureKeys, RootConfig as RootConfig$4, AXMAssetStatus } from '@acorex/modules/asset-management';
23
23
  import { AXMAssessmentManagementFeatureKeys, RootConfig as RootConfig$3, AXMAssessmentManagementPermissionKeys } from '@acorex/modules/assessment-management';
24
24
  import { AXPCommonFeatureKeys, AXPWidgetsList } from '@acorex/modules/common';
25
+ import { AXPReportManagementFeatureKeys, RootConfig as RootConfig$t, AXPReportViewerService } from '@acorex/modules/report-management';
25
26
  import { AXMDataManagementFeatureKeys, AXMPermissionsKeys as AXMPermissionsKeys$2, RootConfig as RootConfig$d, AXMQueryServiceImpl, ShowMetaDataFormPopupCommand, ShowMetaDataBuilderPopupCommand, AXMQueryService } from '@acorex/modules/data-management';
26
- import { AXPHumanCapitalManagementFeatureKeys, AXMPermissionsKeys as AXMPermissionsKeys$5, RootConfig as RootConfig$j, AXM_POSITION_ASSIGNMENT_OVERLAPPING_STATUS_IDS } from '@acorex/modules/human-capital-management';
27
+ import { AXPHumanCapitalManagementFeatureKeys, AXMPermissionsKeys as AXMPermissionsKeys$6, RootConfig as RootConfig$j, AXM_POSITION_ASSIGNMENT_OVERLAPPING_STATUS_IDS } from '@acorex/modules/human-capital-management';
27
28
  import { RootConfig as RootConfig$5 } from '@acorex/modules/locale-management';
28
29
  import { AXMPermissionsKeys as AXMPermissionsKeys$1, AXMSubscriptionManagementSubscriptionEntityService, AXMSubscriptionManagementSubscriptionPlanItemEntityService, RootConfig as RootConfig$w } from '@acorex/modules/subscription-management';
29
30
  import { AXPSecurityManagementPermissionKeys, AXMUserAccessState, resolveAXMUserEffectiveState, RootConfig as RootConfig$6, AXMUsersEntityService, AXMPolicyService } from '@acorex/modules/security-management';
30
31
  import { AXMTenantManagementPermissionsKeys, AXMTenantService, AXMTenantManagementTenantUserEntityService, RootConfig as RootConfig$z } from '@acorex/modules/tenant-management';
31
- import { AXMPermissionsKeys as AXMPermissionsKeys$4, RootConfig as RootConfig$e, AXMDocumentTypeServiceImpl, AXPDocumentManagementService } from '@acorex/modules/document-management';
32
+ import { AXMPermissionsKeys as AXMPermissionsKeys$5, RootConfig as RootConfig$e, AXMDocumentTypeServiceImpl, AXPDocumentManagementService } from '@acorex/modules/document-management';
32
33
  import { AXMSettingsManagementPermissionKeys } from '@acorex/modules/settings-management';
33
34
  import { AXMPermissionsKeys as AXMPermissionsKeys$3, RootConfig as RootConfig$y, AXPWorkflowTaskProvider, matchesTaskBoardAssigneeFilter } from '@acorex/modules/task-management';
35
+ import { AXMPermissionsKeys as AXMPermissionsKeys$4, AXMChatConversationApi, AXMChatMessageApi, axmAssistLastTranscriptLine, axmBuildAssistTranscriptLinePayload, AXM_ASSIST_TRANSCRIPT_LINE_PAYLOAD_TYPE, AXMChatRealtimeApi, AXMChatUserApi, axmIsAssistPeerParticipant, AXMChatManagementService, AXMChatRealtimeService, AXMCommentManagementService, AXMCommentRealtimeService, RootConfig as RootConfig$a } from '@acorex/modules/conversation';
34
36
  import { RootConfig as RootConfig$7 } from '@acorex/modules/business-core';
35
37
  import { RootConfig as RootConfig$8 } from '@acorex/modules/calendar-management';
36
38
  import { AXFileService } from '@acorex/core/file';
37
39
  import { RootConfig as RootConfig$9, resolveTextTemplateLocalizedString, replaceTextTemplatePlaceholders, AXC_TEXT_TEMPLATE_RENDER_COMMAND_KEY } from '@acorex/modules/content-management';
38
40
  import { conversationSharedStorage, axConversationIndexedDbStorage, AXConversationAiResponderService } from '@acorex/components/conversation2';
39
- import { AXMChatConversationApi, AXMChatMessageApi, axmAssistLastTranscriptLine, axmBuildAssistTranscriptLinePayload, AXM_ASSIST_TRANSCRIPT_LINE_PAYLOAD_TYPE, AXMChatRealtimeApi, AXMChatUserApi, axmIsAssistPeerParticipant, AXMChatManagementService, AXMChatRealtimeService, AXMCommentManagementService, AXMCommentRealtimeService, RootConfig as RootConfig$a } from '@acorex/modules/conversation';
40
41
  import { AXMNotificationEntityService, RootConfig as RootConfig$p, AXMNotificationEntityServiceImpl, AXMNotificationRealtimeService, NOTIFICATION_MANAGEMENT_EMAIL_SEND_COMMAND_KEY } from '@acorex/modules/notification-management';
41
42
  import { AXToastService } from '@acorex/components/toast';
42
43
  import { Observable, filter, pairwise, map, merge, take, throttleTime } from 'rxjs';
@@ -72,7 +73,6 @@ import { AXLoadingDialogService } from '@acorex/components/loading-dialog';
72
73
  import { RootConfig as RootConfig$q } from '@acorex/modules/person-core';
73
74
  import { RootConfig as RootConfig$r } from '@acorex/modules/procurement-management';
74
75
  import { RootConfig as RootConfig$s } from '@acorex/modules/product-catalog';
75
- import { RootConfig as RootConfig$t, AXPReportViewerService } from '@acorex/modules/report-management';
76
76
  import { RootConfig as RootConfig$u } from '@acorex/modules/project-management';
77
77
  import { RootConfig as RootConfig$v } from '@acorex/modules/reservation-management';
78
78
  import { AXMSessionStatusTypes, AXMDeviceSessionsServiceImpl, AXMDeviceSessionsService, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';
@@ -81,7 +81,7 @@ import { RootConfig as RootConfig$x } from '@acorex/modules/supplier-management'
81
81
  import { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';
82
82
  import { Router } from '@angular/router';
83
83
  import { AXPWorkflowManager, AXPWorkflowDefinitionService, AXPActivityDefinitionService, AXP_WORKFLOW_PROVIDER, WorkflowExpressionScopeService, AXPWorkflowEngineError, AXP_WORKFLOW_ERROR_CODES, AXP_WORKFLOW_ENGINE } from '@acorex/platform/workflow';
84
- import { RootConfig as RootConfig$A, AXMPermissionsKeys as AXMPermissionsKeys$6 } from '@acorex/modules/workflow-management';
84
+ import { RootConfig as RootConfig$A, AXMPermissionsKeys as AXMPermissionsKeys$7 } from '@acorex/modules/workflow-management';
85
85
  import { AXCalendarService } from '@acorex/core/date-time';
86
86
  import { RootConfig as RootConfig$B } from '@acorex/modules/maintenance-management';
87
87
  import { AXCExternalAuthorizationService } from '@acorex/connectivity/utils';
@@ -13404,7 +13404,7 @@ async function clearEntityDefinitionFirestoreCollections(db) {
13404
13404
 
13405
13405
  //#region ---- Imports ----
13406
13406
  //#endregion
13407
- const M$1a = createMultiLanguageString;
13407
+ const M$1b = createMultiLanguageString;
13408
13408
  //#region ---- Stable IDs ----
13409
13409
  /**
13410
13410
  * Fixed UUIDs for OpenAI endpoint rows (referenced from AI model catalog).
@@ -13430,24 +13430,24 @@ function decodeMockOpenAiApiKeySecret(encoded) {
13430
13430
  const OPEN_AI_ENDPOINT_MOCK = [
13431
13431
  {
13432
13432
  id: AXMAiOpenAiEndpointStableIds.openAiDirect,
13433
- title: M$1a('OpenAI (direct)', 'OpenAI (مستقیم)'),
13434
- description: M$1a('Official OpenAI API; set your API key on this row. Base URL ends at /v1.', 'API رسمی OpenAI؛ کلید API را در این رکورد تنظیم کنید. آدرس پایه با /v1 تمام می‌شود.'),
13433
+ title: M$1b('OpenAI (direct)', 'OpenAI (مستقیم)'),
13434
+ description: M$1b('Official OpenAI API; set your API key on this row. Base URL ends at /v1.', 'API رسمی OpenAI؛ کلید API را در این رکورد تنظیم کنید. آدرس پایه با /v1 تمام می‌شود.'),
13435
13435
  apiBase: 'https://api.openai.com/v1',
13436
13436
  apiKey: decodeMockOpenAiApiKeySecret(OPEN_AI_DIRECT_MOCK_API_KEY_B64),
13437
13437
  stream: true,
13438
13438
  },
13439
13439
  {
13440
13440
  id: AXMAiOpenAiEndpointStableIds.demis,
13441
- title: M$1a('Demis', 'دیمیس'),
13442
- description: M$1a('DemisCo test API; OpenAI-compatible. Base URL ends at /v1.', 'API آزمایشی DemisCo؛ سازگار با OpenAI. آدرس پایه با /v1 تمام می‌شود.'),
13441
+ title: M$1b('Demis', 'دیمیس'),
13442
+ description: M$1b('DemisCo test API; OpenAI-compatible. Base URL ends at /v1.', 'API آزمایشی DemisCo؛ سازگار با OpenAI. آدرس پایه با /v1 تمام می‌شود.'),
13443
13443
  apiBase: 'https://testapi.demisco.ai/v1',
13444
13444
  apiKey: 'sk_live_H8haMWMzT41UqWNlCQHifOw__hWpbwNuXFjIn9tkW8o',
13445
13445
  stream: true,
13446
13446
  },
13447
13447
  {
13448
13448
  id: AXMAiOpenAiEndpointStableIds.lmStudio,
13449
- title: M$1a('LM Studio', 'LM Studio'),
13450
- description: M$1a('Local OpenAI-compatible API (LM Studio). Base URL ends at /v1. Disabled by default; enable when the server is running.', 'API محلی سازگار با OpenAI (LM Studio). آدرس پایه با /v1 تمام می‌شود. به‌طور پیش‌فرض غیرفعال است؛ پس از اجرای سرور فعال کنید.'),
13449
+ title: M$1b('LM Studio', 'LM Studio'),
13450
+ description: M$1b('Local OpenAI-compatible API (LM Studio). Base URL ends at /v1. Disabled by default; enable when the server is running.', 'API محلی سازگار با OpenAI (LM Studio). آدرس پایه با /v1 تمام می‌شود. به‌طور پیش‌فرض غیرفعال است؛ پس از اجرای سرور فعال کنید.'),
13451
13451
  apiBase: 'http://localhost:1234/v1',
13452
13452
  apiKey: '',
13453
13453
  /** Local servers often behave better with one-shot JSON completions while debugging. */
@@ -13456,8 +13456,8 @@ const OPEN_AI_ENDPOINT_MOCK = [
13456
13456
  },
13457
13457
  {
13458
13458
  id: AXMAiOpenAiEndpointStableIds.ollama,
13459
- title: M$1a('Ollama', 'Ollama'),
13460
- description: M$1a('Local OpenAI-compatible API (Ollama). Base URL ends at /v1. Disabled by default; enable when the server is running.', 'API محلی سازگار با OpenAI (Ollama). آدرس پایه با /v1 تمام می‌شود. به‌طور پیش‌فرض غیرفعال است؛ پس از اجرای سرور فعال کنید.'),
13459
+ title: M$1b('Ollama', 'Ollama'),
13460
+ description: M$1b('Local OpenAI-compatible API (Ollama). Base URL ends at /v1. Disabled by default; enable when the server is running.', 'API محلی سازگار با OpenAI (Ollama). آدرس پایه با /v1 تمام می‌شود. به‌طور پیش‌فرض غیرفعال است؛ پس از اجرای سرور فعال کنید.'),
13461
13461
  apiBase: 'http://localhost:11434/v1',
13462
13462
  apiKey: '',
13463
13463
  stream: false,
@@ -13468,7 +13468,7 @@ const OPEN_AI_ENDPOINT_MOCK = [
13468
13468
 
13469
13469
  //#region ---- Imports ----
13470
13470
  //#endregion
13471
- const M$19 = createMultiLanguageString;
13471
+ const M$1a = createMultiLanguageString;
13472
13472
  //#region ---- Stable IDs (seed + assist references) ----
13473
13473
  /**
13474
13474
  * Fixed UUIDs so assists and settings can reference models deterministically across reseeds.
@@ -13497,15 +13497,15 @@ const AXMAiModelStableIds = {
13497
13497
  function mockOpenAiEndpointSnapshot(endpointId) {
13498
13498
  switch (endpointId) {
13499
13499
  case AXMAiOpenAiEndpointStableIds.openAiDirect:
13500
- return { id: endpointId, title: M$19('OpenAI (direct)', 'OpenAI (مستقیم)') };
13500
+ return { id: endpointId, title: M$1a('OpenAI (direct)', 'OpenAI (مستقیم)') };
13501
13501
  case AXMAiOpenAiEndpointStableIds.demis:
13502
- return { id: endpointId, title: M$19('Demis', 'دیمیس') };
13502
+ return { id: endpointId, title: M$1a('Demis', 'دیمیس') };
13503
13503
  case AXMAiOpenAiEndpointStableIds.lmStudio:
13504
- return { id: endpointId, title: M$19('LM Studio', 'LM Studio') };
13504
+ return { id: endpointId, title: M$1a('LM Studio', 'LM Studio') };
13505
13505
  case AXMAiOpenAiEndpointStableIds.ollama:
13506
- return { id: endpointId, title: M$19('Ollama', 'Ollama') };
13506
+ return { id: endpointId, title: M$1a('Ollama', 'Ollama') };
13507
13507
  default:
13508
- return { id: endpointId, title: M$19('Unknown Endpoint', 'نقطه پایان نامشخص') };
13508
+ return { id: endpointId, title: M$1a('Unknown Endpoint', 'نقطه پایان نامشخص') };
13509
13509
  }
13510
13510
  }
13511
13511
  //#endregion
@@ -13514,8 +13514,8 @@ const AI_MODEL_MOCK = [
13514
13514
  {
13515
13515
  id: AXMAiModelStableIds.gemini25Flash,
13516
13516
  name: 'gemini-2.5-flash',
13517
- title: M$19('Gemini 2.5 Flash', 'جمینای ۲٫۵ فلش'),
13518
- description: M$19('Fast and capable', 'سریع و توانا'),
13517
+ title: M$1a('Gemini 2.5 Flash', 'جمینای ۲٫۵ فلش'),
13518
+ description: M$1a('Fast and capable', 'سریع و توانا'),
13519
13519
  chatTransport: 'gemini',
13520
13520
  modelPurposes: ['chat', 'vision', 'speech'],
13521
13521
  maxContextTokens: 1_048_576,
@@ -13528,8 +13528,8 @@ const AI_MODEL_MOCK = [
13528
13528
  {
13529
13529
  id: AXMAiModelStableIds.gpt54,
13530
13530
  name: 'gpt-5.4',
13531
- title: M$19('GPT-5.4', 'GPT-5.4'),
13532
- description: M$19('OpenAI Standard: gpt-5.4 (<272K context) per pricing docs', 'استاندارد OpenAI: gpt-5.4 (زیر ۲۷۲K زمینه) طبق مستندات قیمت‌گذاری'),
13531
+ title: M$1a('GPT-5.4', 'GPT-5.4'),
13532
+ description: M$1a('OpenAI Standard: gpt-5.4 (<272K context) per pricing docs', 'استاندارد OpenAI: gpt-5.4 (زیر ۲۷۲K زمینه) طبق مستندات قیمت‌گذاری'),
13533
13533
  chatTransport: 'openai',
13534
13534
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.openAiDirect,
13535
13535
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.openAiDirect),
@@ -13544,8 +13544,8 @@ const AI_MODEL_MOCK = [
13544
13544
  {
13545
13545
  id: AXMAiModelStableIds.gpt54Mini,
13546
13546
  name: 'gpt-5.4-mini',
13547
- title: M$19('GPT-5.4 Mini', 'GPT-5.4 مینی'),
13548
- description: M$19('OpenAI Standard pricing (flagship table)', 'قیمت‌گذاری استاندارد OpenAI (جدول پرچم‌دار)'),
13547
+ title: M$1a('GPT-5.4 Mini', 'GPT-5.4 مینی'),
13548
+ description: M$1a('OpenAI Standard pricing (flagship table)', 'قیمت‌گذاری استاندارد OpenAI (جدول پرچم‌دار)'),
13549
13549
  chatTransport: 'openai',
13550
13550
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.openAiDirect,
13551
13551
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.openAiDirect),
@@ -13560,8 +13560,8 @@ const AI_MODEL_MOCK = [
13560
13560
  {
13561
13561
  id: AXMAiModelStableIds.gpt54Nano,
13562
13562
  name: 'gpt-5.4-nano',
13563
- title: M$19('GPT-5.4 Nano', 'GPT-5.4 نانو'),
13564
- description: M$19('OpenAI Standard pricing (flagship table)', 'قیمت‌گذاری استاندارد OpenAI (جدول پرچم‌دار)'),
13563
+ title: M$1a('GPT-5.4 Nano', 'GPT-5.4 نانو'),
13564
+ description: M$1a('OpenAI Standard pricing (flagship table)', 'قیمت‌گذاری استاندارد OpenAI (جدول پرچم‌دار)'),
13565
13565
  chatTransport: 'openai',
13566
13566
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.openAiDirect,
13567
13567
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.openAiDirect),
@@ -13576,24 +13576,24 @@ const AI_MODEL_MOCK = [
13576
13576
  {
13577
13577
  id: AXMAiModelStableIds.demisAi,
13578
13578
  name: 'c421bdd1-f3ea-43c0-a1d9-19bc92907304',
13579
- title: M$19('Demis AI Core (central payment)', 'هسته دیمیس AI (پرداخت متمرکز)'),
13580
- description: M$19('Demisco agent chat model (model_uuid). Used with the centralized payment guide agent; transport Demis.', 'مدل چت عامل Demisco (model_uuid). همراه عامل راهنمای پرداخت متمرکز؛ حمل‌ونقل Demis.'),
13579
+ title: M$1a('Demis AI Core (central payment)', 'هسته دیمیس AI (پرداخت متمرکز)'),
13580
+ description: M$1a('Demisco agent chat model (model_uuid). Used with the centralized payment guide agent; transport Demis.', 'مدل چت عامل Demisco (model_uuid). همراه عامل راهنمای پرداخت متمرکز؛ حمل‌ونقل Demis.'),
13581
13581
  chatTransport: 'demis',
13582
13582
  modelPurposes: ['chat'],
13583
13583
  },
13584
13584
  {
13585
13585
  id: AXMAiModelStableIds.imagen4Generate001,
13586
13586
  name: 'imagen-4.0-generate-001',
13587
- title: M$19('Imagen 4 (Gemini API)', 'Imagen 4 (Gemini API)'),
13588
- description: M$19('Text-to-image via Gemini API predict endpoint (paid tier; English prompts per Google docs)', 'متن‌به‌تصویر از طریق endpoint پیش‌بینی Gemini API (لایه پولی؛ پرامپت انگلیسی طبق مستندات گوگل)'),
13587
+ title: M$1a('Imagen 4 (Gemini API)', 'Imagen 4 (Gemini API)'),
13588
+ description: M$1a('Text-to-image via Gemini API predict endpoint (paid tier; English prompts per Google docs)', 'متن‌به‌تصویر از طریق endpoint پیش‌بینی Gemini API (لایه پولی؛ پرامپت انگلیسی طبق مستندات گوگل)'),
13589
13589
  chatTransport: 'gemini',
13590
13590
  modelPurposes: ['image'],
13591
13591
  },
13592
13592
  {
13593
13593
  id: AXMAiModelStableIds.openaiGptImage1,
13594
13594
  name: 'gpt-image-1',
13595
- title: M$19('OpenAI image (gpt-image-1)', 'تصویر OpenAI (gpt-image-1)'),
13596
- description: M$19('Image generation via OpenAI /v1/images/generations', 'تولید تصویر از طریق OpenAI /v1/images/generations'),
13595
+ title: M$1a('OpenAI image (gpt-image-1)', 'تصویر OpenAI (gpt-image-1)'),
13596
+ description: M$1a('Image generation via OpenAI /v1/images/generations', 'تولید تصویر از طریق OpenAI /v1/images/generations'),
13597
13597
  chatTransport: 'openai',
13598
13598
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.openAiDirect,
13599
13599
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.openAiDirect),
@@ -13602,8 +13602,8 @@ const AI_MODEL_MOCK = [
13602
13602
  {
13603
13603
  id: AXMAiModelStableIds.openaiWhisper1,
13604
13604
  name: 'whisper-1',
13605
- title: M$19('OpenAI Whisper (speech-to-text)', 'OpenAI Whisper (گفتار به متن)'),
13606
- description: M$19('Audio transcription via OpenAI /v1/audio/transcriptions', 'رونویسی صوت از طریق OpenAI /v1/audio/transcriptions'),
13605
+ title: M$1a('OpenAI Whisper (speech-to-text)', 'OpenAI Whisper (گفتار به متن)'),
13606
+ description: M$1a('Audio transcription via OpenAI /v1/audio/transcriptions', 'رونویسی صوت از طریق OpenAI /v1/audio/transcriptions'),
13607
13607
  chatTransport: 'openai',
13608
13608
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.openAiDirect,
13609
13609
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.openAiDirect),
@@ -13612,8 +13612,8 @@ const AI_MODEL_MOCK = [
13612
13612
  {
13613
13613
  id: AXMAiModelStableIds.openaiTts1,
13614
13614
  name: 'tts-1',
13615
- title: M$19('OpenAI TTS (tts-1)', 'OpenAI TTS (tts-1)'),
13616
- description: M$19('Text-to-speech via OpenAI /v1/audio/speech', 'متن‌به‌گفتار از طریق OpenAI /v1/audio/speech'),
13615
+ title: M$1a('OpenAI TTS (tts-1)', 'OpenAI TTS (tts-1)'),
13616
+ description: M$1a('Text-to-speech via OpenAI /v1/audio/speech', 'متن‌به‌گفتار از طریق OpenAI /v1/audio/speech'),
13617
13617
  chatTransport: 'openai',
13618
13618
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.openAiDirect,
13619
13619
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.openAiDirect),
@@ -13622,8 +13622,8 @@ const AI_MODEL_MOCK = [
13622
13622
  {
13623
13623
  id: AXMAiModelStableIds.lmStudioQwen35_9b,
13624
13624
  name: 'qwen/qwen3.5-9b',
13625
- title: M$19('Qwen 3.5 9B (LM Studio)', 'Qwen 3.5 9B (LM Studio)'),
13626
- description: M$19('OpenAI-compatible chat; LM Studio endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه LM Studio (seed غیرفعال).'),
13625
+ title: M$1a('Qwen 3.5 9B (LM Studio)', 'Qwen 3.5 9B (LM Studio)'),
13626
+ description: M$1a('OpenAI-compatible chat; LM Studio endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه LM Studio (seed غیرفعال).'),
13627
13627
  chatTransport: 'openai',
13628
13628
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.lmStudio,
13629
13629
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.lmStudio),
@@ -13634,8 +13634,8 @@ const AI_MODEL_MOCK = [
13634
13634
  {
13635
13635
  id: AXMAiModelStableIds.lmStudioQwen3_4b,
13636
13636
  name: 'qwen3-4b-instruct-2507',
13637
- title: M$19('Qwen3 4B Instruct (LM Studio)', 'Qwen3 4B Instruct (LM Studio)'),
13638
- description: M$19('OpenAI-compatible chat; LM Studio endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه LM Studio (seed غیرفعال).'),
13637
+ title: M$1a('Qwen3 4B Instruct (LM Studio)', 'Qwen3 4B Instruct (LM Studio)'),
13638
+ description: M$1a('OpenAI-compatible chat; LM Studio endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه LM Studio (seed غیرفعال).'),
13639
13639
  chatTransport: 'openai',
13640
13640
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.lmStudio,
13641
13641
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.lmStudio),
@@ -13646,8 +13646,8 @@ const AI_MODEL_MOCK = [
13646
13646
  {
13647
13647
  id: AXMAiModelStableIds.lmStudioGemma3_4b,
13648
13648
  name: 'gemma-3-4b-it',
13649
- title: M$19('Gemma 3 4B IT (LM Studio)', 'Gemma 3 4B IT (LM Studio)'),
13650
- description: M$19('OpenAI-compatible chat; LM Studio endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه LM Studio (seed غیرفعال).'),
13649
+ title: M$1a('Gemma 3 4B IT (LM Studio)', 'Gemma 3 4B IT (LM Studio)'),
13650
+ description: M$1a('OpenAI-compatible chat; LM Studio endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه LM Studio (seed غیرفعال).'),
13651
13651
  chatTransport: 'openai',
13652
13652
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.lmStudio,
13653
13653
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.lmStudio),
@@ -13658,8 +13658,8 @@ const AI_MODEL_MOCK = [
13658
13658
  {
13659
13659
  id: AXMAiModelStableIds.ollamaQwen35_9b,
13660
13660
  name: 'qwen/qwen3.5-9b',
13661
- title: M$19('Qwen 3.5 9B (Ollama)', 'Qwen 3.5 9B (Ollama)'),
13662
- description: M$19('OpenAI-compatible chat; Ollama endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه Ollama (seed غیرفعال).'),
13661
+ title: M$1a('Qwen 3.5 9B (Ollama)', 'Qwen 3.5 9B (Ollama)'),
13662
+ description: M$1a('OpenAI-compatible chat; Ollama endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه Ollama (seed غیرفعال).'),
13663
13663
  chatTransport: 'openai',
13664
13664
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.ollama,
13665
13665
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.ollama),
@@ -13670,8 +13670,8 @@ const AI_MODEL_MOCK = [
13670
13670
  {
13671
13671
  id: AXMAiModelStableIds.ollamaQwen3_4b,
13672
13672
  name: 'qwen3-4b-instruct-2507',
13673
- title: M$19('Qwen3 4B Instruct (Ollama)', 'Qwen3 4B Instruct (Ollama)'),
13674
- description: M$19('OpenAI-compatible chat; Ollama endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه Ollama (seed غیرفعال).'),
13673
+ title: M$1a('Qwen3 4B Instruct (Ollama)', 'Qwen3 4B Instruct (Ollama)'),
13674
+ description: M$1a('OpenAI-compatible chat; Ollama endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه Ollama (seed غیرفعال).'),
13675
13675
  chatTransport: 'openai',
13676
13676
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.ollama,
13677
13677
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.ollama),
@@ -13682,8 +13682,8 @@ const AI_MODEL_MOCK = [
13682
13682
  {
13683
13683
  id: AXMAiModelStableIds.ollamaGemma3_4b,
13684
13684
  name: 'gemma-3-4b-it',
13685
- title: M$19('Gemma 3 4B IT (Ollama)', 'Gemma 3 4B IT (Ollama)'),
13686
- description: M$19('OpenAI-compatible chat; Ollama endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه Ollama (seed غیرفعال).'),
13685
+ title: M$1a('Gemma 3 4B IT (Ollama)', 'Gemma 3 4B IT (Ollama)'),
13686
+ description: M$1a('OpenAI-compatible chat; Ollama endpoint (seed disabled).', 'چت سازگار با OpenAI؛ نقطه Ollama (seed غیرفعال).'),
13687
13687
  chatTransport: 'openai',
13688
13688
  openAiEndpointId: AXMAiOpenAiEndpointStableIds.ollama,
13689
13689
  openAiEndpoint: mockOpenAiEndpointSnapshot(AXMAiOpenAiEndpointStableIds.ollama),
@@ -13811,7 +13811,7 @@ const AXM_AI_REGISTRY_QUERY_NAME = {
13811
13811
 
13812
13812
  //#region ---- Imports ----
13813
13813
  //#endregion
13814
- const M$18 = createMultiLanguageString;
13814
+ const M$19 = createMultiLanguageString;
13815
13815
  //#region ---- Helpers ----
13816
13816
  function aiAgentCommandBinding(registryId, options = {}) {
13817
13817
  return {
@@ -13928,8 +13928,8 @@ const AI_AGENT_MOCK = [
13928
13928
  {
13929
13929
  id: AXMAiAgentPlatformHelpId,
13930
13930
  name: 'platform-help',
13931
- title: M$18('Platform Help and Navigation', 'راهنمای پلتفرم و ناوبری'),
13932
- description: M$18('Guides **end users** on how to use ACoreX: where to go in the app (menu discovery via **ListPlatformNavigationForAi**) and which **Module.Entity** backs a screen (via **ListRegisteredEntities**). Answers must sound **human and non-technical** unless the user asks for developer details. Read-only queries only; delegate storage/CRUD to **platform-entity**.', 'راهنمای **کاربر نهایی** برای استفاده از ACoreX: مسیر منو (**ListPlatformNavigationForAi**) و تطبیق موجودیت (**ListRegisteredEntities**). پاسخ‌ها باید **ساده و غیرفنی** باشند مگر کاربر جزئیات توسعه‌دهنده بخواهد. فقط پرس‌وجو؛ برای CRUD سرپرست **platform-entity** را واگذار می‌کند.'),
13931
+ title: M$19('Platform Help and Navigation', 'راهنمای پلتفرم و ناوبری'),
13932
+ description: M$19('Guides **end users** on how to use ACoreX: where to go in the app (menu discovery via **ListPlatformNavigationForAi**) and which **Module.Entity** backs a screen (via **ListRegisteredEntities**). Answers must sound **human and non-technical** unless the user asks for developer details. Read-only queries only; delegate storage/CRUD to **platform-entity**.', 'راهنمای **کاربر نهایی** برای استفاده از ACoreX: مسیر منو (**ListPlatformNavigationForAi**) و تطبیق موجودیت (**ListRegisteredEntities**). پاسخ‌ها باید **ساده و غیرفنی** باشند مگر کاربر جزئیات توسعه‌دهنده بخواهد. فقط پرس‌وجو؛ برای CRUD سرپرست **platform-entity** را واگذار می‌کند.'),
13933
13933
  toolIds: [],
13934
13934
  queryIds: [
13935
13935
  aiAgentQueryBinding(axcResolveQueryRegistrySeedId(AXM_AI_REGISTRY_QUERY_NAME.listPlatformNavigationForAi)),
@@ -13969,8 +13969,8 @@ const AI_AGENT_MOCK = [
13969
13969
  {
13970
13970
  id: AXMAiAgentWidgetFollowUpChipsLayoutId,
13971
13971
  name: 'widget-follow-up-chips-layout',
13972
- title: M$18('Follow-Up Chips Agent', 'دستیار چیسپ‌های پیشنهادی'),
13973
- description: M$18('Builds **follow-up chip** rows (**flex-layout** + **button-action**) for Conversation assist: discover option keys via scoped **Widgets:GetForAI** (`agent: widget-follow-up-chips-layout`), compose triggers that call **`methods.aiAssistFillComposerPrompt`** / **`methods.aiAssistNavigate`**, validate with **ValidateLayoutJsonForAi**. Supervisor wraps as {"type":"node","content":...}.', 'ردیف **چیسپ پیشنهادی** (**flex-layout** + **button-action**) برای دستیار مکالمه؛ کشف پارامتر با **Widgets:GetForAI** با scope چیسپ، trigger با **methods.aiAssist*** و اعتبارسنجی با **ValidateLayoutJsonForAi**؛ سرپرست خروجی را در envelope می‌پیچد.'),
13972
+ title: M$19('Follow-Up Chips Agent', 'دستیار چیسپ‌های پیشنهادی'),
13973
+ description: M$19('Builds **follow-up chip** rows (**flex-layout** + **button-action**) for Conversation assist: discover option keys via scoped **Widgets:GetForAI** (`agent: widget-follow-up-chips-layout`), compose triggers that call **`methods.aiAssistFillComposerPrompt`** / **`methods.aiAssistNavigate`**, validate with **ValidateLayoutJsonForAi**. Supervisor wraps as {"type":"node","content":...}.', 'ردیف **چیسپ پیشنهادی** (**flex-layout** + **button-action**) برای دستیار مکالمه؛ کشف پارامتر با **Widgets:GetForAI** با scope چیسپ، trigger با **methods.aiAssist*** و اعتبارسنجی با **ValidateLayoutJsonForAi**؛ سرپرست خروجی را در envelope می‌پیچد.'),
13974
13974
  toolIds: [
13975
13975
  aiAgentCommandBinding(axcResolveCommandRegistrySeedId(AXM_AI_REGISTRY_COMMAND_NAME.aiFormbuilderValidateLayoutJsonForAi)),
13976
13976
  ],
@@ -14002,8 +14002,8 @@ const AI_AGENT_MOCK = [
14002
14002
  {
14003
14003
  id: AXMAiAgentPlatformEntityId,
14004
14004
  name: 'platform-entity',
14005
- title: M$18('Platform Entity Agent', 'دستیار موجودیت پلتفرم'),
14006
- description: M$18('End-to-end work with platform entities: discover Module.Entity keys and field definitions, list or search stored rows, and create or update rows through the standard entity commands. Returns factual text/JSON — for tabular or form UI in chat, the supervisor should also call the **widget-form-layout** specialist; for **charts** (bar, line, donut, gauge, funnel, heatmap) **widget-chart-layout**; for clickable follow-up chips in Conversation assist, **widget-follow-up-chips-layout**.', 'کار با موجودیت‌های پلتفرم: کشف کلیدهای Module.Entity و تعاریف فیلدها، فهرست یا جستجوی رکوردها، و ایجاد یا به‌روزرسانی از طریق دستورات استاندارد موجودیت. خروجی متن/JSON واقعی — برای UI جدولی در چت سرپرست **widget-form-layout**، برای **نمودار** (میله، خط، …) **widget-chart-layout**، و برای چیسپ پیشنهادی در مکالمه **widget-follow-up-chips-layout** را فراخوانی کند.'),
14005
+ title: M$19('Platform Entity Agent', 'دستیار موجودیت پلتفرم'),
14006
+ description: M$19('End-to-end work with platform entities: discover Module.Entity keys and field definitions, list or search stored rows, and create or update rows through the standard entity commands. Returns factual text/JSON — for tabular or form UI in chat, the supervisor should also call the **widget-form-layout** specialist; for **charts** (bar, line, donut, gauge, funnel, heatmap) **widget-chart-layout**; for clickable follow-up chips in Conversation assist, **widget-follow-up-chips-layout**.', 'کار با موجودیت‌های پلتفرم: کشف کلیدهای Module.Entity و تعاریف فیلدها، فهرست یا جستجوی رکوردها، و ایجاد یا به‌روزرسانی از طریق دستورات استاندارد موجودیت. خروجی متن/JSON واقعی — برای UI جدولی در چت سرپرست **widget-form-layout**، برای **نمودار** (میله، خط، …) **widget-chart-layout**، و برای چیسپ پیشنهادی در مکالمه **widget-follow-up-chips-layout** را فراخوانی کند.'),
14007
14007
  toolIds: [
14008
14008
  aiAgentCommandBinding(axcResolveCommandRegistrySeedId(AXM_AI_REGISTRY_COMMAND_NAME.entityCreate)),
14009
14009
  aiAgentCommandBinding(axcResolveCommandRegistrySeedId(AXM_AI_REGISTRY_COMMAND_NAME.entityUpdate)),
@@ -14028,8 +14028,8 @@ const AI_AGENT_MOCK = [
14028
14028
  {
14029
14029
  id: AXMAiAgentWidgetFormLayoutId,
14030
14030
  name: 'widget-form-layout',
14031
- title: M$18('Form Layout Agent', 'دستیار چیدمان فرم'),
14032
- description: M$18('Builds platform widget trees for forms and chat UI: **repeater-layout**, **select-editor** + **dataSource** (use **ListRegisteredDataSources**), **lookup-editor** + **ListRegisteredEntities**, **`text-editor`** last. Uses scoped **Widgets:GetForAI** (`agent: widget-form-layout`) and **ValidateLayoutJsonForAi**. Supervisor wraps as {"type":"node","content":...}.', 'درخت ویجت پلتفرم برای فرم و UI چت؛ repeater-layout، select-editor با dataSource، lookup-editor با ListRegisteredEntities، و در نهایت text-editor. از Widgets:GetForAI با scope فرم و ValidateLayoutJsonForAi استفاده می‌کند؛ سرپرست خروجی را در {"type":"node","content":...} می‌پیچد.'),
14031
+ title: M$19('Form Layout Agent', 'دستیار چیدمان فرم'),
14032
+ description: M$19('Builds platform widget trees for forms and chat UI: **repeater-layout**, **select-editor** + **dataSource** (use **ListRegisteredDataSources**), **lookup-editor** + **ListRegisteredEntities**, **`text-editor`** last. Uses scoped **Widgets:GetForAI** (`agent: widget-form-layout`) and **ValidateLayoutJsonForAi**. Supervisor wraps as {"type":"node","content":...}.', 'درخت ویجت پلتفرم برای فرم و UI چت؛ repeater-layout، select-editor با dataSource، lookup-editor با ListRegisteredEntities، و در نهایت text-editor. از Widgets:GetForAI با scope فرم و ValidateLayoutJsonForAi استفاده می‌کند؛ سرپرست خروجی را در {"type":"node","content":...} می‌پیچد.'),
14033
14033
  toolIds: [
14034
14034
  aiAgentCommandBinding(axcResolveCommandRegistrySeedId(AXM_AI_REGISTRY_COMMAND_NAME.aiFormbuilderValidateLayoutJsonForAi)),
14035
14035
  ],
@@ -14192,8 +14192,8 @@ const AI_AGENT_MOCK = [
14192
14192
  {
14193
14193
  id: AXMAiAgentWidgetChartLayoutId,
14194
14194
  name: 'widget-chart-layout',
14195
- title: M$18('Chart Generator Agent', 'دستیار تولید نمودار'),
14196
- description: M$18('Builds **chart visualization** widget trees (bar, line, donut, gauge, funnel, heatmap) as renderable layout JSON for chat or embedded UI — independent chart specialist. Uses scoped **Widgets:GetForAI** (`agent: widget-chart-layout`), **ListRegisteredDataSources**, and **ValidateLayoutJsonForAi**. Supervisor wraps as {"type":"node","content":...}.', 'درخت ویجت **نمودار** (میله، خط، دونات، گیج، قیف، heatmap) به‌صورت JSON چیدمان قابل رندر برای چت؛ دستیار مستقل نمودار. از Widgets:GetForAI با scope نمودار، ListRegisteredDataSources و ValidateLayoutJsonForAi استفاده می‌کند.'),
14195
+ title: M$19('Chart Generator Agent', 'دستیار تولید نمودار'),
14196
+ description: M$19('Builds **chart visualization** widget trees (bar, line, donut, gauge, funnel, heatmap) as renderable layout JSON for chat or embedded UI — independent chart specialist. Uses scoped **Widgets:GetForAI** (`agent: widget-chart-layout`), **ListRegisteredDataSources**, and **ValidateLayoutJsonForAi**. Supervisor wraps as {"type":"node","content":...}.', 'درخت ویجت **نمودار** (میله، خط، دونات، گیج، قیف، heatmap) به‌صورت JSON چیدمان قابل رندر برای چت؛ دستیار مستقل نمودار. از Widgets:GetForAI با scope نمودار، ListRegisteredDataSources و ValidateLayoutJsonForAi استفاده می‌کند.'),
14197
14197
  toolIds: [
14198
14198
  aiAgentCommandBinding(axcResolveCommandRegistrySeedId(AXM_AI_REGISTRY_COMMAND_NAME.aiFormbuilderValidateLayoutJsonForAi)),
14199
14199
  ],
@@ -14230,8 +14230,8 @@ const AI_AGENT_MOCK = [
14230
14230
  {
14231
14231
  id: AXMAiAgentCommonToolsId,
14232
14232
  name: 'current-time',
14233
- title: M$18('Current Time', 'زمان فعلی'),
14234
- description: M$18('ONLY when the user explicitly asks for the current date/time, clock, timezone, or locale-specific time. Do NOT use for greetings, small talk, connectivity tests, or unrelated tasks. Registry tool: common.get_current_time.', 'فقط وقتی کاربر صریحاً تاریخ/زمان فعلی، ساعت، منطقهٔ زمانی یا زمان محلی را می‌خواهد. برای احوال‌پرسی، تست اتصال یا کارهای نامرتبط استفاده نکنید. ابزار رجیستری: common.get_current_time.'),
14233
+ title: M$19('Current Time', 'زمان فعلی'),
14234
+ description: M$19('ONLY when the user explicitly asks for the current date/time, clock, timezone, or locale-specific time. Do NOT use for greetings, small talk, connectivity tests, or unrelated tasks. Registry tool: common.get_current_time.', 'فقط وقتی کاربر صریحاً تاریخ/زمان فعلی، ساعت، منطقهٔ زمانی یا زمان محلی را می‌خواهد. برای احوال‌پرسی، تست اتصال یا کارهای نامرتبط استفاده نکنید. ابزار رجیستری: common.get_current_time.'),
14235
14235
  toolIds: [aiAgentCommandBinding(axcResolveCommandRegistrySeedId(AXM_AI_REGISTRY_COMMAND_NAME.commonGetCurrentTime))],
14236
14236
  queryIds: [],
14237
14237
  systemPrompt: [
@@ -14245,8 +14245,8 @@ const AI_AGENT_MOCK = [
14245
14245
  {
14246
14246
  id: AXMAiAgentImageGenerationId,
14247
14247
  name: 'image-generation',
14248
- title: M$18('Image Generation Agent', 'دستیار تولید تصویر'),
14249
- description: M$18('In-chat image generation when AiManagement:ChatGenerateImage is registered in the command catalog. If no image tool is available, explain that image generation is not configured.', 'تولید تصویر در چت وقتی AiManagement:ChatGenerateImage در کاتالوگ فرمان ثبت شده باشد. اگر ابزار تصویر موجود نیست، توضیح دهید که تولید تصویر پیکربندی نشده است.'),
14248
+ title: M$19('Image Generation Agent', 'دستیار تولید تصویر'),
14249
+ description: M$19('In-chat image generation when AiManagement:ChatGenerateImage is registered in the command catalog. If no image tool is available, explain that image generation is not configured.', 'تولید تصویر در چت وقتی AiManagement:ChatGenerateImage در کاتالوگ فرمان ثبت شده باشد. اگر ابزار تصویر موجود نیست، توضیح دهید که تولید تصویر پیکربندی نشده است.'),
14250
14250
  toolIds: [
14251
14251
  aiAgentCommandBinding(axcResolveCommandRegistrySeedId(AXM_AI_REGISTRY_COMMAND_NAME.imageGeneration), {
14252
14252
  // 'modelId': 'a0000001-0000-4000-8000-000000000031'
@@ -14265,8 +14265,8 @@ const AI_AGENT_MOCK = [
14265
14265
  {
14266
14266
  id: AXMAiAgentSpeechToTextId,
14267
14267
  name: 'speech-to-text',
14268
- title: M$18('Speech-to-Text Agent', 'دستیار گفتار به متن'),
14269
- description: M$18('Transcribes user-attached audio when AiManagement:ChatTranscribeSpeech is registered. Default speech catalog model is set on this assist\u2019s delegated row (options.model).', 'رونویسی صوت پیوست‌شدهٔ کاربر وقتی AiManagement:ChatTranscribeSpeech ثبت شده باشد. مدل پیش‌فرض گفتار روی ردیف delegated این assist (options.model) تنظیم می‌شود.'),
14268
+ title: M$19('Speech-to-Text Agent', 'دستیار گفتار به متن'),
14269
+ description: M$19('Transcribes user-attached audio when AiManagement:ChatTranscribeSpeech is registered. Default speech catalog model is set on this assist\u2019s delegated row (options.model).', 'رونویسی صوت پیوست‌شدهٔ کاربر وقتی AiManagement:ChatTranscribeSpeech ثبت شده باشد. مدل پیش‌فرض گفتار روی ردیف delegated این assist (options.model) تنظیم می‌شود.'),
14270
14270
  toolIds: [aiAgentCommandBinding(axcResolveCommandRegistrySeedId(AXM_AI_REGISTRY_COMMAND_NAME.chatTranscribeSpeech))],
14271
14271
  queryIds: [],
14272
14272
  systemPrompt: [
@@ -14282,8 +14282,8 @@ const AI_AGENT_MOCK = [
14282
14282
  {
14283
14283
  id: AXMAiAgentTextToSpeechId,
14284
14284
  name: 'text-to-speech',
14285
- title: M$18('Text-to-Speech Agent', 'دستیار متن به گفتار'),
14286
- description: M$18('Spoken audio from text when AiManagement:ChatSynthesizeSpeech is registered. Defaults for model and voice come from this assist\u2019s delegated specialist row (options.model / options.voice).', 'خروجی صوتی از متن وقتی AiManagement:ChatSynthesizeSpeech ثبت شده باشد. پیش‌فرض مدل و صدا از ردیف specialist delegated این assist (options.model / options.voice) می‌آید.'),
14285
+ title: M$19('Text-to-Speech Agent', 'دستیار متن به گفتار'),
14286
+ description: M$19('Spoken audio from text when AiManagement:ChatSynthesizeSpeech is registered. Defaults for model and voice come from this assist\u2019s delegated specialist row (options.model / options.voice).', 'خروجی صوتی از متن وقتی AiManagement:ChatSynthesizeSpeech ثبت شده باشد. پیش‌فرض مدل و صدا از ردیف specialist delegated این assist (options.model / options.voice) می‌آید.'),
14287
14287
  toolIds: [aiAgentCommandBinding(axcResolveCommandRegistrySeedId(AXM_AI_REGISTRY_COMMAND_NAME.chatSynthesizeSpeech))],
14288
14288
  queryIds: [],
14289
14289
  systemPrompt: [
@@ -14299,8 +14299,8 @@ const AI_AGENT_MOCK = [
14299
14299
  {
14300
14300
  id: AXMAiAgentDocumentOcrId,
14301
14301
  name: 'document-ocr',
14302
- title: M$18('Document Understanding Agent', 'دستیار درک اسناد'),
14303
- description: M$18('Transcribes text from document or photo images (scans, forms, handwriting, medical paperwork). Uses AiManagement:ExtractDocumentText with a stored image fileId. Not a substitute for professional medical interpretation.', 'متن را از تصاویر سند یا عکس (اسکن، فرم، دست‌خط، پروندهٔ پزشکی) استخراج می‌کند؛ با AiManagement:ExtractDocumentText و fileId ذخیره‌شده. جایگزین تفسیر پزشکی حرفه‌ای نیست.'),
14302
+ title: M$19('Document Understanding Agent', 'دستیار درک اسناد'),
14303
+ description: M$19('Transcribes text from document or photo images (scans, forms, handwriting, medical paperwork). Uses AiManagement:ExtractDocumentText with a stored image fileId. Not a substitute for professional medical interpretation.', 'متن را از تصاویر سند یا عکس (اسکن، فرم، دست‌خط، پروندهٔ پزشکی) استخراج می‌کند؛ با AiManagement:ExtractDocumentText و fileId ذخیره‌شده. جایگزین تفسیر پزشکی حرفه‌ای نیست.'),
14304
14304
  toolIds: [aiAgentCommandBinding(axcResolveCommandRegistrySeedId(AXM_AI_REGISTRY_COMMAND_NAME.extractDocumentText))],
14305
14305
  queryIds: [],
14306
14306
  systemPrompt: [
@@ -14316,9 +14316,9 @@ const AI_AGENT_MOCK = [
14316
14316
  {
14317
14317
  id: AXMAiAgentCentralizedPaymentGuideId,
14318
14318
  name: '2a0e1e4d-ddfe-4f04-b7ba-2fd307eb5967',
14319
- title: M$18('Demis', 'دیمیس'),
14319
+ title: M$19('Demis', 'دیمیس'),
14320
14320
  isAssist: true,
14321
- description: M$18('Priority guide for the centralized commerce payment system. Assist should prefer delegating here whenever the topic is e-wallet or centralized payments (no platform command or query tools). Typical questions: paying via e-wallet, withdrawing from the wallet, charging or topping up the wallet, reporting and transaction history.', 'راهنمای اولویت‌دار سامانه پرداخت متمرکز تجارت؛ assist برای موضوعات کیف پول الکترونیک و پرداخت متمرکز باید تا حد ممکن این agent را فراخوانی کند (بدون ابزار فرمان یا پرس‌وجوی داخلی پلتفرم). نمونهٔ سوالات: نحوهٔ پرداخت از طریق کیف پول الکترونیک، برداشت از کیف پول، شارژ کیف پول، گزارش‌گیری و تاریخچهٔ تراکنش‌ها.'),
14321
+ description: M$19('Priority guide for the centralized commerce payment system. Assist should prefer delegating here whenever the topic is e-wallet or centralized payments (no platform command or query tools). Typical questions: paying via e-wallet, withdrawing from the wallet, charging or topping up the wallet, reporting and transaction history.', 'راهنمای اولویت‌دار سامانه پرداخت متمرکز تجارت؛ assist برای موضوعات کیف پول الکترونیک و پرداخت متمرکز باید تا حد ممکن این agent را فراخوانی کند (بدون ابزار فرمان یا پرس‌وجوی داخلی پلتفرم). نمونهٔ سوالات: نحوهٔ پرداخت از طریق کیف پول الکترونیک، برداشت از کیف پول، شارژ کیف پول، گزارش‌گیری و تاریخچهٔ تراکنش‌ها.'),
14322
14322
  toolIds: [],
14323
14323
  queryIds: [],
14324
14324
  systemPrompt: [
@@ -14334,13 +14334,13 @@ const AI_AGENT_MOCK = [
14334
14334
 
14335
14335
  //#region ---- Imports ----
14336
14336
  //#endregion
14337
- const M$17 = createMultiLanguageString;
14337
+ const M$18 = createMultiLanguageString;
14338
14338
  //#region ---- Helpers ----
14339
14339
  function aiModelRef(catalogId) {
14340
14340
  const row = AI_MODEL_MOCK.find((m) => m.id === catalogId);
14341
14341
  return {
14342
14342
  id: catalogId,
14343
- title: row?.title ?? M$17('Unknown model', 'مدل نامشخص'),
14343
+ title: row?.title ?? M$18('Unknown model', 'مدل نامشخص'),
14344
14344
  name: row?.name ?? '',
14345
14345
  };
14346
14346
  }
@@ -14392,8 +14392,8 @@ const AI_ASSIST_MOCK = [
14392
14392
  {
14393
14393
  id: AXMAiPlatformAssistantAssistId,
14394
14394
  name: 'platform-assistant',
14395
- title: M$17('Platform Assistant', 'دستیار پلتفرم'),
14396
- description: M$17('Default platform assistant used when no specific assist is selected.', 'دستیار پیش‌فرض پلتفرم وقتی هیچ assist مشخصی انتخاب نشده باشد.'),
14395
+ title: M$18('Platform Assistant', 'دستیار پلتفرم'),
14396
+ description: M$18('Default platform assistant used when no specific assist is selected.', 'دستیار پیش‌فرض پلتفرم وقتی هیچ assist مشخصی انتخاب نشده باشد.'),
14397
14397
  modelId: AXMAiModelStableIds.gpt54,
14398
14398
  aiModel: aiModelRef(AXMAiModelStableIds.gpt54),
14399
14399
  tools: [],
@@ -14466,8 +14466,8 @@ const AI_ASSIST_MOCK = [
14466
14466
  {
14467
14467
  id: 'b0000001-0000-4000-8000-000000000002',
14468
14468
  name: 'medical-assistant',
14469
- title: M$17('Medical Assistant', 'دستیار پزشکی'),
14470
- description: M$17('Assists with medical terminology, basic health information, and appointment-related questions.', 'کمک به اصطلاحات پزشکی، اطلاعات عمومی سلامت و پرسش‌های مرتبط با نوبت.'),
14469
+ title: M$18('Medical Assistant', 'دستیار پزشکی'),
14470
+ description: M$18('Assists with medical terminology, basic health information, and appointment-related questions.', 'کمک به اصطلاحات پزشکی، اطلاعات عمومی سلامت و پرسش‌های مرتبط با نوبت.'),
14471
14471
  modelId: AXMAiModelStableIds.gemini25Flash,
14472
14472
  aiModel: aiModelRef(AXMAiModelStableIds.gemini25Flash),
14473
14473
  tools: [],
@@ -14480,8 +14480,8 @@ const AI_ASSIST_MOCK = [
14480
14480
  {
14481
14481
  id: 'b0000001-0000-4000-8000-000000000003',
14482
14482
  name: 'general-assistant',
14483
- title: M$17('General Assistant', 'دستیار عمومی'),
14484
- description: M$17('A general-purpose assistant that routes to platform help/navigation, platform entity tooling, utilities, media, image, and delegated layout specialists.', 'دستیار چندمنظوره که به دستیار راهنمای پلتفرم، موجودیت پلتفرم، ابزارها، رسانه‌ها، تصویر و چیدمان (delegated specialists) متصل می‌شود.'),
14483
+ title: M$18('General Assistant', 'دستیار عمومی'),
14484
+ description: M$18('A general-purpose assistant that routes to platform help/navigation, platform entity tooling, utilities, media, image, and delegated layout specialists.', 'دستیار چندمنظوره که به دستیار راهنمای پلتفرم، موجودیت پلتفرم، ابزارها، رسانه‌ها، تصویر و چیدمان (delegated specialists) متصل می‌شود.'),
14485
14485
  modelId: AXMAiModelStableIds.gemini25Flash,
14486
14486
  aiModel: aiModelRef(AXMAiModelStableIds.gemini25Flash),
14487
14487
  tools: [],
@@ -14551,7 +14551,10 @@ class AXCAiAssistSeeder {
14551
14551
  this.storageService = inject(AXPEntityStorageService);
14552
14552
  }
14553
14553
  async seed() {
14554
- await this.storageService.initial(`${RootConfig.module.name}.${RootConfig.entities.assist.name}`, AI_ASSIST_MOCK);
14554
+ const entityName = `${RootConfig.module.name}.${RootConfig.entities.assist.name}`;
14555
+ for (const assist of AI_ASSIST_MOCK) {
14556
+ await this.storageService.upsertOne(entityName, assist, { merge: true });
14557
+ }
14555
14558
  }
14556
14559
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXCAiAssistSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
14557
14560
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXCAiAssistSeeder }); }
@@ -17744,7 +17747,7 @@ class AXCAiChatDemisProvider {
17744
17747
  }
17745
17748
  const agentUuid = await this.resolveAgentUuid(options);
17746
17749
  if (!agentUuid) {
17747
- throw new Error('Demis chat requires `agent_uuid` (AiAgent catalog `name` slug). Use a direct agent run, delegated agent, Demis options, or set Default agent name in AI settings.');
17750
+ throw new Error('Demis chat requires `agent_uuid` (AiAgent catalog `name` slug). Use a direct agent run, delegated agent, or Demis options.');
17748
17751
  }
17749
17752
  const userMessage = buildDemisTranscriptUserMessage(options.messages);
17750
17753
  const useStream = options.stream !== false;
@@ -17898,8 +17901,7 @@ class AXCAiChatDemisProvider {
17898
17901
  if (ctxName) {
17899
17902
  return ctxName;
17900
17903
  }
17901
- const fromSetting = (await this.settings.get(AXPAiManagementSettings.Providers.Demis.DefaultAgentName)) ?? '';
17902
- return fromSetting.trim();
17904
+ return '';
17903
17905
  }
17904
17906
  async collectLatestUserMediaFiles(messages) {
17905
17907
  let lastUser;
@@ -19348,7 +19350,7 @@ class AXCAiManagementMockModule {
19348
19350
  provideCommandSetups([
19349
19351
  {
19350
19352
  key: 'AiManagement:ChatGenerateImage',
19351
- command: () => import('./acorex-connectivity-mock-chat-generate-image.command-B5IoaRXb.mjs').then((c) => c.AiManagementChatGenerateImageCommand),
19353
+ command: () => import('./acorex-connectivity-mock-chat-generate-image.command-CBlDsPWY.mjs').then((c) => c.AiManagementChatGenerateImageCommand),
19352
19354
  },
19353
19355
  {
19354
19356
  key: 'AiManagement:ExtractDocumentText',
@@ -19360,11 +19362,11 @@ class AXCAiManagementMockModule {
19360
19362
  },
19361
19363
  {
19362
19364
  key: 'AiManagement:ChatTranscribeSpeech',
19363
- command: () => import('./acorex-connectivity-mock-chat-transcribe-speech.command-Dhe8T9vA.mjs').then((c) => c.AiManagementChatTranscribeSpeechCommand),
19365
+ command: () => import('./acorex-connectivity-mock-chat-transcribe-speech.command-DM6JF63R.mjs').then((c) => c.AiManagementChatTranscribeSpeechCommand),
19364
19366
  },
19365
19367
  {
19366
19368
  key: 'AiManagement:ChatSynthesizeSpeech',
19367
- command: () => import('./acorex-connectivity-mock-chat-synthesize-speech.command-C1fGlYi6.mjs').then((c) => c.AiManagementChatSynthesizeSpeechCommand),
19369
+ command: () => import('./acorex-connectivity-mock-chat-synthesize-speech.command-BCSsNdNv.mjs').then((c) => c.AiManagementChatSynthesizeSpeechCommand),
19368
19370
  },
19369
19371
  ]),
19370
19372
  ] }); }
@@ -19407,7 +19409,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
19407
19409
  provideCommandSetups([
19408
19410
  {
19409
19411
  key: 'AiManagement:ChatGenerateImage',
19410
- command: () => import('./acorex-connectivity-mock-chat-generate-image.command-B5IoaRXb.mjs').then((c) => c.AiManagementChatGenerateImageCommand),
19412
+ command: () => import('./acorex-connectivity-mock-chat-generate-image.command-CBlDsPWY.mjs').then((c) => c.AiManagementChatGenerateImageCommand),
19411
19413
  },
19412
19414
  {
19413
19415
  key: 'AiManagement:ExtractDocumentText',
@@ -19419,11 +19421,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
19419
19421
  },
19420
19422
  {
19421
19423
  key: 'AiManagement:ChatTranscribeSpeech',
19422
- command: () => import('./acorex-connectivity-mock-chat-transcribe-speech.command-Dhe8T9vA.mjs').then((c) => c.AiManagementChatTranscribeSpeechCommand),
19424
+ command: () => import('./acorex-connectivity-mock-chat-transcribe-speech.command-DM6JF63R.mjs').then((c) => c.AiManagementChatTranscribeSpeechCommand),
19423
19425
  },
19424
19426
  {
19425
19427
  key: 'AiManagement:ChatSynthesizeSpeech',
19426
- command: () => import('./acorex-connectivity-mock-chat-synthesize-speech.command-C1fGlYi6.mjs').then((c) => c.AiManagementChatSynthesizeSpeechCommand),
19428
+ command: () => import('./acorex-connectivity-mock-chat-synthesize-speech.command-BCSsNdNv.mjs').then((c) => c.AiManagementChatSynthesizeSpeechCommand),
19427
19429
  },
19428
19430
  ]),
19429
19431
  ],
@@ -19431,7 +19433,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
19431
19433
  }] });
19432
19434
 
19433
19435
  //#region ---- Helpers ----
19434
- const M$16 = createMultiLanguageString;
19436
+ const M$17 = createMultiLanguageString;
19435
19437
  //#endregion
19436
19438
  //#region ---- Category IDs (stable seeds for Application rows) ----
19437
19439
  /** Stable UUIDs for ApplicationManagement.ApplicationCategory demo data. */
@@ -19447,56 +19449,56 @@ const APPLICATION_CATEGORY_IDS = {
19447
19449
  const APPLICATION_CATEGORY_MOCKS = [
19448
19450
  {
19449
19451
  id: APPLICATION_CATEGORY_IDS.ecommerce,
19450
- title: M$16('E-Commerce', 'تجارت الکترونیک'),
19451
- description: M$16('Online commerce and storefront applications', 'اپلیکیشن‌های فروشگاه و تجارت آنلاین'),
19452
+ title: M$17('E-Commerce', 'تجارت الکترونیک'),
19453
+ description: M$17('Online commerce and storefront applications', 'اپلیکیشن‌های فروشگاه و تجارت آنلاین'),
19452
19454
  icon: 'fa-light fa-shopping-cart',
19453
19455
  color: '#7b1fa2',
19454
19456
  childrenCount: 0,
19455
19457
  },
19456
19458
  {
19457
19459
  id: APPLICATION_CATEGORY_IDS.finance,
19458
- title: M$16('Finance', 'مالی'),
19459
- description: M$16('Budgeting, invoicing, and financial reporting', 'بودجه‌ریزی، صورتحساب و گزارش‌های مالی'),
19460
+ title: M$17('Finance', 'مالی'),
19461
+ description: M$17('Budgeting, invoicing, and financial reporting', 'بودجه‌ریزی، صورتحساب و گزارش‌های مالی'),
19460
19462
  icon: 'fa-light fa-dollar-sign',
19461
19463
  color: '#c62828',
19462
19464
  childrenCount: 0,
19463
19465
  },
19464
19466
  {
19465
19467
  id: APPLICATION_CATEGORY_IDS.procurement,
19466
- title: M$16('Procurement', 'تدارکات'),
19467
- description: M$16('Ordering and procurement workflows', 'گردش کار سفارش و تدارکات'),
19468
+ title: M$17('Procurement', 'تدارکات'),
19469
+ description: M$17('Ordering and procurement workflows', 'گردش کار سفارش و تدارکات'),
19468
19470
  icon: 'fa-light fa-shopping-bag',
19469
19471
  color: '#009688',
19470
19472
  childrenCount: 0,
19471
19473
  },
19472
19474
  {
19473
19475
  id: APPLICATION_CATEGORY_IDS.platform,
19474
- title: M$16('Platform', 'پلتفرم'),
19475
- description: M$16('Platform administration and operations', 'عملیات و مدیریت پلتفرم'),
19476
+ title: M$17('Platform', 'پلتفرم'),
19477
+ description: M$17('Platform administration and operations', 'عملیات و مدیریت پلتفرم'),
19476
19478
  icon: 'fa-light fa-terminal',
19477
19479
  color: '#424242',
19478
19480
  childrenCount: 0,
19479
19481
  },
19480
19482
  {
19481
19483
  id: APPLICATION_CATEGORY_IDS.safety,
19482
- title: M$16('Safety', 'ایمنی'),
19483
- description: M$16('Safety and compliance management', 'مدیریت ایمنی و انطباق'),
19484
+ title: M$17('Safety', 'ایمنی'),
19485
+ description: M$17('Safety and compliance management', 'مدیریت ایمنی و انطباق'),
19484
19486
  icon: 'fa-light fa-shield-halved',
19485
19487
  color: '#d32f2f',
19486
19488
  childrenCount: 0,
19487
19489
  },
19488
19490
  {
19489
19491
  id: APPLICATION_CATEGORY_IDS.crm,
19490
- title: M$16('CRM', 'مدیریت ارتباط با مشتری'),
19491
- description: M$16('Customer relationship management', 'مدیریت ارتباط با مشتری و فروش'),
19492
+ title: M$17('CRM', 'مدیریت ارتباط با مشتری'),
19493
+ description: M$17('Customer relationship management', 'مدیریت ارتباط با مشتری و فروش'),
19492
19494
  icon: 'fa-light fa-users',
19493
19495
  color: '#1976d2',
19494
19496
  childrenCount: 0,
19495
19497
  },
19496
19498
  {
19497
19499
  id: APPLICATION_CATEGORY_IDS.hr,
19498
- title: M$16('HR', 'منابع انسانی'),
19499
- description: M$16('Human resources and workforce', 'منابع انسانی و نیروی کار'),
19500
+ title: M$17('HR', 'منابع انسانی'),
19501
+ description: M$17('Human resources and workforce', 'منابع انسانی و نیروی کار'),
19500
19502
  icon: 'fa-light fa-briefcase',
19501
19503
  color: '#f57c00',
19502
19504
  childrenCount: 0,
@@ -19818,6 +19820,40 @@ const APPLICATION_TREE = [
19818
19820
  },
19819
19821
  ],
19820
19822
  },
19823
+ {
19824
+ id: '00000000-0000-0000-0000-000000000009',
19825
+ code: 'MAGFA-001',
19826
+ title: 'MAGFA Commerce',
19827
+ description: 'MAGFA commerce application: conversation, AI assist, reports, and notifications for Iranian trade operations.',
19828
+ version: '1.0.0',
19829
+ categoryId: APPLICATION_CATEGORY_IDS.ecommerce,
19830
+ tags: ['magfa', 'commerce', 'trade', 'iran', 'conversation', 'ai', 'reports'],
19831
+ statusId: AXPSystemStatusType.Active,
19832
+ icon: 'fa-light fa-store',
19833
+ color: '#5c6bc0',
19834
+ url: 'https://commerce.magfa.ir',
19835
+ documentationUrl: 'https://docs.magfa.ir/commerce',
19836
+ supportEmail: 'support@magfa.ir',
19837
+ releaseDate: new Date('2025-01-01'),
19838
+ isPublic: true,
19839
+ editions: [
19840
+ {
19841
+ id: '00000000-0000-0000-0000-000000000090',
19842
+ title: 'Standard',
19843
+ description: 'Conversation, AI, reports, and notifications for Iranian trade operations.',
19844
+ featureKeys: [
19845
+ 'Conversation',
19846
+ 'AiManagement',
19847
+ 'ReportManagement',
19848
+ 'NotificationManagement',
19849
+ 'Common',
19850
+ AXPCommonFeatureKeys.GlobalSearch,
19851
+ AXPReportManagementFeatureKeys.ReportBuilder,
19852
+ AXPReportManagementFeatureKeys.SavedReports,
19853
+ ],
19854
+ },
19855
+ ],
19856
+ },
19821
19857
  {
19822
19858
  id: '00000000-0000-0000-0000-000000000008',
19823
19859
  code: 'HRM-001',
@@ -19915,6 +19951,9 @@ const COSTMANAGER_PROFESSIONAL = EDITIONS.find((e) => e.id === '00000000-0000-00
19915
19951
  const COSTMANAGER_ENTERPRISE = EDITIONS.find((e) => e.id === '00000000-0000-0000-0000-000000000062');
19916
19952
  const CRM_ENTERPRISE = EDITIONS.find((e) => e.id === '00000000-0000-0000-0000-000000000072');
19917
19953
  const HR_ENTERPRISE = EDITIONS.find((e) => e.id === '00000000-0000-0000-0000-000000000082');
19954
+ const MAGFA_COMMERCE_STANDARD = EDITIONS.find((e) => e.id === '00000000-0000-0000-0000-000000000090');
19955
+ /** @deprecated Use {@link MAGFA_COMMERCE_STANDARD}. */
19956
+ const COLLABORATION_STANDARD = MAGFA_COMMERCE_STANDARD;
19918
19957
  //#endregion
19919
19958
 
19920
19959
  //#region ---- Application Data Generation ----
@@ -24383,7 +24422,7 @@ const assetManagementMiddleware = {
24383
24422
  //#region ---- Imports ----
24384
24423
  //#endregion
24385
24424
  //#region ---- Helpers ----
24386
- const M$15 = (en, fa) => createMultiLanguageString(en, fa);
24425
+ const M$16 = (en, fa) => createMultiLanguageString(en, fa);
24387
24426
  /** English category label → id (roots and children). */
24388
24427
  const MAINTENANCE_TYPE_CATEGORY_KEY_TO_ID = {};
24389
24428
  //#endregion
@@ -24427,8 +24466,8 @@ function generateMaintenanceTypeCategories() {
24427
24466
  MAINTENANCE_TYPE_CATEGORY_KEY_TO_ID[key] = id;
24428
24467
  categories.push({
24429
24468
  id,
24430
- title: M$15(titleEn, titleFa),
24431
- description: M$15(descEn, descFa),
24469
+ title: M$16(titleEn, titleFa),
24470
+ description: M$16(descEn, descFa),
24432
24471
  childrenCount: 0,
24433
24472
  });
24434
24473
  });
@@ -24520,8 +24559,8 @@ function generateMaintenanceTypeCategories() {
24520
24559
  MAINTENANCE_TYPE_CATEGORY_KEY_TO_ID[key] = id;
24521
24560
  categories.push({
24522
24561
  id,
24523
- title: M$15(titleEn, titleFa),
24524
- description: M$15(descEn, descFa),
24562
+ title: M$16(titleEn, titleFa),
24563
+ description: M$16(descEn, descFa),
24525
24564
  parentId,
24526
24565
  childrenCount: 0,
24527
24566
  });
@@ -24542,7 +24581,7 @@ function createMaintenanceType(input) {
24542
24581
  const categories = [
24543
24582
  {
24544
24583
  id: categoryId,
24545
- title: entity?.title ?? M$15(categoryKey, categoryKey),
24584
+ title: entity?.title ?? M$16(categoryKey, categoryKey),
24546
24585
  },
24547
24586
  ];
24548
24587
  return {
@@ -25466,12 +25505,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
25466
25505
  type: Injectable
25467
25506
  }] });
25468
25507
 
25469
- const M$14 = createMultiLanguageString;
25508
+ const M$15 = createMultiLanguageString;
25470
25509
  const financialCoreCurrencyMocks = [
25471
25510
  {
25472
25511
  id: AXPDataGenerator.uuid(),
25473
25512
  code: 'USD',
25474
- title: M$14('US Dollar', 'دلار آمریکا'),
25513
+ title: M$15('US Dollar', 'دلار آمریکا'),
25475
25514
  symbol: '$',
25476
25515
  isoNumber: '840',
25477
25516
  decimalPlaces: 2,
@@ -25484,7 +25523,7 @@ const financialCoreCurrencyMocks = [
25484
25523
  {
25485
25524
  id: AXPDataGenerator.uuid(),
25486
25525
  code: 'EUR',
25487
- title: M$14('Euro', 'یورو'),
25526
+ title: M$15('Euro', 'یورو'),
25488
25527
  symbol: '€',
25489
25528
  isoNumber: '978',
25490
25529
  decimalPlaces: 2,
@@ -25497,7 +25536,7 @@ const financialCoreCurrencyMocks = [
25497
25536
  {
25498
25537
  id: AXPDataGenerator.uuid(),
25499
25538
  code: 'NZD',
25500
- title: M$14('New Zealand Dollar', 'دلار نیوزیلند'),
25539
+ title: M$15('New Zealand Dollar', 'دلار نیوزیلند'),
25501
25540
  symbol: 'NZ$',
25502
25541
  isoNumber: '554',
25503
25542
  decimalPlaces: 2,
@@ -25510,7 +25549,7 @@ const financialCoreCurrencyMocks = [
25510
25549
  {
25511
25550
  id: AXPDataGenerator.uuid(),
25512
25551
  code: 'AUD',
25513
- title: M$14('Australian Dollar', 'دلار استرالیا'),
25552
+ title: M$15('Australian Dollar', 'دلار استرالیا'),
25514
25553
  symbol: 'A$',
25515
25554
  isoNumber: '036',
25516
25555
  decimalPlaces: 2,
@@ -25523,7 +25562,7 @@ const financialCoreCurrencyMocks = [
25523
25562
  {
25524
25563
  id: AXPDataGenerator.uuid(),
25525
25564
  code: 'IRR',
25526
- title: M$14('Iranian Rial', 'ریال ایران'),
25565
+ title: M$15('Iranian Rial', 'ریال ایران'),
25527
25566
  symbol: '﷼',
25528
25567
  isoNumber: '364',
25529
25568
  decimalPlaces: 0,
@@ -27945,89 +27984,89 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
27945
27984
  }] });
27946
27985
 
27947
27986
  /** Competency / proficiency tiers for skills — not organizational job grades (see organization-management JobLevel mocks). */
27948
- const M$13 = createMultiLanguageString;
27987
+ const M$14 = createMultiLanguageString;
27949
27988
  const learningManagementSkillLevelMocks = [
27950
27989
  {
27951
27990
  id: AXPDataGenerator.uuid(),
27952
- title: M$13('Foundation', 'پایه'),
27991
+ title: M$14('Foundation', 'پایه'),
27953
27992
  levelNumber: 1,
27954
- description: M$13('Understands core concepts and requires supervision.', 'مفاهیم اصلی را درک می‌کند و نیاز به نظارت دارد.'),
27993
+ description: M$14('Understands core concepts and requires supervision.', 'مفاهیم اصلی را درک می‌کند و نیاز به نظارت دارد.'),
27955
27994
  },
27956
27995
  {
27957
27996
  id: AXPDataGenerator.uuid(),
27958
- title: M$13('Beginner', 'مبتدی'),
27997
+ title: M$14('Beginner', 'مبتدی'),
27959
27998
  levelNumber: 2,
27960
- description: M$13('Can perform basic tasks with guidance and support.', 'با راهنمایی و پشتیبانی می‌تواند وظایف پایه را انجام دهد.'),
27999
+ description: M$14('Can perform basic tasks with guidance and support.', 'با راهنمایی و پشتیبانی می‌تواند وظایف پایه را انجام دهد.'),
27961
28000
  },
27962
28001
  {
27963
28002
  id: AXPDataGenerator.uuid(),
27964
- title: M$13('Practitioner', 'کاربردی'),
28003
+ title: M$14('Practitioner', 'کاربردی'),
27965
28004
  levelNumber: 3,
27966
- description: M$13('Applies the skill independently in day-to-day scenarios.', 'مهارت را در سناریوهای روزمره به‌صورت مستقل به کار می‌گیرد.'),
28005
+ description: M$14('Applies the skill independently in day-to-day scenarios.', 'مهارت را در سناریوهای روزمره به‌صورت مستقل به کار می‌گیرد.'),
27967
28006
  },
27968
28007
  {
27969
28008
  id: AXPDataGenerator.uuid(),
27970
- title: M$13('Intermediate', 'متوسط'),
28009
+ title: M$14('Intermediate', 'متوسط'),
27971
28010
  levelNumber: 4,
27972
- description: M$13('Handles complex scenarios and troubleshoots common issues.', 'سناریوهای پیچیده را مدیریت می‌کند و مسائل رایج را عیب‌یابی می‌کند.'),
28011
+ description: M$14('Handles complex scenarios and troubleshoots common issues.', 'سناریوهای پیچیده را مدیریت می‌کند و مسائل رایج را عیب‌یابی می‌کند.'),
27973
28012
  },
27974
28013
  {
27975
28014
  id: AXPDataGenerator.uuid(),
27976
- title: M$13('Advanced', 'پیشرفته'),
28015
+ title: M$14('Advanced', 'پیشرفته'),
27977
28016
  levelNumber: 5,
27978
- description: M$13('Masters complex techniques and can optimize processes.', 'تکنیک‌های پیچیده را تسلط دارد و می‌تواند فرایندها را بهینه کند.'),
28017
+ description: M$14('Masters complex techniques and can optimize processes.', 'تکنیک‌های پیچیده را تسلط دارد و می‌تواند فرایندها را بهینه کند.'),
27979
28018
  },
27980
28019
  {
27981
28020
  id: AXPDataGenerator.uuid(),
27982
- title: M$13('Expert', 'خبره'),
28021
+ title: M$14('Expert', 'خبره'),
27983
28022
  levelNumber: 6,
27984
- description: M$13('Shapes best practices and mentors others effectively.', 'شیوه‌های برتر را شکل می‌دهد و دیگران را به‌خوبی راهنمایی می‌کند.'),
28023
+ description: M$14('Shapes best practices and mentors others effectively.', 'شیوه‌های برتر را شکل می‌دهد و دیگران را به‌خوبی راهنمایی می‌کند.'),
27985
28024
  },
27986
28025
  {
27987
28026
  id: AXPDataGenerator.uuid(),
27988
- title: M$13('Master', 'استاد'),
28027
+ title: M$14('Master', 'استاد'),
27989
28028
  levelNumber: 7,
27990
- description: M$13('Recognized authority who innovates and leads industry standards.', 'مرجع شناخته‌شده که نوآوری می‌کند و استانداردهای صنعت را رهبری می‌کند.'),
28029
+ description: M$14('Recognized authority who innovates and leads industry standards.', 'مرجع شناخته‌شده که نوآوری می‌کند و استانداردهای صنعت را رهبری می‌کند.'),
27991
28030
  },
27992
28031
  ];
27993
28032
 
27994
28033
  //#region ---- Imports ----
27995
28034
  //#endregion
27996
28035
  //#region ---- Skill category mocks ----
27997
- const M$12 = createMultiLanguageString;
28036
+ const M$13 = createMultiLanguageString;
27998
28037
  const learningManagementSkillCategoryMocks = [
27999
28038
  {
28000
28039
  id: AXPDataGenerator.uuid(),
28001
- title: M$12('Common Skills', 'مهارت‌های عمومی'),
28002
- description: M$12('Essential soft skills and competencies for all employees.', 'مهارت‌های نرم و شایستگی‌های پایه برای همه همکاران.'),
28040
+ title: M$13('Common Skills', 'مهارت‌های عمومی'),
28041
+ description: M$13('Essential soft skills and competencies for all employees.', 'مهارت‌های نرم و شایستگی‌های پایه برای همه همکاران.'),
28003
28042
  parentId: undefined,
28004
28043
  childrenCount: 0,
28005
28044
  },
28006
28045
  {
28007
28046
  id: AXPDataGenerator.uuid(),
28008
- title: M$12('Health & Safety Compliance', 'ایمنی، بهداشت و انطباق'),
28009
- description: M$12('Occupational health and safety compliance, standards, and regulations.', 'انطباق با الزامات ایمنی و بهداشت حرفه‌ای، استانداردها و مقررات.'),
28047
+ title: M$13('Health & Safety Compliance', 'ایمنی، بهداشت و انطباق'),
28048
+ description: M$13('Occupational health and safety compliance, standards, and regulations.', 'انطباق با الزامات ایمنی و بهداشت حرفه‌ای، استانداردها و مقررات.'),
28010
28049
  parentId: undefined,
28011
28050
  childrenCount: 0,
28012
28051
  },
28013
28052
  {
28014
28053
  id: AXPDataGenerator.uuid(),
28015
- title: M$12('Environmental Management', 'مدیریت زیست‌محیطی'),
28016
- description: M$12('Environmental protection, waste management, and sustainability practices.', 'حفاظت از محیط زیست، مدیریت پسماند و رویکردهای پایداری.'),
28054
+ title: M$13('Environmental Management', 'مدیریت زیست‌محیطی'),
28055
+ description: M$13('Environmental protection, waste management, and sustainability practices.', 'حفاظت از محیط زیست، مدیریت پسماند و رویکردهای پایداری.'),
28017
28056
  parentId: undefined,
28018
28057
  childrenCount: 0,
28019
28058
  },
28020
28059
  {
28021
28060
  id: AXPDataGenerator.uuid(),
28022
- title: M$12('Risk Assessment & Management', 'ارزیابی و مدیریت ریسک'),
28023
- description: M$12('Hazard identification, risk assessment, and risk mitigation strategies.', 'شناسایی خطر، ارزیابی ریسک و راهکارهای کاهش ریسک.'),
28061
+ title: M$13('Risk Assessment & Management', 'ارزیابی و مدیریت ریسک'),
28062
+ description: M$13('Hazard identification, risk assessment, and risk mitigation strategies.', 'شناسایی خطر، ارزیابی ریسک و راهکارهای کاهش ریسک.'),
28024
28063
  parentId: undefined,
28025
28064
  childrenCount: 0,
28026
28065
  },
28027
28066
  {
28028
28067
  id: AXPDataGenerator.uuid(),
28029
- title: M$12('Emergency Response & Preparedness', 'پاسخ و آمادگی اضطراری'),
28030
- description: M$12('Emergency procedures, incident response, and crisis management.', 'رویه‌های اضطراری، پاسخ به حادثه و مدیریت بحران.'),
28068
+ title: M$13('Emergency Response & Preparedness', 'پاسخ و آمادگی اضطراری'),
28069
+ description: M$13('Emergency procedures, incident response, and crisis management.', 'رویه‌های اضطراری، پاسخ به حادثه و مدیریت بحران.'),
28031
28070
  parentId: undefined,
28032
28071
  childrenCount: 0,
28033
28072
  },
@@ -28037,7 +28076,7 @@ const learningManagementSkillCategoryMocks = [
28037
28076
  //#region ---- Imports ----
28038
28077
  //#endregion
28039
28078
  //#region ---- Mock seed helpers ----
28040
- const M$11 = createMultiLanguageString;
28079
+ const M$12 = createMultiLanguageString;
28041
28080
  function findCategory$1(enDisplayTitle) {
28042
28081
  const cat = learningManagementSkillCategoryMocks.find((c) => resolveMultiLanguageString(c.title, 'en-US') === enDisplayTitle);
28043
28082
  if (!cat) {
@@ -28050,8 +28089,8 @@ function seedSkill(row) {
28050
28089
  return {
28051
28090
  id: AXPDataGenerator.uuid(),
28052
28091
  name: row.name,
28053
- title: M$11(row.titleEn, row.titleFa),
28054
- description: M$11(row.descEn, row.descFa),
28092
+ title: M$12(row.titleEn, row.titleFa),
28093
+ description: M$12(row.descEn, row.descFa),
28055
28094
  code: row.code,
28056
28095
  categoryIds: [cat.id],
28057
28096
  categories: [{ id: cat.id, title: cat.title }],
@@ -28517,117 +28556,117 @@ const SKILL_SEED = [
28517
28556
  const learningManagementSkillMocks = SKILL_SEED.map((row) => seedSkill(row));
28518
28557
  //#endregion
28519
28558
 
28520
- const M$10 = createMultiLanguageString;
28559
+ const M$11 = createMultiLanguageString;
28521
28560
  const JOB_LEVELS_MOCK = [
28522
28561
  {
28523
28562
  id: AXPDataGenerator.uuid(),
28524
- title: M$10('Employee', 'کارمند'),
28525
- description: M$10('Entry individual-contributor level focused on assigned tasks and daily execution.', 'سطح پایه فردی با تمرکز بر انجام وظایف محوله و اجرای روزانه.'),
28563
+ title: M$11('Employee', 'کارمند'),
28564
+ description: M$11('Entry individual-contributor level focused on assigned tasks and daily execution.', 'سطح پایه فردی با تمرکز بر انجام وظایف محوله و اجرای روزانه.'),
28526
28565
  level: 1,
28527
28566
  },
28528
28567
  {
28529
28568
  id: AXPDataGenerator.uuid(),
28530
- title: M$10('Specialist', 'کارشناس'),
28531
- description: M$10('Professional contributor with solid domain knowledge and reliable delivery.', 'متخصص حرفه‌ای با دانش مناسب حوزه و تحویل قابل اتکا.'),
28569
+ title: M$11('Specialist', 'کارشناس'),
28570
+ description: M$11('Professional contributor with solid domain knowledge and reliable delivery.', 'متخصص حرفه‌ای با دانش مناسب حوزه و تحویل قابل اتکا.'),
28532
28571
  level: 2,
28533
28572
  },
28534
28573
  {
28535
28574
  id: AXPDataGenerator.uuid(),
28536
- title: M$10('Senior Specialist', 'کارشناس ارشد'),
28537
- description: M$10('Experienced contributor who owns complex work and mentors less-experienced peers.', 'متخصص باتجربه که کارهای پیچیده را پیش می‌برد و به همکاران کم‌تجربه‌تر راهنمایی می‌دهد.'),
28575
+ title: M$11('Senior Specialist', 'کارشناس ارشد'),
28576
+ description: M$11('Experienced contributor who owns complex work and mentors less-experienced peers.', 'متخصص باتجربه که کارهای پیچیده را پیش می‌برد و به همکاران کم‌تجربه‌تر راهنمایی می‌دهد.'),
28538
28577
  level: 3,
28539
28578
  },
28540
28579
  {
28541
28580
  id: AXPDataGenerator.uuid(),
28542
- title: M$10('Supervisor', 'سرپرست'),
28543
- description: M$10('First-line operational leadership responsible for a team or shift.', 'رهبری عملیاتی خط اول با مسئولیت یک تیم یا شیفت.'),
28581
+ title: M$11('Supervisor', 'سرپرست'),
28582
+ description: M$11('First-line operational leadership responsible for a team or shift.', 'رهبری عملیاتی خط اول با مسئولیت یک تیم یا شیفت.'),
28544
28583
  level: 4,
28545
28584
  },
28546
28585
  {
28547
28586
  id: AXPDataGenerator.uuid(),
28548
- title: M$10('Deputy Manager', 'معاون مدیر'),
28549
- description: M$10('Supports managerial accountability and leads part of a function or unit.', 'پشتیبان مسئولیت‌های مدیریتی و هدایت بخشی از یک واحد یا عملکرد.'),
28587
+ title: M$11('Deputy Manager', 'معاون مدیر'),
28588
+ description: M$11('Supports managerial accountability and leads part of a function or unit.', 'پشتیبان مسئولیت‌های مدیریتی و هدایت بخشی از یک واحد یا عملکرد.'),
28550
28589
  level: 5,
28551
28590
  },
28552
28591
  {
28553
28592
  id: AXPDataGenerator.uuid(),
28554
- title: M$10('Manager', 'مدیر'),
28555
- description: M$10('Responsible for people, delivery, and performance outcomes of a defined unit.', 'مسئول افراد، تحویل کار و نتایج عملکردی یک واحد مشخص.'),
28593
+ title: M$11('Manager', 'مدیر'),
28594
+ description: M$11('Responsible for people, delivery, and performance outcomes of a defined unit.', 'مسئول افراد، تحویل کار و نتایج عملکردی یک واحد مشخص.'),
28556
28595
  level: 6,
28557
28596
  },
28558
28597
  {
28559
28598
  id: AXPDataGenerator.uuid(),
28560
- title: M$10('Senior Manager', 'مدیر ارشد'),
28561
- description: M$10('Leads multiple teams or sub-functions with broader planning and coordination scope.', 'هدایت چند تیم یا زیروظیفه با دامنه برنامه‌ریزی و هماهنگی گسترده‌تر.'),
28599
+ title: M$11('Senior Manager', 'مدیر ارشد'),
28600
+ description: M$11('Leads multiple teams or sub-functions with broader planning and coordination scope.', 'هدایت چند تیم یا زیروظیفه با دامنه برنامه‌ریزی و هماهنگی گسترده‌تر.'),
28562
28601
  level: 7,
28563
28602
  },
28564
28603
  {
28565
28604
  id: AXPDataGenerator.uuid(),
28566
- title: M$10('Director General', 'مدیرکل'),
28567
- description: M$10('Owns strategic direction and cross-functional alignment for a major domain.', 'مالک جهت‌گیری راهبردی و هم‌راستاسازی بین‌بخشی در یک حوزه اصلی.'),
28605
+ title: M$11('Director General', 'مدیرکل'),
28606
+ description: M$11('Owns strategic direction and cross-functional alignment for a major domain.', 'مالک جهت‌گیری راهبردی و هم‌راستاسازی بین‌بخشی در یک حوزه اصلی.'),
28568
28607
  level: 8,
28569
28608
  },
28570
28609
  {
28571
28610
  id: AXPDataGenerator.uuid(),
28572
- title: M$10('Vice President', 'معاونت سازمان'),
28573
- description: M$10('Executive role accountable for strategic outcomes across several domains.', 'نقش اجرایی مسئول نتایج راهبردی در چندین حوزه سازمانی.'),
28611
+ title: M$11('Vice President', 'معاونت سازمان'),
28612
+ description: M$11('Executive role accountable for strategic outcomes across several domains.', 'نقش اجرایی مسئول نتایج راهبردی در چندین حوزه سازمانی.'),
28574
28613
  level: 9,
28575
28614
  },
28576
28615
  {
28577
28616
  id: AXPDataGenerator.uuid(),
28578
- title: M$10('Chief Executive Officer', 'مدیرعامل'),
28579
- description: M$10('Top executive authority responsible for overall organizational strategy and performance.', 'بالاترین مقام اجرایی مسئول راهبرد کلان و عملکرد کلی سازمان.'),
28617
+ title: M$11('Chief Executive Officer', 'مدیرعامل'),
28618
+ description: M$11('Top executive authority responsible for overall organizational strategy and performance.', 'بالاترین مقام اجرایی مسئول راهبرد کلان و عملکرد کلی سازمان.'),
28580
28619
  level: 10,
28581
28620
  },
28582
28621
  ];
28583
28622
 
28584
- const M$$ = createMultiLanguageString;
28623
+ const M$10 = createMultiLanguageString;
28585
28624
  const organizationManagementResponsibilityLevelMocks = [
28586
28625
  {
28587
28626
  id: AXPDataGenerator.uuid(),
28588
- title: M$$('Not Involved', 'بدون دخالت'),
28627
+ title: M$10('Not Involved', 'بدون دخالت'),
28589
28628
  level: 1,
28590
- description: M$$('No responsibility or involvement in this area.', 'بدون مسئولیت یا مشارکت در این حوزه.'),
28629
+ description: M$10('No responsibility or involvement in this area.', 'بدون مسئولیت یا مشارکت در این حوزه.'),
28591
28630
  },
28592
28631
  {
28593
28632
  id: AXPDataGenerator.uuid(),
28594
- title: M$$('Informed', 'مطلع‌شونده'),
28633
+ title: M$10('Informed', 'مطلع‌شونده'),
28595
28634
  level: 2,
28596
- description: M$$('Kept in the loop and receives updates, but has no active responsibility.', 'در جریان قرار می‌گیرد اما مسئولیت اجرایی ندارد.'),
28635
+ description: M$10('Kept in the loop and receives updates, but has no active responsibility.', 'در جریان قرار می‌گیرد اما مسئولیت اجرایی ندارد.'),
28597
28636
  },
28598
28637
  {
28599
28638
  id: AXPDataGenerator.uuid(),
28600
- title: M$$('Consulted', 'مشاور'),
28639
+ title: M$10('Consulted', 'مشاور'),
28601
28640
  level: 3,
28602
- description: M$$('Provides input and expertise when needed, but does not execute.', 'در صورت نیاز ورودی و تخصص می‌دهد اما اجرا نمی‌کند.'),
28641
+ description: M$10('Provides input and expertise when needed, but does not execute.', 'در صورت نیاز ورودی و تخصص می‌دهد اما اجرا نمی‌کند.'),
28603
28642
  },
28604
28643
  {
28605
28644
  id: AXPDataGenerator.uuid(),
28606
- title: M$$('Responsible', 'مسئول اجرا'),
28645
+ title: M$10('Responsible', 'مسئول اجرا'),
28607
28646
  level: 4,
28608
- description: M$$('Executes the work and has direct responsibility for completion.', 'کار را اجرا می‌کند و مسئولیت مستقیم تکمیل دارد.'),
28647
+ description: M$10('Executes the work and has direct responsibility for completion.', 'کار را اجرا می‌کند و مسئولیت مستقیم تکمیل دارد.'),
28609
28648
  },
28610
28649
  {
28611
28650
  id: AXPDataGenerator.uuid(),
28612
- title: M$$('Accountable', 'پاسخ‌گو'),
28651
+ title: M$10('Accountable', 'پاسخ‌گو'),
28613
28652
  level: 5,
28614
- description: M$$('Owns the outcome and is answerable for the results.', 'مالک نتیجه است و در قبال نتایج پاسخ‌گوست.'),
28653
+ description: M$10('Owns the outcome and is answerable for the results.', 'مالک نتیجه است و در قبال نتایج پاسخ‌گوست.'),
28615
28654
  },
28616
28655
  {
28617
28656
  id: AXPDataGenerator.uuid(),
28618
- title: M$$('Lead Accountable', 'مسئول اصلی'),
28657
+ title: M$10('Lead Accountable', 'مسئول اصلی'),
28619
28658
  level: 6,
28620
- description: M$$('Primary owner with authority to make decisions and delegate work.', 'مالک اصلی با اختیار تصمیم‌گیری و تفویض کار.'),
28659
+ description: M$10('Primary owner with authority to make decisions and delegate work.', 'مالک اصلی با اختیار تصمیم‌گیری و تفویض کار.'),
28621
28660
  },
28622
28661
  {
28623
28662
  id: AXPDataGenerator.uuid(),
28624
- title: M$$('Ultimate Accountable', 'مسئول نهایی'),
28663
+ title: M$10('Ultimate Accountable', 'مسئول نهایی'),
28625
28664
  level: 7,
28626
- description: M$$('Final decision-maker with ultimate authority and full ownership.', 'تصمیم‌گیر نهایی با اختیار کامل و مالکیت مطلق.'),
28665
+ description: M$10('Final decision-maker with ultimate authority and full ownership.', 'تصمیم‌گیر نهایی با اختیار کامل و مالکیت مطلق.'),
28627
28666
  },
28628
28667
  ];
28629
28668
 
28630
- const M$_ = createMultiLanguageString;
28669
+ const M$$ = createMultiLanguageString;
28631
28670
  /** English category keys → id (stable lookup after localized titles). */
28632
28671
  const RESPONSIBILITY_CATEGORY_KEY_TO_ID = {};
28633
28672
  //#region ---- Responsibility category i18n (seed) ----
@@ -28704,8 +28743,8 @@ function generateResponsibilityCategories() {
28704
28743
  const de = descriptionMap[key] ?? '';
28705
28744
  categories.push({
28706
28745
  id,
28707
- title: M$_(key, rootTitleFa[key] ?? key),
28708
- description: M$_(de, RESPONSIBILITY_ROOT_CATEGORY_DESCRIPTION_FA[key] ?? de),
28746
+ title: M$$(key, rootTitleFa[key] ?? key),
28747
+ description: M$$(de, RESPONSIBILITY_ROOT_CATEGORY_DESCRIPTION_FA[key] ?? de),
28709
28748
  childrenCount: 0,
28710
28749
  });
28711
28750
  });
@@ -28747,8 +28786,8 @@ function generateResponsibilityCategories() {
28747
28786
  const de = descriptionMap[key] ?? '';
28748
28787
  categories.push({
28749
28788
  id,
28750
- title: M$_(key, RESPONSIBILITY_CHILD_CATEGORY_TITLE_FA[key] ?? key),
28751
- description: M$_(de, RESPONSIBILITY_CHILD_CATEGORY_DESCRIPTION_FA[key] ?? de),
28789
+ title: M$$(key, RESPONSIBILITY_CHILD_CATEGORY_TITLE_FA[key] ?? key),
28790
+ description: M$$(de, RESPONSIBILITY_CHILD_CATEGORY_DESCRIPTION_FA[key] ?? de),
28752
28791
  parentId,
28753
28792
  childrenCount: 0,
28754
28793
  });
@@ -28766,7 +28805,7 @@ function responsibilityCategoryRef(key) {
28766
28805
  }
28767
28806
  /** Multi-language title + description for a responsibility seed row (en retained for lookups). */
28768
28807
  function responsibilityMl(titleEn, titleFa, descEn, descFa) {
28769
- return { title: M$_(titleEn, titleFa), description: M$_(descEn, descFa) };
28808
+ return { title: M$$(titleEn, titleFa), description: M$$(descEn, descFa) };
28770
28809
  }
28771
28810
  const RESPONSIBILITIES_MOCK = [
28772
28811
  // Manufacturing Responsibilities
@@ -29022,7 +29061,7 @@ const RESPONSIBILITIES_MOCK = [
29022
29061
  },
29023
29062
  ];
29024
29063
 
29025
- const M$Z = createMultiLanguageString;
29064
+ const M$_ = createMultiLanguageString;
29026
29065
  //#region ---- Job definition category i18n (seed) ----
29027
29066
  const JOB_DEFINITION_ROOT_CATEGORY_TITLE_FA = {
29028
29067
  'Manufacturing Leadership': 'رهبری تولید',
@@ -29145,8 +29184,8 @@ function generateJobDefinitionCategories() {
29145
29184
  const de = descriptionMap[key] ?? '';
29146
29185
  categories.push({
29147
29186
  id,
29148
- title: M$Z(key, JOB_DEFINITION_ROOT_CATEGORY_TITLE_FA[key] ?? key),
29149
- description: M$Z(de, JOB_DEFINITION_ROOT_CATEGORY_DESCRIPTION_FA[key] ?? de),
29187
+ title: M$_(key, JOB_DEFINITION_ROOT_CATEGORY_TITLE_FA[key] ?? key),
29188
+ description: M$_(de, JOB_DEFINITION_ROOT_CATEGORY_DESCRIPTION_FA[key] ?? de),
29150
29189
  childrenCount: 0,
29151
29190
  });
29152
29191
  });
@@ -29200,8 +29239,8 @@ function generateJobDefinitionCategories() {
29200
29239
  const de = descriptionMap[key] ?? '';
29201
29240
  categories.push({
29202
29241
  id,
29203
- title: M$Z(key, JOB_DEFINITION_CHILD_CATEGORY_TITLE_FA[key] ?? key),
29204
- description: M$Z(de, JOB_DEFINITION_CHILD_CATEGORY_DESCRIPTION_FA[key] ?? de),
29242
+ title: M$_(key, JOB_DEFINITION_CHILD_CATEGORY_TITLE_FA[key] ?? key),
29243
+ description: M$_(de, JOB_DEFINITION_CHILD_CATEGORY_DESCRIPTION_FA[key] ?? de),
29205
29244
  parentId,
29206
29245
  childrenCount: 0,
29207
29246
  });
@@ -29427,8 +29466,8 @@ function generateJobDefinitions() {
29427
29466
  'Professional job definition with specific responsibilities and requirements.';
29428
29467
  jobDefinitions.push({
29429
29468
  id: AXPDataGenerator.uuid(),
29430
- title: M$Z(title, JOB_DEFINITION_CHILD_CATEGORY_TITLE_FA[title] ?? title),
29431
- description: M$Z(desc, JOB_DEFINITION_ENTITY_DESCRIPTION_FA[title] ?? desc),
29469
+ title: M$_(title, JOB_DEFINITION_CHILD_CATEGORY_TITLE_FA[title] ?? title),
29470
+ description: M$_(desc, JOB_DEFINITION_ENTITY_DESCRIPTION_FA[title] ?? desc),
29432
29471
  categoryIds: [parentObj.id],
29433
29472
  categories: [{ id: parentObj.id, title: parentObj.title }],
29434
29473
  responsibilityLevelIds,
@@ -29783,7 +29822,7 @@ async function axcSyncAllEmployeeDenormalizedOrgFields(storage, orgRoot, hcmRoot
29783
29822
  }
29784
29823
  //#endregion
29785
29824
 
29786
- const M$Y = createMultiLanguageString;
29825
+ const M$Z = createMultiLanguageString;
29787
29826
  const en = (s) => resolveMultiLanguageString(s, 'en-US');
29788
29827
  /** English job title → Persian for {@link createMultiLanguageString}. */
29789
29828
  const POSITION_TITLE_FA = {
@@ -29844,7 +29883,7 @@ const POSITION_TITLE_FA = {
29844
29883
  'HSE Manager': 'مدیر HSE',
29845
29884
  };
29846
29885
  function positionTitleMl(titleEn) {
29847
- return M$Y(titleEn, POSITION_TITLE_FA[titleEn] ?? titleEn);
29886
+ return M$Z(titleEn, POSITION_TITLE_FA[titleEn] ?? titleEn);
29848
29887
  }
29849
29888
  function generatePositionsCategory() {
29850
29889
  const categories = [];
@@ -29890,7 +29929,7 @@ function generatePositionsCategory() {
29890
29929
  roots.forEach(({ en: tEn, fa: tFa, enDesc, faDesc }) => {
29891
29930
  const id = AXPDataGenerator.uuid();
29892
29931
  ids.set(tEn, id);
29893
- categories.push({ id, title: M$Y(tEn, tFa), description: M$Y(enDesc, faDesc), childrenCount: 0 });
29932
+ categories.push({ id, title: M$Z(tEn, tFa), description: M$Z(enDesc, faDesc), childrenCount: 0 });
29894
29933
  });
29895
29934
  const children = [
29896
29935
  {
@@ -30043,8 +30082,8 @@ function generatePositionsCategory() {
30043
30082
  ids.set(tEn, id);
30044
30083
  categories.push({
30045
30084
  id,
30046
- title: M$Y(tEn, tFa),
30047
- description: M$Y(enDesc, faDesc),
30085
+ title: M$Z(tEn, tFa),
30086
+ description: M$Z(enDesc, faDesc),
30048
30087
  parentId,
30049
30088
  childrenCount: 0,
30050
30089
  });
@@ -30057,63 +30096,63 @@ function generatePositionsCategory() {
30057
30096
  }
30058
30097
  const POSITIONS_CATEGORY_MOCK = generatePositionsCategory();
30059
30098
  const POSITION_DESCRIPTIONS = {
30060
- 'Junior Frontend Engineer': M$Y('Entry-level frontend developer responsible for building user interfaces using HTML, CSS, and JavaScript frameworks. Focuses on learning best practices and contributing to team projects.', 'توسعه‌دهنده فرانت‌اند سطح ورودی؛ ساخت رابط کاربری با HTML، CSS و فریم‌ورک‌های جاوااسکریپت و یادگیری بهترین شیوه‌ها.'),
30061
- 'Frontend Engineer': M$Y('Mid-level frontend developer who builds responsive web applications, implements UI/UX designs, and collaborates with design and backend teams.', 'مهندس فرانت‌اند میانی؛ ساخت وب‌اپلیکیشن‌های واکنش‌گرا و همکاری با تیم طراحی و بک‌اند.'),
30062
- 'Senior Frontend Engineer': M$Y('Experienced frontend developer who leads technical decisions, mentors junior developers, and architects scalable frontend solutions.', 'مهندس ارشد فرانت‌اند؛ تصمیمات فنی، منتورینگ و معماری راه‌حل‌های مقیاس‌پذیر.'),
30063
- 'Frontend Architect': M$Y('Senior technical leader responsible for frontend architecture decisions, performance optimization, and setting technical standards for the frontend team.', 'رهبر فنی معماری فرانت‌اند، بهینه‌سازی عملکرد و استانداردهای فنی تیم.'),
30064
- 'Junior Backend Engineer': M$Y('Entry-level backend developer focused on building server-side logic, APIs, and database interactions. Learns backend technologies and best practices.', 'مهندس بک‌اند جونیور؛ منطق سمت سرور، API و پایگاه داده.'),
30065
- 'Backend Engineer': M$Y('Mid-level backend developer who designs and implements server-side applications, APIs, and database schemas.', 'مهندس بک‌اند میانی؛ طراحی و پیاده‌سازی اپلیکیشن سمت سرور و API.'),
30066
- 'Senior Backend Engineer': M$Y('Experienced backend developer who leads technical decisions, optimizes system performance, and mentors junior developers.', 'مهندس ارشد بک‌اند؛ بهینه‌سازی عملکرد و رهبری فنی.'),
30067
- 'Backend Architect': M$Y('Senior technical leader responsible for backend architecture, system design, and technical strategy for server-side systems.', 'معمار بک‌اند؛ طراحی سیستم و استراتژی فنی سمت سرور.'),
30068
- 'Junior Mobile Developer': M$Y('Entry-level mobile developer focused on building native or cross-platform mobile applications. Learns mobile development frameworks and best practices.', 'توسعه‌دهنده موبایل جونیور؛ اپلیکیشن بومی یا کراس‌پلتفرم.'),
30069
- 'Mobile Developer': M$Y('Mid-level mobile developer who creates mobile apps, implements features, and ensures app performance and user experience.', 'توسعه‌دهنده موبایل میانی؛ پیاده‌سازی ویژگی‌ها و تجربه کاربری.'),
30070
- 'Senior Mobile Developer': M$Y('Experienced mobile developer who leads mobile development initiatives, optimizes app performance, and mentors junior developers.', 'توسعه‌دهنده ارشد موبایل؛ رهبری فنی و بهینه‌سازی.'),
30071
- 'Mobile Architect': M$Y('Senior technical leader responsible for mobile architecture decisions, platform strategy, and technical standards for mobile development.', 'معمار موبایل؛ استراتژی پلتفرم و استانداردها.'),
30072
- 'QA Analyst': M$Y('Entry-level quality assurance professional who executes test plans, reports bugs, and ensures software quality through systematic testing.', 'تحلیلگر QA؛ اجرای طرح تست و گزارش باگ.'),
30073
- 'QA Engineer': M$Y('Mid-level QA professional who designs test strategies, automates testing processes, and collaborates with development teams.', 'مهندس QA؛ استراتژی تست و اتوماسیون.'),
30074
- 'Senior QA Engineer': M$Y('Experienced QA professional who leads testing initiatives, implements quality processes, and mentors junior QA team members.', 'مهندس ارشد QA؛ فرآیندهای کیفیت و منتورینگ.'),
30075
- 'QA Manager': M$Y('Senior leader responsible for managing the QA team, establishing quality standards, and ensuring overall software quality.', 'مدیر QA؛ استانداردها و کیفیت نرم‌افزار.'),
30076
- 'Engineering Team Lead': M$Y('Technical leader who manages a small engineering team, provides technical guidance, and ensures project delivery.', 'لید فنی تیم کوچک مهندسی و تحویل پروژه.'),
30077
- 'Engineering Manager': M$Y('People manager responsible for team development, project planning, and technical decision-making for engineering teams.', 'مدیر مهندسی؛ توسعه تیم و برنامه‌ریزی.'),
30078
- 'Director of Engineering': M$Y('Senior leader who manages multiple engineering teams, sets technical strategy, and drives engineering excellence.', 'مدیر ارشد مهندسی؛ چند تیم و استراتژی فنی.'),
30079
- 'VP of Engineering': M$Y('Executive leader responsible for overall engineering strategy, team growth, and technical direction across the organization.', 'معاون مهندسی؛ استراتژی و جهت فنی سازمان.'),
30080
- 'Associate Product Manager': M$Y('Entry-level product professional who supports product development, conducts research, and assists with product strategy.', 'همکار مدیر محصول؛ پشتیبانی از توسعه و تحقیق.'),
30081
- 'Product Manager': M$Y('Mid-level product professional who defines product vision, prioritizes features, and collaborates with cross-functional teams.', 'مدیر محصول؛ چشم‌انداز و اولویت‌بندی ویژگی‌ها.'),
30082
- 'Senior Product Manager': M$Y('Experienced product professional who leads product strategy, mentors junior PMs, and drives product success.', 'مدیر ارشد محصول؛ استراتژی و منتورینگ.'),
30083
- 'Director of Product': M$Y('Senior leader responsible for product portfolio strategy, team leadership, and product vision across multiple products.', 'مدیر ارشد محصول؛ پرتفوی و چشم‌انداز چند محصول.'),
30084
- 'UX Designer': M$Y('Design professional focused on user experience research, user flows, and creating intuitive user interfaces.', 'طراح UX؛ تحقیق کاربر و جریان‌های تعاملی.'),
30085
- 'UI Designer': M$Y('Visual designer who creates user interface designs, design systems, and ensures visual consistency across products.', 'طراح UI؛ سیستم طراحی و یکپارچگی بصری.'),
30086
- 'Senior UX Designer': M$Y('Experienced UX professional who leads design initiatives, mentors junior designers, and drives user experience strategy.', 'طراح ارشد UX؛ رهبری طرح‌های طراحی.'),
30087
- 'UX Design Manager': M$Y('Senior leader responsible for managing the design team, establishing design processes, and ensuring design quality.', 'مدیر طراحی UX؛ فرآیندها و کیفیت طراحی.'),
30088
- 'IT Support Specialist': M$Y('Entry-level IT professional who provides technical support, troubleshoots issues, and maintains IT systems.', 'کارشناس پشتیبانی IT؛ عیب‌یابی و نگهداری.'),
30089
- 'Systems Administrator': M$Y('Mid-level IT professional who manages server infrastructure, implements security measures, and ensures system reliability.', 'مدیر سیستم؛ زیرساخت سرور و امنیت.'),
30090
- 'Sales Associate': M$Y('Entry-level sales professional who supports sales activities, qualifies leads, and assists with customer relationships.', 'همکار فروش؛ سرنخ و ارتباط با مشتری.'),
30091
- 'Account Executive': M$Y('Mid-level sales professional who manages customer accounts, drives sales growth, and builds client relationships.', 'مسئول حساب؛ رشد فروش و روابط مشتری.'),
30092
- 'Sales Manager': M$Y('Senior sales professional who leads sales teams, develops sales strategies, and drives revenue growth.', 'مدیر فروش؛ تیم و استراتژی فروش.'),
30093
- 'VP of Sales': M$Y('Executive leader responsible for overall sales strategy, team leadership, and revenue generation across the organization.', 'معاون فروش؛ استراتژی و درآمد.'),
30094
- CTO: M$Y('Chief Technology Officer responsible for technology strategy, innovation, and technical leadership across the organization.', 'مدیر ارشد فناوری؛ استراتژی و نوآوری فنی.'),
30095
- CEO: M$Y('Chief Executive Officer responsible for overall company strategy, leadership, and business success.', 'مدیرعامل؛ استراتژی و رهبری کسب‌وکار.'),
30096
- CFO: M$Y('Chief Financial Officer responsible for financial strategy, planning, and financial operations.', 'مدیر ارشد مالی؛ برنامه‌ریزی و عملیات مالی.'),
30097
- COO: M$Y('Chief Operating Officer responsible for operational excellence, process optimization, and day-to-day business operations.', 'مدیر ارشد عملیات؛ بهینه‌سازی فرآیندها.'),
30098
- 'DevOps Engineer': M$Y('Mid-level DevOps professional who automates deployment processes, manages infrastructure, and ensures system reliability.', 'مهندس دوآپس؛ اتوماسیون استقرار و زیرساخت.'),
30099
- 'Senior DevOps Engineer': M$Y('Experienced DevOps professional who leads infrastructure initiatives, optimizes deployment processes, and mentors junior team members.', 'مهندس ارشد دوآپس؛ رهبری زیرساخت.'),
30100
- 'DevOps Manager': M$Y('Senior leader responsible for managing DevOps teams, establishing best practices, and driving operational excellence.', 'مدیر دوآپس؛ بهترین شیوه‌ها و عملیات.'),
30101
- 'Director of DevOps': M$Y('Senior leader responsible for DevOps strategy, infrastructure planning, and technical leadership for operations teams.', 'مدیر ارشد دوآپس؛ استراتژی و برنامه زیرساخت.'),
30102
- 'Production Supervisor': M$Y('Leads production lines and teams, manages shift performance, and ensures production targets and quality standards are met.', 'سرپرست خط تولید؛ اهداف تولید و استانداردهای کیفیت.'),
30103
- 'Maintenance Technician': M$Y('Executes routine and corrective maintenance tasks to ensure equipment uptime.', 'تکنسین نگهداری؛ تعمیرات روزمره و اصلاحی.'),
30104
- 'Maintenance Engineer': M$Y('Plans maintenance strategies, analyzes failures, and drives reliability improvements.', 'مهندس نگهداری؛ استراتژی و قابلیت اطمینان.'),
30105
- 'Quality Inspector': M$Y('Performs incoming, in-process, and final inspections to ensure product conformance.', 'بازرس کیفیت؛ بازرسی ورودی، میانی و نهایی.'),
30106
- 'Quality Engineer': M$Y('Develops control plans, handles nonconformances, and leads continuous improvement initiatives.', 'مهندس کیفیت؛ طرح کنترل و بهبود مستمر.'),
30107
- 'Procurement Specialist': M$Y('Sources materials, negotiates contracts, and manages purchase orders.', 'کارشناس تدارکات؛ منبع‌یابی و قرارداد.'),
30108
- 'Warehouse Associate': M$Y('Handles receiving, storage, picking, packing, and shipping operations.', 'همکار انبار؛ دریافت، انبارداری و ارسال.'),
30109
- 'Warehouse Supervisor': M$Y('Oversees warehouse staff and processes, ensuring accuracy and on-time shipments.', 'سرپرست انبار؛ دقت و به‌موقع بودن ارسال.'),
30110
- 'Production Planner': M$Y('Creates production schedules, coordinates materials and capacity, and monitors adherence.', 'برنامه‌ریز تولید؛ زمان‌بندی و ظرفیت.'),
30111
- 'HSE Officer': M$Y('Professional supporting health and safety initiatives, audits, and safety training across operations.', 'مسئول HSE؛ ممیزی و آموزش ایمنی.'),
30112
- 'Safety Officer': M$Y('Specialist enforcing safety standards, conducting inspections, and coordinating incident investigations.', 'مسئول ایمنی؛ استانداردها و بازرسی.'),
30113
- 'Environmental Specialist': M$Y('Professional overseeing environmental compliance, waste management, and sustainability reporting.', 'کارشناس محیط زیست؛ انطباق و گزارش پایداری.'),
30114
- 'HSE Manager': M$Y('Leader managing HSE programs, regulatory compliance, and continuous improvement in safety performance.', 'مدیر HSE؛ برنامه‌ها و انطباق مقررات.'),
30099
+ 'Junior Frontend Engineer': M$Z('Entry-level frontend developer responsible for building user interfaces using HTML, CSS, and JavaScript frameworks. Focuses on learning best practices and contributing to team projects.', 'توسعه‌دهنده فرانت‌اند سطح ورودی؛ ساخت رابط کاربری با HTML، CSS و فریم‌ورک‌های جاوااسکریپت و یادگیری بهترین شیوه‌ها.'),
30100
+ 'Frontend Engineer': M$Z('Mid-level frontend developer who builds responsive web applications, implements UI/UX designs, and collaborates with design and backend teams.', 'مهندس فرانت‌اند میانی؛ ساخت وب‌اپلیکیشن‌های واکنش‌گرا و همکاری با تیم طراحی و بک‌اند.'),
30101
+ 'Senior Frontend Engineer': M$Z('Experienced frontend developer who leads technical decisions, mentors junior developers, and architects scalable frontend solutions.', 'مهندس ارشد فرانت‌اند؛ تصمیمات فنی، منتورینگ و معماری راه‌حل‌های مقیاس‌پذیر.'),
30102
+ 'Frontend Architect': M$Z('Senior technical leader responsible for frontend architecture decisions, performance optimization, and setting technical standards for the frontend team.', 'رهبر فنی معماری فرانت‌اند، بهینه‌سازی عملکرد و استانداردهای فنی تیم.'),
30103
+ 'Junior Backend Engineer': M$Z('Entry-level backend developer focused on building server-side logic, APIs, and database interactions. Learns backend technologies and best practices.', 'مهندس بک‌اند جونیور؛ منطق سمت سرور، API و پایگاه داده.'),
30104
+ 'Backend Engineer': M$Z('Mid-level backend developer who designs and implements server-side applications, APIs, and database schemas.', 'مهندس بک‌اند میانی؛ طراحی و پیاده‌سازی اپلیکیشن سمت سرور و API.'),
30105
+ 'Senior Backend Engineer': M$Z('Experienced backend developer who leads technical decisions, optimizes system performance, and mentors junior developers.', 'مهندس ارشد بک‌اند؛ بهینه‌سازی عملکرد و رهبری فنی.'),
30106
+ 'Backend Architect': M$Z('Senior technical leader responsible for backend architecture, system design, and technical strategy for server-side systems.', 'معمار بک‌اند؛ طراحی سیستم و استراتژی فنی سمت سرور.'),
30107
+ 'Junior Mobile Developer': M$Z('Entry-level mobile developer focused on building native or cross-platform mobile applications. Learns mobile development frameworks and best practices.', 'توسعه‌دهنده موبایل جونیور؛ اپلیکیشن بومی یا کراس‌پلتفرم.'),
30108
+ 'Mobile Developer': M$Z('Mid-level mobile developer who creates mobile apps, implements features, and ensures app performance and user experience.', 'توسعه‌دهنده موبایل میانی؛ پیاده‌سازی ویژگی‌ها و تجربه کاربری.'),
30109
+ 'Senior Mobile Developer': M$Z('Experienced mobile developer who leads mobile development initiatives, optimizes app performance, and mentors junior developers.', 'توسعه‌دهنده ارشد موبایل؛ رهبری فنی و بهینه‌سازی.'),
30110
+ 'Mobile Architect': M$Z('Senior technical leader responsible for mobile architecture decisions, platform strategy, and technical standards for mobile development.', 'معمار موبایل؛ استراتژی پلتفرم و استانداردها.'),
30111
+ 'QA Analyst': M$Z('Entry-level quality assurance professional who executes test plans, reports bugs, and ensures software quality through systematic testing.', 'تحلیلگر QA؛ اجرای طرح تست و گزارش باگ.'),
30112
+ 'QA Engineer': M$Z('Mid-level QA professional who designs test strategies, automates testing processes, and collaborates with development teams.', 'مهندس QA؛ استراتژی تست و اتوماسیون.'),
30113
+ 'Senior QA Engineer': M$Z('Experienced QA professional who leads testing initiatives, implements quality processes, and mentors junior QA team members.', 'مهندس ارشد QA؛ فرآیندهای کیفیت و منتورینگ.'),
30114
+ 'QA Manager': M$Z('Senior leader responsible for managing the QA team, establishing quality standards, and ensuring overall software quality.', 'مدیر QA؛ استانداردها و کیفیت نرم‌افزار.'),
30115
+ 'Engineering Team Lead': M$Z('Technical leader who manages a small engineering team, provides technical guidance, and ensures project delivery.', 'لید فنی تیم کوچک مهندسی و تحویل پروژه.'),
30116
+ 'Engineering Manager': M$Z('People manager responsible for team development, project planning, and technical decision-making for engineering teams.', 'مدیر مهندسی؛ توسعه تیم و برنامه‌ریزی.'),
30117
+ 'Director of Engineering': M$Z('Senior leader who manages multiple engineering teams, sets technical strategy, and drives engineering excellence.', 'مدیر ارشد مهندسی؛ چند تیم و استراتژی فنی.'),
30118
+ 'VP of Engineering': M$Z('Executive leader responsible for overall engineering strategy, team growth, and technical direction across the organization.', 'معاون مهندسی؛ استراتژی و جهت فنی سازمان.'),
30119
+ 'Associate Product Manager': M$Z('Entry-level product professional who supports product development, conducts research, and assists with product strategy.', 'همکار مدیر محصول؛ پشتیبانی از توسعه و تحقیق.'),
30120
+ 'Product Manager': M$Z('Mid-level product professional who defines product vision, prioritizes features, and collaborates with cross-functional teams.', 'مدیر محصول؛ چشم‌انداز و اولویت‌بندی ویژگی‌ها.'),
30121
+ 'Senior Product Manager': M$Z('Experienced product professional who leads product strategy, mentors junior PMs, and drives product success.', 'مدیر ارشد محصول؛ استراتژی و منتورینگ.'),
30122
+ 'Director of Product': M$Z('Senior leader responsible for product portfolio strategy, team leadership, and product vision across multiple products.', 'مدیر ارشد محصول؛ پرتفوی و چشم‌انداز چند محصول.'),
30123
+ 'UX Designer': M$Z('Design professional focused on user experience research, user flows, and creating intuitive user interfaces.', 'طراح UX؛ تحقیق کاربر و جریان‌های تعاملی.'),
30124
+ 'UI Designer': M$Z('Visual designer who creates user interface designs, design systems, and ensures visual consistency across products.', 'طراح UI؛ سیستم طراحی و یکپارچگی بصری.'),
30125
+ 'Senior UX Designer': M$Z('Experienced UX professional who leads design initiatives, mentors junior designers, and drives user experience strategy.', 'طراح ارشد UX؛ رهبری طرح‌های طراحی.'),
30126
+ 'UX Design Manager': M$Z('Senior leader responsible for managing the design team, establishing design processes, and ensuring design quality.', 'مدیر طراحی UX؛ فرآیندها و کیفیت طراحی.'),
30127
+ 'IT Support Specialist': M$Z('Entry-level IT professional who provides technical support, troubleshoots issues, and maintains IT systems.', 'کارشناس پشتیبانی IT؛ عیب‌یابی و نگهداری.'),
30128
+ 'Systems Administrator': M$Z('Mid-level IT professional who manages server infrastructure, implements security measures, and ensures system reliability.', 'مدیر سیستم؛ زیرساخت سرور و امنیت.'),
30129
+ 'Sales Associate': M$Z('Entry-level sales professional who supports sales activities, qualifies leads, and assists with customer relationships.', 'همکار فروش؛ سرنخ و ارتباط با مشتری.'),
30130
+ 'Account Executive': M$Z('Mid-level sales professional who manages customer accounts, drives sales growth, and builds client relationships.', 'مسئول حساب؛ رشد فروش و روابط مشتری.'),
30131
+ 'Sales Manager': M$Z('Senior sales professional who leads sales teams, develops sales strategies, and drives revenue growth.', 'مدیر فروش؛ تیم و استراتژی فروش.'),
30132
+ 'VP of Sales': M$Z('Executive leader responsible for overall sales strategy, team leadership, and revenue generation across the organization.', 'معاون فروش؛ استراتژی و درآمد.'),
30133
+ CTO: M$Z('Chief Technology Officer responsible for technology strategy, innovation, and technical leadership across the organization.', 'مدیر ارشد فناوری؛ استراتژی و نوآوری فنی.'),
30134
+ CEO: M$Z('Chief Executive Officer responsible for overall company strategy, leadership, and business success.', 'مدیرعامل؛ استراتژی و رهبری کسب‌وکار.'),
30135
+ CFO: M$Z('Chief Financial Officer responsible for financial strategy, planning, and financial operations.', 'مدیر ارشد مالی؛ برنامه‌ریزی و عملیات مالی.'),
30136
+ COO: M$Z('Chief Operating Officer responsible for operational excellence, process optimization, and day-to-day business operations.', 'مدیر ارشد عملیات؛ بهینه‌سازی فرآیندها.'),
30137
+ 'DevOps Engineer': M$Z('Mid-level DevOps professional who automates deployment processes, manages infrastructure, and ensures system reliability.', 'مهندس دوآپس؛ اتوماسیون استقرار و زیرساخت.'),
30138
+ 'Senior DevOps Engineer': M$Z('Experienced DevOps professional who leads infrastructure initiatives, optimizes deployment processes, and mentors junior team members.', 'مهندس ارشد دوآپس؛ رهبری زیرساخت.'),
30139
+ 'DevOps Manager': M$Z('Senior leader responsible for managing DevOps teams, establishing best practices, and driving operational excellence.', 'مدیر دوآپس؛ بهترین شیوه‌ها و عملیات.'),
30140
+ 'Director of DevOps': M$Z('Senior leader responsible for DevOps strategy, infrastructure planning, and technical leadership for operations teams.', 'مدیر ارشد دوآپس؛ استراتژی و برنامه زیرساخت.'),
30141
+ 'Production Supervisor': M$Z('Leads production lines and teams, manages shift performance, and ensures production targets and quality standards are met.', 'سرپرست خط تولید؛ اهداف تولید و استانداردهای کیفیت.'),
30142
+ 'Maintenance Technician': M$Z('Executes routine and corrective maintenance tasks to ensure equipment uptime.', 'تکنسین نگهداری؛ تعمیرات روزمره و اصلاحی.'),
30143
+ 'Maintenance Engineer': M$Z('Plans maintenance strategies, analyzes failures, and drives reliability improvements.', 'مهندس نگهداری؛ استراتژی و قابلیت اطمینان.'),
30144
+ 'Quality Inspector': M$Z('Performs incoming, in-process, and final inspections to ensure product conformance.', 'بازرس کیفیت؛ بازرسی ورودی، میانی و نهایی.'),
30145
+ 'Quality Engineer': M$Z('Develops control plans, handles nonconformances, and leads continuous improvement initiatives.', 'مهندس کیفیت؛ طرح کنترل و بهبود مستمر.'),
30146
+ 'Procurement Specialist': M$Z('Sources materials, negotiates contracts, and manages purchase orders.', 'کارشناس تدارکات؛ منبع‌یابی و قرارداد.'),
30147
+ 'Warehouse Associate': M$Z('Handles receiving, storage, picking, packing, and shipping operations.', 'همکار انبار؛ دریافت، انبارداری و ارسال.'),
30148
+ 'Warehouse Supervisor': M$Z('Oversees warehouse staff and processes, ensuring accuracy and on-time shipments.', 'سرپرست انبار؛ دقت و به‌موقع بودن ارسال.'),
30149
+ 'Production Planner': M$Z('Creates production schedules, coordinates materials and capacity, and monitors adherence.', 'برنامه‌ریز تولید؛ زمان‌بندی و ظرفیت.'),
30150
+ 'HSE Officer': M$Z('Professional supporting health and safety initiatives, audits, and safety training across operations.', 'مسئول HSE؛ ممیزی و آموزش ایمنی.'),
30151
+ 'Safety Officer': M$Z('Specialist enforcing safety standards, conducting inspections, and coordinating incident investigations.', 'مسئول ایمنی؛ استانداردها و بازرسی.'),
30152
+ 'Environmental Specialist': M$Z('Professional overseeing environmental compliance, waste management, and sustainability reporting.', 'کارشناس محیط زیست؛ انطباق و گزارش پایداری.'),
30153
+ 'HSE Manager': M$Z('Leader managing HSE programs, regulatory compliance, and continuous improvement in safety performance.', 'مدیر HSE؛ برنامه‌ها و انطباق مقررات.'),
30115
30154
  };
30116
- const DEFAULT_POSITION_DESC = M$Y('Professional position with specific responsibilities and requirements.', 'موقعیت شغلی حرفه‌ای با مسئولیت‌ها و الزامات مشخص.');
30155
+ const DEFAULT_POSITION_DESC = M$Z('Professional position with specific responsibilities and requirements.', 'موقعیت شغلی حرفه‌ای با مسئولیت‌ها و الزامات مشخص.');
30117
30156
  function generatePositions() {
30118
30157
  const positions = [];
30119
30158
  const categories = POSITIONS_CATEGORY_MOCK;
@@ -30219,12 +30258,12 @@ const POSITIONS_MOCK = (() => {
30219
30258
  return positions;
30220
30259
  })();
30221
30260
 
30222
- const M$X = createMultiLanguageString;
30261
+ const M$Y = createMultiLanguageString;
30223
30262
  const uuid$m = AXPDataGenerator.uuid;
30224
30263
  const BUSINESS_UNIT_TYPES_MOCK = [
30225
30264
  {
30226
30265
  id: uuid$m(),
30227
- title: M$X('Division', 'بخش'),
30266
+ title: M$Y('Division', 'بخش'),
30228
30267
  name: 'division',
30229
30268
  isLocationBased: true,
30230
30269
  allowsDirectPositions: true,
@@ -30233,7 +30272,7 @@ const BUSINESS_UNIT_TYPES_MOCK = [
30233
30272
  },
30234
30273
  {
30235
30274
  id: uuid$m(),
30236
- title: M$X('Department', 'دپارتمان'),
30275
+ title: M$Y('Department', 'دپارتمان'),
30237
30276
  name: 'department',
30238
30277
  isLocationBased: false,
30239
30278
  allowsDirectPositions: true,
@@ -30242,7 +30281,7 @@ const BUSINESS_UNIT_TYPES_MOCK = [
30242
30281
  },
30243
30282
  {
30244
30283
  id: uuid$m(),
30245
- title: M$X('Branch', 'شعبه'),
30284
+ title: M$Y('Branch', 'شعبه'),
30246
30285
  name: 'branch',
30247
30286
  isLocationBased: true,
30248
30287
  allowsDirectPositions: false,
@@ -30488,7 +30527,7 @@ const BUSINESS_UNITS_MOCK = (() => {
30488
30527
  return items;
30489
30528
  })();
30490
30529
 
30491
- const M$W = createMultiLanguageString;
30530
+ const M$X = createMultiLanguageString;
30492
30531
  const educationLevelIds = {
30493
30532
  lessThanHighSchool: AXPDataGenerator.uuid(),
30494
30533
  highSchool: AXPDataGenerator.uuid(),
@@ -30501,42 +30540,42 @@ const educationLevelIds = {
30501
30540
  const educationLevelMocks = [
30502
30541
  {
30503
30542
  id: educationLevelIds.lessThanHighSchool,
30504
- title: M$W('Less than high school', 'زیر دیپلم'),
30505
- description: M$W('Education below high school completion', 'تحصیلات زیر پایان دبیرستان'),
30543
+ title: M$X('Less than high school', 'زیر دیپلم'),
30544
+ description: M$X('Education below high school completion', 'تحصیلات زیر پایان دبیرستان'),
30506
30545
  },
30507
30546
  {
30508
30547
  id: educationLevelIds.highSchool,
30509
- title: M$W('High school', 'دبیرستان'),
30510
- description: M$W('High school diploma or equivalent', 'دیپلم دبیرستان یا معادل'),
30548
+ title: M$X('High school', 'دبیرستان'),
30549
+ description: M$X('High school diploma or equivalent', 'دیپلم دبیرستان یا معادل'),
30511
30550
  },
30512
30551
  {
30513
30552
  id: educationLevelIds.bachelors,
30514
- title: M$W("Bachelor's degree", 'کارشناسی'),
30515
- description: M$W('Undergraduate university degree', 'مدرک کارشناسی دانشگاهی'),
30553
+ title: M$X("Bachelor's degree", 'کارشناسی'),
30554
+ description: M$X('Undergraduate university degree', 'مدرک کارشناسی دانشگاهی'),
30516
30555
  },
30517
30556
  {
30518
30557
  id: educationLevelIds.masters,
30519
- title: M$W("Master's degree", 'کارشناسی ارشد'),
30520
- description: M$W('Graduate university degree', 'مدرک تحصیلات تکمیلی'),
30558
+ title: M$X("Master's degree", 'کارشناسی ارشد'),
30559
+ description: M$X('Graduate university degree', 'مدرک تحصیلات تکمیلی'),
30521
30560
  },
30522
30561
  {
30523
30562
  id: educationLevelIds.doctorate,
30524
- title: M$W('Doctorate', 'دکتری'),
30525
- description: M$W('Doctoral or professional doctorate degree', 'دکتری تخصصی یا حرفه‌ای'),
30563
+ title: M$X('Doctorate', 'دکتری'),
30564
+ description: M$X('Doctoral or professional doctorate degree', 'دکتری تخصصی یا حرفه‌ای'),
30526
30565
  },
30527
30566
  {
30528
30567
  id: educationLevelIds.associates,
30529
- title: M$W('Associate degree', 'کاردانی'),
30530
- description: M$W('Two-year college degree', 'مدرک دو ساله دانشگاهی'),
30568
+ title: M$X('Associate degree', 'کاردانی'),
30569
+ description: M$X('Two-year college degree', 'مدرک دو ساله دانشگاهی'),
30531
30570
  },
30532
30571
  {
30533
30572
  id: educationLevelIds.vocational,
30534
- title: M$W('Vocational / Certificate', 'فنی‌حرفه‌ای / گواهینامه'),
30535
- description: M$W('Vocational training or certificate program', 'آموزش فنی یا دوره گواهینامه'),
30573
+ title: M$X('Vocational / Certificate', 'فنی‌حرفه‌ای / گواهینامه'),
30574
+ description: M$X('Vocational training or certificate program', 'آموزش فنی یا دوره گواهینامه'),
30536
30575
  },
30537
30576
  ];
30538
30577
 
30539
- const M$V = createMultiLanguageString;
30578
+ const M$W = createMultiLanguageString;
30540
30579
  const genderIds = {
30541
30580
  male: 'b3000001-0000-4000-8000-000000000001',
30542
30581
  female: 'b3000001-0000-4000-8000-000000000002',
@@ -30547,32 +30586,32 @@ const genderIds = {
30547
30586
  const genderMocks = [
30548
30587
  {
30549
30588
  id: genderIds.male,
30550
- title: M$V('Male', 'مرد'),
30551
- description: M$V('Male gender identity', 'هویت جنسیتی مرد'),
30589
+ title: M$W('Male', 'مرد'),
30590
+ description: M$W('Male gender identity', 'هویت جنسیتی مرد'),
30552
30591
  },
30553
30592
  {
30554
30593
  id: genderIds.female,
30555
- title: M$V('Female', 'زن'),
30556
- description: M$V('Female gender identity', 'هویت جنسیتی زن'),
30594
+ title: M$W('Female', 'زن'),
30595
+ description: M$W('Female gender identity', 'هویت جنسیتی زن'),
30557
30596
  },
30558
30597
  {
30559
30598
  id: genderIds.nonBinary,
30560
- title: M$V('Non-binary', 'غیردودویی'),
30561
- description: M$V('Non-binary gender identity', 'هویت جنسیتی غیردودویی'),
30599
+ title: M$W('Non-binary', 'غیردودویی'),
30600
+ description: M$W('Non-binary gender identity', 'هویت جنسیتی غیردودویی'),
30562
30601
  },
30563
30602
  {
30564
30603
  id: genderIds.other,
30565
- title: M$V('Other', 'سایر'),
30566
- description: M$V('Another gender identity', 'سایر هویت‌های جنسیتی'),
30604
+ title: M$W('Other', 'سایر'),
30605
+ description: M$W('Another gender identity', 'سایر هویت‌های جنسیتی'),
30567
30606
  },
30568
30607
  {
30569
30608
  id: genderIds.preferNotToSay,
30570
- title: M$V('Prefer not to say', 'ترجیح می‌دهم نگویم'),
30571
- description: M$V('Decline to answer', 'عدم تمایل به پاسخ'),
30609
+ title: M$W('Prefer not to say', 'ترجیح می‌دهم نگویم'),
30610
+ description: M$W('Decline to answer', 'عدم تمایل به پاسخ'),
30572
30611
  },
30573
30612
  ];
30574
30613
 
30575
- const M$U = createMultiLanguageString;
30614
+ const M$V = createMultiLanguageString;
30576
30615
  const maritalStatusIds = {
30577
30616
  single: 'b1000001-0000-4000-8000-000000000001',
30578
30617
  married: 'b1000001-0000-4000-8000-000000000002',
@@ -30584,37 +30623,37 @@ const maritalStatusIds = {
30584
30623
  const maritalStatusMocks = [
30585
30624
  {
30586
30625
  id: maritalStatusIds.single,
30587
- title: M$U('Single', 'مجرد'),
30588
- description: M$U('Not married', 'ازدواج نکرده'),
30626
+ title: M$V('Single', 'مجرد'),
30627
+ description: M$V('Not married', 'ازدواج نکرده'),
30589
30628
  },
30590
30629
  {
30591
30630
  id: maritalStatusIds.married,
30592
- title: M$U('Married', 'متأهل'),
30593
- description: M$U('Legally or socially married', 'متأهل به‌صورت رسمی یا عرفی'),
30631
+ title: M$V('Married', 'متأهل'),
30632
+ description: M$V('Legally or socially married', 'متأهل به‌صورت رسمی یا عرفی'),
30594
30633
  },
30595
30634
  {
30596
30635
  id: maritalStatusIds.divorced,
30597
- title: M$U('Divorced', 'مطلقه'),
30598
- description: M$U('Previously married and legally divorced', 'قبلاً ازدواج کرده و به‌طور رسمی جدا شده'),
30636
+ title: M$V('Divorced', 'مطلقه'),
30637
+ description: M$V('Previously married and legally divorced', 'قبلاً ازدواج کرده و به‌طور رسمی جدا شده'),
30599
30638
  },
30600
30639
  {
30601
30640
  id: maritalStatusIds.widowed,
30602
- title: M$U('Widowed', 'همسر فوت شده'),
30603
- description: M$U('Spouse deceased', 'همسر فوت کرده است'),
30641
+ title: M$V('Widowed', 'همسر فوت شده'),
30642
+ description: M$V('Spouse deceased', 'همسر فوت کرده است'),
30604
30643
  },
30605
30644
  {
30606
30645
  id: maritalStatusIds.separated,
30607
- title: M$U('Separated', 'جدا'),
30608
- description: M$U('Separated but not legally divorced', 'جداشده بدون طلاق رسمی'),
30646
+ title: M$V('Separated', 'جدا'),
30647
+ description: M$V('Separated but not legally divorced', 'جداشده بدون طلاق رسمی'),
30609
30648
  },
30610
30649
  {
30611
30650
  id: maritalStatusIds.domesticPartnership,
30612
- title: M$U('Domestic partnership', 'همزیستی مدنی'),
30613
- description: M$U('Registered domestic or civil partnership', 'شراکت مدنی یا هم‌بودی رسمی'),
30651
+ title: M$V('Domestic partnership', 'همزیستی مدنی'),
30652
+ description: M$V('Registered domestic or civil partnership', 'شراکت مدنی یا هم‌بودی رسمی'),
30614
30653
  },
30615
30654
  ];
30616
30655
 
30617
- const M$T = createMultiLanguageString;
30656
+ const M$U = createMultiLanguageString;
30618
30657
  const personTitleIds = {
30619
30658
  mr: 'b2000001-0000-4000-8000-000000000001',
30620
30659
  mrs: 'b2000001-0000-4000-8000-000000000002',
@@ -30628,43 +30667,43 @@ const personTitleIds = {
30628
30667
  const personTitleMocks = [
30629
30668
  {
30630
30669
  id: personTitleIds.mr,
30631
- title: M$T('Mr', 'آقا'),
30632
- description: M$T('Male salutation', 'عنوان رسمی مردان'),
30670
+ title: M$U('Mr', 'آقا'),
30671
+ description: M$U('Male salutation', 'عنوان رسمی مردان'),
30633
30672
  },
30634
30673
  {
30635
30674
  id: personTitleIds.mrs,
30636
- title: M$T('Mrs', 'خانم'),
30637
- description: M$T('Married or widowed woman', 'خانم (متأهل یا بیوه)'),
30675
+ title: M$U('Mrs', 'خانم'),
30676
+ description: M$U('Married or widowed woman', 'خانم (متأهل یا بیوه)'),
30638
30677
  },
30639
30678
  {
30640
30679
  id: personTitleIds.ms,
30641
- title: M$T('Ms', 'بانو'),
30642
- description: M$T('Gender-neutral title for women', 'عنوان بدون اشاره به وضعیت تأهل'),
30680
+ title: M$U('Ms', 'بانو'),
30681
+ description: M$U('Gender-neutral title for women', 'عنوان بدون اشاره به وضعیت تأهل'),
30643
30682
  },
30644
30683
  {
30645
30684
  id: personTitleIds.miss,
30646
- title: M$T('Miss', 'دوشیزه'),
30647
- description: M$T('Traditionally unmarried woman', 'سنتاً خانم مجرد'),
30685
+ title: M$U('Miss', 'دوشیزه'),
30686
+ description: M$U('Traditionally unmarried woman', 'سنتاً خانم مجرد'),
30648
30687
  },
30649
30688
  {
30650
30689
  id: personTitleIds.dr,
30651
- title: M$T('Dr', 'دکتر'),
30652
- description: M$T('Doctor (academic or medical)', 'دکتر (دانشگاهی یا پزشکی)'),
30690
+ title: M$U('Dr', 'دکتر'),
30691
+ description: M$U('Doctor (academic or medical)', 'دکتر (دانشگاهی یا پزشکی)'),
30653
30692
  },
30654
30693
  {
30655
30694
  id: personTitleIds.prof,
30656
- title: M$T('Prof', 'استاد'),
30657
- description: M$T('Professor', 'استاد دانشگاه'),
30695
+ title: M$U('Prof', 'استاد'),
30696
+ description: M$U('Professor', 'استاد دانشگاه'),
30658
30697
  },
30659
30698
  {
30660
30699
  id: personTitleIds.rev,
30661
- title: M$T('Rev', 'روحانی'),
30662
- description: M$T('Reverend or clergy', 'عنوان روحانی'),
30700
+ title: M$U('Rev', 'روحانی'),
30701
+ description: M$U('Reverend or clergy', 'عنوان روحانی'),
30663
30702
  },
30664
30703
  {
30665
30704
  id: personTitleIds.other,
30666
- title: M$T('Other', 'سایر'),
30667
- description: M$T('Other salutation', 'سایر عناوین'),
30705
+ title: M$U('Other', 'سایر'),
30706
+ description: M$U('Other salutation', 'سایر عناوین'),
30668
30707
  },
30669
30708
  ];
30670
30709
 
@@ -30676,6 +30715,10 @@ const personTitleMocks = [
30676
30715
  const PLATFORM_TENANT_ID = AXPDataGenerator.uuid();
30677
30716
  const TIMEPLICITY_TENANT_ID = AXPDataGenerator.uuid();
30678
30717
  const LASER_PLUMBING_TENANT_ID = AXPDataGenerator.uuid();
30718
+ /** MAGFA (مگفا) — Iran commerce tenant for conversation / AI / reports demo. */
30719
+ const MAGFA_TENANT_ID = AXPDataGenerator.uuid();
30720
+ /** @deprecated Use {@link MAGFA_TENANT_ID}. */
30721
+ const COLLABORATION_TENANT_ID = MAGFA_TENANT_ID;
30679
30722
  //#endregion
30680
30723
 
30681
30724
  //#region ---- Imports ----
@@ -30802,7 +30845,9 @@ const mockRoleDefinitions = [
30802
30845
  name: 'user',
30803
30846
  title: 'Regular User',
30804
30847
  description: 'Standard user with basic system access',
30805
- permissions: [],
30848
+ permissions: [
30849
+ AXMPermissionsKeys$4.Conversation.Management,
30850
+ ],
30806
30851
  ownershipInfo: {
30807
30852
  tenantId: TIMEPLICITY_TENANT_ID, // Timeplicity tenant
30808
30853
  },
@@ -30928,9 +30973,9 @@ const mockRoleDefinitions = [
30928
30973
  AXPSecurityManagementPermissionKeys.Role.Edit,
30929
30974
  AXPSecurityManagementPermissionKeys.Role.Delete,
30930
30975
  //
30931
- AXMPermissionsKeys$4.DocumentManagement.Management,
30932
- AXMPermissionsKeys$4.DocumentManagement.Driver.Management,
30933
- AXMPermissionsKeys$4.DocumentManagement.DocumentType.Management,
30976
+ AXMPermissionsKeys$5.DocumentManagement.Management,
30977
+ AXMPermissionsKeys$5.DocumentManagement.Driver.Management,
30978
+ AXMPermissionsKeys$5.DocumentManagement.DocumentType.Management,
30934
30979
  //
30935
30980
  AXMPermissionsKeys$2.DataManagement.MetaDataDefinition.Management,
30936
30981
  AXMPermissionsKeys$2.DataManagement.Tag.Management,
@@ -30938,9 +30983,11 @@ const mockRoleDefinitions = [
30938
30983
  AXMAssessmentManagementPermissionKeys.AssessmentManagement.Questionnaire.Management,
30939
30984
  AXMAssessmentManagementPermissionKeys.AssessmentManagement.QuestionBank,
30940
30985
  //
30941
- AXMPermissionsKeys$5.HumanCapitalManagement.Employee.Management,
30942
- AXMPermissionsKeys$5.HumanCapitalManagement.LeaveType.Management,
30943
- AXMPermissionsKeys$5.HumanCapitalManagement.LeaveRequest.Management,
30986
+ AXMPermissionsKeys$4.Conversation.Management,
30987
+ //
30988
+ AXMPermissionsKeys$6.HumanCapitalManagement.Employee.Management,
30989
+ AXMPermissionsKeys$6.HumanCapitalManagement.LeaveType.Management,
30990
+ AXMPermissionsKeys$6.HumanCapitalManagement.LeaveRequest.Management,
30944
30991
  //
30945
30992
  AXMSettingsManagementPermissionKeys.TenantSettings.Management,
30946
30993
  ],
@@ -30957,6 +31004,26 @@ const mockRoleDefinitions = [
30957
31004
  },
30958
31005
  },
30959
31006
  },
31007
+ {
31008
+ id: 'a0000001-0000-4000-a000-000000000099',
31009
+ name: 'conversation-only',
31010
+ title: 'Conversation Only',
31011
+ description: 'Conversation access only for MAGFA commerce (مگفا — تجارت)',
31012
+ permissions: [
31013
+ AXMPermissionsKeys$4.Conversation.Management,
31014
+ ],
31015
+ ownershipInfo: {
31016
+ tenantId: MAGFA_TENANT_ID,
31017
+ },
31018
+ auditInfo: {
31019
+ created: {
31020
+ at: new Date('2024-01-01T00:00:00Z'),
31021
+ },
31022
+ updated: {
31023
+ at: new Date('2024-01-01T00:00:00Z'),
31024
+ },
31025
+ },
31026
+ },
30960
31027
  ];
30961
31028
  //#endregion
30962
31029
 
@@ -30972,6 +31039,7 @@ const roleIdMap = {
30972
31039
  finance: mockRoleDefinitions.find((r) => r.name === 'finance')?.id || '',
30973
31040
  dev: mockRoleDefinitions.find((r) => r.name === 'dev')?.id || '',
30974
31041
  tenantAdministrator: mockRoleDefinitions.find((r) => r.name === 'tenant-administrator')?.id || '',
31042
+ conversationOnly: mockRoleDefinitions.find((r) => r.name === 'conversation-only')?.id || '',
30975
31043
  };
30976
31044
  // Helper function to get roles by IDs
30977
31045
  const getRolesByIds = (roleIds) => {
@@ -31004,6 +31072,7 @@ const userIds = {
31004
31072
  yukiTanaka: 'f0000001-0000-4000-a000-000000000012',
31005
31073
  rodJensen: 'f0000001-0000-4000-a000-000000000013',
31006
31074
  heidiThonig: 'f0000001-0000-4000-a000-000000000014',
31075
+ mohamadPourGhorban: 'f0000001-0000-4000-a000-000000000015',
31007
31076
  };
31008
31077
  const rawMockUsers = [
31009
31078
  {
@@ -31277,6 +31346,19 @@ const rawMockUsers = [
31277
31346
  tenantId: TIMEPLICITY_TENANT_ID, // Timeplicity tenant (primary tenant based on tenant-user assignment)
31278
31347
  },
31279
31348
  },
31349
+ {
31350
+ id: userIds.mohamadPourGhorban,
31351
+ username: 'mohamad.pour.ghorban',
31352
+ displayName: 'Mohammad Pour Ghorban',
31353
+ roleIds: [roleIdMap.conversationOnly],
31354
+ roles: getRolesByIds([roleIdMap.conversationOnly]),
31355
+ password: '123',
31356
+ accountState: AXPSystemStatusType.Active,
31357
+ accessState: AXMUserAccessState.Allowed,
31358
+ ownershipInfo: {
31359
+ tenantId: MAGFA_TENANT_ID,
31360
+ },
31361
+ },
31280
31362
  ];
31281
31363
  const mockUsers = rawMockUsers.map((u) => ({
31282
31364
  ...u,
@@ -31323,6 +31405,7 @@ const personIds = {
31323
31405
  admin: 'ddd51595-13ab-4580-9db5-3b13b233ddf17',
31324
31406
  rodJensen: 'ddd51595-13ab-4580-9db5-3b13b233ddf18',
31325
31407
  heidiThonig: 'ddd51595-13ab-4580-9db5-3b13b233ddf19',
31408
+ mohamadPourGhorban: 'ddd51595-13ab-4580-9db5-3b13b233ddf20',
31326
31409
  techSolutionsInc: 'c3000001-0000-0000-0000-000000000001',
31327
31410
  acmeCorporation: 'c3000001-0000-0000-0000-000000000002',
31328
31411
  globalSuppliersLtd: 'c3000001-0000-0000-0000-000000000003',
@@ -31359,6 +31442,7 @@ const personNaturalIds = {
31359
31442
  admin: personIds.admin,
31360
31443
  rodJensen: personIds.rodJensen,
31361
31444
  heidiThonig: personIds.heidiThonig,
31445
+ mohamadPourGhorban: personIds.mohamadPourGhorban,
31362
31446
  };
31363
31447
  const personLegalIds = {
31364
31448
  techSolutionsInc: personIds.techSolutionsInc,
@@ -31701,6 +31785,23 @@ const personMock = [
31701
31785
  educationLevelId: educationLevelIds.masters,
31702
31786
  educationLevel: educationLevelRef(educationLevelIds.masters),
31703
31787
  },
31788
+ {
31789
+ id: personIds.mohamadPourGhorban,
31790
+ userId: userIds.mohamadPourGhorban,
31791
+ firstName: 'Mohammad',
31792
+ lastName: 'Pour Ghorban',
31793
+ fullName: 'Mohammad Pour Ghorban',
31794
+ personTitleId: personTitleIds.mr,
31795
+ personTitle: personTitleRef(personTitleIds.mr),
31796
+ birthDate: '1990-06-15',
31797
+ identityNumber: 'SSN-900615020',
31798
+ genderId: genderIds.male,
31799
+ gender: genderRef(genderIds.male),
31800
+ maritalStatusId: maritalStatusIds.single,
31801
+ maritalStatus: maritalStatusRef(maritalStatusIds.single),
31802
+ educationLevelId: educationLevelIds.bachelors,
31803
+ educationLevel: educationLevelRef(educationLevelIds.bachelors),
31804
+ },
31704
31805
  ];
31705
31806
  //#endregion
31706
31807
 
@@ -32603,9 +32704,12 @@ class MockApplicationLoader {
32603
32704
  }
32604
32705
  mapToAXPApplication(item) {
32605
32706
  const firstEdition = item.editions?.[0];
32707
+ const routeName = item.code === 'MAGFA-001'
32708
+ ? 'magfa-commerce'
32709
+ : item.name || item.title?.toLowerCase().replace(/\s+/g, '-') || 'default-name';
32606
32710
  return {
32607
32711
  id: item.id,
32608
- name: item.name || item.title?.toLowerCase().replace(/\s+/g, '-') || 'default-name',
32712
+ name: routeName,
32609
32713
  title: item.title,
32610
32714
  version: item.version || '1.0.0',
32611
32715
  edition: firstEdition
@@ -33271,7 +33375,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
33271
33375
  }]
33272
33376
  }] });
33273
33377
 
33274
- const M$S = createMultiLanguageString;
33378
+ const M$T = createMultiLanguageString;
33275
33379
  const manufacturerCategoryIds = {
33276
33380
  electronics: AXPDataGenerator.uuid(),
33277
33381
  semiconductors: AXPDataGenerator.uuid(),
@@ -33295,16 +33399,16 @@ const manufacturerCategoryIds = {
33295
33399
  const manufacturerCategoryMocks = [
33296
33400
  {
33297
33401
  id: manufacturerCategoryIds.electronics,
33298
- title: M$S('Electronics Manufacturing', 'تولید الکترونیک'),
33299
- description: M$S('Electronic equipment and component manufacturers', 'تجهیزات و قطعات الکترونیک'),
33402
+ title: M$T('Electronics Manufacturing', 'تولید الکترونیک'),
33403
+ description: M$T('Electronic equipment and component manufacturers', 'تجهیزات و قطعات الکترونیک'),
33300
33404
  icon: 'fa-light fa-microchip',
33301
33405
  color: '#3b82f6',
33302
33406
  childrenCount: 2,
33303
33407
  },
33304
33408
  {
33305
33409
  id: manufacturerCategoryIds.semiconductors,
33306
- title: M$S('Semiconductors', 'نیمه‌هادی'),
33307
- description: M$S('Semiconductor and chip manufacturers', 'سازندگان چیپ و نیمه‌هادی'),
33410
+ title: M$T('Semiconductors', 'نیمه‌هادی'),
33411
+ description: M$T('Semiconductor and chip manufacturers', 'سازندگان چیپ و نیمه‌هادی'),
33308
33412
  parentId: manufacturerCategoryIds.electronics,
33309
33413
  icon: 'fa-light fa-memory',
33310
33414
  color: '#6366f1',
@@ -33312,8 +33416,8 @@ const manufacturerCategoryMocks = [
33312
33416
  },
33313
33417
  {
33314
33418
  id: manufacturerCategoryIds.consumerElectronics,
33315
- title: M$S('Consumer Electronics', 'الکترونیک مصرفی'),
33316
- description: M$S('Consumer electronics manufacturers', 'تولیدکنندگان الکترونیک مصرفی'),
33419
+ title: M$T('Consumer Electronics', 'الکترونیک مصرفی'),
33420
+ description: M$T('Consumer electronics manufacturers', 'تولیدکنندگان الکترونیک مصرفی'),
33317
33421
  parentId: manufacturerCategoryIds.electronics,
33318
33422
  icon: 'fa-light fa-tv',
33319
33423
  color: '#8b5cf6',
@@ -33321,16 +33425,16 @@ const manufacturerCategoryMocks = [
33321
33425
  },
33322
33426
  {
33323
33427
  id: manufacturerCategoryIds.automotive,
33324
- title: M$S('Automotive', 'خودرو'),
33325
- description: M$S('Automotive manufacturers', 'سازندگان خودرو'),
33428
+ title: M$T('Automotive', 'خودرو'),
33429
+ description: M$T('Automotive manufacturers', 'سازندگان خودرو'),
33326
33430
  icon: 'fa-light fa-car',
33327
33431
  color: '#ef4444',
33328
33432
  childrenCount: 2,
33329
33433
  },
33330
33434
  {
33331
33435
  id: manufacturerCategoryIds.vehicleParts,
33332
- title: M$S('Vehicle Parts', 'قطعات خودرو'),
33333
- description: M$S('Auto parts manufacturers', 'سازندگان قطعات خودرو'),
33436
+ title: M$T('Vehicle Parts', 'قطعات خودرو'),
33437
+ description: M$T('Auto parts manufacturers', 'سازندگان قطعات خودرو'),
33334
33438
  parentId: manufacturerCategoryIds.automotive,
33335
33439
  icon: 'fa-light fa-gear',
33336
33440
  color: '#dc2626',
@@ -33338,8 +33442,8 @@ const manufacturerCategoryMocks = [
33338
33442
  },
33339
33443
  {
33340
33444
  id: manufacturerCategoryIds.electricVehicles,
33341
- title: M$S('Electric Vehicles', 'خودروی برقی'),
33342
- description: M$S('EV manufacturers', 'سازندگان خودروی برقی'),
33445
+ title: M$T('Electric Vehicles', 'خودروی برقی'),
33446
+ description: M$T('EV manufacturers', 'سازندگان خودروی برقی'),
33343
33447
  parentId: manufacturerCategoryIds.automotive,
33344
33448
  icon: 'fa-light fa-charging-station',
33345
33449
  color: '#10b981',
@@ -33347,16 +33451,16 @@ const manufacturerCategoryMocks = [
33347
33451
  },
33348
33452
  {
33349
33453
  id: manufacturerCategoryIds.textiles,
33350
- title: M$S('Textiles & Apparel', 'نساجی و پوشاک'),
33351
- description: M$S('Textile and apparel manufacturers', 'تولیدکنندگان نساجی و پوشاک'),
33454
+ title: M$T('Textiles & Apparel', 'نساجی و پوشاک'),
33455
+ description: M$T('Textile and apparel manufacturers', 'تولیدکنندگان نساجی و پوشاک'),
33352
33456
  icon: 'fa-light fa-shirt',
33353
33457
  color: '#ec4899',
33354
33458
  childrenCount: 2,
33355
33459
  },
33356
33460
  {
33357
33461
  id: manufacturerCategoryIds.apparel,
33358
- title: M$S('Apparel', 'پوشاک'),
33359
- description: M$S('Clothing manufacturers', 'تولیدکنندگان پوشاک'),
33462
+ title: M$T('Apparel', 'پوشاک'),
33463
+ description: M$T('Clothing manufacturers', 'تولیدکنندگان پوشاک'),
33360
33464
  parentId: manufacturerCategoryIds.textiles,
33361
33465
  icon: 'fa-light fa-vest',
33362
33466
  color: '#db2777',
@@ -33364,8 +33468,8 @@ const manufacturerCategoryMocks = [
33364
33468
  },
33365
33469
  {
33366
33470
  id: manufacturerCategoryIds.fabrics,
33367
- title: M$S('Fabrics', 'پارچه'),
33368
- description: M$S('Fabric manufacturers', 'تولیدکنندگان پارچه'),
33471
+ title: M$T('Fabrics', 'پارچه'),
33472
+ description: M$T('Fabric manufacturers', 'تولیدکنندگان پارچه'),
33369
33473
  parentId: manufacturerCategoryIds.textiles,
33370
33474
  icon: 'fa-light fa-socks',
33371
33475
  color: '#f472b6',
@@ -33373,16 +33477,16 @@ const manufacturerCategoryMocks = [
33373
33477
  },
33374
33478
  {
33375
33479
  id: manufacturerCategoryIds.foodProcessing,
33376
- title: M$S('Food & Beverage', 'غذا و نوشیدنی'),
33377
- description: M$S('Food and beverage manufacturers', 'تولیدکنندگان غذا و نوشیدنی'),
33480
+ title: M$T('Food & Beverage', 'غذا و نوشیدنی'),
33481
+ description: M$T('Food and beverage manufacturers', 'تولیدکنندگان غذا و نوشیدنی'),
33378
33482
  icon: 'fa-light fa-utensils',
33379
33483
  color: '#f59e0b',
33380
33484
  childrenCount: 2,
33381
33485
  },
33382
33486
  {
33383
33487
  id: manufacturerCategoryIds.beverageProduction,
33384
- title: M$S('Beverage Production', 'تولید نوشیدنی'),
33385
- description: M$S('Beverage manufacturers', 'تولیدکنندگان نوشیدنی'),
33488
+ title: M$T('Beverage Production', 'تولید نوشیدنی'),
33489
+ description: M$T('Beverage manufacturers', 'تولیدکنندگان نوشیدنی'),
33386
33490
  parentId: manufacturerCategoryIds.foodProcessing,
33387
33491
  icon: 'fa-light fa-bottle-droplet',
33388
33492
  color: '#06b6d4',
@@ -33390,8 +33494,8 @@ const manufacturerCategoryMocks = [
33390
33494
  },
33391
33495
  {
33392
33496
  id: manufacturerCategoryIds.dairyProcessing,
33393
- title: M$S('Dairy Processing', 'فرآوری لبنی'),
33394
- description: M$S('Dairy product manufacturers', 'تولیدکنندگان لبنیات'),
33497
+ title: M$T('Dairy Processing', 'فرآوری لبنی'),
33498
+ description: M$T('Dairy product manufacturers', 'تولیدکنندگان لبنیات'),
33395
33499
  parentId: manufacturerCategoryIds.foodProcessing,
33396
33500
  icon: 'fa-light fa-cow',
33397
33501
  color: '#eab308',
@@ -33399,16 +33503,16 @@ const manufacturerCategoryMocks = [
33399
33503
  },
33400
33504
  {
33401
33505
  id: manufacturerCategoryIds.pharmaceuticals,
33402
- title: M$S('Pharmaceuticals', 'دارویی'),
33403
- description: M$S('Pharmaceutical manufacturers', 'تولیدکنندگان دارو'),
33506
+ title: M$T('Pharmaceuticals', 'دارویی'),
33507
+ description: M$T('Pharmaceutical manufacturers', 'تولیدکنندگان دارو'),
33404
33508
  icon: 'fa-light fa-capsules',
33405
33509
  color: '#14b8a6',
33406
33510
  childrenCount: 2,
33407
33511
  },
33408
33512
  {
33409
33513
  id: manufacturerCategoryIds.genericDrugs,
33410
- title: M$S('Generic Drugs', 'داروی ژنریک'),
33411
- description: M$S('Generic drug manufacturers', 'تولیدکنندگان داروی ژنریک'),
33514
+ title: M$T('Generic Drugs', 'داروی ژنریک'),
33515
+ description: M$T('Generic drug manufacturers', 'تولیدکنندگان داروی ژنریک'),
33412
33516
  parentId: manufacturerCategoryIds.pharmaceuticals,
33413
33517
  icon: 'fa-light fa-pills',
33414
33518
  color: '#0d9488',
@@ -33416,8 +33520,8 @@ const manufacturerCategoryMocks = [
33416
33520
  },
33417
33521
  {
33418
33522
  id: manufacturerCategoryIds.medicalDevices,
33419
- title: M$S('Medical Devices', 'تجهیزات پزشکی'),
33420
- description: M$S('Medical device manufacturers', 'سازندگان تجهیزات پزشکی'),
33523
+ title: M$T('Medical Devices', 'تجهیزات پزشکی'),
33524
+ description: M$T('Medical device manufacturers', 'سازندگان تجهیزات پزشکی'),
33421
33525
  parentId: manufacturerCategoryIds.pharmaceuticals,
33422
33526
  icon: 'fa-light fa-stethoscope',
33423
33527
  color: '#2dd4bf',
@@ -33425,16 +33529,16 @@ const manufacturerCategoryMocks = [
33425
33529
  },
33426
33530
  {
33427
33531
  id: manufacturerCategoryIds.chemicals,
33428
- title: M$S('Chemicals', 'مواد شیمیایی'),
33429
- description: M$S('Chemical manufacturers', 'تولیدکنندگان مواد شیمیایی'),
33532
+ title: M$T('Chemicals', 'مواد شیمیایی'),
33533
+ description: M$T('Chemical manufacturers', 'تولیدکنندگان مواد شیمیایی'),
33430
33534
  icon: 'fa-light fa-flask',
33431
33535
  color: '#a855f7',
33432
33536
  childrenCount: 2,
33433
33537
  },
33434
33538
  {
33435
33539
  id: manufacturerCategoryIds.industrialChemicals,
33436
- title: M$S('Industrial Chemicals', 'شیمیایی صنعتی'),
33437
- description: M$S('Industrial chemical manufacturers', 'تولیدکنندگان مواد شیمیایی صنعتی'),
33540
+ title: M$T('Industrial Chemicals', 'شیمیایی صنعتی'),
33541
+ description: M$T('Industrial chemical manufacturers', 'تولیدکنندگان مواد شیمیایی صنعتی'),
33438
33542
  parentId: manufacturerCategoryIds.chemicals,
33439
33543
  icon: 'fa-light fa-industry',
33440
33544
  color: '#9333ea',
@@ -33442,8 +33546,8 @@ const manufacturerCategoryMocks = [
33442
33546
  },
33443
33547
  {
33444
33548
  id: manufacturerCategoryIds.specialty,
33445
- title: M$S('Specialty Chemicals', 'شیمیایی تخصصی'),
33446
- description: M$S('Specialty chemical manufacturers', 'تولیدکنندگان مواد شیمیایی تخصصی'),
33549
+ title: M$T('Specialty Chemicals', 'شیمیایی تخصصی'),
33550
+ description: M$T('Specialty chemical manufacturers', 'تولیدکنندگان مواد شیمیایی تخصصی'),
33447
33551
  parentId: manufacturerCategoryIds.chemicals,
33448
33552
  icon: 'fa-light fa-vial',
33449
33553
  color: '#c084fc',
@@ -33451,7 +33555,7 @@ const manufacturerCategoryMocks = [
33451
33555
  },
33452
33556
  ];
33453
33557
 
33454
- const M$R = createMultiLanguageString;
33558
+ const M$S = createMultiLanguageString;
33455
33559
  const manufacturerIds = {
33456
33560
  techCorp: AXPDataGenerator.uuid(),
33457
33561
  autoWorks: AXPDataGenerator.uuid(),
@@ -33469,8 +33573,8 @@ const manufacturerMocks = [
33469
33573
  {
33470
33574
  id: manufacturerIds.techCorp,
33471
33575
  code: 'MFG-001',
33472
- title: M$R('TechCorp Industries', 'صنایع تک‌کورپ'),
33473
- description: M$R('Leading electronics manufacturer', 'تولیدکننده پیشرو الکترونیک'),
33576
+ title: M$S('TechCorp Industries', 'صنایع تک‌کورپ'),
33577
+ description: M$S('Leading electronics manufacturer', 'تولیدکننده پیشرو الکترونیک'),
33474
33578
  countryOfOrigin: 'USA',
33475
33579
  website: 'https://www.techcorp.com',
33476
33580
  contactEmail: 'info@techcorp.com',
@@ -33485,8 +33589,8 @@ const manufacturerMocks = [
33485
33589
  {
33486
33590
  id: manufacturerIds.autoWorks,
33487
33591
  code: 'MFG-002',
33488
- title: M$R('AutoWorks Manufacturing', 'اتووورکس تولید'),
33489
- description: M$R('Automotive parts and components', 'قطعات و اجزای خودرو'),
33592
+ title: M$S('AutoWorks Manufacturing', 'اتووورکس تولید'),
33593
+ description: M$S('Automotive parts and components', 'قطعات و اجزای خودرو'),
33490
33594
  countryOfOrigin: 'Germany',
33491
33595
  website: 'https://www.autoworks.de',
33492
33596
  contactEmail: 'contact@autoworks.de',
@@ -33501,8 +33605,8 @@ const manufacturerMocks = [
33501
33605
  {
33502
33606
  id: manufacturerIds.texTile,
33503
33607
  code: 'MFG-003',
33504
- title: M$R('TexTile Global', 'نساجی جهانی'),
33505
- description: M$R('Textile and fabric manufacturer', 'تولیدکننده پارچه و نساجی'),
33608
+ title: M$S('TexTile Global', 'نساجی جهانی'),
33609
+ description: M$S('Textile and fabric manufacturer', 'تولیدکننده پارچه و نساجی'),
33506
33610
  countryOfOrigin: 'India',
33507
33611
  website: 'https://www.textileglobal.in',
33508
33612
  contactEmail: 'sales@textileglobal.in',
@@ -33517,8 +33621,8 @@ const manufacturerMocks = [
33517
33621
  {
33518
33622
  id: manufacturerIds.foodMasters,
33519
33623
  code: 'MFG-004',
33520
- title: M$R('FoodMasters Inc', 'فودمسترز'),
33521
- description: M$R('Food processing and packaging', 'فرآوری و بسته‌بندی غذا'),
33624
+ title: M$S('FoodMasters Inc', 'فودمسترز'),
33625
+ description: M$S('Food processing and packaging', 'فرآوری و بسته‌بندی غذا'),
33522
33626
  countryOfOrigin: 'Canada',
33523
33627
  website: 'https://www.foodmasters.ca',
33524
33628
  contactEmail: 'info@foodmasters.ca',
@@ -33532,8 +33636,8 @@ const manufacturerMocks = [
33532
33636
  {
33533
33637
  id: manufacturerIds.pharmaCo,
33534
33638
  code: 'MFG-005',
33535
- title: M$R('PharmaCo Solutions', 'فارماکو سولوشنز'),
33536
- description: M$R('Pharmaceutical manufacturing', 'تولید دارو'),
33639
+ title: M$S('PharmaCo Solutions', 'فارماکو سولوشنز'),
33640
+ description: M$S('Pharmaceutical manufacturing', 'تولید دارو'),
33537
33641
  countryOfOrigin: 'Switzerland',
33538
33642
  website: 'https://www.pharmaco.ch',
33539
33643
  contactEmail: 'contact@pharmaco.ch',
@@ -33551,8 +33655,8 @@ const manufacturerMocks = [
33551
33655
  {
33552
33656
  id: manufacturerIds.chemSolutions,
33553
33657
  code: 'MFG-006',
33554
- title: M$R('ChemSolutions Ltd', 'کم‌سولوشنز'),
33555
- description: M$R('Industrial and specialty chemicals', 'مواد شیمیایی صنعتی و تخصصی'),
33658
+ title: M$S('ChemSolutions Ltd', 'کم‌سولوشنز'),
33659
+ description: M$S('Industrial and specialty chemicals', 'مواد شیمیایی صنعتی و تخصصی'),
33556
33660
  countryOfOrigin: 'UK',
33557
33661
  website: 'https://www.chemsolutions.co.uk',
33558
33662
  contactEmail: 'sales@chemsolutions.co.uk',
@@ -33570,8 +33674,8 @@ const manufacturerMocks = [
33570
33674
  {
33571
33675
  id: manufacturerIds.megaElectronics,
33572
33676
  code: 'MFG-007',
33573
- title: M$R('Mega Electronics', 'مگا الکترونیک'),
33574
- description: M$R('Consumer electronics manufacturing', 'تولید الکترونیک مصرفی'),
33677
+ title: M$S('Mega Electronics', 'مگا الکترونیک'),
33678
+ description: M$S('Consumer electronics manufacturing', 'تولید الکترونیک مصرفی'),
33575
33679
  countryOfOrigin: 'South Korea',
33576
33680
  website: 'https://www.megaelectronics.kr',
33577
33681
  contactEmail: 'info@megaelectronics.kr',
@@ -33588,8 +33692,8 @@ const manufacturerMocks = [
33588
33692
  {
33589
33693
  id: manufacturerIds.greenAuto,
33590
33694
  code: 'MFG-008',
33591
- title: M$R('GreenAuto Technologies', 'گرین‌اتو فناوری'),
33592
- description: M$R('Electric vehicle manufacturer', 'تولیدکننده خودروی برقی'),
33695
+ title: M$S('GreenAuto Technologies', 'گرین‌اتو فناوری'),
33696
+ description: M$S('Electric vehicle manufacturer', 'تولیدکننده خودروی برقی'),
33593
33697
  countryOfOrigin: 'USA',
33594
33698
  website: 'https://www.greenauto.com',
33595
33699
  contactEmail: 'sales@greenauto.com',
@@ -33606,8 +33710,8 @@ const manufacturerMocks = [
33606
33710
  {
33607
33711
  id: manufacturerIds.styleFabrics,
33608
33712
  code: 'MFG-009',
33609
- title: M$R('StyleFabrics International', 'استایل‌فابریکس بین‌الملل'),
33610
- description: M$R('Apparel manufacturing', 'تولید پوشاک'),
33713
+ title: M$S('StyleFabrics International', 'استایل‌فابریکس بین‌الملل'),
33714
+ description: M$S('Apparel manufacturing', 'تولید پوشاک'),
33611
33715
  countryOfOrigin: 'Bangladesh',
33612
33716
  website: 'https://www.stylefabrics.bd',
33613
33717
  contactEmail: 'orders@stylefabrics.bd',
@@ -33619,8 +33723,8 @@ const manufacturerMocks = [
33619
33723
  {
33620
33724
  id: manufacturerIds.pureBeverage,
33621
33725
  code: 'MFG-010',
33622
- title: M$R('PureBeverage Co', 'پیوربیورج'),
33623
- description: M$R('Beverage production and bottling', 'تولید و بطری‌سازی نوشیدنی'),
33726
+ title: M$S('PureBeverage Co', 'پیوربیورج'),
33727
+ description: M$S('Beverage production and bottling', 'تولید و بطری‌سازی نوشیدنی'),
33624
33728
  countryOfOrigin: 'France',
33625
33729
  website: 'https://www.purebeverage.fr',
33626
33730
  contactEmail: 'contact@purebeverage.fr',
@@ -33664,76 +33768,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
33664
33768
  type: Injectable
33665
33769
  }] });
33666
33770
 
33667
- const M$Q = createMultiLanguageString;
33771
+ const M$R = createMultiLanguageString;
33668
33772
  const industryMocks = [
33669
33773
  {
33670
33774
  id: AXPDataGenerator.uuid(),
33671
33775
  code: 'MANUF',
33672
- title: M$Q('Manufacturing', 'تولید و ساخت'),
33673
- description: M$Q('Manufacturing and production industries', 'صنایع تولیدی'),
33776
+ title: M$R('Manufacturing', 'تولید و ساخت'),
33777
+ description: M$R('Manufacturing and production industries', 'صنایع تولیدی'),
33674
33778
  isDisabled: false,
33675
33779
  },
33676
33780
  {
33677
33781
  id: AXPDataGenerator.uuid(),
33678
33782
  code: 'TECH',
33679
- title: M$Q('Technology', 'فناوری اطلاعات'),
33680
- description: M$Q('Information technology and software industries', 'نرم‌افزار و فناوری'),
33783
+ title: M$R('Technology', 'فناوری اطلاعات'),
33784
+ description: M$R('Information technology and software industries', 'نرم‌افزار و فناوری'),
33681
33785
  isDisabled: false,
33682
33786
  },
33683
33787
  {
33684
33788
  id: AXPDataGenerator.uuid(),
33685
33789
  code: 'RETAIL',
33686
- title: M$Q('Retail', 'خرده‌فروشی'),
33687
- description: M$Q('Retail and consumer goods industries', 'کالای مصرفی'),
33790
+ title: M$R('Retail', 'خرده‌فروشی'),
33791
+ description: M$R('Retail and consumer goods industries', 'کالای مصرفی'),
33688
33792
  isDisabled: false,
33689
33793
  },
33690
33794
  {
33691
33795
  id: AXPDataGenerator.uuid(),
33692
33796
  code: 'HEALTH',
33693
- title: M$Q('Healthcare', 'بهداشت و درمان'),
33694
- description: M$Q('Healthcare and medical industries', 'پزشکی و درمان'),
33797
+ title: M$R('Healthcare', 'بهداشت و درمان'),
33798
+ description: M$R('Healthcare and medical industries', 'پزشکی و درمان'),
33695
33799
  isDisabled: false,
33696
33800
  },
33697
33801
  {
33698
33802
  id: AXPDataGenerator.uuid(),
33699
33803
  code: 'FINANCE',
33700
- title: M$Q('Financial Services', 'خدمات مالی'),
33701
- description: M$Q('Banking, insurance, and financial services', 'بانک، بیمه و مالی'),
33804
+ title: M$R('Financial Services', 'خدمات مالی'),
33805
+ description: M$R('Banking, insurance, and financial services', 'بانک، بیمه و مالی'),
33702
33806
  isDisabled: false,
33703
33807
  },
33704
33808
  {
33705
33809
  id: AXPDataGenerator.uuid(),
33706
33810
  code: 'CONSTR',
33707
- title: M$Q('Construction', 'ساخت‌وساز'),
33708
- description: M$Q('Construction and real estate industries', 'ساختمان و املاک'),
33811
+ title: M$R('Construction', 'ساخت‌وساز'),
33812
+ description: M$R('Construction and real estate industries', 'ساختمان و املاک'),
33709
33813
  isDisabled: false,
33710
33814
  },
33711
33815
  {
33712
33816
  id: AXPDataGenerator.uuid(),
33713
33817
  code: 'EDUC',
33714
- title: M$Q('Education', 'آموزش'),
33715
- description: M$Q('Educational services and institutions', 'خدمات آموزشی'),
33818
+ title: M$R('Education', 'آموزش'),
33819
+ description: M$R('Educational services and institutions', 'خدمات آموزشی'),
33716
33820
  isDisabled: false,
33717
33821
  },
33718
33822
  {
33719
33823
  id: AXPDataGenerator.uuid(),
33720
33824
  code: 'ENERGY',
33721
- title: M$Q('Energy', 'انرژی'),
33722
- description: M$Q('Energy production and utilities', 'تولید انرژی و تأسیسات'),
33825
+ title: M$R('Energy', 'انرژی'),
33826
+ description: M$R('Energy production and utilities', 'تولید انرژی و تأسیسات'),
33723
33827
  isDisabled: false,
33724
33828
  },
33725
33829
  {
33726
33830
  id: AXPDataGenerator.uuid(),
33727
33831
  code: 'TRANSP',
33728
- title: M$Q('Transportation', 'حمل‌ونقل'),
33729
- description: M$Q('Transportation and logistics industries', 'لجستیک و ترابری'),
33832
+ title: M$R('Transportation', 'حمل‌ونقل'),
33833
+ description: M$R('Transportation and logistics industries', 'لجستیک و ترابری'),
33730
33834
  isDisabled: false,
33731
33835
  },
33732
33836
  {
33733
33837
  id: AXPDataGenerator.uuid(),
33734
33838
  code: 'AGRIC',
33735
- title: M$Q('Agriculture', 'کشاورزی'),
33736
- description: M$Q('Agriculture and farming industries', 'کشاورزی و دامپروری'),
33839
+ title: M$R('Agriculture', 'کشاورزی'),
33840
+ description: M$R('Agriculture and farming industries', 'کشاورزی و دامپروری'),
33737
33841
  isDisabled: false,
33738
33842
  },
33739
33843
  ];
@@ -33752,62 +33856,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
33752
33856
  type: Injectable
33753
33857
  }] });
33754
33858
 
33755
- const M$P = createMultiLanguageString;
33859
+ const M$Q = createMultiLanguageString;
33756
33860
  const businessTypeMocks = [
33757
33861
  {
33758
33862
  id: AXPDataGenerator.uuid(),
33759
33863
  code: 'CORP',
33760
- title: M$P('Corporation', 'شرکت سهامی'),
33761
- description: M$P('A corporation is a legal entity separate from its owners', 'شخصیت حقوقی مستقل از مالکان'),
33864
+ title: M$Q('Corporation', 'شرکت سهامی'),
33865
+ description: M$Q('A corporation is a legal entity separate from its owners', 'شخصیت حقوقی مستقل از مالکان'),
33762
33866
  isDisabled: false,
33763
33867
  },
33764
33868
  {
33765
33869
  id: AXPDataGenerator.uuid(),
33766
33870
  code: 'LLC',
33767
- title: M$P('Limited Liability Company', 'با مسئولیت محدود'),
33768
- description: M$P('A hybrid business structure that provides limited liability protection', 'ساختار ترکیبی با مسئولیت محدود'),
33871
+ title: M$Q('Limited Liability Company', 'با مسئولیت محدود'),
33872
+ description: M$Q('A hybrid business structure that provides limited liability protection', 'ساختار ترکیبی با مسئولیت محدود'),
33769
33873
  isDisabled: false,
33770
33874
  },
33771
33875
  {
33772
33876
  id: AXPDataGenerator.uuid(),
33773
33877
  code: 'PART',
33774
- title: M$P('Partnership', 'شراکت'),
33775
- description: M$P('A business owned by two or more persons', 'مالکیت دو یا چند نفره'),
33878
+ title: M$Q('Partnership', 'شراکت'),
33879
+ description: M$Q('A business owned by two or more persons', 'مالکیت دو یا چند نفره'),
33776
33880
  isDisabled: false,
33777
33881
  },
33778
33882
  {
33779
33883
  id: AXPDataGenerator.uuid(),
33780
33884
  code: 'SOLE',
33781
- title: M$P('Sole Proprietorship', 'تک‌مالک'),
33782
- description: M$P('A business owned and operated by a single individual', 'مالک و اپراتور یک نفره'),
33885
+ title: M$Q('Sole Proprietorship', 'تک‌مالک'),
33886
+ description: M$Q('A business owned and operated by a single individual', 'مالک و اپراتور یک نفره'),
33783
33887
  isDisabled: false,
33784
33888
  },
33785
33889
  {
33786
33890
  id: AXPDataGenerator.uuid(),
33787
33891
  code: 'NONPROFIT',
33788
- title: M$P('Non-Profit Organization', 'غیرانتفاعی'),
33789
- description: M$P('An organization that operates for charitable or social purposes', 'اهداف خیریه یا اجتماعی'),
33892
+ title: M$Q('Non-Profit Organization', 'غیرانتفاعی'),
33893
+ description: M$Q('An organization that operates for charitable or social purposes', 'اهداف خیریه یا اجتماعی'),
33790
33894
  isDisabled: false,
33791
33895
  },
33792
33896
  {
33793
33897
  id: AXPDataGenerator.uuid(),
33794
33898
  code: 'PUBLIC',
33795
- title: M$P('Public Company', 'عمومی (بورسی)'),
33796
- description: M$P('A corporation whose shares are traded on a public stock exchange', 'سهام در بورس معامله می‌شود'),
33899
+ title: M$Q('Public Company', 'عمومی (بورسی)'),
33900
+ description: M$Q('A corporation whose shares are traded on a public stock exchange', 'سهام در بورس معامله می‌شود'),
33797
33901
  isDisabled: false,
33798
33902
  },
33799
33903
  {
33800
33904
  id: AXPDataGenerator.uuid(),
33801
33905
  code: 'PRIVATE',
33802
- title: M$P('Private Company', 'خصوصی'),
33803
- description: M$P('A corporation whose shares are not publicly traded', 'سهام غیرعمومی'),
33906
+ title: M$Q('Private Company', 'خصوصی'),
33907
+ description: M$Q('A corporation whose shares are not publicly traded', 'سهام غیرعمومی'),
33804
33908
  isDisabled: false,
33805
33909
  },
33806
33910
  {
33807
33911
  id: AXPDataGenerator.uuid(),
33808
33912
  code: 'COOP',
33809
- title: M$P('Cooperative', 'تعاونی'),
33810
- description: M$P('A business owned and operated by a group of individuals for their mutual benefit', 'مالکیت گروهی برای منفعت مشترک'),
33913
+ title: M$Q('Cooperative', 'تعاونی'),
33914
+ description: M$Q('A business owned and operated by a group of individuals for their mutual benefit', 'مالکیت گروهی برای منفعت مشترک'),
33811
33915
  isDisabled: false,
33812
33916
  },
33813
33917
  ];
@@ -33826,55 +33930,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
33826
33930
  type: Injectable
33827
33931
  }] });
33828
33932
 
33829
- const M$O = createMultiLanguageString;
33933
+ const M$P = createMultiLanguageString;
33830
33934
  const businessStatusMocks = [
33831
33935
  {
33832
33936
  id: AXPDataGenerator.uuid(),
33833
33937
  code: 'ACTIVE',
33834
- title: M$O('Active', 'فعال'),
33835
- description: M$O('Business is currently active and operating', 'کسب‌وکار فعال است'),
33938
+ title: M$P('Active', 'فعال'),
33939
+ description: M$P('Business is currently active and operating', 'کسب‌وکار فعال است'),
33836
33940
  isDisabled: false,
33837
33941
  },
33838
33942
  {
33839
33943
  id: AXPDataGenerator.uuid(),
33840
33944
  code: 'INACTIVE',
33841
- title: M$O('Inactive', 'غیرفعال'),
33842
- description: M$O('Business is temporarily inactive', 'موقتاً غیرفعال'),
33945
+ title: M$P('Inactive', 'غیرفعال'),
33946
+ description: M$P('Business is temporarily inactive', 'موقتاً غیرفعال'),
33843
33947
  isDisabled: false,
33844
33948
  },
33845
33949
  {
33846
33950
  id: AXPDataGenerator.uuid(),
33847
33951
  code: 'SUSPENDED',
33848
- title: M$O('Suspended', 'معلق'),
33849
- description: M$O('Business operations are suspended', 'عملیات تعلیق شده'),
33952
+ title: M$P('Suspended', 'معلق'),
33953
+ description: M$P('Business operations are suspended', 'عملیات تعلیق شده'),
33850
33954
  isDisabled: false,
33851
33955
  },
33852
33956
  {
33853
33957
  id: AXPDataGenerator.uuid(),
33854
33958
  code: 'MERGED',
33855
- title: M$O('Merged', 'ادغام‌شده'),
33856
- description: M$O('Business has been merged with another entity', 'با موجودیت دیگر ادغام شده'),
33959
+ title: M$P('Merged', 'ادغام‌شده'),
33960
+ description: M$P('Business has been merged with another entity', 'با موجودیت دیگر ادغام شده'),
33857
33961
  isDisabled: false,
33858
33962
  },
33859
33963
  {
33860
33964
  id: AXPDataGenerator.uuid(),
33861
33965
  code: 'ACQUIRED',
33862
- title: M$O('Acquired', 'خریداری‌شده'),
33863
- description: M$O('Business has been acquired by another entity', 'توسط دیگری تصاحب شده'),
33966
+ title: M$P('Acquired', 'خریداری‌شده'),
33967
+ description: M$P('Business has been acquired by another entity', 'توسط دیگری تصاحب شده'),
33864
33968
  isDisabled: false,
33865
33969
  },
33866
33970
  {
33867
33971
  id: AXPDataGenerator.uuid(),
33868
33972
  code: 'DISSOLVED',
33869
- title: M$O('Dissolved', 'منحل‌شده'),
33870
- description: M$O('Business has been dissolved or liquidated', 'منحل یا تسویه شده'),
33973
+ title: M$P('Dissolved', 'منحل‌شده'),
33974
+ description: M$P('Business has been dissolved or liquidated', 'منحل یا تسویه شده'),
33871
33975
  isDisabled: false,
33872
33976
  },
33873
33977
  {
33874
33978
  id: AXPDataGenerator.uuid(),
33875
33979
  code: 'PENDING',
33876
- title: M$O('Pending Approval', 'در انتظار تأیید'),
33877
- description: M$O('Business registration is pending approval', 'ثبت در انتظار تأیید'),
33980
+ title: M$P('Pending Approval', 'در انتظار تأیید'),
33981
+ description: M$P('Business registration is pending approval', 'ثبت در انتظار تأیید'),
33878
33982
  isDisabled: false,
33879
33983
  },
33880
33984
  ];
@@ -33893,76 +33997,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
33893
33997
  type: Injectable
33894
33998
  }] });
33895
33999
 
33896
- const M$N = createMultiLanguageString;
34000
+ const M$O = createMultiLanguageString;
33897
34001
  const partyTypeMocks = [
33898
34002
  {
33899
34003
  id: AXPDataGenerator.uuid(),
33900
34004
  code: 'MANUF',
33901
- title: M$N('Manufacturer', 'تولیدکننده'),
33902
- description: M$N('Direct manufacturer', 'تولیدکننده مستقیم'),
34005
+ title: M$O('Manufacturer', 'تولیدکننده'),
34006
+ description: M$O('Direct manufacturer', 'تولیدکننده مستقیم'),
33903
34007
  isDisabled: false,
33904
34008
  },
33905
34009
  {
33906
34010
  id: AXPDataGenerator.uuid(),
33907
34011
  code: 'DIST',
33908
- title: M$N('Distributor', 'توزیع‌کننده'),
33909
- description: M$N('Product distributor', 'توزیع محصول'),
34012
+ title: M$O('Distributor', 'توزیع‌کننده'),
34013
+ description: M$O('Product distributor', 'توزیع محصول'),
33910
34014
  isDisabled: false,
33911
34015
  },
33912
34016
  {
33913
34017
  id: AXPDataGenerator.uuid(),
33914
34018
  code: 'WHOL',
33915
- title: M$N('Wholesaler', 'عمده‌فروش'),
33916
- description: M$N('Bulk supplier', 'تأمین عمده'),
34019
+ title: M$O('Wholesaler', 'عمده‌فروش'),
34020
+ description: M$O('Bulk supplier', 'تأمین عمده'),
33917
34021
  isDisabled: false,
33918
34022
  },
33919
34023
  {
33920
34024
  id: AXPDataGenerator.uuid(),
33921
34025
  code: 'RETL',
33922
- title: M$N('Retailer', 'خرده‌فروش'),
33923
- description: M$N('Retail supplier', 'تأمین خرده'),
34026
+ title: M$O('Retailer', 'خرده‌فروش'),
34027
+ description: M$O('Retail supplier', 'تأمین خرده'),
33924
34028
  isDisabled: false,
33925
34029
  },
33926
34030
  {
33927
34031
  id: AXPDataGenerator.uuid(),
33928
34032
  code: 'SVC',
33929
- title: M$N('Service Provider', 'ارائه‌دهنده خدمات'),
33930
- description: M$N('Service-based supplier', 'تأمین مبتنی بر خدمات'),
34033
+ title: M$O('Service Provider', 'ارائه‌دهنده خدمات'),
34034
+ description: M$O('Service-based supplier', 'تأمین مبتنی بر خدمات'),
33931
34035
  isDisabled: false,
33932
34036
  },
33933
34037
  {
33934
34038
  id: AXPDataGenerator.uuid(),
33935
34039
  code: 'CUST',
33936
- title: M$N('Customer', 'مشتری'),
33937
- description: M$N('End customer or buyer', 'خریدار نهایی'),
34040
+ title: M$O('Customer', 'مشتری'),
34041
+ description: M$O('End customer or buyer', 'خریدار نهایی'),
33938
34042
  isDisabled: false,
33939
34043
  },
33940
34044
  {
33941
34045
  id: AXPDataGenerator.uuid(),
33942
34046
  code: 'PROS',
33943
- title: M$N('Prospect', 'سرنخ'),
33944
- description: M$N('Potential customer', 'مشتری بالقوه'),
34047
+ title: M$O('Prospect', 'سرنخ'),
34048
+ description: M$O('Potential customer', 'مشتری بالقوه'),
33945
34049
  isDisabled: false,
33946
34050
  },
33947
34051
  {
33948
34052
  id: AXPDataGenerator.uuid(),
33949
34053
  code: 'CLNT',
33950
- title: M$N('Client', 'کارفرما'),
33951
- description: M$N('Standard customer', 'مشتری استاندارد'),
34054
+ title: M$O('Client', 'کارفرما'),
34055
+ description: M$O('Standard customer', 'مشتری استاندارد'),
33952
34056
  isDisabled: false,
33953
34057
  },
33954
34058
  {
33955
34059
  id: AXPDataGenerator.uuid(),
33956
34060
  code: 'ENT',
33957
- title: M$N('Enterprise', 'سازمان بزرگ'),
33958
- description: M$N('Large organization customer', 'مشتری سازمانی بزرگ'),
34061
+ title: M$O('Enterprise', 'سازمان بزرگ'),
34062
+ description: M$O('Large organization customer', 'مشتری سازمانی بزرگ'),
33959
34063
  isDisabled: false,
33960
34064
  },
33961
34065
  {
33962
34066
  id: AXPDataGenerator.uuid(),
33963
34067
  code: 'RSLR',
33964
- title: M$N('Reseller', 'فروشنده مجدد'),
33965
- description: M$N('Partner reseller', 'شریک فروش'),
34068
+ title: M$O('Reseller', 'فروشنده مجدد'),
34069
+ description: M$O('Partner reseller', 'شریک فروش'),
33966
34070
  isDisabled: false,
33967
34071
  },
33968
34072
  ];
@@ -33993,61 +34097,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
33993
34097
  type: Injectable
33994
34098
  }] });
33995
34099
 
33996
- const M$M = createMultiLanguageString;
34100
+ const M$N = createMultiLanguageString;
33997
34101
  const partySegmentMocks = [
33998
34102
  {
33999
34103
  id: AXPDataGenerator.uuid(),
34000
- title: M$M('Strategic', 'استراتژیک'),
34001
- description: M$M('Strategic partners', 'شرکای استراتژیک'),
34104
+ title: M$N('Strategic', 'استراتژیک'),
34105
+ description: M$N('Strategic partners', 'شرکای استراتژیک'),
34002
34106
  color: '#3a3a89',
34003
34107
  isArchived: false,
34004
34108
  },
34005
34109
  {
34006
34110
  id: AXPDataGenerator.uuid(),
34007
- title: M$M('Preferred', 'ترجیحی'),
34008
- description: M$M('Preferred partners', 'شرکای ترجیحی'),
34111
+ title: M$N('Preferred', 'ترجیحی'),
34112
+ description: M$N('Preferred partners', 'شرکای ترجیحی'),
34009
34113
  color: '#2bc4b0',
34010
34114
  isArchived: false,
34011
34115
  },
34012
34116
  {
34013
34117
  id: AXPDataGenerator.uuid(),
34014
- title: M$M('Standard', 'استاندارد'),
34015
- description: M$M('Standard partners', 'شرکای استاندارد'),
34118
+ title: M$N('Standard', 'استاندارد'),
34119
+ description: M$N('Standard partners', 'شرکای استاندارد'),
34016
34120
  color: '#8e1c65',
34017
34121
  isArchived: false,
34018
34122
  },
34019
34123
  {
34020
34124
  id: AXPDataGenerator.uuid(),
34021
- title: M$M('New', 'جدید'),
34022
- description: M$M('New partners', 'شرکای جدید'),
34125
+ title: M$N('New', 'جدید'),
34126
+ description: M$N('New partners', 'شرکای جدید'),
34023
34127
  color: '#f39c12',
34024
34128
  isArchived: false,
34025
34129
  },
34026
34130
  {
34027
34131
  id: AXPDataGenerator.uuid(),
34028
- title: M$M('High-Risk', 'پرریسک'),
34029
- description: M$M('High-risk partners', 'شرکای پرریسک'),
34132
+ title: M$N('High-Risk', 'پرریسک'),
34133
+ description: M$N('High-risk partners', 'شرکای پرریسک'),
34030
34134
  color: '#e74c3c',
34031
34135
  isArchived: false,
34032
34136
  },
34033
34137
  {
34034
34138
  id: AXPDataGenerator.uuid(),
34035
- title: M$M('B2B', 'کسب‌وکار به کسب‌وکار'),
34036
- description: M$M('Business to Business', 'فروش سازمانی'),
34139
+ title: M$N('B2B', 'کسب‌وکار به کسب‌وکار'),
34140
+ description: M$N('Business to Business', 'فروش سازمانی'),
34037
34141
  color: '#3a3a89',
34038
34142
  isArchived: false,
34039
34143
  },
34040
34144
  {
34041
34145
  id: AXPDataGenerator.uuid(),
34042
- title: M$M('B2C', 'کسب‌وکار به مصرف‌کننده'),
34043
- description: M$M('Business to Consumer', 'فروش به مصرف‌کننده'),
34146
+ title: M$N('B2C', 'کسب‌وکار به مصرف‌کننده'),
34147
+ description: M$N('Business to Consumer', 'فروش به مصرف‌کننده'),
34044
34148
  color: '#2bc4b0',
34045
34149
  isArchived: false,
34046
34150
  },
34047
34151
  {
34048
34152
  id: AXPDataGenerator.uuid(),
34049
- title: M$M('SMB', 'کسب‌وکار کوچک و متوسط'),
34050
- description: M$M('Small and Medium Business', 'شرکت‌های کوچک و متوسط'),
34153
+ title: M$N('SMB', 'کسب‌وکار کوچک و متوسط'),
34154
+ description: M$N('Small and Medium Business', 'شرکت‌های کوچک و متوسط'),
34051
34155
  color: '#8e1c65',
34052
34156
  isArchived: false,
34053
34157
  },
@@ -34077,37 +34181,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
34077
34181
  type: Injectable
34078
34182
  }] });
34079
34183
 
34080
- const M$L = createMultiLanguageString;
34184
+ const M$M = createMultiLanguageString;
34081
34185
  const lifecycleStageMocks = [
34082
34186
  {
34083
34187
  id: AXPDataGenerator.uuid(),
34084
- title: M$L('Prospect', 'سرنخ'),
34188
+ title: M$M('Prospect', 'سرنخ'),
34085
34189
  order: 1,
34086
- description: M$L('Potential customer', 'مشتری بالقوه'),
34190
+ description: M$M('Potential customer', 'مشتری بالقوه'),
34087
34191
  },
34088
34192
  {
34089
34193
  id: AXPDataGenerator.uuid(),
34090
- title: M$L('Onboarding', 'ورود و آغاز'),
34194
+ title: M$M('Onboarding', 'ورود و آغاز'),
34091
34195
  order: 2,
34092
- description: M$L('New customer onboarding', 'سوار کردن مشتری جدید'),
34196
+ description: M$M('New customer onboarding', 'سوار کردن مشتری جدید'),
34093
34197
  },
34094
34198
  {
34095
34199
  id: AXPDataGenerator.uuid(),
34096
- title: M$L('Active', 'فعال'),
34200
+ title: M$M('Active', 'فعال'),
34097
34201
  order: 3,
34098
- description: M$L('Active customer', 'مشتری فعال'),
34202
+ description: M$M('Active customer', 'مشتری فعال'),
34099
34203
  },
34100
34204
  {
34101
34205
  id: AXPDataGenerator.uuid(),
34102
- title: M$L('Churn Risk', 'ریسک ریزش'),
34206
+ title: M$M('Churn Risk', 'ریسک ریزش'),
34103
34207
  order: 4,
34104
- description: M$L('At risk of churning', 'در معرض از دست دادن'),
34208
+ description: M$M('At risk of churning', 'در معرض از دست دادن'),
34105
34209
  },
34106
34210
  {
34107
34211
  id: AXPDataGenerator.uuid(),
34108
- title: M$L('Churned', 'ریزش‌یافته'),
34212
+ title: M$M('Churned', 'ریزش‌یافته'),
34109
34213
  order: 5,
34110
- description: M$L('Churned customer', 'مشتری از دست‌رفته'),
34214
+ description: M$M('Churned customer', 'مشتری از دست‌رفته'),
34111
34215
  },
34112
34216
  ];
34113
34217
  const lifecycleStageIds = {
@@ -34132,7 +34236,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
34132
34236
  type: Injectable
34133
34237
  }] });
34134
34238
 
34135
- const M$K = createMultiLanguageString;
34239
+ const M$L = createMultiLanguageString;
34136
34240
  const CUSTOMER_PARTIES = [
34137
34241
  { en: 'Tech Solutions Inc.', fa: 'فناوری راه‌حل (شرکت)' },
34138
34242
  { en: 'European Manufacturing Consortium', fa: 'کنسرسیوم تولید اروپا' },
@@ -34174,7 +34278,7 @@ const SUPPLIER_PARTY_CODES = [
34174
34278
  const customerParties = CUSTOMER_PARTIES.map(({ en, fa }, i) => ({
34175
34279
  id: AXPDataGenerator.uuid(),
34176
34280
  code: CUSTOMER_PARTY_CODES[i],
34177
- title: M$K(en, fa),
34281
+ title: M$L(en, fa),
34178
34282
  phones: [],
34179
34283
  emails: [],
34180
34284
  addresses: [],
@@ -34182,7 +34286,7 @@ const customerParties = CUSTOMER_PARTIES.map(({ en, fa }, i) => ({
34182
34286
  const supplierParties = SUPPLIER_PARTIES.map(({ en, fa }, i) => ({
34183
34287
  id: AXPDataGenerator.uuid(),
34184
34288
  code: SUPPLIER_PARTY_CODES[i],
34185
- title: M$K(en, fa),
34289
+ title: M$L(en, fa),
34186
34290
  phones: [],
34187
34291
  emails: [],
34188
34292
  addresses: [],
@@ -34222,7 +34326,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
34222
34326
  type: Injectable
34223
34327
  }] });
34224
34328
 
34225
- const M$J = createMultiLanguageString;
34329
+ const M$K = createMultiLanguageString;
34226
34330
  // Export contact role IDs for use in other mocks (person, deal-contact-role, etc.)
34227
34331
  const contactRoleIds = {
34228
34332
  customer: AXPDataGenerator.uuid(),
@@ -34269,248 +34373,248 @@ const contactRoleMocks = [
34269
34373
  id: contactRoleIds.customer,
34270
34374
  type: ['person'],
34271
34375
  name: 'customer',
34272
- title: M$J('Customer', 'مشتری'),
34273
- description: M$J('Customer or client relationship', 'رابطه مشتری یا مراجعه‌کننده'),
34376
+ title: M$K('Customer', 'مشتری'),
34377
+ description: M$K('Customer or client relationship', 'رابطه مشتری یا مراجعه‌کننده'),
34274
34378
  },
34275
34379
  {
34276
34380
  id: contactRoleIds.vendor,
34277
34381
  type: ['person'],
34278
34382
  name: 'vendor',
34279
- title: M$J('Vendor', 'فروشنده'),
34280
- description: M$J('Vendor or supplier relationship', 'رابطه فروشنده یا تأمین‌کننده'),
34383
+ title: M$K('Vendor', 'فروشنده'),
34384
+ description: M$K('Vendor or supplier relationship', 'رابطه فروشنده یا تأمین‌کننده'),
34281
34385
  },
34282
34386
  {
34283
34387
  id: contactRoleIds.subcontractor,
34284
34388
  type: ['person'],
34285
34389
  name: 'subcontractor',
34286
- title: M$J('Subcontractor', 'پیمانکار فرعی'),
34287
- description: M$J('Subcontractor relationship', 'رابطه پیمانکار فرعی'),
34390
+ title: M$K('Subcontractor', 'پیمانکار فرعی'),
34391
+ description: M$K('Subcontractor relationship', 'رابطه پیمانکار فرعی'),
34288
34392
  },
34289
34393
  {
34290
34394
  id: contactRoleIds.client,
34291
34395
  type: ['person'],
34292
34396
  name: 'client',
34293
- title: M$J('Client', 'کارفرما'),
34294
- description: M$J('Client relationship', 'رابطه کارفرمایی'),
34397
+ title: M$K('Client', 'کارفرما'),
34398
+ description: M$K('Client relationship', 'رابطه کارفرمایی'),
34295
34399
  },
34296
34400
  {
34297
34401
  id: contactRoleIds.employee,
34298
34402
  type: ['person'],
34299
34403
  name: 'employee',
34300
- title: M$J('Employee', 'کارمند'),
34301
- description: M$J('Employee of the organization', 'کارمند سازمان'),
34404
+ title: M$K('Employee', 'کارمند'),
34405
+ description: M$K('Employee of the organization', 'کارمند سازمان'),
34302
34406
  },
34303
34407
  {
34304
34408
  id: contactRoleIds.partner,
34305
34409
  type: ['person'],
34306
34410
  name: 'partner',
34307
- title: M$J('Partner', 'شریک'),
34308
- description: M$J('Business partner relationship', 'رابطه شریک تجاری'),
34411
+ title: M$K('Partner', 'شریک'),
34412
+ description: M$K('Business partner relationship', 'رابطه شریک تجاری'),
34309
34413
  },
34310
34414
  {
34311
34415
  id: contactRoleIds.supplier,
34312
34416
  type: ['person'],
34313
34417
  name: 'supplier',
34314
- title: M$J('Supplier', 'تأمین‌کننده'),
34315
- description: M$J('Supplier relationship', 'رابطه تأمین‌کننده'),
34418
+ title: M$K('Supplier', 'تأمین‌کننده'),
34419
+ description: M$K('Supplier relationship', 'رابطه تأمین‌کننده'),
34316
34420
  },
34317
34421
  {
34318
34422
  id: contactRoleIds.member,
34319
34423
  type: ['person'],
34320
34424
  name: 'member',
34321
- title: M$J('Member', 'عضو'),
34322
- description: M$J('Organization or community member', 'عضو سازمان یا جامعه'),
34425
+ title: M$K('Member', 'عضو'),
34426
+ description: M$K('Organization or community member', 'عضو سازمان یا جامعه'),
34323
34427
  },
34324
34428
  {
34325
34429
  id: contactRoleIds.other,
34326
34430
  type: ['person', 'opportunity-contact', 'party-contact'],
34327
34431
  name: 'other',
34328
- title: M$J('Other', 'سایر'),
34329
- description: M$J('Other role type', 'نوع نقش دیگر'),
34432
+ title: M$K('Other', 'سایر'),
34433
+ description: M$K('Other role type', 'نوع نقش دیگر'),
34330
34434
  },
34331
34435
  // Location contact roles
34332
34436
  {
34333
34437
  id: contactRoleIds.siteManager,
34334
34438
  type: ['location-contact'],
34335
34439
  name: 'site-manager',
34336
- title: M$J('Site Manager', 'مدیر سایت'),
34337
- description: M$J('Primary contact for the location', 'مخاطب اصلی مکان'),
34440
+ title: M$K('Site Manager', 'مدیر سایت'),
34441
+ description: M$K('Primary contact for the location', 'مخاطب اصلی مکان'),
34338
34442
  },
34339
34443
  {
34340
34444
  id: contactRoleIds.facilityContact,
34341
34445
  type: ['location-contact'],
34342
34446
  name: 'facility-contact',
34343
- title: M$J('Facility Contact', 'مخاطب تاسیسات'),
34344
- description: M$J('General facility contact', 'مخاطب عمومی تاسیسات'),
34447
+ title: M$K('Facility Contact', 'مخاطب تاسیسات'),
34448
+ description: M$K('General facility contact', 'مخاطب عمومی تاسیسات'),
34345
34449
  },
34346
34450
  {
34347
34451
  id: contactRoleIds.emergencyContact,
34348
34452
  type: ['location-contact', 'person-relationship', 'family'],
34349
34453
  name: 'emergency-contact',
34350
- title: M$J('Emergency Contact', 'تماس اضطراری'),
34351
- description: M$J('Contact for emergency situations (location, business, or family)', 'مخاطب برای شرایط اضطراری (مکان، کسب‌وکار یا خانواده)'),
34454
+ title: M$K('Emergency Contact', 'تماس اضطراری'),
34455
+ description: M$K('Contact for emergency situations (location, business, or family)', 'مخاطب برای شرایط اضطراری (مکان، کسب‌وکار یا خانواده)'),
34352
34456
  },
34353
34457
  {
34354
34458
  id: contactRoleIds.maintenanceContact,
34355
34459
  type: ['location-contact'],
34356
34460
  name: 'maintenance-contact',
34357
- title: M$J('Maintenance Contact', 'مخاطب نگهداری'),
34358
- description: M$J('Contact for maintenance and repairs', 'مخاطب تعمیرات و نگهداری'),
34461
+ title: M$K('Maintenance Contact', 'مخاطب نگهداری'),
34462
+ description: M$K('Contact for maintenance and repairs', 'مخاطب تعمیرات و نگهداری'),
34359
34463
  },
34360
34464
  {
34361
34465
  id: contactRoleIds.securityContact,
34362
34466
  type: ['location-contact'],
34363
34467
  name: 'security-contact',
34364
- title: M$J('Security Contact', 'مخاطب امنیتی'),
34365
- description: M$J('Security-related contact', 'مخاطب امور امنیتی'),
34468
+ title: M$K('Security Contact', 'مخاطب امنیتی'),
34469
+ description: M$K('Security-related contact', 'مخاطب امور امنیتی'),
34366
34470
  },
34367
34471
  {
34368
34472
  id: contactRoleIds.receptionist,
34369
34473
  type: ['location-contact'],
34370
34474
  name: 'receptionist',
34371
- title: M$J('Receptionist', 'پذیرش'),
34372
- description: M$J('Front desk or reception contact', 'میز پذیرش'),
34475
+ title: M$K('Receptionist', 'پذیرش'),
34476
+ description: M$K('Front desk or reception contact', 'میز پذیرش'),
34373
34477
  },
34374
34478
  // Opportunity contact roles
34375
34479
  {
34376
34480
  id: contactRoleIds.decisionMaker,
34377
34481
  type: ['opportunity-contact'],
34378
34482
  name: 'decision-maker',
34379
- title: M$J('Decision Maker', 'تصمیم‌گیرنده'),
34380
- description: M$J('Key decision maker for the opportunity', 'تصمیم‌گیرنده کلیدی فرصت'),
34483
+ title: M$K('Decision Maker', 'تصمیم‌گیرنده'),
34484
+ description: M$K('Key decision maker for the opportunity', 'تصمیم‌گیرنده کلیدی فرصت'),
34381
34485
  },
34382
34486
  {
34383
34487
  id: contactRoleIds.influencer,
34384
34488
  type: ['opportunity-contact'],
34385
34489
  name: 'influencer',
34386
- title: M$J('Influencer', 'تأثیرگذار'),
34387
- description: M$J('Influences the decision', 'در تصمیم تأثیر دارد'),
34490
+ title: M$K('Influencer', 'تأثیرگذار'),
34491
+ description: M$K('Influences the decision', 'در تصمیم تأثیر دارد'),
34388
34492
  },
34389
34493
  {
34390
34494
  id: contactRoleIds.economicBuyer,
34391
34495
  type: ['opportunity-contact'],
34392
34496
  name: 'economic-buyer',
34393
- title: M$J('Economic Buyer', 'خریدار اقتصادی'),
34394
- description: M$J('Controls the budget', 'کنترل‌کننده بودجه'),
34497
+ title: M$K('Economic Buyer', 'خریدار اقتصادی'),
34498
+ description: M$K('Controls the budget', 'کنترل‌کننده بودجه'),
34395
34499
  },
34396
34500
  {
34397
34501
  id: contactRoleIds.user,
34398
34502
  type: ['opportunity-contact'],
34399
34503
  name: 'user',
34400
- title: M$J('User', 'کاربر'),
34401
- description: M$J('End user of the solution', 'کاربر نهایی راه‌حل'),
34504
+ title: M$K('User', 'کاربر'),
34505
+ description: M$K('End user of the solution', 'کاربر نهایی راه‌حل'),
34402
34506
  },
34403
34507
  // Party contact roles
34404
34508
  {
34405
34509
  id: contactRoleIds.primaryContact,
34406
34510
  type: ['party-contact'],
34407
34511
  name: 'primary-contact',
34408
- title: M$J('Primary Contact', 'مخاطب اصلی'),
34409
- description: M$J('Main point of contact for the party', 'نقطه تماس اصلی طرف'),
34512
+ title: M$K('Primary Contact', 'مخاطب اصلی'),
34513
+ description: M$K('Main point of contact for the party', 'نقطه تماس اصلی طرف'),
34410
34514
  },
34411
34515
  {
34412
34516
  id: contactRoleIds.accountManager,
34413
34517
  type: ['party-contact'],
34414
34518
  name: 'account-manager',
34415
- title: M$J('Account Manager', 'مدیر حساب'),
34416
- description: M$J('Manages the account relationship', 'مدیریت رابطه حساب'),
34519
+ title: M$K('Account Manager', 'مدیر حساب'),
34520
+ description: M$K('Manages the account relationship', 'مدیریت رابطه حساب'),
34417
34521
  },
34418
34522
  {
34419
34523
  id: contactRoleIds.billingContact,
34420
34524
  type: ['party-contact'],
34421
34525
  name: 'billing-contact',
34422
- title: M$J('Billing Contact', 'مخاطب صورتحساب'),
34423
- description: M$J('Contact for billing and invoicing', 'مخاطب صورتحساب و فاکتور'),
34526
+ title: M$K('Billing Contact', 'مخاطب صورتحساب'),
34527
+ description: M$K('Contact for billing and invoicing', 'مخاطب صورتحساب و فاکتور'),
34424
34528
  },
34425
34529
  {
34426
34530
  id: contactRoleIds.technicalContact,
34427
34531
  type: ['party-contact'],
34428
34532
  name: 'technical-contact',
34429
- title: M$J('Technical Contact', 'مخاطب فنی'),
34430
- description: M$J('Technical contact for the party', 'مخاطب فنی طرف'),
34533
+ title: M$K('Technical Contact', 'مخاطب فنی'),
34534
+ description: M$K('Technical contact for the party', 'مخاطب فنی طرف'),
34431
34535
  },
34432
34536
  {
34433
34537
  id: contactRoleIds.salesContact,
34434
34538
  type: ['party-contact'],
34435
34539
  name: 'sales-contact',
34436
- title: M$J('Sales Contact', 'مخاطب فروش'),
34437
- description: M$J('Sales contact for the party', 'مخاطب فروش طرف'),
34540
+ title: M$K('Sales Contact', 'مخاطب فروش'),
34541
+ description: M$K('Sales contact for the party', 'مخاطب فروش طرف'),
34438
34542
  },
34439
34543
  // Person-relationship roles (links between two people: employs, client-of, vendor-of, partner-of)
34440
34544
  {
34441
34545
  id: contactRoleIds.employs,
34442
34546
  type: ['person-relationship'],
34443
34547
  name: 'employs',
34444
- title: M$J('Employs', 'استخدام‌کننده'),
34445
- description: M$J('One person employs another person', 'یک نفر دیگری را استخدام می‌کند'),
34548
+ title: M$K('Employs', 'استخدام‌کننده'),
34549
+ description: M$K('One person employs another person', 'یک نفر دیگری را استخدام می‌کند'),
34446
34550
  },
34447
34551
  {
34448
34552
  id: contactRoleIds.clientOf,
34449
34553
  type: ['person-relationship'],
34450
34554
  name: 'client-of',
34451
- title: M$J('Client Of', 'کارفرمای'),
34452
- description: M$J('Client relationship from one person to another', 'رابطه کارفرمایی بین دو نفر'),
34555
+ title: M$K('Client Of', 'کارفرمای'),
34556
+ description: M$K('Client relationship from one person to another', 'رابطه کارفرمایی بین دو نفر'),
34453
34557
  },
34454
34558
  {
34455
34559
  id: contactRoleIds.vendorOf,
34456
34560
  type: ['person-relationship'],
34457
34561
  name: 'vendor-of',
34458
- title: M$J('Vendor Of', 'فروشندهٔ'),
34459
- description: M$J('Vendor relationship from one person to another', 'رابطه فروشنده بین دو نفر'),
34562
+ title: M$K('Vendor Of', 'فروشندهٔ'),
34563
+ description: M$K('Vendor relationship from one person to another', 'رابطه فروشنده بین دو نفر'),
34460
34564
  },
34461
34565
  {
34462
34566
  id: contactRoleIds.partnerOf,
34463
34567
  type: ['person-relationship'],
34464
34568
  name: 'partner-of',
34465
- title: M$J('Partner Of', 'شریک'),
34466
- description: M$J('Non-directional partnership between parties', 'شراکت بین طرفین'),
34569
+ title: M$K('Partner Of', 'شریک'),
34570
+ description: M$K('Non-directional partnership between parties', 'شراکت بین طرفین'),
34467
34571
  },
34468
34572
  // Family/kinship roles
34469
34573
  {
34470
34574
  id: contactRoleIds.mother,
34471
34575
  type: ['family'],
34472
34576
  name: 'mother',
34473
- title: M$J('Mother', 'مادر'),
34474
- description: M$J('Mother or maternal parent', 'مادر'),
34577
+ title: M$K('Mother', 'مادر'),
34578
+ description: M$K('Mother or maternal parent', 'مادر'),
34475
34579
  },
34476
34580
  {
34477
34581
  id: contactRoleIds.father,
34478
34582
  type: ['family'],
34479
34583
  name: 'father',
34480
- title: M$J('Father', 'پدر'),
34481
- description: M$J('Father or paternal parent', 'پدر'),
34584
+ title: M$K('Father', 'پدر'),
34585
+ description: M$K('Father or paternal parent', 'پدر'),
34482
34586
  },
34483
34587
  {
34484
34588
  id: contactRoleIds.sibling,
34485
34589
  type: ['family'],
34486
34590
  name: 'sibling',
34487
- title: M$J('Sibling', 'خواهر/برادر'),
34488
- description: M$J('Brother or sister', 'هم‌نژاد'),
34591
+ title: M$K('Sibling', 'خواهر/برادر'),
34592
+ description: M$K('Brother or sister', 'هم‌نژاد'),
34489
34593
  },
34490
34594
  {
34491
34595
  id: contactRoleIds.spouse,
34492
34596
  type: ['family'],
34493
34597
  name: 'spouse',
34494
- title: M$J('Spouse', 'همسر'),
34495
- description: M$J('Husband or wife', 'زوج'),
34598
+ title: M$K('Spouse', 'همسر'),
34599
+ description: M$K('Husband or wife', 'زوج'),
34496
34600
  },
34497
34601
  {
34498
34602
  id: contactRoleIds.child,
34499
34603
  type: ['family'],
34500
34604
  name: 'child',
34501
- title: M$J('Child', 'فرزند'),
34502
- description: M$J('Son or daughter', 'پسر یا دختر'),
34605
+ title: M$K('Child', 'فرزند'),
34606
+ description: M$K('Son or daughter', 'پسر یا دختر'),
34503
34607
  },
34504
34608
  {
34505
34609
  id: contactRoleIds.guardian,
34506
34610
  type: ['family'],
34507
34611
  name: 'guardian',
34508
- title: M$J('Guardian', 'سرپرست'),
34509
- description: M$J('Legal guardian or caregiver', 'سرپرست قانونی یا مراقب'),
34612
+ title: M$K('Guardian', 'سرپرست'),
34613
+ description: M$K('Legal guardian or caregiver', 'سرپرست قانونی یا مراقب'),
34510
34614
  },
34511
34615
  ];
34512
34616
 
34513
- const M$I = createMultiLanguageString;
34617
+ const M$J = createMultiLanguageString;
34514
34618
  const PARTY_CONTACT_ROLES = [
34515
34619
  contactRoleIds.primaryContact,
34516
34620
  contactRoleIds.accountManager,
@@ -34518,7 +34622,7 @@ const PARTY_CONTACT_ROLES = [
34518
34622
  contactRoleIds.technicalContact,
34519
34623
  contactRoleIds.salesContact,
34520
34624
  ];
34521
- const getRoleTitle$1 = (roleId) => contactRoleMocks.find((r) => r.id === roleId)?.title ?? M$I('Other', 'سایر');
34625
+ const getRoleTitle$1 = (roleId) => contactRoleMocks.find((r) => r.id === roleId)?.title ?? M$J('Other', 'سایر');
34522
34626
  const naturalPersonIds = Object.values(personNaturalIds);
34523
34627
  const createPartyContactMock = () => {
34524
34628
  const mock = [];
@@ -37114,7 +37218,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
37114
37218
  }] });
37115
37219
 
37116
37220
  //#region ---- Helpers ----
37117
- const M$H = createMultiLanguageString;
37221
+ const M$I = createMultiLanguageString;
37118
37222
  //#endregion
37119
37223
  //#region ---- Category ids ----
37120
37224
  const textTemplateCategoryIds = {
@@ -37130,48 +37234,48 @@ const textTemplateCategoryIds = {
37130
37234
  const textTemplateCategoryMocks = [
37131
37235
  {
37132
37236
  id: textTemplateCategoryIds.order,
37133
- title: M$H('Order', 'سفارش'),
37134
- description: M$H('Order-related templates (confirmation, shipping, etc.)', 'الگوهای مرتبط با سفارش (تأیید، ارسال و غیره)'),
37237
+ title: M$I('Order', 'سفارش'),
37238
+ description: M$I('Order-related templates (confirmation, shipping, etc.)', 'الگوهای مرتبط با سفارش (تأیید، ارسال و غیره)'),
37135
37239
  icon: 'fa-light fa-shopping-cart',
37136
37240
  color: '#3b82f6',
37137
37241
  childrenCount: 0,
37138
37242
  },
37139
37243
  {
37140
37244
  id: textTemplateCategoryIds.authentication,
37141
- title: M$H('Authentication', 'احراز هویت'),
37142
- description: M$H('Authentication and security templates (welcome, password reset, etc.)', 'الگوهای احراز هویت و امنیت (خوش‌آمدگویی، بازیابی رمز عبور و غیره)'),
37245
+ title: M$I('Authentication', 'احراز هویت'),
37246
+ description: M$I('Authentication and security templates (welcome, password reset, etc.)', 'الگوهای احراز هویت و امنیت (خوش‌آمدگویی، بازیابی رمز عبور و غیره)'),
37143
37247
  icon: 'fa-light fa-key',
37144
37248
  color: '#10b981',
37145
37249
  childrenCount: 0,
37146
37250
  },
37147
37251
  {
37148
37252
  id: textTemplateCategoryIds.marketing,
37149
- title: M$H('Marketing', 'بازاریابی'),
37150
- description: M$H('Marketing and promotion templates', 'الگوهای بازاریابی و تبلیغات'),
37253
+ title: M$I('Marketing', 'بازاریابی'),
37254
+ description: M$I('Marketing and promotion templates', 'الگوهای بازاریابی و تبلیغات'),
37151
37255
  icon: 'fa-light fa-megaphone',
37152
37256
  color: '#f59e0b',
37153
37257
  childrenCount: 0,
37154
37258
  },
37155
37259
  {
37156
37260
  id: textTemplateCategoryIds.broadcast,
37157
- title: M$H('Employee communications', 'ارتباطات کارکنان'),
37158
- description: M$H('Templates for employee-facing messages across email, SMS, push, and other channels (e.g. seasonal greetings, announcements)', 'الگوهای پیام‌های کارکنان در ایمیل، پیامک، اعلان فشاری و سایر کانال‌ها (مثلاً تبریک‌های فصلی، اعلان‌ها)'),
37261
+ title: M$I('Employee communications', 'ارتباطات کارکنان'),
37262
+ description: M$I('Templates for employee-facing messages across email, SMS, push, and other channels (e.g. seasonal greetings, announcements)', 'الگوهای پیام‌های کارکنان در ایمیل، پیامک، اعلان فشاری و سایر کانال‌ها (مثلاً تبریک‌های فصلی، اعلان‌ها)'),
37159
37263
  icon: 'fa-light fa-bullhorn',
37160
37264
  color: '#e11d48',
37161
37265
  childrenCount: 0,
37162
37266
  },
37163
37267
  {
37164
37268
  id: textTemplateCategoryIds.transactional,
37165
- title: M$H('Transactional', 'تراکنشی'),
37166
- description: M$H('Transactional notification templates', 'الگوهای اعلان تراکنشی'),
37269
+ title: M$I('Transactional', 'تراکنشی'),
37270
+ description: M$I('Transactional notification templates', 'الگوهای اعلان تراکنشی'),
37167
37271
  icon: 'fa-light fa-bell',
37168
37272
  color: '#8b5cf6',
37169
37273
  childrenCount: 0,
37170
37274
  },
37171
37275
  {
37172
37276
  id: textTemplateCategoryIds.support,
37173
- title: M$H('Support', 'پشتیبانی'),
37174
- description: M$H('Customer support and help desk templates', 'الگوهای پشتیبانی مشتری و میز راهنما'),
37277
+ title: M$I('Support', 'پشتیبانی'),
37278
+ description: M$I('Customer support and help desk templates', 'الگوهای پشتیبانی مشتری و میز راهنما'),
37175
37279
  icon: 'fa-light fa-headset',
37176
37280
  color: '#ec4899',
37177
37281
  childrenCount: 0,
@@ -37194,30 +37298,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
37194
37298
  }] });
37195
37299
 
37196
37300
  //#region ---- Helpers ----
37197
- const M$G = createMultiLanguageString;
37198
- const getCategoryTitle$4 = (id) => textTemplateCategoryMocks.find((c) => c.id === id)?.title ?? M$G('', '');
37301
+ const M$H = createMultiLanguageString;
37302
+ const getCategoryTitle$4 = (id) => textTemplateCategoryMocks.find((c) => c.id === id)?.title ?? M$H('', '');
37199
37303
  //#endregion
37200
37304
  //#region ---- Seed data ----
37201
37305
  const TEXT_TEMPLATES = [
37202
37306
  {
37203
37307
  id: AXPDataGenerator.uuid(),
37204
37308
  name: 'order-confirmation',
37205
- title: M$G('Order Confirmation', 'تأیید سفارش'),
37309
+ title: M$H('Order Confirmation', 'تأیید سفارش'),
37206
37310
  categoryIds: [textTemplateCategoryIds.order],
37207
37311
  categories: [
37208
37312
  { id: textTemplateCategoryIds.order, title: getCategoryTitle$4(textTemplateCategoryIds.order) },
37209
37313
  ],
37210
37314
  channels: {
37211
37315
  email: {
37212
- subject: M$G('Order {{orderId}} Confirmed', 'سفارش {{orderId}} تأیید شد'),
37213
- body: M$G('Dear {{customerName}},\n\nYour order {{orderId}} has been confirmed. Total: {{totalAmount}}.\n\nThank you for your purchase!', '{{customerName}} گرامی،\n\nسفارش {{orderId}} شما تأیید شد. جمع: {{totalAmount}}.\n\nاز خرید شما سپاسگزاریم!'),
37316
+ subject: M$H('Order {{orderId}} Confirmed', 'سفارش {{orderId}} تأیید شد'),
37317
+ body: M$H('Dear {{customerName}},\n\nYour order {{orderId}} has been confirmed. Total: {{totalAmount}}.\n\nThank you for your purchase!', '{{customerName}} گرامی،\n\nسفارش {{orderId}} شما تأیید شد. جمع: {{totalAmount}}.\n\nاز خرید شما سپاسگزاریم!'),
37214
37318
  },
37215
37319
  },
37216
37320
  },
37217
37321
  {
37218
37322
  id: AXPDataGenerator.uuid(),
37219
37323
  name: 'welcome-sms',
37220
- title: M$G('Welcome SMS', 'پیامک خوش‌آمدگویی'),
37324
+ title: M$H('Welcome SMS', 'پیامک خوش‌آمدگویی'),
37221
37325
  categoryIds: [textTemplateCategoryIds.authentication],
37222
37326
  categories: [
37223
37327
  {
@@ -37227,14 +37331,14 @@ const TEXT_TEMPLATES = [
37227
37331
  ],
37228
37332
  channels: {
37229
37333
  sms: {
37230
- body: M$G('Welcome {{customerName}}! Thank you for signing up. Your code: {{verificationCode}}', '{{customerName}} عزیز، خوش آمدید! از ثبت‌نام شما سپاسگزاریم. کد شما: {{verificationCode}}'),
37334
+ body: M$H('Welcome {{customerName}}! Thank you for signing up. Your code: {{verificationCode}}', '{{customerName}} عزیز، خوش آمدید! از ثبت‌نام شما سپاسگزاریم. کد شما: {{verificationCode}}'),
37231
37335
  },
37232
37336
  },
37233
37337
  },
37234
37338
  {
37235
37339
  id: AXPDataGenerator.uuid(),
37236
37340
  name: 'password-reset',
37237
- title: M$G('Password Reset', 'بازیابی رمز عبور'),
37341
+ title: M$H('Password Reset', 'بازیابی رمز عبور'),
37238
37342
  categoryIds: [textTemplateCategoryIds.authentication],
37239
37343
  categories: [
37240
37344
  {
@@ -37244,33 +37348,33 @@ const TEXT_TEMPLATES = [
37244
37348
  ],
37245
37349
  channels: {
37246
37350
  email: {
37247
- subject: M$G('Reset Your Password', 'بازیابی رمز عبور'),
37248
- body: M$G('<p>Hello {{userName}},</p><p>Click the link below to reset your password:</p><p><a href="{{resetLink}}">Reset Password</a></p><p>This link expires in {{expiryMinutes}} minutes.</p>', '<p>{{userName}} گرامی،</p><p>برای بازنشانی رمز عبور روی پیوند زیر کلیک کنید:</p><p><a href="{{resetLink}}">بازنشانی رمز عبور</a></p><p>این پیوند تا {{expiryMinutes}} دقیقه معتبر است.</p>'),
37351
+ subject: M$H('Reset Your Password', 'بازیابی رمز عبور'),
37352
+ body: M$H('<p>Hello {{userName}},</p><p>Click the link below to reset your password:</p><p><a href="{{resetLink}}">Reset Password</a></p><p>This link expires in {{expiryMinutes}} minutes.</p>', '<p>{{userName}} گرامی،</p><p>برای بازنشانی رمز عبور روی پیوند زیر کلیک کنید:</p><p><a href="{{resetLink}}">بازنشانی رمز عبور</a></p><p>این پیوند تا {{expiryMinutes}} دقیقه معتبر است.</p>'),
37249
37353
  },
37250
37354
  },
37251
37355
  },
37252
37356
  {
37253
37357
  id: AXPDataGenerator.uuid(),
37254
37358
  name: 'shipping-notification',
37255
- title: M$G('Shipping Notification', 'اعلان ارسال'),
37359
+ title: M$H('Shipping Notification', 'اعلان ارسال'),
37256
37360
  categoryIds: [textTemplateCategoryIds.order],
37257
37361
  categories: [
37258
37362
  { id: textTemplateCategoryIds.order, title: getCategoryTitle$4(textTemplateCategoryIds.order) },
37259
37363
  ],
37260
37364
  channels: {
37261
37365
  email: {
37262
- subject: M$G('Your Order {{orderId}} Has Shipped', 'سفارش {{orderId}} شما ارسال شد'),
37263
- body: M$G('<p>Hi {{customerName}},</p><p>Great news! Your order {{orderId}} has shipped.</p><p>Tracking number: {{trackingNumber}}</p><p>Ship to: {{shippingAddress}}</p><p>Thank you for your purchase!</p>', '<p>{{customerName}} عزیز،</p><p>سفارش {{orderId}} شما ارسال شد.</p><p>شماره پیگیری: {{trackingNumber}}</p><p>آدرس ارسال: {{shippingAddress}}</p><p>از خرید شما سپاسگزاریم!</p>'),
37366
+ subject: M$H('Your Order {{orderId}} Has Shipped', 'سفارش {{orderId}} شما ارسال شد'),
37367
+ body: M$H('<p>Hi {{customerName}},</p><p>Great news! Your order {{orderId}} has shipped.</p><p>Tracking number: {{trackingNumber}}</p><p>Ship to: {{shippingAddress}}</p><p>Thank you for your purchase!</p>', '<p>{{customerName}} عزیز،</p><p>سفارش {{orderId}} شما ارسال شد.</p><p>شماره پیگیری: {{trackingNumber}}</p><p>آدرس ارسال: {{shippingAddress}}</p><p>از خرید شما سپاسگزاریم!</p>'),
37264
37368
  },
37265
37369
  sms: {
37266
- body: M$G('Your order {{orderId}} shipped! Track: {{trackingNumber}}', 'سفارش {{orderId}} ارسال شد! پیگیری: {{trackingNumber}}'),
37370
+ body: M$H('Your order {{orderId}} shipped! Track: {{trackingNumber}}', 'سفارش {{orderId}} ارسال شد! پیگیری: {{trackingNumber}}'),
37267
37371
  },
37268
37372
  },
37269
37373
  },
37270
37374
  {
37271
37375
  id: AXPDataGenerator.uuid(),
37272
37376
  name: 'email-verification',
37273
- title: M$G('Email Verification', 'تأیید ایمیل'),
37377
+ title: M$H('Email Verification', 'تأیید ایمیل'),
37274
37378
  categoryIds: [textTemplateCategoryIds.authentication],
37275
37379
  categories: [
37276
37380
  {
@@ -37280,33 +37384,33 @@ const TEXT_TEMPLATES = [
37280
37384
  ],
37281
37385
  channels: {
37282
37386
  email: {
37283
- subject: M$G('Verify Your Email Address', 'تأیید آدرس ایمیل'),
37284
- body: M$G('<p>Hello {{userName}},</p><p>Please verify your email using this code: <strong>{{verificationCode}}</strong></p><p>This code expires in {{expiryMinutes}} minutes.</p>', '<p>{{userName}} گرامی،</p><p>با این کد ایمیل خود را تأیید کنید: <strong>{{verificationCode}}</strong></p><p>این کد تا {{expiryMinutes}} دقیقه معتبر است.</p>'),
37387
+ subject: M$H('Verify Your Email Address', 'تأیید آدرس ایمیل'),
37388
+ body: M$H('<p>Hello {{userName}},</p><p>Please verify your email using this code: <strong>{{verificationCode}}</strong></p><p>This code expires in {{expiryMinutes}} minutes.</p>', '<p>{{userName}} گرامی،</p><p>با این کد ایمیل خود را تأیید کنید: <strong>{{verificationCode}}</strong></p><p>این کد تا {{expiryMinutes}} دقیقه معتبر است.</p>'),
37285
37389
  },
37286
37390
  },
37287
37391
  },
37288
37392
  {
37289
37393
  id: AXPDataGenerator.uuid(),
37290
37394
  name: 'promotional-offer',
37291
- title: M$G('Promotional Offer', 'پیشنهاد تبلیغاتی'),
37395
+ title: M$H('Promotional Offer', 'پیشنهاد تبلیغاتی'),
37292
37396
  categoryIds: [textTemplateCategoryIds.marketing],
37293
37397
  categories: [
37294
37398
  { id: textTemplateCategoryIds.marketing, title: getCategoryTitle$4(textTemplateCategoryIds.marketing) },
37295
37399
  ],
37296
37400
  channels: {
37297
37401
  email: {
37298
- subject: M$G('Special Offer Just for You!', 'یک پیشنهاد ویژه برای شما!'),
37299
- body: M$G('<p>Hi {{customerName}},</p><p>As a valued customer, use code <strong>{{verificationCode}}</strong> for 10% off your next order!</p><p>Offer expires in {{expiryMinutes}} minutes. Shop now!</p>', '<p>{{customerName}} عزیز،</p><p>به‌عنوان مشتری ارزشمند، از کد <strong>{{verificationCode}}</strong> برای ۱۰٪ تخفیف سفارش بعدی استفاده کنید!</p><p>این پیشنهاد تا {{expiryMinutes}} دقیقه دیگر معتبر است. همین حالا خرید کنید!</p>'),
37402
+ subject: M$H('Special Offer Just for You!', 'یک پیشنهاد ویژه برای شما!'),
37403
+ body: M$H('<p>Hi {{customerName}},</p><p>As a valued customer, use code <strong>{{verificationCode}}</strong> for 10% off your next order!</p><p>Offer expires in {{expiryMinutes}} minutes. Shop now!</p>', '<p>{{customerName}} عزیز،</p><p>به‌عنوان مشتری ارزشمند، از کد <strong>{{verificationCode}}</strong> برای ۱۰٪ تخفیف سفارش بعدی استفاده کنید!</p><p>این پیشنهاد تا {{expiryMinutes}} دقیقه دیگر معتبر است. همین حالا خرید کنید!</p>'),
37300
37404
  },
37301
37405
  sms: {
37302
- body: M$G('Hi {{customerName}}! Use {{verificationCode}} for 10% off. Shop now!', '{{customerName}} عزیز! برای ۱۰٪ تخفیف از {{verificationCode}} استفاده کنید.'),
37406
+ body: M$H('Hi {{customerName}}! Use {{verificationCode}} for 10% off. Shop now!', '{{customerName}} عزیز! برای ۱۰٪ تخفیف از {{verificationCode}} استفاده کنید.'),
37303
37407
  },
37304
37408
  },
37305
37409
  },
37306
37410
  {
37307
37411
  id: AXPDataGenerator.uuid(),
37308
37412
  name: 'payment-reminder',
37309
- title: M$G('Payment Reminder', 'یادآوری پرداخت'),
37413
+ title: M$H('Payment Reminder', 'یادآوری پرداخت'),
37310
37414
  categoryIds: [textTemplateCategoryIds.transactional],
37311
37415
  categories: [
37312
37416
  {
@@ -37316,15 +37420,15 @@ const TEXT_TEMPLATES = [
37316
37420
  ],
37317
37421
  channels: {
37318
37422
  email: {
37319
- subject: M$G('Payment Reminder - Invoice {{invoiceNumber}}', 'یادآوری پرداخت — فاکتور {{invoiceNumber}}'),
37320
- body: M$G('<p>Hi {{customerName}},</p><p>This is a friendly reminder that payment of {{totalAmount}} for invoice {{invoiceNumber}} is due soon.</p><p>Thank you for your business.</p>', '<p>{{customerName}} گرامی،</p><p>یادآوری می‌کنیم که پرداخت مبلغ {{totalAmount}} برای فاکتور {{invoiceNumber}} نزدیک است.</p><p>از همکاری شما سپاسگزاریم.</p>'),
37423
+ subject: M$H('Payment Reminder - Invoice {{invoiceNumber}}', 'یادآوری پرداخت — فاکتور {{invoiceNumber}}'),
37424
+ body: M$H('<p>Hi {{customerName}},</p><p>This is a friendly reminder that payment of {{totalAmount}} for invoice {{invoiceNumber}} is due soon.</p><p>Thank you for your business.</p>', '<p>{{customerName}} گرامی،</p><p>یادآوری می‌کنیم که پرداخت مبلغ {{totalAmount}} برای فاکتور {{invoiceNumber}} نزدیک است.</p><p>از همکاری شما سپاسگزاریم.</p>'),
37321
37425
  },
37322
37426
  },
37323
37427
  },
37324
37428
  {
37325
37429
  id: AXPDataGenerator.uuid(),
37326
37430
  name: 'password-changed',
37327
- title: M$G('Password Changed Confirmation', 'تأیید تغییر رمز عبور'),
37431
+ title: M$H('Password Changed Confirmation', 'تأیید تغییر رمز عبور'),
37328
37432
  categoryIds: [textTemplateCategoryIds.authentication],
37329
37433
  categories: [
37330
37434
  {
@@ -37334,110 +37438,110 @@ const TEXT_TEMPLATES = [
37334
37438
  ],
37335
37439
  channels: {
37336
37440
  email: {
37337
- subject: M$G('Your Password Has Been Changed', 'رمز عبور شما تغییر کرد'),
37338
- body: M$G('<p>Hello {{userName}},</p><p>Your password was successfully changed. If you did not make this change, please contact support immediately.</p>', '<p>{{userName}} گرامی،</p><p>رمز عبور شما با موفقیت تغییر کرد. اگر این تغییر را انجام نداده‌اید، فوراً با پشتیبانی تماس بگیرید.</p>'),
37441
+ subject: M$H('Your Password Has Been Changed', 'رمز عبور شما تغییر کرد'),
37442
+ body: M$H('<p>Hello {{userName}},</p><p>Your password was successfully changed. If you did not make this change, please contact support immediately.</p>', '<p>{{userName}} گرامی،</p><p>رمز عبور شما با موفقیت تغییر کرد. اگر این تغییر را انجام نداده‌اید، فوراً با پشتیبانی تماس بگیرید.</p>'),
37339
37443
  },
37340
37444
  },
37341
37445
  },
37342
37446
  {
37343
37447
  id: AXPDataGenerator.uuid(),
37344
37448
  name: 'ticket-received',
37345
- title: M$G('Support Ticket Received', 'دریافت تیکت پشتیبانی'),
37449
+ title: M$H('Support Ticket Received', 'دریافت تیکت پشتیبانی'),
37346
37450
  categoryIds: [textTemplateCategoryIds.support],
37347
37451
  categories: [
37348
37452
  { id: textTemplateCategoryIds.support, title: getCategoryTitle$4(textTemplateCategoryIds.support) },
37349
37453
  ],
37350
37454
  channels: {
37351
37455
  email: {
37352
- subject: M$G('Support Ticket {{supportTicketId}} Received', 'تیکت پشتیبانی {{supportTicketId}} دریافت شد'),
37353
- body: M$G('<p>Hi {{customerName}},</p><p>We have received your support request (Ticket #{{supportTicketId}}).</p><p>Our team will get back to you soon. Your assigned agent is {{agentName}}.</p>', '<p>{{customerName}} گرامی،</p><p>درخواست پشتیبانی شما (تیکت شماره {{supportTicketId}}) دریافت شد.</p><p>تیم ما به‌زودی پاسخ می‌دهد. کارشناس شما: {{agentName}}.</p>'),
37456
+ subject: M$H('Support Ticket {{supportTicketId}} Received', 'تیکت پشتیبانی {{supportTicketId}} دریافت شد'),
37457
+ body: M$H('<p>Hi {{customerName}},</p><p>We have received your support request (Ticket #{{supportTicketId}}).</p><p>Our team will get back to you soon. Your assigned agent is {{agentName}}.</p>', '<p>{{customerName}} گرامی،</p><p>درخواست پشتیبانی شما (تیکت شماره {{supportTicketId}}) دریافت شد.</p><p>تیم ما به‌زودی پاسخ می‌دهد. کارشناس شما: {{agentName}}.</p>'),
37354
37458
  },
37355
37459
  },
37356
37460
  },
37357
37461
  {
37358
37462
  id: AXPDataGenerator.uuid(),
37359
37463
  name: 'ticket-resolved',
37360
- title: M$G('Support Ticket Resolved', 'تیکت پشتیبانی حل شد'),
37464
+ title: M$H('Support Ticket Resolved', 'تیکت پشتیبانی حل شد'),
37361
37465
  categoryIds: [textTemplateCategoryIds.support],
37362
37466
  categories: [
37363
37467
  { id: textTemplateCategoryIds.support, title: getCategoryTitle$4(textTemplateCategoryIds.support) },
37364
37468
  ],
37365
37469
  channels: {
37366
37470
  email: {
37367
- subject: M$G('Ticket {{supportTicketId}} Resolved', 'تیکت {{supportTicketId}} حل شد'),
37368
- body: M$G('<p>Hi {{customerName}},</p><p>Your support ticket {{supportTicketId}} has been resolved by {{agentName}}.</p><p>Thank you for contacting us!</p>', '<p>{{customerName}} گرامی،</p><p>تیکت پشتیبانی {{supportTicketId}} توسط {{agentName}} حل شد.</p><p>از تماس شما سپاسگزاریم!</p>'),
37471
+ subject: M$H('Ticket {{supportTicketId}} Resolved', 'تیکت {{supportTicketId}} حل شد'),
37472
+ body: M$H('<p>Hi {{customerName}},</p><p>Your support ticket {{supportTicketId}} has been resolved by {{agentName}}.</p><p>Thank you for contacting us!</p>', '<p>{{customerName}} گرامی،</p><p>تیکت پشتیبانی {{supportTicketId}} توسط {{agentName}} حل شد.</p><p>از تماس شما سپاسگزاریم!</p>'),
37369
37473
  },
37370
37474
  },
37371
37475
  },
37372
37476
  {
37373
37477
  id: AXPDataGenerator.uuid(),
37374
37478
  name: 'broadcast-valentines-day',
37375
- title: M$G("Valentine's Day — Employee Broadcast", 'روز ولنتاین — پیام سازمانی'),
37479
+ title: M$H("Valentine's Day — Employee Broadcast", 'روز ولنتاین — پیام سازمانی'),
37376
37480
  categoryIds: [textTemplateCategoryIds.broadcast],
37377
37481
  categories: [
37378
37482
  { id: textTemplateCategoryIds.broadcast, title: getCategoryTitle$4(textTemplateCategoryIds.broadcast) },
37379
37483
  ],
37380
37484
  channels: {
37381
37485
  email: {
37382
- subject: M$G("Happy Valentine's Day, {{employeeName}}!", '{{employeeName}} عزیز، روز ولنتاین مبارک!'),
37383
- body: M$G('<p>Dear {{employeeName}},</p><p>We wish you a wonderful Valentine\'s Day filled with kindness and appreciation. Thank you for everything you bring to our team.</p><p>With gratitude,<br/>Your organization</p>', '<p>{{employeeName}} گرامی،</p><p>برای شما روزی پر از مهربانی و قدردانی آرزومندیم. از همهٔ تلاش‌هایتان برای تیم سپاسگزاریم.</p><p>با احترام،<br/>سازمان شما</p>'),
37486
+ subject: M$H("Happy Valentine's Day, {{employeeName}}!", '{{employeeName}} عزیز، روز ولنتاین مبارک!'),
37487
+ body: M$H('<p>Dear {{employeeName}},</p><p>We wish you a wonderful Valentine\'s Day filled with kindness and appreciation. Thank you for everything you bring to our team.</p><p>With gratitude,<br/>Your organization</p>', '<p>{{employeeName}} گرامی،</p><p>برای شما روزی پر از مهربانی و قدردانی آرزومندیم. از همهٔ تلاش‌هایتان برای تیم سپاسگزاریم.</p><p>با احترام،<br/>سازمان شما</p>'),
37384
37488
  },
37385
37489
  sms: {
37386
- body: M$G("Happy Valentine's Day, {{employeeName}}! Thanks for being a valued part of our team.", '{{employeeName}} عزیز، روز ولنتاین مبارک! از حضور ارزشمندتان در تیم سپاسگزاریم.'),
37490
+ body: M$H("Happy Valentine's Day, {{employeeName}}! Thanks for being a valued part of our team.", '{{employeeName}} عزیز، روز ولنتاین مبارک! از حضور ارزشمندتان در تیم سپاسگزاریم.'),
37387
37491
  },
37388
37492
  whatsapp: {
37389
- body: M$G("Hi {{employeeName}}! Happy Valentine's Day from all of us. We appreciate you!", '{{employeeName}} گرامی! روز ولنتاین مبارک؛ از طرف همه دوستتان داریم.'),
37493
+ body: M$H("Hi {{employeeName}}! Happy Valentine's Day from all of us. We appreciate you!", '{{employeeName}} گرامی! روز ولنتاین مبارک؛ از طرف همه دوستتان داریم.'),
37390
37494
  },
37391
37495
  push: {
37392
- body: M$G("Happy Valentine's Day, {{employeeName}}!", '{{employeeName}} عزیز، روز ولنتاین مبارک!'),
37496
+ body: M$H("Happy Valentine's Day, {{employeeName}}!", '{{employeeName}} عزیز، روز ولنتاین مبارک!'),
37393
37497
  },
37394
37498
  },
37395
37499
  },
37396
37500
  {
37397
37501
  id: AXPDataGenerator.uuid(),
37398
37502
  name: 'broadcast-new-year',
37399
- title: M$G('New Year — Employee Broadcast', 'سال نو — پیام سازمانی'),
37503
+ title: M$H('New Year — Employee Broadcast', 'سال نو — پیام سازمانی'),
37400
37504
  categoryIds: [textTemplateCategoryIds.broadcast],
37401
37505
  categories: [
37402
37506
  { id: textTemplateCategoryIds.broadcast, title: getCategoryTitle$4(textTemplateCategoryIds.broadcast) },
37403
37507
  ],
37404
37508
  channels: {
37405
37509
  email: {
37406
- subject: M$G('Happy New Year, {{employeeName}}!', '{{employeeName}} عزیز، سال نو مبارک!'),
37407
- body: M$G('<p>Dear {{employeeName}},</p><p>As the year begins, we wish you health, success, and fresh opportunities. Thank you for your dedication—we look forward to achieving great things together.</p><p>Happy New Year!<br/>Your organization</p>', '<p>{{employeeName}} گرامی،</p><p>با آغاز سال، برای شما تندرستی، موفقیت و فرصت‌های تازه آرزومندیم. از تعهد شما سپاسگزاریم؛ در کنار هم به دستاوردهای خوب امیدواریم.</p><p>سال نو مبارک!<br/>سازمان شما</p>'),
37510
+ subject: M$H('Happy New Year, {{employeeName}}!', '{{employeeName}} عزیز، سال نو مبارک!'),
37511
+ body: M$H('<p>Dear {{employeeName}},</p><p>As the year begins, we wish you health, success, and fresh opportunities. Thank you for your dedication—we look forward to achieving great things together.</p><p>Happy New Year!<br/>Your organization</p>', '<p>{{employeeName}} گرامی،</p><p>با آغاز سال، برای شما تندرستی، موفقیت و فرصت‌های تازه آرزومندیم. از تعهد شما سپاسگزاریم؛ در کنار هم به دستاوردهای خوب امیدواریم.</p><p>سال نو مبارک!<br/>سازمان شما</p>'),
37408
37512
  },
37409
37513
  sms: {
37410
- body: M$G('Happy New Year, {{employeeName}}! Wishing you a successful year ahead from our whole team.', '{{employeeName}} عزیز، سال نو مبارک! آرزوی یک سال موفق از طرف تمام تیم.'),
37514
+ body: M$H('Happy New Year, {{employeeName}}! Wishing you a successful year ahead from our whole team.', '{{employeeName}} عزیز، سال نو مبارک! آرزوی یک سال موفق از طرف تمام تیم.'),
37411
37515
  },
37412
37516
  whatsapp: {
37413
- body: M$G('Hi {{employeeName}}! Happy New Year—wishing you and yours all the best.', '{{employeeName}} گرامی! سال نو مبارک؛ برای شما و خانواده‌تان بهترین‌ها را آرزومندیم.'),
37517
+ body: M$H('Hi {{employeeName}}! Happy New Year—wishing you and yours all the best.', '{{employeeName}} گرامی! سال نو مبارک؛ برای شما و خانواده‌تان بهترین‌ها را آرزومندیم.'),
37414
37518
  },
37415
37519
  push: {
37416
- body: M$G('Happy New Year, {{employeeName}}!', '{{employeeName}} عزیز، سال نو مبارک!'),
37520
+ body: M$H('Happy New Year, {{employeeName}}!', '{{employeeName}} عزیز، سال نو مبارک!'),
37417
37521
  },
37418
37522
  },
37419
37523
  },
37420
37524
  {
37421
37525
  id: AXPDataGenerator.uuid(),
37422
37526
  name: 'broadcast-holiday-season',
37423
- title: M$G('Holiday Season — Employee Broadcast', 'فصل تعطیلات — پیام سازمانی'),
37527
+ title: M$H('Holiday Season — Employee Broadcast', 'فصل تعطیلات — پیام سازمانی'),
37424
37528
  categoryIds: [textTemplateCategoryIds.broadcast],
37425
37529
  categories: [
37426
37530
  { id: textTemplateCategoryIds.broadcast, title: getCategoryTitle$4(textTemplateCategoryIds.broadcast) },
37427
37531
  ],
37428
37532
  channels: {
37429
37533
  email: {
37430
- subject: M$G('Season\'s greetings, {{employeeName}}', 'تبریک فصل، {{employeeName}} گرامی'),
37431
- body: M$G('<p>Dear {{employeeName}},</p><p>During this holiday season, we want to thank you for your hard work and wish you peace, joy, and time with those who matter most.</p><p>Warm regards,<br/>Your organization</p>', '<p>{{employeeName}} گرامی،</p><p>در این فصل تعطیلات از تلاش شما سپاسگزاریم و برایتان آرامش، شادی و اوقات خوب کنار عزیزانتان آرزومندیم.</p><p>با احترام،<br/>سازمان شما</p>'),
37534
+ subject: M$H('Season\'s greetings, {{employeeName}}', 'تبریک فصل، {{employeeName}} گرامی'),
37535
+ body: M$H('<p>Dear {{employeeName}},</p><p>During this holiday season, we want to thank you for your hard work and wish you peace, joy, and time with those who matter most.</p><p>Warm regards,<br/>Your organization</p>', '<p>{{employeeName}} گرامی،</p><p>در این فصل تعطیلات از تلاش شما سپاسگزاریم و برایتان آرامش، شادی و اوقات خوب کنار عزیزانتان آرزومندیم.</p><p>با احترام،<br/>سازمان شما</p>'),
37432
37536
  },
37433
37537
  sms: {
37434
- body: M$G('Season\'s greetings, {{employeeName}}! Thank you for a great year—we appreciate you.', 'تبریک فصل، {{employeeName}} عزیز! از شما بابت سالی پر تلاش سپاسگزاریم.'),
37538
+ body: M$H('Season\'s greetings, {{employeeName}}! Thank you for a great year—we appreciate you.', 'تبریک فصل، {{employeeName}} عزیز! از شما بابت سالی پر تلاش سپاسگزاریم.'),
37435
37539
  },
37436
37540
  whatsapp: {
37437
- body: M$G('Hi {{employeeName}}! Wishing you a joyful holiday season and a restful break.', '{{employeeName}} گرامی! فصل تعطیلات شادی‌بخش و استراحتی دلچسب برایتان آرزومندیم.'),
37541
+ body: M$H('Hi {{employeeName}}! Wishing you a joyful holiday season and a restful break.', '{{employeeName}} گرامی! فصل تعطیلات شادی‌بخش و استراحتی دلچسب برایتان آرزومندیم.'),
37438
37542
  },
37439
37543
  push: {
37440
- body: M$G('Season\'s greetings, {{employeeName}}!', 'تبریک فصل، {{employeeName}} عزیز!'),
37544
+ body: M$H('Season\'s greetings, {{employeeName}}!', 'تبریک فصل، {{employeeName}} عزیز!'),
37441
37545
  },
37442
37546
  },
37443
37547
  },
@@ -40928,6 +41032,223 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
40928
41032
  }]
40929
41033
  }] });
40930
41034
 
41035
+ const M$G = createMultiLanguageString;
41036
+ /** Stable ids referenced by {@link DASHBOARDS} `categoryIds`. */
41037
+ const DASHBOARD_CATEGORY_IDS = {
41038
+ tenant: 'dcat-tenant',
41039
+ personal: 'dcat-personal',
41040
+ };
41041
+ const DASHBOARD_CATEGORY_MOCK = [
41042
+ {
41043
+ id: DASHBOARD_CATEGORY_IDS.tenant,
41044
+ title: M$G('Tenant dashboards', 'داشبوردهای سازمانی'),
41045
+ description: M$G('Shared dashboards for the organization', 'داشبوردهای مشترک سازمان'),
41046
+ childrenCount: 0,
41047
+ },
41048
+ {
41049
+ id: DASHBOARD_CATEGORY_IDS.personal,
41050
+ title: M$G('Personal dashboards', 'داشبوردهای شخصی'),
41051
+ description: M$G('User-owned dashboards', 'داشبوردهای متعلق به کاربر'),
41052
+ childrenCount: 0,
41053
+ },
41054
+ ];
41055
+
41056
+ const M$F = createMultiLanguageString;
41057
+ const CONVERSATION_ONLY_ROLE_ID = mockRoleDefinitions.find((role) => role.name === 'conversation-only')?.id;
41058
+ if (!CONVERSATION_ONLY_ROLE_ID) {
41059
+ throw new Error('conversation-only role is required for MAGFA conversation dashboard mock');
41060
+ }
41061
+ /**
41062
+ * Tenant dashboard for MAGFA commerce users with conversation-only role.
41063
+ * Shortcuts: conversations list and Demis assist chat.
41064
+ */
41065
+ const MAGFA_CONVERSATION_DASHBOARD = {
41066
+ id: '35385219-9198-4dd6-9d34-1dece63649b5',
41067
+ title: M$F('Magfa', 'مگفا'),
41068
+ description: M$F('', ''),
41069
+ widgets: [
41070
+ {
41071
+ config: {
41072
+ id: '67f1f968-7ebf-4030-8823-851ce6ebb1ce',
41073
+ lg: {
41074
+ id: '67f1f968-7ebf-4030-8823-851ce6ebb1ce',
41075
+ height: 2,
41076
+ width: 2,
41077
+ minHeight: 1,
41078
+ minWidth: 1,
41079
+ maxHeight: 2,
41080
+ maxWidth: 3,
41081
+ x: 0,
41082
+ y: 0,
41083
+ },
41084
+ md: {
41085
+ id: '67f1f968-7ebf-4030-8823-851ce6ebb1ce',
41086
+ height: 2,
41087
+ width: 2,
41088
+ minHeight: 1,
41089
+ minWidth: 1,
41090
+ maxHeight: 2,
41091
+ maxWidth: 3,
41092
+ },
41093
+ sm: {
41094
+ id: '67f1f968-7ebf-4030-8823-851ce6ebb1ce',
41095
+ width: 1,
41096
+ height: 2,
41097
+ minHeight: 1,
41098
+ maxHeight: 2,
41099
+ },
41100
+ },
41101
+ node: {
41102
+ type: 'DashboardManagement:Widget:Dashboard:Shortcut',
41103
+ options: {
41104
+ color: '#541db9',
41105
+ item: {
41106
+ name: 'menu',
41107
+ title: '@conversation:module.menus.conversations.title',
41108
+ icon: 'fa-light fa-comments',
41109
+ command: {
41110
+ name: 'navigate',
41111
+ options: {
41112
+ type: 'router',
41113
+ options: {
41114
+ path: 'platform-console/chat',
41115
+ },
41116
+ },
41117
+ },
41118
+ },
41119
+ },
41120
+ meta: {
41121
+ dimensions: {
41122
+ lg: {
41123
+ width: 2,
41124
+ height: 2,
41125
+ minWidth: 1,
41126
+ minHeight: 1,
41127
+ maxWidth: 3,
41128
+ maxHeight: 2,
41129
+ },
41130
+ md: {
41131
+ width: 2,
41132
+ height: 2,
41133
+ minWidth: 1,
41134
+ minHeight: 1,
41135
+ maxWidth: 3,
41136
+ maxHeight: 2,
41137
+ },
41138
+ sm: {
41139
+ height: 2,
41140
+ minHeight: 1,
41141
+ maxHeight: 2,
41142
+ },
41143
+ },
41144
+ },
41145
+ name: 'DashboardManagement:Widget:Dashboard:Shortcut-c412f2e0-f3bd-493d-8522-55d1612fb476',
41146
+ path: 'DashboardManagement:Widget:Dashboard:Shortcut-c412f2e0-f3bd-493d-8522-55d1612fb476',
41147
+ },
41148
+ },
41149
+ {
41150
+ config: {
41151
+ id: '0237edf1-ab9f-4434-9a04-9639d3bb8fd3',
41152
+ lg: {
41153
+ id: '0237edf1-ab9f-4434-9a04-9639d3bb8fd3',
41154
+ height: 2,
41155
+ width: 3,
41156
+ minHeight: 1,
41157
+ minWidth: 1,
41158
+ maxHeight: 2,
41159
+ maxWidth: 3,
41160
+ x: 2,
41161
+ y: 0,
41162
+ },
41163
+ md: {
41164
+ id: '0237edf1-ab9f-4434-9a04-9639d3bb8fd3',
41165
+ height: 2,
41166
+ width: 2,
41167
+ minHeight: 1,
41168
+ minWidth: 1,
41169
+ maxHeight: 2,
41170
+ maxWidth: 3,
41171
+ },
41172
+ sm: {
41173
+ id: '0237edf1-ab9f-4434-9a04-9639d3bb8fd3',
41174
+ width: 1,
41175
+ height: 2,
41176
+ minHeight: 1,
41177
+ maxHeight: 2,
41178
+ },
41179
+ },
41180
+ node: {
41181
+ type: 'DashboardManagement:Widget:Dashboard:Shortcut',
41182
+ options: {
41183
+ color: '#2395b8',
41184
+ item: {
41185
+ name: 'conversation-assist',
41186
+ title: M$F('Demis', 'دیمیس'),
41187
+ description: M$F('Priority guide for the centralized commerce payment system. Assist should prefer delegating here whenever the topic is e-wallet or centralized payments (no platform command or query tools). Typical questions: paying via e-wallet, withdrawing from the wallet, charging or topping up the wallet, reporting and transaction history.', 'راهنمای اولویت‌دار سامانه پرداخت متمرکز تجارت؛ assist برای موضوعات کیف پول الکترونیک و پرداخت متمرکز باید تا حد ممکن این agent را فراخوانی کند (بدون ابزار فرمان یا پرس‌وجوی داخلی پلتفرم). نمونهٔ سوالات: نحوهٔ پرداخت از طریق کیف پول الکترونیک، برداشت از کیف پول، شارژ کیف پول، گزارش‌گیری و تاریخچهٔ تراکنش‌ها.'),
41188
+ icon: 'fa-solid fa-robot',
41189
+ command: {
41190
+ name: 'Conversation:StartAssistChat',
41191
+ options: {
41192
+ targetId: 'c0000001-0000-4000-8000-000000000009',
41193
+ targetKind: 'agent',
41194
+ },
41195
+ },
41196
+ },
41197
+ },
41198
+ meta: {
41199
+ dimensions: {
41200
+ lg: {
41201
+ width: 2,
41202
+ height: 2,
41203
+ minWidth: 1,
41204
+ minHeight: 1,
41205
+ maxWidth: 3,
41206
+ maxHeight: 2,
41207
+ },
41208
+ md: {
41209
+ width: 2,
41210
+ height: 2,
41211
+ minWidth: 1,
41212
+ minHeight: 1,
41213
+ maxWidth: 3,
41214
+ maxHeight: 2,
41215
+ },
41216
+ sm: {
41217
+ height: 2,
41218
+ minHeight: 1,
41219
+ maxHeight: 2,
41220
+ },
41221
+ },
41222
+ },
41223
+ name: 'DashboardManagement:Widget:Dashboard:Shortcut-e814c0bf-0d60-4dff-83db-da1a30736d92',
41224
+ path: 'DashboardManagement:Widget:Dashboard:Shortcut-e814c0bf-0d60-4dff-83db-da1a30736d92',
41225
+ },
41226
+ },
41227
+ ],
41228
+ roleIds: [CONVERSATION_ONLY_ROLE_ID],
41229
+ isArchived: false,
41230
+ userId: 'f0000001-0000-4000-a000-000000000003',
41231
+ auditInfo: {
41232
+ created: {
41233
+ at: new Date('2026-05-20T06:33:30.689Z'),
41234
+ by: {
41235
+ id: 'f0000001-0000-4000-a000-000000000003',
41236
+ type: 'user',
41237
+ },
41238
+ },
41239
+ updated: {
41240
+ at: new Date('2026-05-20T07:40:09.104Z'),
41241
+ by: {
41242
+ id: 'f0000001-0000-4000-a000-000000000003',
41243
+ type: 'user',
41244
+ },
41245
+ },
41246
+ },
41247
+ scope: 'T',
41248
+ categoryIds: [DASHBOARD_CATEGORY_IDS.tenant],
41249
+ locked: true,
41250
+ };
41251
+
40931
41252
  /**
40932
41253
  * Kept for compatibility with existing widget generators importing this helper.
40933
41254
  */
@@ -40940,12 +41261,15 @@ function createWidgetLayoutConfig(dimensions) {
40940
41261
  sm: { id, width: 1, ...(dimensions?.['sm'] ?? {}) },
40941
41262
  };
40942
41263
  }
40943
- const ALL_ROLE_IDS = mockRoleDefinitions.map((role) => role.id).filter((id) => typeof id === 'string');
40944
- const M$F = createMultiLanguageString;
41264
+ const ALL_ROLE_IDS = mockRoleDefinitions
41265
+ .filter((role) => role.name !== 'conversation-only')
41266
+ .map((role) => role.id)
41267
+ .filter((id) => typeof id === 'string');
41268
+ const M$E = createMultiLanguageString;
40945
41269
  const OPERATIONS_COCKPIT = {
40946
41270
  id: '13814a7a-2eab-4392-aeee-3b262fee0e7d',
40947
- title: M$F('Utility Dashboard', 'داشبورد ابزارها'),
40948
- description: M$F('Utility dashboard with shortcuts, task tracking and utility widgets for daily execution.', 'داشبورد کاربردی با میانبرها، پیگیری وظایف و ویجت های ابزار برای اجرای روزانه.'),
41271
+ title: M$E('Utility Dashboard', 'داشبورد ابزارها'),
41272
+ description: M$E('Utility dashboard with shortcuts, task tracking and utility widgets for daily execution.', 'داشبورد کاربردی با میانبرها، پیگیری وظایف و ویجت های ابزار برای اجرای روزانه.'),
40949
41273
  widgets: [
40950
41274
  {
40951
41275
  config: {
@@ -41554,8 +41878,8 @@ const OPERATIONS_COCKPIT = {
41554
41878
  };
41555
41879
  const EXECUTIVE_ANALYTICS = {
41556
41880
  id: '5180c813-c076-4c3c-baa3-53cb95748558',
41557
- title: M$F('Executive Analytics', 'تحلیل های مدیریتی'),
41558
- description: M$F('Cross-module analytics dashboard with charts, tasks and notifications from live project modules.', 'داشبورد تحلیلی بین ماژولی با نمودارها، وظایف و اعلان ها از ماژول های عملیاتی.'),
41881
+ title: M$E('Executive Analytics', 'تحلیل های مدیریتی'),
41882
+ description: M$E('Cross-module analytics dashboard with charts, tasks and notifications from live project modules.', 'داشبورد تحلیلی بین ماژولی با نمودارها، وظایف و اعلان ها از ماژول های عملیاتی.'),
41559
41883
  widgets: [
41560
41884
  {
41561
41885
  config: {
@@ -41810,7 +42134,11 @@ const EXECUTIVE_ANALYTICS = {
41810
42134
  categoryIds: ['dcat-tenant'],
41811
42135
  locked: true,
41812
42136
  };
41813
- const DASHBOARDS = [OPERATIONS_COCKPIT, EXECUTIVE_ANALYTICS];
42137
+ const DASHBOARDS = [
42138
+ OPERATIONS_COCKPIT,
42139
+ EXECUTIVE_ANALYTICS,
42140
+ MAGFA_CONVERSATION_DASHBOARD,
42141
+ ];
41814
42142
 
41815
42143
  class AXPDashboardDataSeeder {
41816
42144
  constructor() {
@@ -41826,27 +42154,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
41826
42154
  type: Injectable
41827
42155
  }] });
41828
42156
 
41829
- const M$E = createMultiLanguageString;
41830
- /** Stable ids referenced by {@link DASHBOARDS} `categoryIds`. */
41831
- const DASHBOARD_CATEGORY_IDS = {
41832
- tenant: 'dcat-tenant',
41833
- personal: 'dcat-personal',
41834
- };
41835
- const DASHBOARD_CATEGORY_MOCK = [
41836
- {
41837
- id: DASHBOARD_CATEGORY_IDS.tenant,
41838
- title: M$E('Tenant dashboards', 'داشبوردهای سازمانی'),
41839
- description: M$E('Shared dashboards for the organization', 'داشبوردهای مشترک سازمان'),
41840
- childrenCount: 0,
41841
- },
41842
- {
41843
- id: DASHBOARD_CATEGORY_IDS.personal,
41844
- title: M$E('Personal dashboards', 'داشبوردهای شخصی'),
41845
- description: M$E('User-owned dashboards', 'داشبوردهای متعلق به کاربر'),
41846
- childrenCount: 0,
41847
- },
41848
- ];
41849
-
41850
42157
  class AXMDashboardCategoryDataSeeder {
41851
42158
  constructor() {
41852
42159
  this.storage = inject(AXPEntityStorageService);
@@ -63175,16 +63482,32 @@ class AXPSecurityManagementRoleDataSeeder {
63175
63482
  constructor() {
63176
63483
  this.storageService = inject(AXPEntityStorageService);
63177
63484
  }
63178
- // private permissionService = inject(AXPPermissionDefinitionProviderService);
63179
63485
  async seed() {
63180
- // const permissions = await this.permissionService.permissions();
63181
- // const permissionKeys = permissions.map((p) => p.name);
63182
- // Generate roles with random permissions from the actual permission list
63486
+ const entityName = `${RootConfig$6.module.name}.${RootConfig$6.entities.roles.name}`;
63183
63487
  const roles = mockRoleDefinitions.map((role) => ({
63184
63488
  ...role,
63185
- // permissions: this.getRandomPermissions(permissionKeys, 2, 5), // Get 2-5 random permissions
63186
63489
  }));
63187
- await this.storageService.initial(`${RootConfig$6.module.name}.${RootConfig$6.entities.roles.name}`, roles);
63490
+ await this.storageService.initial(entityName, roles);
63491
+ // Dexie `initial()` skips the whole batch when any role name already exists,
63492
+ // so permission changes in role.mock.ts would never reach IndexedDB without this sync.
63493
+ await this.syncRolePermissionsFromMock(entityName);
63494
+ }
63495
+ /**
63496
+ * Updates permissions (and metadata) on seeded roles when mock definitions change.
63497
+ */
63498
+ async syncRolePermissionsFromMock(entityName) {
63499
+ const storedRoles = await this.storageService.getAll(entityName);
63500
+ for (const mockRole of mockRoleDefinitions) {
63501
+ const existing = storedRoles.find((role) => role.name === mockRole.name);
63502
+ if (!existing?.id) {
63503
+ continue;
63504
+ }
63505
+ await this.storageService.updateOne(entityName, existing.id, {
63506
+ permissions: mockRole.permissions ?? [],
63507
+ description: mockRole.description,
63508
+ title: mockRole.title,
63509
+ });
63510
+ }
63188
63511
  }
63189
63512
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSecurityManagementRoleDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
63190
63513
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSecurityManagementRoleDataSeeder }); }
@@ -63208,7 +63531,29 @@ class AXPSecurityManagementUserDataSeeder {
63208
63531
  }
63209
63532
  async seed() {
63210
63533
  const entityName = `${RootConfig$6.module.name}.${RootConfig$6.entities.users.name}`;
63211
- await this.storageService.initial(`${RootConfig$6.module.name}.${RootConfig$6.entities.users.name}`, mockUsers);
63534
+ await this.storageService.initial(entityName, mockUsers);
63535
+ await this.syncCollaborationDemoUserRoles(entityName);
63536
+ }
63537
+ /**
63538
+ * Keeps MAGFA collaboration demo user aligned with the conversation-only role in storage.
63539
+ */
63540
+ async syncCollaborationDemoUserRoles(usersEntityName) {
63541
+ const rolesEntityName = `${RootConfig$6.module.name}.${RootConfig$6.entities.roles.name}`;
63542
+ const storedRoles = await this.storageService.getAll(rolesEntityName);
63543
+ const conversationOnlyRole = storedRoles.find((role) => role.name === 'conversation-only');
63544
+ if (!conversationOnlyRole?.id) {
63545
+ return;
63546
+ }
63547
+ const storedUsers = await this.storageService.getAll(usersEntityName);
63548
+ const demoUser = storedUsers.find((u) => u.username === 'mohamad.pour.ghorban');
63549
+ if (!demoUser?.id) {
63550
+ return;
63551
+ }
63552
+ const roleIds = [conversationOnlyRole.id];
63553
+ await this.storageService.updateOne(usersEntityName, demoUser.id, {
63554
+ roleIds,
63555
+ roles: [{ id: conversationOnlyRole.id, title: conversationOnlyRole.title }],
63556
+ });
63212
63557
  }
63213
63558
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSecurityManagementUserDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
63214
63559
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSecurityManagementUserDataSeeder }); }
@@ -63463,7 +63808,7 @@ class AXCSecurityManagementMockModule {
63463
63808
  provideQuerySetups([
63464
63809
  {
63465
63810
  key: 'SecurityManagement:User:RolesForListColumn',
63466
- loader: () => import('./acorex-connectivity-mock-user-roles-for-list-column.query-DOXlY-R3.mjs').then((m) => m.UserRolesForListColumnQuery),
63811
+ loader: () => import('./acorex-connectivity-mock-user-roles-for-list-column.query-2PnIbRxO.mjs').then((m) => m.UserRolesForListColumnQuery),
63467
63812
  },
63468
63813
  ]),
63469
63814
  ] }); }
@@ -63507,7 +63852,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
63507
63852
  provideQuerySetups([
63508
63853
  {
63509
63854
  key: 'SecurityManagement:User:RolesForListColumn',
63510
- loader: () => import('./acorex-connectivity-mock-user-roles-for-list-column.query-DOXlY-R3.mjs').then((m) => m.UserRolesForListColumnQuery),
63855
+ loader: () => import('./acorex-connectivity-mock-user-roles-for-list-column.query-2PnIbRxO.mjs').then((m) => m.UserRolesForListColumnQuery),
63511
63856
  },
63512
63857
  ]),
63513
63858
  ],
@@ -63989,6 +64334,35 @@ function generateTenants() {
63989
64334
  maxUsers: 300,
63990
64335
  maxStorage: 3000,
63991
64336
  },
64337
+ {
64338
+ id: MAGFA_TENANT_ID,
64339
+ name: 'magfa-tenant',
64340
+ title: 'مگفا',
64341
+ description: 'MAGFA (مگفا) — tenant ایران برای اپلیکیشن تجارت، گفتگو، هوش مصنوعی و گزارش.',
64342
+ statusId: AXPSystemStatusType.Active,
64343
+ email: 'contact@magfa.ir',
64344
+ phone: '+98-21-1234-5678',
64345
+ website: 'https://magfa.demisco.com',
64346
+ supportEmail: 'support@magfa.ir',
64347
+ countryId: findRegionByCode('IR', 'country')?.id,
64348
+ country: findRegionByCode('IR', 'country'),
64349
+ stateId: findRegionByCode('TEH', 'state')?.id,
64350
+ state: findRegionByCode('TEH', 'state'),
64351
+ cityId: findRegionByCode('TEHRAN', 'city', 'TEH')?.id,
64352
+ city: findRegionByCode('TEHRAN', 'city', 'TEH'),
64353
+ timezone: 'Asia/Tehran',
64354
+ timezoneData: findTimezoneByCode('Asia/Tehran'),
64355
+ language: 'fa-IR',
64356
+ languageData: findLocaleByCode('fa-IR'),
64357
+ domain: 'magfa.ir',
64358
+ subdomain: 'magfa',
64359
+ userId: findUserByUsername('mohamad.pour.ghorban'),
64360
+ color: '#5c6bc0',
64361
+ registrationDate: new Date('2025-01-01'),
64362
+ expiryDate: new Date('2028-12-31'),
64363
+ maxUsers: 50,
64364
+ maxStorage: 500,
64365
+ },
63992
64366
  ];
63993
64367
  return tenants;
63994
64368
  }
@@ -64023,6 +64397,7 @@ function generateSubscriptionPlans() {
64023
64397
  const plan5Id = createPlan('Platform Console Plan', 'PC-001', 'Platform Console subscription plan for platform administration and management', false);
64024
64398
  const plan6Id = createPlan('Safetyminder Basic Plan', 'SM-BASIC-001', 'Basic subscription plan for Safetyminder Application Basic Edition', false);
64025
64399
  const plan7Id = createPlan('Cost Manager Enterprise Plan', 'CM-ENT-001', 'Enterprise subscription plan for Cost Manager Application Enterprise Edition', false);
64400
+ createPlan('MAGFA Commerce', 'MAGFA-001', 'MAGFA commerce application subscription (conversation, AI, reports)', false);
64026
64401
  return plans;
64027
64402
  }
64028
64403
  const SUBSCRIPTION_PLANS_MOCK = generateSubscriptionPlans();
@@ -64066,6 +64441,7 @@ function generateSubscriptions() {
64066
64441
  const platformConsolePlan = SUBSCRIPTION_PLANS_MOCK.find((p) => p.code === 'PC-001');
64067
64442
  const safetyminderBasicPlan = SUBSCRIPTION_PLANS_MOCK.find((p) => p.code === 'SM-BASIC-001');
64068
64443
  const costManagerEnterprisePlan = SUBSCRIPTION_PLANS_MOCK.find((p) => p.code === 'CM-ENT-001');
64444
+ const collaborationPlan = SUBSCRIPTION_PLANS_MOCK.find((p) => p.code === 'MAGFA-001');
64069
64445
  // Platform tenant subscribes to Platform Console plan (platform administration only)
64070
64446
  if (platformTenant && platformConsolePlan) {
64071
64447
  createSubscription(platformTenant.id, // Subscriber is the tenant
@@ -64092,6 +64468,10 @@ function generateSubscriptions() {
64092
64468
  if (laserPlumbingTenant && orderingStandardPlan) {
64093
64469
  createSubscription(laserPlumbingTenant.id, laserPlumbingTenant.title, orderingStandardPlan.id, orderingStandardPlan.title, 'Tenant', AXPSystemStatusType.Active, new Date('2025-01-15T00:00:00'), new Date('2027-01-15T23:59:59'));
64094
64470
  }
64471
+ const collaborationTenant = tenantMocks.find((t) => t.name === 'magfa-tenant');
64472
+ if (collaborationTenant && collaborationPlan) {
64473
+ createSubscription(collaborationTenant.id, collaborationTenant.title, collaborationPlan.id, collaborationPlan.title, 'Tenant', AXPSystemStatusType.Active, new Date('2025-01-15T00:00:00'), new Date('2027-01-15T23:59:59'));
64474
+ }
64095
64475
  return subscriptions;
64096
64476
  }
64097
64477
  const SUBSCRIPTIONS_MOCK = generateSubscriptions();
@@ -64140,6 +64520,8 @@ function generateSubscriptionPlanItems() {
64140
64520
  const orderingStandardPlan = SUBSCRIPTION_PLANS_MOCK.find((p) => p.code === 'ORD-STD-001');
64141
64521
  const platformConsolePlan = SUBSCRIPTION_PLANS_MOCK.find((p) => p.code === 'PC-001');
64142
64522
  const safetyminderBasicPlan = SUBSCRIPTION_PLANS_MOCK.find((p) => p.code === 'SM-BASIC-001');
64523
+ const collaborationPlan = SUBSCRIPTION_PLANS_MOCK.find((p) => p.code === 'MAGFA-001');
64524
+ const collaborationEdition = MAGFA_COMMERCE_STANDARD;
64143
64525
  // Helper function to create subscription plan item
64144
64526
  const createItem = (planId, subscribableType, edition) => {
64145
64527
  if (!planId || !edition) {
@@ -64189,6 +64571,9 @@ function generateSubscriptionPlanItems() {
64189
64571
  if (safetyminderBasicPlan) {
64190
64572
  createItem(safetyminderBasicPlan.id, 'ApplicationEdition', safetyminderBasicEdition);
64191
64573
  }
64574
+ if (collaborationPlan && collaborationEdition) {
64575
+ createItem(collaborationPlan.id, 'ApplicationEdition', collaborationEdition);
64576
+ }
64192
64577
  return items;
64193
64578
  }
64194
64579
  const SUBSCRIPTION_PLAN_ITEMS_MOCK = generateSubscriptionPlanItems();
@@ -65248,6 +65633,7 @@ function generateTenantUsers() {
65248
65633
  const timeplicityTenant = findTenantById(TIMEPLICITY_TENANT_ID);
65249
65634
  const platformTenant = findTenantById(PLATFORM_TENANT_ID);
65250
65635
  const laserPlumbingTenant = findTenantById(LASER_PLUMBING_TENANT_ID);
65636
+ const collaborationTenant = findTenantById(MAGFA_TENANT_ID);
65251
65637
  if (!timeplicityTenant) {
65252
65638
  throw new Error('Timeplicity tenant not found. Make sure tenant seeder runs before tenant user seeder.');
65253
65639
  }
@@ -65264,6 +65650,26 @@ function generateTenantUsers() {
65264
65650
  roleId = accountHolderRole.id;
65265
65651
  }
65266
65652
  const role = findRoleById(roleId);
65653
+ // Collaboration-only demo user: single tenant with conversation-only role
65654
+ if (user.username === 'mohamad.pour.ghorban') {
65655
+ const conversationOnlyRole = findRoleByName('conversation-only');
65656
+ if (collaborationTenant && conversationOnlyRole) {
65657
+ tenantUsers.push({
65658
+ id: AXPDataGenerator.uuid(),
65659
+ tenantId: collaborationTenant.id,
65660
+ userId: user.id,
65661
+ roleId: conversationOnlyRole.id,
65662
+ tenant: { ...collaborationTenant },
65663
+ user: { ...user },
65664
+ role: { ...conversationOnlyRole },
65665
+ statusId: AXPSystemStatusType.Active,
65666
+ startDate: new Date(),
65667
+ createdAt: new Date(),
65668
+ updatedAt: new Date(),
65669
+ });
65670
+ }
65671
+ return;
65672
+ }
65267
65673
  // Skip root user - root user only has access to Platform Tenant
65268
65674
  if (user.username === 'root' || user.username === 'root2' || user.username === 'super-root') {
65269
65675
  // Root user has access only to platform tenant (console app)
@@ -72319,7 +72725,7 @@ class AXCWorkflowEngine {
72319
72725
  return { success: true };
72320
72726
  }
72321
72727
  canReassignTaskToSelf() {
72322
- return this.sessionService?.authorize(AXMPermissionsKeys$6.WorkflowInstance.ReassignToSelf) ?? false;
72728
+ return this.sessionService?.authorize(AXMPermissionsKeys$7.WorkflowInstance.ReassignToSelf) ?? false;
72323
72729
  }
72324
72730
  validateHumanTaskReassignPayload(payload, uid) {
72325
72731
  const activityType = String(payload['activityType'] ?? '');
@@ -73923,7 +74329,7 @@ class AXCWorkflowManagementMockModule {
73923
74329
  provideCommandSetups([
73924
74330
  {
73925
74331
  key: 'workflow-activity:assign-to-manager',
73926
- command: () => import('./acorex-connectivity-mock-assign-to-manager.activity-Bl5qwPIP.mjs').then((c) => c.AssignToManagerActivity),
74332
+ command: () => import('./acorex-connectivity-mock-assign-to-manager.activity-B8bbsEQx.mjs').then((c) => c.AssignToManagerActivity),
73927
74333
  },
73928
74334
  {
73929
74335
  key: 'workflow-activity:get-current-user-manager',
@@ -74034,7 +74440,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
74034
74440
  provideCommandSetups([
74035
74441
  {
74036
74442
  key: 'workflow-activity:assign-to-manager',
74037
- command: () => import('./acorex-connectivity-mock-assign-to-manager.activity-Bl5qwPIP.mjs').then((c) => c.AssignToManagerActivity),
74443
+ command: () => import('./acorex-connectivity-mock-assign-to-manager.activity-B8bbsEQx.mjs').then((c) => c.AssignToManagerActivity),
74038
74444
  },
74039
74445
  {
74040
74446
  key: 'workflow-activity:get-current-user-manager',
@@ -78236,5 +78642,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
78236
78642
  * Generated bundle index. Do not edit.
78237
78643
  */
78238
78644
 
78239
- export { AXCFinancialCoreMockModule as $, AXCAiChatRouterService as A, AXCCalendarDataSeeder as B, AXCCalendarEventDataSeeder as C, AXCCalendarManagementMockModule as D, AXCCommandRegistryDataSeeder as E, AXCCommonMockModule as F, AXCContactCoreMockModule as G, AXCContentManagementMockModule as H, AXCConversationDataSeeder as I, AXCConversationMockConversationApi as J, AXCConversationMockMessageApi as K, AXCConversationMockModule as L, AXCConversationMockRealtimeApi as M, AXCConversationMockUserApi as N, AXCCustomerManagementMockModule as O, AXCDashboardManagementMockModule as P, AXCDataManagementMockModule as Q, AXCDexieEntityStorageService as R, AXCDocumentManagementMockModule as S, AXCEditionDataSeeder as T, AXCEntityDefinitionSeederService as U, AXCEntityDefinitionsModule as V, AXCEntityStorageInsertCommand as W, AXCEntityStorageModule as X, AXCEntityStorageQueryQuery as Y, AXCFileStorageServiceDexie as Z, AXCFileStorageServiceFirestore as _, AXMAiModelStableIds as a, AXMFormDataSourcesProvider as a$, AXCFirestoreEntityStorageService as a0, AXCFormTemplateManagementMockModule as a1, AXCGoogleStrategyMock as a2, AXCHealthCoreMockModule as a3, AXCHelpDeskMockModule as a4, AXCHumanCapitalManagementMockModule as a5, AXCIdentifierManagementMockModule as a6, AXCImageCaptchaChallengeProviderMock as a7, AXCLearningManagementMockModule as a8, AXCLocaleManagementMockModule as a9, AXCTenantManagementMockModule as aA, AXCTenantSeeder as aB, AXCTextTemplateRenderBackend as aC, AXCTokensDataSeeder as aD, AXCUserPassStrategyMock as aE, AXCVersionDB as aF, AXCVersioningService as aG, AXCWidgetCatalogDataSeeder as aH, AXCWorkflowCategorySeeder as aI, AXCWorkflowDefinitionDataSeeder as aJ, AXCWorkflowEngine as aK, AXCWorkflowExecutionDB as aL, AXCWorkflowExecutionStoreDexie as aM, AXCWorkflowExecutionStoreFirestore as aN, AXCWorkflowInstanceCartableDemoSeeder as aO, AXCWorkflowManagementMockModule as aP, AXC_ENTITY_STORAGE_BACKEND_TYPE as aQ, AXC_FIRESTORE_CONFIG as aR, AXC_FIRESTORE_DB as aS, AXC_WORKFLOW_EXECUTION_STORE as aT, AXMAiPlatformAssistantAssistId as aU, AXMAutomationDataSeeder as aV, AXMBusinessUnitDataSeeder as aW, AXMCalendarEventTypeSeeder as aX, AXMDashboardChartDataSourceDefinition as aY, AXMEmployeeDataSeeder as aZ, AXMEmploymentTypeDataSeeder as a_, AXCLocationManagementMockModule as aa, AXCLockService as ab, AXCMeasurementCoreMockModule as ac, AXCMeetingManagementMockModule as ad, AXCMetaDataDefinitionDataSeeder as ae, AXCMetadataCategorySeeder as af, AXCMiddlewaresModule as ag, AXCMockCaptchaChallengeComponent as ah, AXCMockEntityLogListener as ai, AXCMockModule as aj, AXCMockShowMetaDataFormPopupCommand as ak, AXCNotificationManagementMockModule as al, AXCOrderManagementMockModule as am, AXCOrganizationManagementMockModule as an, AXCPersonCoreMockModule as ao, AXCPlatformManagementMockModule as ap, AXCProcurementManagementMockModule as aq, AXCProductCatalogMockModule as ar, AXCProjectManagementMockModule as as, AXCQueryRegistryDataSeeder as at, AXCReportManagementMockModule as au, AXCSecurityManagementMockModule as av, AXCStoredEntityDefinitionLoader as aw, AXCSubscriptionManagementMockModule as ax, AXCSupplierManagementMockModule as ay, AXCTaskManagementMockModule as az, resolveDelegatedAssistOptionString as b, JOB_DEFINITIONS_CATEGORY_MOCK as b$, AXMJobDefinitionDataSeeder as b0, AXMJobLevelDataSeeder as b1, AXMLeaveRequestDataSeeder as b2, AXMMeetingDataSeeder as b3, AXMMeetingFilesDataSeeder as b4, AXMMeetingParticipantDataSeeder as b5, AXMMeetingRoleTypeDataSeeder as b6, AXMMeetingSessionDataSeeder as b7, AXMMeetingTypeDataSeeder as b8, AXMMeetingTypeFileTemplateDataSeeder as b9, AXPRoomDataSeeder as bA, AXPSecurityManagementRoleDataSeeder as bB, AXPSecurityManagementUserDataSeeder as bC, AXPTaskBoardPlatformManagementTaskProvider as bD, AXPTaskBoardProjectManagementTaskProvider as bE, AXVChangeType as bF, BCC as bG, BOC as bH, BUSINESS_UNITS_MOCK as bI, CHAT_LAST_MESSAGE_IDS as bJ, COSTMANAGER_ENTERPRISE as bK, COSTMANAGER_PROFESSIONAL as bL, COSTMANAGER_STANDARD as bM, CP as bN, CRM_ENTERPRISE as bO, DASHBOARDS as bP, EDITIONS as bQ, EMPLOYEES_MOCK as bR, EMPLOYMENT_TYPES_MOCK as bS, ENTITY_DEFINITION_MAP as bT, ENTITY_REGISTRY as bU, FINANCE_BASIC as bV, FINANCE_ENTERPRISE as bW, FINANCE_PRO as bX, G as bY, HR_ENTERPRISE as bZ, HW as b_, AXMPositionAssignmentDataSeeder as ba, AXMPositionDataSeeder as bb, AXMQuestionBankItemCategoryDataSeeder as bc, AXMQuestionBankItemDataSeeder as bd, AXMQuestionnaireCalculationDataSeeder as be, AXMQuestionnaireCategoryDataSeeder as bf, AXMQuestionnaireDataSeeder as bg, AXMResponsibilityDataSeeder as bh, AXMTagDataSeeder as bi, AXMTeamBusinessUnitDataSeeder as bj, AXMTeamDataSeeder as bk, AXMTeamMemberDataSeeder as bl, AXMTeamMemberRoleDataSeeder as bm, AXMWorkflowDashboardChartDataSourceDefinition as bn, AXM_AI_REGISTRY_COMMAND_NAME as bo, AXM_AI_REGISTRY_QUERY_NAME as bp, AXM_CORPORATE_BUSINESS_UNIT_ID as bq, AXPDashboardDataSeeder as br, AXPIdentifierDB as bs, AXPMessageDataSeeder as bt, AXPMockChecksumProvider as bu, AXPMockClockProvider as bv, AXPMockIdentifierService as bw, AXPMockLookupProvider as bx, AXPMockPolicyProvider as by, AXPMockSequenceProvider as bz, axcSyncSingleEmployeeDenormalizedOrgFields as c, axVersionDB as c$, JOB_DEFINITIONS_MOCK as c0, JOB_DEFINITION_CATEGORY_KEY_TO_ID as c1, JOB_LEVELS_MOCK as c2, LASER_PLUMBING_TENANT_ID as c3, LEAVE_REQUESTS_MOCK as c4, METADATA_CATEGORY_IDS as c5, METADATA_GENERAL_CATEGORY_REFS as c6, METADATA_SYSTEM_CATEGORY_REFS as c7, MLC as c8, OHR as c9, SHOP_ENTERPRISE as cA, SHOP_PRO as cB, TAGS_MOCK as cC, TASKS as cD, TASK_STATUSES as cE, TASK_TEMPLATES as cF, TASK_TYPES as cG, TEAMS_CATEGORY_MOCK as cH, TEAMS_MOCK as cI, TEAM_BUSINESS_UNITS_MOCK as cJ, TEAM_CATEGORY_KEY_TO_ID as cK, TEAM_MEMBERS_MOCK as cL, TEAM_MEMBER_ROLES_MOCK as cM, TIMEPLICITY_TENANT_ID as cN, TLA as cO, TOKENS as cP, TPC as cQ, VISIBILITY_FILTER_BYPASS as cR, WORKFLOW_CATEGORIES as cS, WS as cT, activityCategoryMocks as cU, activityDefinitionEntityMock as cV, applyEntityDefinitionFirestoreSnapshot as cW, automationCommandMiddleware as cX, automationMock as cY, avatarInterface as cZ, awaitConversationMockSharedStorage as c_, ORDERING_BASIC as ca, ORDERING_ENTERPRISE as cb, ORDERING_STANDARD as cc, OWNERSHIP_FILTER_BYPASS as cd, PLATFORM_CONSOLE as ce, PLATFORM_TENANT_ID as cf, PM as cg, POSITIONS_CATEGORY_MOCK as ch, POSITIONS_MOCK as ci, POSITION_ASSIGNMENTS_MOCK as cj, QCP as ck, QGEN as cl, QHW as cm, QOHR as cn, QPM as co, QTLE as cp, QUESTIONNAIRE_CATEGORY_MOCK as cq, QUESTION_BANK_ITEM_CATEGORY_MOCK as cr, QWS as cs, RESPONSIBILITIES_CATEGORY_MOCK as ct, RESPONSIBILITIES_MOCK as cu, RESPONSIBILITY_CATEGORY_KEY_TO_ID as cv, SAFETYMINDER_BASIC as cw, SAFETYMINDER_ENTERPRISE as cx, SAFETYMINDER_PROFESSIONAL as cy, SHOP_BASIC as cz, ACTIVITY_CATEGORIES as d, mockQuestionBankItemByName as d$, axWorkflowExecutionDB as d0, axcPatchEmployeeActivePrimaryBusinessUnitRefsFromRows as d1, axcPatchEmployeeActivePrimaryPositionRefsFromRows as d2, axcPatchEmployeeManagerRefsFromRows as d3, axcResolveCommandRegistrySeedId as d4, axcResolveQueryRegistrySeedId as d5, axcResolveWidgetCatalogSeedId as d6, bankCategory as d7, buildEntityStorageQuickSearchFilter as d8, buildWorkflowInstanceCartableDemoRows as d9, finalizeActivityCategoryItemCounts as dA, findEmployeeById as dB, folderStorageMiddleware as dC, groupOrderItemCalculatorMiddleware as dD, historyMiddleware as dE, identifierCommitMiddleware as dF, imageInterface as dG, inspectionOkXNaInterface as dH, loadMockPropertyDefinitions as dI, lockGuardMiddleware as dJ, longTextAnswerInterface as dK, lookupInterface as dL, lookupResolverMiddleware as dM, mapInterface as dN, meetingFilesMock as dO, meetingIds as dP, meetingMock as dQ, meetingParticipantMock as dR, meetingRoleTypeMock as dS, meetingSessionMock as dT, meetingTimeSlotMock as dU, meetingTypeFileTemplateMock as dV, meetingTypeMock as dW, mergeDetailRelationMiddleware as dX, mergeQuickSearchIntoRequest as dY, metadataCategoryMocks as dZ, mockParticipantIndexForSecurityUserId as d_, bypassAllFilters as da, bypassOwnershipFilter as db, bypassVisibilityFilter as dc, calendarEventMock as dd, calendarEventTypeMockData as de, calendarMock as df, chatMessageMock as dg, chatMock as dh, checkboxInterface as di, childCountMiddleware as dj, clearEntityDefinitionFirestoreCollections as dk, colorInterface as dl, computeDiff as dm, contactInterface as dn, conversationDemoSeedUserIds as dp, createFileCastMiddleware as dq, createWidgetLayoutConfig as dr, dateInterface as ds, dateTimeInterface as dt, descriptionInterface as du, documentFolderSyncMiddleware as dv, emailInterface as dw, entityDefDb as dx, entityValidationMiddleware as dy, fileUploaderInterface as dz, ACTIVITY_CATEGORY_ID_BY_KEY as e, mockRoleDefinitions as e0, multipleChoiceInterface as e1, multipleSelectInterface as e2, normalizeAnyFileArrayForView as e3, normalizeSnapshotFileFieldsForView as e4, numberInterface as e5, parseEntityStorageInsertData as e6, parseEntityStorageQueryRequest as e7, participantIds as e8, participantMock as e9, timeDurationInterface as eA, titleInterface as eB, toUiRows as eC, toggleInterface as eD, tokenCategoryIds as eE, tokenCategoryMocks as eF, urlInterface as eG, versionInterface as eH, visibilityFilterMiddleware as eI, workflowDefinitionEntityMock as eJ, workflowDefinitionIds as eK, workflowDefinitionMock as eL, yesNoInterface as eM, passwordInterface as ea, personIdentifierTypeMock as eb, personIds as ec, personLegalIds as ed, personMock as ee, personNaturalIds as ef, phoneInterface as eg, primaryMiddleware as eh, provideMockPropertySetups as ei, qrcodeInterface as ej, questionBankItemMock as ek, questionnaireCalculationMock as el, questionnaireMock as em, ratingInterface as en, richTextInterface as eo, scaleInterface as ep, selectInterface as eq, selectionListInterface as er, sexAtBirthInterface as es, signatureInterface as et, signatureLoaderMiddleware as eu, statusDefaultMiddleware as ev, tagInterface as ew, tenantMocks as ex, textAreaInterface as ey, textInterface as ez, ACTIVITY_DEFINITIONS as f, AI_ASSIST_MOCK as g, AI_MODEL_MOCK as h, APPLICATIONS as i, APPLICATION_CATEGORY_IDS as j, APPLICATION_CATEGORY_MOCKS as k, AXCActivityCategorySeeder as l, mockUsers as m, AXCActivityDefinitionSeeder as n, AXCAiAssistSeeder as o, AXCAiManagementMockModule as p, AXCAiModelSeeder as q, resolveDelegatedAssistOptionModel as r, AXCAppTermDataSeeder as s, AXCAppVersionDataSeeder as t, AXCApplicationCategoryDataSeeder as u, AXCApplicationDataSeeder as v, AXCApplicationManagementMockModule as w, AXCAssessmentManagementMockModule as x, AXCAssetManagementMockModule as y, AXCAuthMockModule as z };
78240
- //# sourceMappingURL=acorex-connectivity-mock-acorex-connectivity-mock-CPvIJXWl.mjs.map
78645
+ export { AXCFinancialCoreMockModule as $, AXCAiChatRouterService as A, AXCCalendarDataSeeder as B, AXCCalendarEventDataSeeder as C, AXCCalendarManagementMockModule as D, AXCCommandRegistryDataSeeder as E, AXCCommonMockModule as F, AXCContactCoreMockModule as G, AXCContentManagementMockModule as H, AXCConversationDataSeeder as I, AXCConversationMockConversationApi as J, AXCConversationMockMessageApi as K, AXCConversationMockModule as L, AXCConversationMockRealtimeApi as M, AXCConversationMockUserApi as N, AXCCustomerManagementMockModule as O, AXCDashboardManagementMockModule as P, AXCDataManagementMockModule as Q, AXCDexieEntityStorageService as R, AXCDocumentManagementMockModule as S, AXCEditionDataSeeder as T, AXCEntityDefinitionSeederService as U, AXCEntityDefinitionsModule as V, AXCEntityStorageInsertCommand as W, AXCEntityStorageModule as X, AXCEntityStorageQueryQuery as Y, AXCFileStorageServiceDexie as Z, AXCFileStorageServiceFirestore as _, AXMAiModelStableIds as a, AXMFormDataSourcesProvider as a$, AXCFirestoreEntityStorageService as a0, AXCFormTemplateManagementMockModule as a1, AXCGoogleStrategyMock as a2, AXCHealthCoreMockModule as a3, AXCHelpDeskMockModule as a4, AXCHumanCapitalManagementMockModule as a5, AXCIdentifierManagementMockModule as a6, AXCImageCaptchaChallengeProviderMock as a7, AXCLearningManagementMockModule as a8, AXCLocaleManagementMockModule as a9, AXCTenantManagementMockModule as aA, AXCTenantSeeder as aB, AXCTextTemplateRenderBackend as aC, AXCTokensDataSeeder as aD, AXCUserPassStrategyMock as aE, AXCVersionDB as aF, AXCVersioningService as aG, AXCWidgetCatalogDataSeeder as aH, AXCWorkflowCategorySeeder as aI, AXCWorkflowDefinitionDataSeeder as aJ, AXCWorkflowEngine as aK, AXCWorkflowExecutionDB as aL, AXCWorkflowExecutionStoreDexie as aM, AXCWorkflowExecutionStoreFirestore as aN, AXCWorkflowInstanceCartableDemoSeeder as aO, AXCWorkflowManagementMockModule as aP, AXC_ENTITY_STORAGE_BACKEND_TYPE as aQ, AXC_FIRESTORE_CONFIG as aR, AXC_FIRESTORE_DB as aS, AXC_WORKFLOW_EXECUTION_STORE as aT, AXMAiPlatformAssistantAssistId as aU, AXMAutomationDataSeeder as aV, AXMBusinessUnitDataSeeder as aW, AXMCalendarEventTypeSeeder as aX, AXMDashboardChartDataSourceDefinition as aY, AXMEmployeeDataSeeder as aZ, AXMEmploymentTypeDataSeeder as a_, AXCLocationManagementMockModule as aa, AXCLockService as ab, AXCMeasurementCoreMockModule as ac, AXCMeetingManagementMockModule as ad, AXCMetaDataDefinitionDataSeeder as ae, AXCMetadataCategorySeeder as af, AXCMiddlewaresModule as ag, AXCMockCaptchaChallengeComponent as ah, AXCMockEntityLogListener as ai, AXCMockModule as aj, AXCMockShowMetaDataFormPopupCommand as ak, AXCNotificationManagementMockModule as al, AXCOrderManagementMockModule as am, AXCOrganizationManagementMockModule as an, AXCPersonCoreMockModule as ao, AXCPlatformManagementMockModule as ap, AXCProcurementManagementMockModule as aq, AXCProductCatalogMockModule as ar, AXCProjectManagementMockModule as as, AXCQueryRegistryDataSeeder as at, AXCReportManagementMockModule as au, AXCSecurityManagementMockModule as av, AXCStoredEntityDefinitionLoader as aw, AXCSubscriptionManagementMockModule as ax, AXCSupplierManagementMockModule as ay, AXCTaskManagementMockModule as az, resolveDelegatedAssistOptionString as b, HW as b$, AXMJobDefinitionDataSeeder as b0, AXMJobLevelDataSeeder as b1, AXMLeaveRequestDataSeeder as b2, AXMMeetingDataSeeder as b3, AXMMeetingFilesDataSeeder as b4, AXMMeetingParticipantDataSeeder as b5, AXMMeetingRoleTypeDataSeeder as b6, AXMMeetingSessionDataSeeder as b7, AXMMeetingTypeDataSeeder as b8, AXMMeetingTypeFileTemplateDataSeeder as b9, AXPRoomDataSeeder as bA, AXPSecurityManagementRoleDataSeeder as bB, AXPSecurityManagementUserDataSeeder as bC, AXPTaskBoardPlatformManagementTaskProvider as bD, AXPTaskBoardProjectManagementTaskProvider as bE, AXVChangeType as bF, BCC as bG, BOC as bH, BUSINESS_UNITS_MOCK as bI, CHAT_LAST_MESSAGE_IDS as bJ, COLLABORATION_STANDARD as bK, COSTMANAGER_ENTERPRISE as bL, COSTMANAGER_PROFESSIONAL as bM, COSTMANAGER_STANDARD as bN, CP as bO, CRM_ENTERPRISE as bP, DASHBOARDS as bQ, EDITIONS as bR, EMPLOYEES_MOCK as bS, EMPLOYMENT_TYPES_MOCK as bT, ENTITY_DEFINITION_MAP as bU, ENTITY_REGISTRY as bV, FINANCE_BASIC as bW, FINANCE_ENTERPRISE as bX, FINANCE_PRO as bY, G as bZ, HR_ENTERPRISE as b_, AXMPositionAssignmentDataSeeder as ba, AXMPositionDataSeeder as bb, AXMQuestionBankItemCategoryDataSeeder as bc, AXMQuestionBankItemDataSeeder as bd, AXMQuestionnaireCalculationDataSeeder as be, AXMQuestionnaireCategoryDataSeeder as bf, AXMQuestionnaireDataSeeder as bg, AXMResponsibilityDataSeeder as bh, AXMTagDataSeeder as bi, AXMTeamBusinessUnitDataSeeder as bj, AXMTeamDataSeeder as bk, AXMTeamMemberDataSeeder as bl, AXMTeamMemberRoleDataSeeder as bm, AXMWorkflowDashboardChartDataSourceDefinition as bn, AXM_AI_REGISTRY_COMMAND_NAME as bo, AXM_AI_REGISTRY_QUERY_NAME as bp, AXM_CORPORATE_BUSINESS_UNIT_ID as bq, AXPDashboardDataSeeder as br, AXPIdentifierDB as bs, AXPMessageDataSeeder as bt, AXPMockChecksumProvider as bu, AXPMockClockProvider as bv, AXPMockIdentifierService as bw, AXPMockLookupProvider as bx, AXPMockPolicyProvider as by, AXPMockSequenceProvider as bz, axcSyncSingleEmployeeDenormalizedOrgFields as c, automationCommandMiddleware as c$, JOB_DEFINITIONS_CATEGORY_MOCK as c0, JOB_DEFINITIONS_MOCK as c1, JOB_DEFINITION_CATEGORY_KEY_TO_ID as c2, JOB_LEVELS_MOCK as c3, LASER_PLUMBING_TENANT_ID as c4, LEAVE_REQUESTS_MOCK as c5, MAGFA_COMMERCE_STANDARD as c6, MAGFA_CONVERSATION_DASHBOARD as c7, MAGFA_TENANT_ID as c8, METADATA_CATEGORY_IDS as c9, SAFETYMINDER_BASIC as cA, SAFETYMINDER_ENTERPRISE as cB, SAFETYMINDER_PROFESSIONAL as cC, SHOP_BASIC as cD, SHOP_ENTERPRISE as cE, SHOP_PRO as cF, TAGS_MOCK as cG, TASKS as cH, TASK_STATUSES as cI, TASK_TEMPLATES as cJ, TASK_TYPES as cK, TEAMS_CATEGORY_MOCK as cL, TEAMS_MOCK as cM, TEAM_BUSINESS_UNITS_MOCK as cN, TEAM_CATEGORY_KEY_TO_ID as cO, TEAM_MEMBERS_MOCK as cP, TEAM_MEMBER_ROLES_MOCK as cQ, TIMEPLICITY_TENANT_ID as cR, TLA as cS, TOKENS as cT, TPC as cU, VISIBILITY_FILTER_BYPASS as cV, WORKFLOW_CATEGORIES as cW, WS as cX, activityCategoryMocks as cY, activityDefinitionEntityMock as cZ, applyEntityDefinitionFirestoreSnapshot as c_, METADATA_GENERAL_CATEGORY_REFS as ca, METADATA_SYSTEM_CATEGORY_REFS as cb, MLC as cc, OHR as cd, ORDERING_BASIC as ce, ORDERING_ENTERPRISE as cf, ORDERING_STANDARD as cg, OWNERSHIP_FILTER_BYPASS as ch, PLATFORM_CONSOLE as ci, PLATFORM_TENANT_ID as cj, PM as ck, POSITIONS_CATEGORY_MOCK as cl, POSITIONS_MOCK as cm, POSITION_ASSIGNMENTS_MOCK as cn, QCP as co, QGEN as cp, QHW as cq, QOHR as cr, QPM as cs, QTLE as ct, QUESTIONNAIRE_CATEGORY_MOCK as cu, QUESTION_BANK_ITEM_CATEGORY_MOCK as cv, QWS as cw, RESPONSIBILITIES_CATEGORY_MOCK as cx, RESPONSIBILITIES_MOCK as cy, RESPONSIBILITY_CATEGORY_KEY_TO_ID as cz, ACTIVITY_CATEGORIES as d, mergeDetailRelationMiddleware as d$, automationMock as d0, avatarInterface as d1, awaitConversationMockSharedStorage as d2, axVersionDB as d3, axWorkflowExecutionDB as d4, axcPatchEmployeeActivePrimaryBusinessUnitRefsFromRows as d5, axcPatchEmployeeActivePrimaryPositionRefsFromRows as d6, axcPatchEmployeeManagerRefsFromRows as d7, axcResolveCommandRegistrySeedId as d8, axcResolveQueryRegistrySeedId as d9, emailInterface as dA, entityDefDb as dB, entityValidationMiddleware as dC, fileUploaderInterface as dD, finalizeActivityCategoryItemCounts as dE, findEmployeeById as dF, folderStorageMiddleware as dG, groupOrderItemCalculatorMiddleware as dH, historyMiddleware as dI, identifierCommitMiddleware as dJ, imageInterface as dK, inspectionOkXNaInterface as dL, loadMockPropertyDefinitions as dM, lockGuardMiddleware as dN, longTextAnswerInterface as dO, lookupInterface as dP, lookupResolverMiddleware as dQ, mapInterface as dR, meetingFilesMock as dS, meetingIds as dT, meetingMock as dU, meetingParticipantMock as dV, meetingRoleTypeMock as dW, meetingSessionMock as dX, meetingTimeSlotMock as dY, meetingTypeFileTemplateMock as dZ, meetingTypeMock as d_, axcResolveWidgetCatalogSeedId as da, bankCategory as db, buildEntityStorageQuickSearchFilter as dc, buildWorkflowInstanceCartableDemoRows as dd, bypassAllFilters as de, bypassOwnershipFilter as df, bypassVisibilityFilter as dg, calendarEventMock as dh, calendarEventTypeMockData as di, calendarMock as dj, chatMessageMock as dk, chatMock as dl, checkboxInterface as dm, childCountMiddleware as dn, clearEntityDefinitionFirestoreCollections as dp, colorInterface as dq, computeDiff as dr, contactInterface as ds, conversationDemoSeedUserIds as dt, createFileCastMiddleware as du, createWidgetLayoutConfig as dv, dateInterface as dw, dateTimeInterface as dx, descriptionInterface as dy, documentFolderSyncMiddleware as dz, ACTIVITY_CATEGORY_ID_BY_KEY as e, mergeQuickSearchIntoRequest as e0, metadataCategoryMocks as e1, mockParticipantIndexForSecurityUserId as e2, mockQuestionBankItemByName as e3, mockRoleDefinitions as e4, multipleChoiceInterface as e5, multipleSelectInterface as e6, normalizeAnyFileArrayForView as e7, normalizeSnapshotFileFieldsForView as e8, numberInterface as e9, tagInterface as eA, tenantMocks as eB, textAreaInterface as eC, textInterface as eD, timeDurationInterface as eE, titleInterface as eF, toUiRows as eG, toggleInterface as eH, tokenCategoryIds as eI, tokenCategoryMocks as eJ, urlInterface as eK, versionInterface as eL, visibilityFilterMiddleware as eM, workflowDefinitionEntityMock as eN, workflowDefinitionIds as eO, workflowDefinitionMock as eP, yesNoInterface as eQ, parseEntityStorageInsertData as ea, parseEntityStorageQueryRequest as eb, participantIds as ec, participantMock as ed, passwordInterface as ee, personIdentifierTypeMock as ef, personIds as eg, personLegalIds as eh, personMock as ei, personNaturalIds as ej, phoneInterface as ek, primaryMiddleware as el, provideMockPropertySetups as em, qrcodeInterface as en, questionBankItemMock as eo, questionnaireCalculationMock as ep, questionnaireMock as eq, ratingInterface as er, richTextInterface as es, scaleInterface as et, selectInterface as eu, selectionListInterface as ev, sexAtBirthInterface as ew, signatureInterface as ex, signatureLoaderMiddleware as ey, statusDefaultMiddleware as ez, ACTIVITY_DEFINITIONS as f, AI_ASSIST_MOCK as g, AI_MODEL_MOCK as h, APPLICATIONS as i, APPLICATION_CATEGORY_IDS as j, APPLICATION_CATEGORY_MOCKS as k, AXCActivityCategorySeeder as l, mockUsers as m, AXCActivityDefinitionSeeder as n, AXCAiAssistSeeder as o, AXCAiManagementMockModule as p, AXCAiModelSeeder as q, resolveDelegatedAssistOptionModel as r, AXCAppTermDataSeeder as s, AXCAppVersionDataSeeder as t, AXCApplicationCategoryDataSeeder as u, AXCApplicationDataSeeder as v, AXCApplicationManagementMockModule as w, AXCAssessmentManagementMockModule as x, AXCAssetManagementMockModule as y, AXCAuthMockModule as z };
78646
+ //# sourceMappingURL=acorex-connectivity-mock-acorex-connectivity-mock-CwWGrnVs.mjs.map