diff --git a/openspec/changes/goodwill-ui-errors/proposal.md b/openspec/changes/archive/2026-11-12-goodwill-ui-errors/proposal.md similarity index 100% rename from openspec/changes/goodwill-ui-errors/proposal.md rename to openspec/changes/archive/2026-11-12-goodwill-ui-errors/proposal.md diff --git a/openspec/changes/goodwill-ui-errors/specs/goodwill-ui/spec.md b/openspec/changes/archive/2026-11-12-goodwill-ui-errors/specs/goodwill-ui/spec.md similarity index 100% rename from openspec/changes/goodwill-ui-errors/specs/goodwill-ui/spec.md rename to openspec/changes/archive/2026-11-12-goodwill-ui-errors/specs/goodwill-ui/spec.md diff --git a/openspec/changes/goodwill-ui-errors/tasks.md b/openspec/changes/archive/2026-11-12-goodwill-ui-errors/tasks.md similarity index 100% rename from openspec/changes/goodwill-ui-errors/tasks.md rename to openspec/changes/archive/2026-11-12-goodwill-ui-errors/tasks.md diff --git a/openspec/specs/goodwill-ui/spec.md b/openspec/specs/goodwill-ui/spec.md index 7716288..70aaa4d 100644 --- a/openspec/specs/goodwill-ui/spec.md +++ b/openspec/specs/goodwill-ui/spec.md @@ -11,7 +11,11 @@ «Всего» блока из `groups[].totals`, внизу «Итого по листу» из `totals`. Колонки — по макету `[31-03]`: «Учет в отчете», «Наименование дочерней организации», «Доля владения», «Фондовые вложения головной организации», «Доля участия головной организации в уставном капитале», «Уставный капитал», «Гудвилл (+/-)», «Комментарий». Сумма `null` SHALL показываться -прочерком, ноль — нулём в выбранных единицах; итоги фронт MUST NOT считать сам. +прочерком, ноль — нулём в выбранных единицах; итоги фронт MUST NOT считать сам. Стрелка раскрытия блока SHALL стоять в +колонке «Наименование дочерней организации» при любом наборе видимых колонок; если эта колонка скрыта — в первой видимой. +Если загрузка не удалась, вместо таблицы SHALL показываться текст ошибки (сообщение сервера или «Не удалось загрузить +таблицу гудвилла») и кнопка «Повторить»; сообщение «Вложений по 58.01 между компаниями периметра нет» MUST NOT +показываться при ошибке. #### Scenario: Нулевой и нерассчитанный гудвилл - **WHEN** у одной строки `goodwill_amount = "0.00"`, у другой `null` @@ -25,6 +29,14 @@ - **WHEN** у строки есть `warnings` (например, `CAPITAL_SOURCE_MISSING`) - **THEN** рядом с названием ДО иконка предупреждения, по наведению — тексты `message` +#### Scenario: Стрелка блока при скрытой колонке +- **WHEN** в «Настройке таблицы» снята колонка «Учет в отчете» +- **THEN** стрелка раскрытия блока остаётся в колонке «Наименование дочерней организации» + +#### Scenario: Ошибка загрузки +- **WHEN** `GET …/goodwill` отвечает ошибкой +- **THEN** вместо таблицы — текст ошибки и «Повторить»; «Повторить» запрашивает таблицу заново и при успехе показывает её + ### Requirement: Редактирование таблицы гудвилла Кнопка «Редактировать» SHALL быть доступна при `editable = true`; иначе — недоступна с подсказкой причины (`read_only_reason`). В режиме редактирования (баннер «Доступны для редактирования столбцы «Доля владения» и @@ -33,7 +45,10 @@ ошибочная доля MUST NOT обрезаться или подменяться, а показывается ошибкой у поля. «Сохранить» SHALL быть недоступно, пока у отмеченной действующей строки нет корректной доли или комментария. Групповой чекбокс блока SHALL отмечать и снимать все действующие строки блока, включая скрытые фильтром, и показывать промежуточное состояние при частичном выборе. -«Отменить изменения» SHALL возвращать последнее сохранённое состояние. +«Отменить изменения» SHALL возвращать последнее сохранённое состояние. На ответ 409 (версия закрыта, блокировку забрали) +или 404 (пары уже нет) при «Сохранить» экран SHALL показать уведомление с текстом сервера и перечитать таблицу, строку +MUST NOT подсвечивать; если после перечитывания `editable = false`, режим редактирования SHALL закрыться, введённое — +сброситься. #### Scenario: Сохранение набора - **WHEN** аналитик отметил две строки, ввёл доли «80,5» и «100» и комментарии и нажал «Сохранить» @@ -51,12 +66,24 @@ - **WHEN** аналитик вводит долю «80,123» - **THEN** у поля ошибка «Число от 0 до 100, не больше двух знаков после запятой», значение в поле не меняется, «Сохранить» недоступно +#### Scenario: Версию забрал другой пользователь +- **WHEN** аналитик в режиме редактирования нажимает «Сохранить», сервер отвечает 409 `LOCKED_BY_OTHER`, перечитанная + таблица приходит с `editable = false` +- **THEN** уведомление с текстом сервера, режим редактирования закрыт, показаны сохранённые значения, «Редактировать» + недоступна с подсказкой «Консолидацию редактирует другой пользователь» + +#### Scenario: Пары больше нет +- **WHEN** сервер отвечает на «Сохранить» 404 по паре, которой больше нет в версии +- **THEN** уведомление с текстом сервера, таблица перечитана, ни одна строка не подсвечена; правки этой пары в запрос + больше не попадают + ### Requirement: Переключатель, фильтр и экспорт гудвилла Панель вкладки SHALL содержать переключатель «Учитывать гудвилл в КФО» (`PUT …/goodwill-settings`, доступен при `editable` вне режима редактирования) с подписью суммы `goodwill_in_kfo_amount` или «Гудвилл не учитывается в КФО»; фильтр «Гудвилл»: «Все значения», «Положительные», «Отрицательные», «Нулевые» (нерассчитанный гудвилл — только во «Все значения»); единицы и знаки после запятой; «Настройка таблицы»; «Экспорт» — `GET …/goodwill/export` с текущим фильтром -(`sign`); «На весь экран». +(`sign`); «На весь экран». На ответ 409 или 404 при переключении экран SHALL показать уведомление с текстом сервера и +перечитать таблицу. #### Scenario: Экспорт с фильтром - **WHEN** выбран фильтр «Положительные» и нажат «Экспорт» @@ -65,3 +92,7 @@ #### Scenario: Выключение гудвилла - **WHEN** аналитик выключает переключатель - **THEN** таблица перечитывается из ответа, под переключателем подпись «Гудвилл не учитывается в КФО», ручной ввод строк не меняется + +#### Scenario: Переключатель после закрытия версии +- **WHEN** аналитик переключает «Учитывать гудвилл в КФО», а сервер отвечает 409 `VERSION_NOT_EDITABLE` +- **THEN** уведомление с текстом сервера, таблица перечитана, переключатель недоступен