complexqa_frontend_core 1.22.3 → 1.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "complexqa_frontend_core",
3
- "version": "1.22.3",
3
+ "version": "1.23.1",
4
4
  "description": "core of web ",
5
5
  "type": "module",
6
6
  "exports": {
@@ -0,0 +1,20 @@
1
+ import { ApiAbstractElementClass } from './api_abstract_element_class.js';
2
+ import { typeEvent } from '../types/family_events/typeEvent.js';
3
+
4
+ /**
5
+ * Read-only search для доменных событий (прокси main → event-service).
6
+ *
7
+ * Маршрут: POST /web_api/event/search
8
+ *
9
+ * @version v.1.0 (26/07/2026)
10
+ */
11
+ export class EventApi extends ApiAbstractElementClass
12
+ {
13
+ module_prefix = 'event';
14
+
15
+ constructor(options)
16
+ {
17
+ super(options);
18
+ this.set_element_class_instance(typeEvent);
19
+ }
20
+ }
@@ -26,6 +26,7 @@ import { TextDocumentApi } from "./text_document_api.js";
26
26
  import { PublicTextDocumentApi } from "./public_text_document_api.js";
27
27
  import { TextDocumentFolderApi } from "./text_document_folder_api.js";
28
28
  import { FileAppApi } from "./file_app_api.js";
29
+ import { EventApi } from "./event_api.js";
29
30
 
30
31
  /**
31
32
  * Обертка над axios
@@ -59,6 +60,9 @@ export class Api
59
60
  general_domain = false;
60
61
  site_section = false;
61
62
 
63
+ /** @type {EventApi} */
64
+ event;
65
+
62
66
 
63
67
  /**
64
68
  *
@@ -147,28 +151,29 @@ export class Api
147
151
 
148
152
  //echo({payload});
149
153
 
150
- this.team_management = new TeamManagementApi(payload);
151
- this.team_member = new TeamMemberApi(payload);
152
- this.test_plan = new TestPlanApi(payload);
153
- this.project = new ProjectApi(payload);
154
- this.service = new ServiceApi(payload);
155
- this.test_case = new TestCaseApi(payload);
156
- this.test_case_step = new TestCaseStepApi(payload);
157
- this.test_suite = new TestSuiteApi(payload);
158
- this.test_run = new TestRunApi(payload);
159
- this.test_run_result = new TestRunResultApi(payload);
160
- this.user_profile = new UserProfileApi(payload);
161
- this.task = new TaskApi(payload);
162
- this.test_account = new TestAccountApi(payload);
163
- this.bug = new BugApi(payload);
164
- this.bug_relation = new BugRelationApi(payload);
165
- this.execution_context = new ExecutionContextApi(payload);
166
- this.browser_tools_util_execution = new BrowserToolsUtilExecutionApi(payload);
154
+ this.team_management = new TeamManagementApi(payload);
155
+ this.team_member = new TeamMemberApi(payload);
156
+ this.test_plan = new TestPlanApi(payload);
157
+ this.project = new ProjectApi(payload);
158
+ this.service = new ServiceApi(payload);
159
+ this.test_case = new TestCaseApi(payload);
160
+ this.test_case_step = new TestCaseStepApi(payload);
161
+ this.test_suite = new TestSuiteApi(payload);
162
+ this.test_run = new TestRunApi(payload);
163
+ this.test_run_result = new TestRunResultApi(payload);
164
+ this.user_profile = new UserProfileApi(payload);
165
+ this.task = new TaskApi(payload);
166
+ this.test_account = new TestAccountApi(payload);
167
+ this.bug = new BugApi(payload);
168
+ this.bug_relation = new BugRelationApi(payload);
169
+ this.event = new EventApi(payload);
170
+ this.execution_context = new ExecutionContextApi(payload);
171
+ this.browser_tools_util_execution = new BrowserToolsUtilExecutionApi(payload);
167
172
  this.browser_tools_screenshot_multi = new BrowserToolsScreenshotMultiApi(payload);
168
- this.file_app = new FileAppApi(payload);
169
- this.text_document = new TextDocumentApi(payload);
170
- this.text_document_folder = new TextDocumentFolderApi(payload);
171
- this.public_text_document = new PublicTextDocumentApi(payload);
173
+ this.file_app = new FileAppApi(payload);
174
+ this.text_document = new TextDocumentApi(payload);
175
+ this.text_document_folder = new TextDocumentFolderApi(payload);
176
+ this.public_text_document = new PublicTextDocumentApi(payload);
172
177
 
173
178
  this.reference = this.bootstrap_reference(payload)
174
179
  }
@@ -12,6 +12,7 @@ import { typeUser } from '../../../types/family_elements/typeUser.js';
12
12
  import { typeTeam } from '../../../types/family_elements/typeTeam.js';
13
13
  import { typeUtilExecutionScreenshotMulti } from '../../../types/family_utils/typeUtilExecutionScreenshotMulti.js';
14
14
  import { typeTextDocument } from '../../../types/family_files/typeTextDocument.js';
15
+ import { typeEvent } from '../../../types/family_events/typeEvent.js';
15
16
 
16
17
  /**
17
18
  * Реестр классов моделей по ключу `element_type`.
@@ -39,4 +40,5 @@ export const TABLE_ELEMENT_MODELS = {
39
40
  team : typeTeam,
40
41
  text_document : typeTextDocument,
41
42
  util_execution : typeUtilExecutionScreenshotMulti,
43
+ event : typeEvent,
42
44
  };
@@ -0,0 +1,76 @@
1
+ import { typeEvent } from '../../../types/family_events/typeEvent.js';
2
+ import { UserService } from '../../../services/UserService.js';
3
+ import { createColumn, createGoToColumn } from '../helpers/column_factory.js';
4
+ import { createListingFor, registerSection } from '../helpers/section_registry.js';
5
+
6
+ /**
7
+ * Колонки ленты событий (team / project Activity).
8
+ *
9
+ * @param {string} locale
10
+ * @returns {import('../../../types/family_service/typeTableColumn.js').typeTableColumn[]}
11
+ */
12
+ function build_event_listing_columns(locale)
13
+ {
14
+ const model = new typeEvent();
15
+
16
+ return [
17
+ createColumn(model, locale, 'occurred_at', {
18
+ width : '220',
19
+ is_filter : true,
20
+ is_editable : false,
21
+ default_sort: 'desc',
22
+ }),
23
+ createColumn(model, locale, 'action', {
24
+ width : '120',
25
+ is_filter : true,
26
+ is_editable: false,
27
+ }),
28
+ createColumn(model, locale, 'outcome', {
29
+ width : '120',
30
+ is_filter : true,
31
+ is_editable: false,
32
+ }),
33
+ createColumn(model, locale, 'subject_type', {
34
+ width : '160',
35
+ is_filter : true,
36
+ is_editable: false,
37
+ }),
38
+ createColumn(model, locale, 'subject_id', {
39
+ width : '280',
40
+ is_filter : true,
41
+ is_editable: false,
42
+ }),
43
+ createColumn(model, locale, 'actor_id', {
44
+ width : '200',
45
+ is_filter : true,
46
+ is_editable: false,
47
+ }),
48
+ createColumn(model, locale, 'project_id.project_name', {
49
+ header_field : 'project_name',
50
+ header_element_type: 'project',
51
+ width : '240',
52
+ is_filter : true,
53
+ is_editable : false,
54
+ }),
55
+ createGoToColumn(model, locale),
56
+ ];
57
+ }
58
+
59
+
60
+ /**
61
+ * Секция `event`: `listing` (лента Activity; team_id на беке из сессии).
62
+ * Runtime-фильтр `project_id` — для project Activity; без значения не гидратируется.
63
+ *
64
+ * @param {Object<string, Object<string, { config: import('../../../types/family_service/typeTableConfiguration.js').typeTableConfiguration }>>} config
65
+ * @returns {void}
66
+ */
67
+ export function bootstrap_event(config)
68
+ {
69
+ const locale = UserService.get_current_language();
70
+
71
+ registerSection(config, 'event', 'listing', build_event_listing_columns(locale), {
72
+ for: createListingFor([ 'project_id' ], {
73
+ add: [ 'subjects', 'actors', 'projects' ],
74
+ }),
75
+ });
76
+ }
@@ -9,6 +9,7 @@ import { bootstrap_test_account } from './sections/test_account.js';
9
9
  import { bootstrap_execution_context } from './sections/execution_context.js';
10
10
  import { bootstrap_util_execution } from './sections/util_execution.js';
11
11
  import { bootstrap_team_member } from './sections/team_member.js';
12
+ import { bootstrap_event } from './sections/event.js';
12
13
  import { bootstrap_user } from './sections/user.js';
13
14
  import { bootstrap_team } from './sections/team.js';
14
15
  import { bootstrap_project } from './sections/project.js';
@@ -118,6 +119,7 @@ export class TableConfiguration extends abstractAppConfiguration
118
119
  bootstrap_execution_context(this.config);
119
120
  bootstrap_util_execution(this.config);
120
121
  bootstrap_team_member(this.config);
122
+ bootstrap_event(this.config);
121
123
  bootstrap_user(this.config);
122
124
  bootstrap_team(this.config);
123
125
  bootstrap_project(this.config);
package/publish/index.js CHANGED
@@ -37,6 +37,9 @@ export { typeUtilExecutionScreenshotMultiScreenshot } from './types/family_utils
37
37
  export { typeUtilExecutionScreenshotMultiCaptureError } from './types/family_utils/typeUtilExecutionScreenshotMultiCaptureError.js';
38
38
  export { typeUtilExecutionEvent } from './types/family_utils/typeUtilExecutionEvent.js';
39
39
 
40
+ export { familyEvent } from './types/family_events/familyEvent.js';
41
+ export { typeEvent } from './types/family_events/typeEvent.js';
42
+
40
43
  export { familyFile } from './types/family_files/familyFile.js';
41
44
  export { typeFile } from './types/family_files/typeFile.js';
42
45
  export { typeFileScreenshot } from './types/family_files/typeFileScreenshot.js';
@@ -339,11 +339,11 @@ export class familyGeneralElement
339
339
  /**
340
340
  * Возвращаем "имя", то есть значение атрибута, который является именем
341
341
  *
342
- * @version v.0.1 (05/06/2025)
342
+ * @version v.0.2 (26/07/2026)
343
343
  */
344
344
  get_element_name()
345
345
  {
346
- alert('Error #205-001 Not implemented method');
346
+ return this.get_primary_key_value();
347
347
  }
348
348
 
349
349
  /***********************************************/
@@ -0,0 +1,493 @@
1
+ /**
2
+ * Переводы для typeEvent.
3
+ *
4
+ * @see typeEvent
5
+ */
6
+ export const typeEvent_i18n = {
7
+ attribute_name_translate_matrix: {
8
+ en: {
9
+ event_id : 'ID',
10
+ event_uuid : 'UUID',
11
+ type : 'Type',
12
+ subject_type : 'Element type',
13
+ subject_id : 'Element',
14
+ action : 'Action',
15
+ outcome : 'Outcome',
16
+ actor_type : 'Actor type',
17
+ actor_id : 'Actor',
18
+ team_id : 'Team',
19
+ project_id : 'Project',
20
+ project_name : 'Project',
21
+ occurred_at : 'Occurred at',
22
+ received_at : 'Received at',
23
+ correlation_id: 'Correlation',
24
+ failure_code : 'Failure code',
25
+ failure_reason: 'Failure reason',
26
+ },
27
+ ru: {
28
+ event_id : 'ID',
29
+ event_uuid : 'UUID',
30
+ type : 'Тип',
31
+ subject_type : 'Тип элемента',
32
+ subject_id : 'Элемент',
33
+ action : 'Действие',
34
+ outcome : 'Результат',
35
+ actor_type : 'Тип актора',
36
+ actor_id : 'Актор',
37
+ team_id : 'Команда',
38
+ project_id : 'Проект',
39
+ project_name : 'Проект',
40
+ occurred_at : 'Время',
41
+ received_at : 'Получено',
42
+ correlation_id: 'Корреляция',
43
+ failure_code : 'Код ошибки',
44
+ failure_reason: 'Причина ошибки',
45
+ },
46
+ de: {
47
+ event_id : 'ID',
48
+ event_uuid : 'UUID',
49
+ type : 'Type',
50
+ subject_type : 'Element type',
51
+ subject_id : 'Element',
52
+ action : 'Action',
53
+ outcome : 'Outcome',
54
+ actor_type : 'Actor type',
55
+ actor_id : 'Actor',
56
+ team_id : 'Team',
57
+ project_id : 'Project',
58
+ project_name : 'Project',
59
+ occurred_at : 'Occurred at',
60
+ received_at : 'Received at',
61
+ correlation_id: 'Correlation',
62
+ failure_code : 'Failure code',
63
+ failure_reason: 'Failure reason',
64
+ },
65
+ ar: {
66
+ event_id : 'ID',
67
+ event_uuid : 'UUID',
68
+ type : 'Type',
69
+ subject_type : 'Element type',
70
+ subject_id : 'Element',
71
+ action : 'Action',
72
+ outcome : 'Outcome',
73
+ actor_type : 'Actor type',
74
+ actor_id : 'Actor',
75
+ team_id : 'Team',
76
+ project_id : 'Project',
77
+ project_name : 'Project',
78
+ occurred_at : 'Occurred at',
79
+ received_at : 'Received at',
80
+ correlation_id: 'Correlation',
81
+ failure_code : 'Failure code',
82
+ failure_reason: 'Failure reason',
83
+ },
84
+ es: {
85
+ event_id : 'ID',
86
+ event_uuid : 'UUID',
87
+ type : 'Type',
88
+ subject_type : 'Element type',
89
+ subject_id : 'Element',
90
+ action : 'Action',
91
+ outcome : 'Outcome',
92
+ actor_type : 'Actor type',
93
+ actor_id : 'Actor',
94
+ team_id : 'Team',
95
+ project_id : 'Project',
96
+ project_name : 'Project',
97
+ occurred_at : 'Occurred at',
98
+ received_at : 'Received at',
99
+ correlation_id: 'Correlation',
100
+ failure_code : 'Failure code',
101
+ failure_reason: 'Failure reason',
102
+ },
103
+ fr: {
104
+ event_id : 'ID',
105
+ event_uuid : 'UUID',
106
+ type : 'Type',
107
+ subject_type : 'Element type',
108
+ subject_id : 'Element',
109
+ action : 'Action',
110
+ outcome : 'Outcome',
111
+ actor_type : 'Actor type',
112
+ actor_id : 'Actor',
113
+ team_id : 'Team',
114
+ project_id : 'Project',
115
+ project_name : 'Project',
116
+ occurred_at : 'Occurred at',
117
+ received_at : 'Received at',
118
+ correlation_id: 'Correlation',
119
+ failure_code : 'Failure code',
120
+ failure_reason: 'Failure reason',
121
+ },
122
+ hy: {
123
+ event_id : 'ID',
124
+ event_uuid : 'UUID',
125
+ type : 'Type',
126
+ subject_type : 'Element type',
127
+ subject_id : 'Element',
128
+ action : 'Action',
129
+ outcome : 'Outcome',
130
+ actor_type : 'Actor type',
131
+ actor_id : 'Actor',
132
+ team_id : 'Team',
133
+ project_id : 'Project',
134
+ project_name : 'Project',
135
+ occurred_at : 'Occurred at',
136
+ received_at : 'Received at',
137
+ correlation_id: 'Correlation',
138
+ failure_code : 'Failure code',
139
+ failure_reason: 'Failure reason',
140
+ },
141
+ it: {
142
+ event_id : 'ID',
143
+ event_uuid : 'UUID',
144
+ type : 'Type',
145
+ subject_type : 'Element type',
146
+ subject_id : 'Element',
147
+ action : 'Action',
148
+ outcome : 'Outcome',
149
+ actor_type : 'Actor type',
150
+ actor_id : 'Actor',
151
+ team_id : 'Team',
152
+ project_id : 'Project',
153
+ project_name : 'Project',
154
+ occurred_at : 'Occurred at',
155
+ received_at : 'Received at',
156
+ correlation_id: 'Correlation',
157
+ failure_code : 'Failure code',
158
+ failure_reason: 'Failure reason',
159
+ },
160
+ pl: {
161
+ event_id : 'ID',
162
+ event_uuid : 'UUID',
163
+ type : 'Type',
164
+ subject_type : 'Element type',
165
+ subject_id : 'Element',
166
+ action : 'Action',
167
+ outcome : 'Outcome',
168
+ actor_type : 'Actor type',
169
+ actor_id : 'Actor',
170
+ team_id : 'Team',
171
+ project_id : 'Project',
172
+ project_name : 'Project',
173
+ occurred_at : 'Occurred at',
174
+ received_at : 'Received at',
175
+ correlation_id: 'Correlation',
176
+ failure_code : 'Failure code',
177
+ failure_reason: 'Failure reason',
178
+ },
179
+ pt: {
180
+ event_id : 'ID',
181
+ event_uuid : 'UUID',
182
+ type : 'Type',
183
+ subject_type : 'Element type',
184
+ subject_id : 'Element',
185
+ action : 'Action',
186
+ outcome : 'Outcome',
187
+ actor_type : 'Actor type',
188
+ actor_id : 'Actor',
189
+ team_id : 'Team',
190
+ project_id : 'Project',
191
+ project_name : 'Project',
192
+ occurred_at : 'Occurred at',
193
+ received_at : 'Received at',
194
+ correlation_id: 'Correlation',
195
+ failure_code : 'Failure code',
196
+ failure_reason: 'Failure reason',
197
+ },
198
+ tt: {
199
+ event_id : 'ID',
200
+ event_uuid : 'UUID',
201
+ type : 'Type',
202
+ subject_type : 'Element type',
203
+ subject_id : 'Element',
204
+ action : 'Action',
205
+ outcome : 'Outcome',
206
+ actor_type : 'Actor type',
207
+ actor_id : 'Actor',
208
+ team_id : 'Team',
209
+ project_id : 'Project',
210
+ project_name : 'Project',
211
+ occurred_at : 'Occurred at',
212
+ received_at : 'Received at',
213
+ correlation_id: 'Correlation',
214
+ failure_code : 'Failure code',
215
+ failure_reason: 'Failure reason',
216
+ },
217
+ },
218
+
219
+ enum_value_translate_matrix: {
220
+ action: {
221
+ en: { CREATE: 'Create', UPDATE: 'Update', DELETE: 'Delete' },
222
+ ru: { CREATE: 'Создание', UPDATE: 'Изменение', DELETE: 'Удаление' },
223
+ de: { CREATE: 'Create', UPDATE: 'Update', DELETE: 'Delete' },
224
+ ar: { CREATE: 'Create', UPDATE: 'Update', DELETE: 'Delete' },
225
+ es: { CREATE: 'Create', UPDATE: 'Update', DELETE: 'Delete' },
226
+ fr: { CREATE: 'Create', UPDATE: 'Update', DELETE: 'Delete' },
227
+ hy: { CREATE: 'Create', UPDATE: 'Update', DELETE: 'Delete' },
228
+ it: { CREATE: 'Create', UPDATE: 'Update', DELETE: 'Delete' },
229
+ pl: { CREATE: 'Create', UPDATE: 'Update', DELETE: 'Delete' },
230
+ pt: { CREATE: 'Create', UPDATE: 'Update', DELETE: 'Delete' },
231
+ tt: { CREATE: 'Create', UPDATE: 'Update', DELETE: 'Delete' },
232
+ },
233
+ outcome: {
234
+ en: { SUCCESS: 'Success', FAILURE: 'Failure' },
235
+ ru: { SUCCESS: 'Успех', FAILURE: 'Ошибка' },
236
+ de: { SUCCESS: 'Success', FAILURE: 'Failure' },
237
+ ar: { SUCCESS: 'Success', FAILURE: 'Failure' },
238
+ es: { SUCCESS: 'Success', FAILURE: 'Failure' },
239
+ fr: { SUCCESS: 'Success', FAILURE: 'Failure' },
240
+ hy: { SUCCESS: 'Success', FAILURE: 'Failure' },
241
+ it: { SUCCESS: 'Success', FAILURE: 'Failure' },
242
+ pl: { SUCCESS: 'Success', FAILURE: 'Failure' },
243
+ pt: { SUCCESS: 'Success', FAILURE: 'Failure' },
244
+ tt: { SUCCESS: 'Success', FAILURE: 'Failure' },
245
+ },
246
+ actor_type: {
247
+ en: { USER: 'User', SYSTEM: 'System', SERVICE: 'Service' },
248
+ ru: { USER: 'Пользователь', SYSTEM: 'Система', SERVICE: 'Сервис' },
249
+ de: { USER: 'User', SYSTEM: 'System', SERVICE: 'Service' },
250
+ ar: { USER: 'User', SYSTEM: 'System', SERVICE: 'Service' },
251
+ es: { USER: 'User', SYSTEM: 'System', SERVICE: 'Service' },
252
+ fr: { USER: 'User', SYSTEM: 'System', SERVICE: 'Service' },
253
+ hy: { USER: 'User', SYSTEM: 'System', SERVICE: 'Service' },
254
+ it: { USER: 'User', SYSTEM: 'System', SERVICE: 'Service' },
255
+ pl: { USER: 'User', SYSTEM: 'System', SERVICE: 'Service' },
256
+ pt: { USER: 'User', SYSTEM: 'System', SERVICE: 'Service' },
257
+ tt: { USER: 'User', SYSTEM: 'System', SERVICE: 'Service' },
258
+ },
259
+ subject_type: {
260
+ en: {
261
+ team_management : 'Team management',
262
+ team_member : 'Team member',
263
+ project : 'Project',
264
+ test_plan : 'Test plan',
265
+ test_case : 'Test case',
266
+ test_case_step : 'Test case step',
267
+ test_suite : 'Test suite',
268
+ test_run : 'Test run',
269
+ test_run_result : 'Test run result',
270
+ task : 'Task',
271
+ bug : 'Bug',
272
+ bug_relation : 'Bug relation',
273
+ test_account : 'Test account',
274
+ user_profile : 'User profile',
275
+ text_document : 'Text document',
276
+ text_document_folder : 'Text document folder',
277
+ execution_context : 'Execution context',
278
+ browser_tools_util_execution : 'Browser tools execution',
279
+ browser_tools_screenshot_multi : 'Screenshot Multi',
280
+ },
281
+ ru: {
282
+ team_management : 'Управление командой',
283
+ team_member : 'Участник команды',
284
+ project : 'Проект',
285
+ test_plan : 'Тест-план',
286
+ test_case : 'Тест-кейс',
287
+ test_case_step : 'Шаг тест-кейса',
288
+ test_suite : 'Тест-сьют',
289
+ test_run : 'Тестовый прогон',
290
+ test_run_result : 'Результат прогона',
291
+ task : 'Задача',
292
+ bug : 'Баг',
293
+ bug_relation : 'Связь бага',
294
+ test_account : 'Тестовый аккаунт',
295
+ user_profile : 'Профиль пользователя',
296
+ text_document : 'Текстовый документ',
297
+ text_document_folder : 'Папка документов',
298
+ execution_context : 'Контекст выполнения',
299
+ browser_tools_util_execution : 'Browser tools execution',
300
+ browser_tools_screenshot_multi : 'Screenshot Multi',
301
+ },
302
+ de: {
303
+ team_management : 'Team management',
304
+ team_member : 'Team member',
305
+ project : 'Project',
306
+ test_plan : 'Test plan',
307
+ test_case : 'Test case',
308
+ test_case_step : 'Test case step',
309
+ test_suite : 'Test suite',
310
+ test_run : 'Test run',
311
+ test_run_result : 'Test run result',
312
+ task : 'Task',
313
+ bug : 'Bug',
314
+ bug_relation : 'Bug relation',
315
+ test_account : 'Test account',
316
+ user_profile : 'User profile',
317
+ text_document : 'Text document',
318
+ text_document_folder : 'Text document folder',
319
+ execution_context : 'Execution context',
320
+ browser_tools_util_execution : 'Browser tools execution',
321
+ browser_tools_screenshot_multi : 'Screenshot Multi',
322
+ },
323
+ ar: {
324
+ team_management : 'Team management',
325
+ team_member : 'Team member',
326
+ project : 'Project',
327
+ test_plan : 'Test plan',
328
+ test_case : 'Test case',
329
+ test_case_step : 'Test case step',
330
+ test_suite : 'Test suite',
331
+ test_run : 'Test run',
332
+ test_run_result : 'Test run result',
333
+ task : 'Task',
334
+ bug : 'Bug',
335
+ bug_relation : 'Bug relation',
336
+ test_account : 'Test account',
337
+ user_profile : 'User profile',
338
+ text_document : 'Text document',
339
+ text_document_folder : 'Text document folder',
340
+ execution_context : 'Execution context',
341
+ browser_tools_util_execution : 'Browser tools execution',
342
+ browser_tools_screenshot_multi : 'Screenshot Multi',
343
+ },
344
+ es: {
345
+ team_management : 'Team management',
346
+ team_member : 'Team member',
347
+ project : 'Project',
348
+ test_plan : 'Test plan',
349
+ test_case : 'Test case',
350
+ test_case_step : 'Test case step',
351
+ test_suite : 'Test suite',
352
+ test_run : 'Test run',
353
+ test_run_result : 'Test run result',
354
+ task : 'Task',
355
+ bug : 'Bug',
356
+ bug_relation : 'Bug relation',
357
+ test_account : 'Test account',
358
+ user_profile : 'User profile',
359
+ text_document : 'Text document',
360
+ text_document_folder : 'Text document folder',
361
+ execution_context : 'Execution context',
362
+ browser_tools_util_execution : 'Browser tools execution',
363
+ browser_tools_screenshot_multi : 'Screenshot Multi',
364
+ },
365
+ fr: {
366
+ team_management : 'Team management',
367
+ team_member : 'Team member',
368
+ project : 'Project',
369
+ test_plan : 'Test plan',
370
+ test_case : 'Test case',
371
+ test_case_step : 'Test case step',
372
+ test_suite : 'Test suite',
373
+ test_run : 'Test run',
374
+ test_run_result : 'Test run result',
375
+ task : 'Task',
376
+ bug : 'Bug',
377
+ bug_relation : 'Bug relation',
378
+ test_account : 'Test account',
379
+ user_profile : 'User profile',
380
+ text_document : 'Text document',
381
+ text_document_folder : 'Text document folder',
382
+ execution_context : 'Execution context',
383
+ browser_tools_util_execution : 'Browser tools execution',
384
+ browser_tools_screenshot_multi : 'Screenshot Multi',
385
+ },
386
+ hy: {
387
+ team_management : 'Team management',
388
+ team_member : 'Team member',
389
+ project : 'Project',
390
+ test_plan : 'Test plan',
391
+ test_case : 'Test case',
392
+ test_case_step : 'Test case step',
393
+ test_suite : 'Test suite',
394
+ test_run : 'Test run',
395
+ test_run_result : 'Test run result',
396
+ task : 'Task',
397
+ bug : 'Bug',
398
+ bug_relation : 'Bug relation',
399
+ test_account : 'Test account',
400
+ user_profile : 'User profile',
401
+ text_document : 'Text document',
402
+ text_document_folder : 'Text document folder',
403
+ execution_context : 'Execution context',
404
+ browser_tools_util_execution : 'Browser tools execution',
405
+ browser_tools_screenshot_multi : 'Screenshot Multi',
406
+ },
407
+ it: {
408
+ team_management : 'Team management',
409
+ team_member : 'Team member',
410
+ project : 'Project',
411
+ test_plan : 'Test plan',
412
+ test_case : 'Test case',
413
+ test_case_step : 'Test case step',
414
+ test_suite : 'Test suite',
415
+ test_run : 'Test run',
416
+ test_run_result : 'Test run result',
417
+ task : 'Task',
418
+ bug : 'Bug',
419
+ bug_relation : 'Bug relation',
420
+ test_account : 'Test account',
421
+ user_profile : 'User profile',
422
+ text_document : 'Text document',
423
+ text_document_folder : 'Text document folder',
424
+ execution_context : 'Execution context',
425
+ browser_tools_util_execution : 'Browser tools execution',
426
+ browser_tools_screenshot_multi : 'Screenshot Multi',
427
+ },
428
+ pl: {
429
+ team_management : 'Team management',
430
+ team_member : 'Team member',
431
+ project : 'Project',
432
+ test_plan : 'Test plan',
433
+ test_case : 'Test case',
434
+ test_case_step : 'Test case step',
435
+ test_suite : 'Test suite',
436
+ test_run : 'Test run',
437
+ test_run_result : 'Test run result',
438
+ task : 'Task',
439
+ bug : 'Bug',
440
+ bug_relation : 'Bug relation',
441
+ test_account : 'Test account',
442
+ user_profile : 'User profile',
443
+ text_document : 'Text document',
444
+ text_document_folder : 'Text document folder',
445
+ execution_context : 'Execution context',
446
+ browser_tools_util_execution : 'Browser tools execution',
447
+ browser_tools_screenshot_multi : 'Screenshot Multi',
448
+ },
449
+ pt: {
450
+ team_management : 'Team management',
451
+ team_member : 'Team member',
452
+ project : 'Project',
453
+ test_plan : 'Test plan',
454
+ test_case : 'Test case',
455
+ test_case_step : 'Test case step',
456
+ test_suite : 'Test suite',
457
+ test_run : 'Test run',
458
+ test_run_result : 'Test run result',
459
+ task : 'Task',
460
+ bug : 'Bug',
461
+ bug_relation : 'Bug relation',
462
+ test_account : 'Test account',
463
+ user_profile : 'User profile',
464
+ text_document : 'Text document',
465
+ text_document_folder : 'Text document folder',
466
+ execution_context : 'Execution context',
467
+ browser_tools_util_execution : 'Browser tools execution',
468
+ browser_tools_screenshot_multi : 'Screenshot Multi',
469
+ },
470
+ tt: {
471
+ team_management : 'Team management',
472
+ team_member : 'Team member',
473
+ project : 'Project',
474
+ test_plan : 'Test plan',
475
+ test_case : 'Test case',
476
+ test_case_step : 'Test case step',
477
+ test_suite : 'Test suite',
478
+ test_run : 'Test run',
479
+ test_run_result : 'Test run result',
480
+ task : 'Task',
481
+ bug : 'Bug',
482
+ bug_relation : 'Bug relation',
483
+ test_account : 'Test account',
484
+ user_profile : 'User profile',
485
+ text_document : 'Text document',
486
+ text_document_folder : 'Text document folder',
487
+ execution_context : 'Execution context',
488
+ browser_tools_util_execution : 'Browser tools execution',
489
+ browser_tools_screenshot_multi : 'Screenshot Multi',
490
+ },
491
+ },
492
+ },
493
+ };
@@ -0,0 +1,70 @@
1
+ import { familyGeneralElement } from "../core/0_familyGeneralElement.js";
2
+
3
+
4
+ /**
5
+ * Базовый класс семейства иммутабельных доменных событий (event-service).
6
+ *
7
+ * Каналы activity / changelog / integration — политики чтения над одним типом,
8
+ * не отдельные классы SDK.
9
+ *
10
+ * @version v.1.1 (26/07/2026)
11
+ */
12
+ export class familyEvent extends familyGeneralElement
13
+ {
14
+ /**
15
+ * @returns {string[]}
16
+ */
17
+ static get_action_values()
18
+ {
19
+ return ['CREATE', 'UPDATE', 'DELETE'];
20
+ }
21
+
22
+
23
+ /**
24
+ * @returns {string[]}
25
+ */
26
+ static get_outcome_values()
27
+ {
28
+ return ['SUCCESS', 'FAILURE'];
29
+ }
30
+
31
+
32
+ /**
33
+ * @returns {string[]}
34
+ */
35
+ static get_actor_type_values()
36
+ {
37
+ return ['USER', 'SYSTEM', 'SERVICE'];
38
+ }
39
+
40
+
41
+ /**
42
+ * Каталог subject_type (= api_key), совпадает с seed event-service.
43
+ *
44
+ * @returns {string[]}
45
+ */
46
+ static get_subject_type_values()
47
+ {
48
+ return [
49
+ 'team_management',
50
+ 'team_member',
51
+ 'project',
52
+ 'test_plan',
53
+ 'test_case',
54
+ 'test_case_step',
55
+ 'test_suite',
56
+ 'test_run',
57
+ 'test_run_result',
58
+ 'task',
59
+ 'bug',
60
+ 'bug_relation',
61
+ 'test_account',
62
+ 'user_profile',
63
+ 'text_document',
64
+ 'text_document_folder',
65
+ 'execution_context',
66
+ 'browser_tools_util_execution',
67
+ 'browser_tools_screenshot_multi',
68
+ ];
69
+ }
70
+ }
@@ -0,0 +1,95 @@
1
+ import { familyEvent } from "./familyEvent.js";
2
+ import { is_object } from "../../utils/utils.js";
3
+ import { typeEvent_i18n } from "../element_translate/typeEvent.i18n.js";
4
+
5
+
6
+ /**
7
+ * Иммутабельный факт CUD-события (конверт event-service).
8
+ *
9
+ * Только чтение: ApiService.event.search({ filters, options }).
10
+ * Create / update / delete с клиента не поддерживаются.
11
+ * options.add: subjects | actors | projects | field_changes (гидрация на main).
12
+ * @version v.1.3 (26/07/2026)
13
+ */
14
+ export class typeEvent extends familyEvent
15
+ {
16
+ event_id;
17
+ event_uuid;
18
+ type;
19
+ producer;
20
+ source;
21
+ subject_type;
22
+ subject_id;
23
+ action;
24
+ outcome;
25
+ failure_code;
26
+ failure_reason;
27
+ actor_type;
28
+ actor_id;
29
+ team_id;
30
+ project_id;
31
+ occurred_at;
32
+ received_at;
33
+ correlation_id;
34
+ schema_version;
35
+ field_changes;
36
+
37
+ primary_key = 'event_id';
38
+ api_key = 'event';
39
+
40
+ structure_scheme = {
41
+ event_id : 'integer | require',
42
+ event_uuid : 'string | require',
43
+ type : 'string | require',
44
+ producer : 'string | optional',
45
+ source : 'string | optional',
46
+ subject_type : 'string | enum | require',
47
+ subject_id : 'mixed | require',
48
+ action : 'string | enum | require',
49
+ outcome : 'string | enum | require',
50
+ failure_code : 'integer | optional',
51
+ failure_reason : 'string | optional',
52
+ actor_type : 'string | enum | optional',
53
+ actor_id : 'mixed | optional',
54
+ team_id : 'integer | optional',
55
+ project_id : 'mixed | optional',
56
+ occurred_at : 'timestamp | require',
57
+ received_at : 'timestamp | require',
58
+ correlation_id : 'string | optional',
59
+ schema_version : 'integer | optional',
60
+ field_changes : 'array | optional',
61
+ };
62
+
63
+ available_enum_values = {
64
+ action : familyEvent.get_action_values(),
65
+ outcome : familyEvent.get_outcome_values(),
66
+ actor_type : familyEvent.get_actor_type_values(),
67
+ subject_type : familyEvent.get_subject_type_values(),
68
+ };
69
+
70
+ attribute_name_translate_matrix = typeEvent_i18n.attribute_name_translate_matrix;
71
+
72
+ enum_value_translate_matrix = typeEvent_i18n.enum_value_translate_matrix;
73
+
74
+
75
+ /**
76
+ * @param {object|false|undefined} data
77
+ */
78
+ constructor(data = false)
79
+ {
80
+ super();
81
+
82
+ if (data && is_object(data))
83
+ {
84
+ _.mapObject(data, (value, key) =>
85
+ {
86
+ if (this.hasOwnProperty(key))
87
+ {
88
+ this[key] = value;
89
+ }
90
+ });
91
+ }
92
+
93
+ return this;
94
+ }
95
+ }