fix(form2): Смета РФ — итоги групп и IV кв. на свои места

На листе «Смета» формы «Смета РФ» итоговые колонки каждой группы
(план/утверждённые/факт «Итого: Поддержка» и IV квартал скорректированной
сметы) были оторваны от своих групп и собраны в отдельную группу
«В тыс. рублей» справа — хотя в шаблоне идут сразу после своего квартала.

- Перенёс H/N/T (data.*.support.year) в конец соответствующих групп план/
  утверждённые/факт, X (data.corrected.support.q4) — в конец группы
  скорректированной сметы после III квартала.
- Удалил опустевшую группу «В тыс. рублей»; accessorKey групп
  (v_tys_rubley_*) нигде больше не использовались (grep по web/src).
  columnLetter и leaf accessorKey (data.*) не менял — видимые значения
  те же, меняется только расположение колонок.
- Тест читает FORM_2/SMETA.js как текст (модуль не грузится напрямую —
  импортирует '../columnColors' без расширения) и проверяет порядок
  accessorKey листьев и отсутствие заголовка «В тыс. рублей».

Issue: #251 (AURORA-1901, эпик AURORA-1876, Высокий приоритет)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-30 18:12:29 +04:00
parent 2a287480b6
commit c01356736f
2 changed files with 112 additions and 105 deletions

View File

@ -141,6 +141,26 @@ export const config = {
},
},
},
{
header: "Итого: Поддержка",
accessorKey:
"field_raskhody_planiruemye_rf_na_2026_god_itogopodderzhka",
columns: [
{
header: "",
accessorKey: "data.plan.support.year",
columnLetter: "H",
size: 150,
filterFn: "contains",
},
],
muiTableHeadCellProps: {
sx: {
backgroundColor: "#FFFFFF",
color: "#000000",
},
},
},
],
muiTableHeadCellProps: {
sx: {
@ -233,6 +253,26 @@ export const config = {
},
},
},
{
header: "Итого: Поддержка",
accessorKey:
"field_utverzhdennye_bazovye_raskhody_na_2026_god_itogopodderzhka",
columns: [
{
header: "",
accessorKey: "data.approved.support.year",
columnLetter: "N",
size: 150,
filterFn: "contains",
},
],
muiTableHeadCellProps: {
sx: {
backgroundColor: "#FFFFFF",
color: "#000000",
},
},
},
],
muiTableHeadCellProps: {
sx: {
@ -325,6 +365,26 @@ export const config = {
},
},
},
{
header: "Итого: Поддержка",
accessorKey:
"field_fakticheskie_raskhody_za_2026_god_itogopodderzhka",
columns: [
{
header: "",
accessorKey: "data.fact.support.year",
columnLetter: "T",
size: 150,
filterFn: "contains",
},
],
muiTableHeadCellProps: {
sx: {
backgroundColor: "#FFFFFF",
color: "#000000",
},
},
},
],
muiTableHeadCellProps: {
sx: {
@ -377,114 +437,10 @@ export const config = {
},
},
},
],
muiTableHeadCellProps: {
sx: {
backgroundColor: "#FFFFFF",
color: "#000000",
},
},
},
],
muiTableHeadCellProps: {
sx: {
backgroundColor: "#FFFFFF",
color: "#000000",
},
},
},
{
header: "В тыс. рублей",
accessorKey: "v_tys_rubley",
columns: [
{
header: "Расходы, планируемые РФ на {year} год",
accessorKey: "v_tys_rubley_raskhody_planiruemye_rf_na_2026_god",
columns: [
{
header: "Итого: Поддержка",
accessorKey:
"v_tys_rubley_raskhody_planiruemye_rf_na_2026_god_itogopodderzhka",
columns: [
{
header: "",
accessorKey: "data.plan.support.year",
columnLetter: "H",
size: 150,
filterFn: "contains",
},
],
muiTableHeadCellProps: {
sx: {
backgroundColor: "#FFFFFF",
color: "#000000",
},
},
},
],
},
{
header: "Утверждённые базовые расходы на {year} год",
accessorKey:
"v_tys_rubley_utverzhdennye_bazovye_raskhody_na_2026_god",
columns: [
{
header: "Итого: Поддержка",
accessorKey:
"v_tys_rubley_utverzhdennye_bazovye_raskhody_na_2026_god_itogopodderzhka",
columns: [
{
header: "",
accessorKey: "data.approved.support.year",
columnLetter: "N",
size: 150,
filterFn: "contains",
},
],
muiTableHeadCellProps: {
sx: {
backgroundColor: "#FFFFFF",
color: "#000000",
},
},
},
],
},
{
header: "Фактические расходы за {year} год",
accessorKey: "v_tys_rubley_fakticheskie_raskhody_za_2026_god",
columns: [
{
header: "Итого: Поддержка",
accessorKey:
"v_tys_rubley_fakticheskie_raskhody_za_2026_god_itogopodderzhka",
columns: [
{
header: "",
accessorKey: "data.fact.support.year",
columnLetter: "T",
size: 150,
filterFn: "contains",
},
],
muiTableHeadCellProps: {
sx: {
backgroundColor: "#FFFFFF",
color: "#000000",
},
},
},
],
},
{
header: "Скорректированная смета расходов на {year} год",
accessorKey:
"v_tys_rubley_skorrektirovannaya_smeta_raskhodov_na_2026_god",
columns: [
{
header: "IV квартал",
accessorKey:
"v_tys_rubley_skorrektirovannaya_smeta_raskhodov_na_2026_god_iv_kvartal",
"field_skorrektirovannaya_smeta_raskhodov_na_2026_god_iv_kvartal",
columns: [
{
header: "",
@ -502,6 +458,12 @@ export const config = {
},
},
],
muiTableHeadCellProps: {
sx: {
backgroundColor: "#FFFFFF",
color: "#000000",
},
},
},
],
muiTableHeadCellProps: {

View File

@ -0,0 +1,45 @@
import assert from 'node:assert/strict';
import { readFileSync } from 'node:fs';
import test from 'node:test';
import { fileURLToPath } from 'node:url';
// FORM_2/SMETA.js импортирует '../columnColors' без расширения, поэтому node
// не может загрузить модуль напрямую — читаем файл как текст.
const configPath = fileURLToPath(new URL('../constants/FORM_2/SMETA.js', import.meta.url));
const configSource = readFileSync(configPath, 'utf8');
const EXPECTED_LEAF_ORDER = [
'data.section_code',
'data.name',
'data.plan.support.q1',
'data.plan.support.q2',
'data.plan.support.q3',
'data.plan.support.q4',
'data.plan.support.year',
'data.approved.support.q1',
'data.approved.support.q2',
'data.approved.support.q3',
'data.approved.support.q4',
'data.approved.support.year',
'data.fact.support.q1',
'data.fact.support.q2',
'data.fact.support.q3',
'data.fact.support.q4',
'data.fact.support.year',
'data.corrected.support.q2',
'data.corrected.support.q3',
'data.corrected.support.q4',
];
function extractLeafAccessorKeys(source) {
const matches = source.matchAll(/accessorKey:\s*"(data\.[^"]+)"/g);
return [...matches].map((m) => m[1]);
}
test('Смета РФ: итоги групп и IV квартал скорректированной сметы идут в конце своих групп', () => {
assert.deepEqual(extractLeafAccessorKeys(configSource), EXPECTED_LEAF_ORDER);
});
test('Смета РФ: группы "В тыс. рублей" больше нет', () => {
assert.ok(!configSource.includes('В тыс. рублей'), 'заголовок "В тыс. рублей" не должен встречаться в конфиге');
});