fix audit log: add column name for stage (action: update stage)

This commit is contained in:
PotapovaA 2026-08-24 13:45:10 +03:00
parent 0549f18dc4
commit e1e12d826d
2 changed files with 34 additions and 10 deletions

View File

@ -127,6 +127,7 @@ export const EVENT_CONFIGS = {
}, },
ACCESS_EXTEND: { ACCESS_EXTEND: {
form_id: 'Информация о задаче', form_id: 'Информация о задаче',
project_id: 'Информация о проекте',
closes_at_after: 'Дата закрытия (новая)', closes_at_after: 'Дата закрытия (новая)',
closes_at_before: 'Дата закрытия (старая)', closes_at_before: 'Дата закрытия (старая)',
phase_name: 'Названия этапа', phase_name: 'Названия этапа',
@ -134,6 +135,7 @@ export const EVENT_CONFIGS = {
}, },
ACCESS_WINDOW_CHANGE: { ACCESS_WINDOW_CHANGE: {
form_id: 'Информация о задаче', form_id: 'Информация о задаче',
project_id: 'Информация о проекте',
closes_at: 'Дата закрытия', closes_at: 'Дата закрытия',
opens_at: 'Дата открытия', opens_at: 'Дата открытия',
phase_name: 'Названия этапа', phase_name: 'Названия этапа',
@ -144,7 +146,11 @@ export const EVENT_CONFIGS = {
}, },
}; };
export const EVENT_CONFIGS_MULT_DEPENDENTS = { export const EVENT_CONFIGS_MULT_DEPENDENTS = {
ACCESS_EXTEND: {
'Информация о проекте': ['year'],
},
ACCESS_WINDOW_CHANGE: { ACCESS_WINDOW_CHANGE: {
'Колонки в этапе': ['form_id', 'sheet'], 'Информация о проекте': ['year'],
'Колонки в этапе': ['form_id', 'sheet', 'project_id', 'report_type'],
}, },
}; };

View File

@ -26,6 +26,7 @@ export const VALUE_TRANSFORMERS = {
'СПП/РФ': transformSsp, 'СПП/РФ': transformSsp,
'Статья расходов': transformExpense, 'Статья расходов': transformExpense,
'Информация о задаче': transformForm, 'Информация о задаче': transformForm,
'Информация о проекте': transformProjectInfo,
Направление: transformDirection, Направление: transformDirection,
'Для роли': transformRoleChanges, 'Для роли': transformRoleChanges,
'Колонки в этапе': transformColumns, 'Колонки в этапе': transformColumns,
@ -132,6 +133,16 @@ export async function transformProject(projectId) {
} }
} }
export async function transformProjectInfo(projectId, year) {
const res = await ProjectsApi.get(projectId);
const project = res.result;
return {
название: project.name,
'ССП/РФ': project.org_unit_name || '—',
Год: year || '—',
};
}
export function transformRole(value) { export function transformRole(value) {
return ROLES_ID_RUSSIAN_NAME[value] || 'Роль не найдена'; return ROLES_ID_RUSSIAN_NAME[value] || 'Роль не найдена';
} }
@ -243,13 +254,21 @@ export function transformDirection(direction) {
return DIRECTION_TRANSLATE[direction]; return DIRECTION_TRANSLATE[direction];
} }
export async function transformColumns(cols, formId, sheet) { export async function transformColumns(cols, formId, sheet, projectId, reportType) {
if (!formId || !sheet) return cols; let formType;
const res = await FormsApi.getForm(formId); let configSheet = sheet;
const form = res.result;
const formType = form.form_type_code;
const { config } = await import(`../../../../components/RealtimeTable/constants/${formType}/${sheet}.js`); if (formId && sheet) {
const res = await FormsApi.getForm(formId);
formType = res.result.form_type_code;
} else if (projectId && reportType) {
formType = 'PROJECT';
configSheet = reportType.toUpperCase();
} else {
return cols;
}
const { config } = await import(`../../../../components/RealtimeTable/constants/${formType}/${configSheet}.js`);
const columns = config.config.columns; const columns = config.config.columns;
function findColumnAndHeaders(columns, targetAccessorKey) { function findColumnAndHeaders(columns, targetAccessorKey) {
// Рекурсивная функция для поиска колонки и сбора родителей // Рекурсивная функция для поиска колонки и сбора родителей
@ -285,19 +304,18 @@ export async function transformColumns(cols, formId, sheet) {
column: result.column, column: result.column,
path: result.headers.join(' → '), path: result.headers.join(' → '),
}; };
} else { }
return { return {
headers: [], headers: [],
column: null, column: null,
path: null, path: null,
error: `Колонка с accessorKey "${targetAccessorKey}" не найдена`, error: `Колонка с accessorKey "${targetAccessorKey}" не найдена`,
}; };
}
} }
if (Array.isArray(cols)) { if (Array.isArray(cols)) {
const res = []; const res = [];
cols.forEach((c) => { cols.forEach((c) => {
res.push(findColumnAndHeaders(columns, 'data.' + c).path || ''); res.push(findColumnAndHeaders(columns, `data.${c}`).path || '');
}); });
return res; return res;
} }