135 Commits

Author SHA1 Message Date
Andrey Epifancev
7e8b035b17 Task 8: подключение таблицы корректировок к реальному API (#208)
Реальный контракт AURORA-1540/1751 не дал единой POST .../allocations:
решение по строке разбито на PUT/DELETE .../vgo-assignments/rule
(привязка/снятие правила) и PUT .../vgo-assignments/exclude (КФО),
ответ — список VgoAssignmentOut, а не вся таблица. allocate()
маршрутизирует по action и перечитывает таблицу сама — вызывающий код
(CorrectionContent, CorrectionEditorModal) не менялся.

Фейк контракта (CORRECTIONS_MOCK) убран — API уже есть. mockData/mockCalc
остаются тестовыми фикстурами (R-27).

Проверено на реальном стенде (Русский Бисквит — 2025 К1): загрузка
таблицы, EXCLUDE/INCLUDE, ASSIGN, снятие правила, сохранение
корректировки, экспорт — без ошибок в консоли.
2026-11-02 21:08:20 +04:00
Andrey Epifancev
b77c62816f api.del: поддержка тела запроса
Нужно для DELETE .../vgo-assignments/rule (снятие правила) — API
ждёт statement_type/entry_ids в теле. Единственный прежний вызов
(files.ts, без тела) не затронут.
2026-11-02 21:08:02 +04:00
Andrey Epifancev
c2bf047cb3 Merge main (AURORA-1540/1751, arm-core #208): реальный API корректировок/ВГО
Конфликт в ConsolidationReportPage.tsx — импорт ChessContent (main) и
CorrectionContent (эта ветка), оставлены оба.
2026-11-02 20:46:10 +04:00
Andrey Epifancev
616854460a AURORA-1868: вернуть marginBottom:0 в шапке CreateEntityPickerModal (ревью #210, п.3)
AppModal не задаёт margin у ant-modal-header, только padding — без
инлайн-override возвращался зазор, убранный в AURORA-1589 раньше.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-30 13:17:38 +04:00
ad691d5158 форматирование 2026-10-30 11:46:45 +03:00
3bc1acb1ad исправлена функция отображения фильтров, добавлен компонент кастомного модального окна 2026-10-30 11:46:00 +03:00
5c927c957d обновленн стиль для футера модалки 2026-10-30 10:42:54 +03:00
082f518367 Merge branch 'main' of https://git.aepif.ru/RSHB/arm-core into fix/consolidation 2026-10-30 10:35:41 +03:00
4e657925f8 форматирование 2026-10-30 10:27:43 +03:00
0cb395f5e7 aurora-1589, исправление расхождения с макетом 2026-10-30 10:26:31 +03:00
Andrey Epifancev
d8af058f75 feat(web): таблица корректировок под ответы Лысенко 29.10 (#206)
- отзыв корректировки убран (RevokeModal, revokeCorrection, пункт меню агрегата);
  `status` из тела PUT убран — сервер сразу применяет (R-29, R-30);
- «Учитывать в КФО»: у агрегата отмечен и закреплён, у строк агрегата флажка нет,
  у нераспределённых — EXCLUDE/INCLUDE; `excluded` у строки агрегата убран (R-31, R-32);
- у нераспределённой — строка баланса владельца `line_code`, фильтр «Строка баланса»
  действует и на неё (R-33);
- фейк: ENTRY_ALLOCATED для EXCLUDE/INCLUDE строки агрегата, ENTRY_EXCLUDED для ASSIGN
  исключённой; «Убрать из правила» отдаёт строку с line_code;
- спека, design.md (R-29…R-34), tasks §9, план Task 9, README/ARCHITECTURE.

Источник: AURORA-1395 #9920570, WIP API arm-core #208.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:17:34 +04:00
Andrey Epifancev
d3c4d35dca Шахматка: при выборе одной стороны Дт/Кт не шлём запрос (ревью #207)
- режим запроса вынесен в utils/chessMatrixMode (all / manual / half) с тестами;
  при «одна сторона» запрос матрицы не уходит, индикатор загрузки снимается;
- подсказка по спеке intercompany-matrix-ui: один текст в таблице и у фильтров,
  у фильтров — только в состоянии «одна сторона»;
- высота шахматки: min-height только для состояния подсказки, обёртка снова auto
  (в обычном режиме «Итого» сразу под строками);
- откат pairs?.length в shouldWarnCounterPairs (маскировал старый API);
- вернули комментарий про сумму, лишний columns || [] и дубль CSS убраны;
  опечатка CataloguGroupTabsI.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 21:38:40 +04:00
65c44978bd исправлен баг в shouldWarnCounterPairs 2026-10-29 11:19:02 +03:00
0e536b7867 исправление конфликта слияния 2026-10-29 11:07:22 +03:00
3544623d18 Merge branch 'main' of https://git.aepif.ru/RSHB/arm-core into fix/chessTable 2026-10-29 11:06:40 +03:00
7feebcbdca форматирование 2026-10-29 11:01:07 +03:00
b0a6cdedd0 aurora-1799 отображение ошибки в случае выбора только дт или кт 2026-10-29 10:59:54 +03:00
Andrey Epifancev
4db04f096a Сторона позиции в решении по строке (#206)
AllocationIn получил side: строка с дебетовым и кредитовым сальдо даёт
две позиции, решение касается одной. Флажок, меню строки, окно
корректировки и фейк передают и ищут позицию по строке и стороне.
Контракт — docs PR #184.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:36:02 +04:00
Andrey Epifancev
753eccbd97 docs(openspec): рулинги R-27, R-28, чек-лист Task 8, уточнения по ревью ветки (#206)
I-4, M-3, M-9, M-10, M-11.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:16:14 +04:00
Andrey Epifancev
09685db0e8 fix(web): исключённые строки в «Исходных данных ОСВ» приглушены и подписаны «не в КФО» (#206)
M-4, M-8.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:15:41 +04:00
Andrey Epifancev
b26c1d2581 fix(web): ключ нераспределённой строки включает сторону (#206)
I-3: u|<side>|<entry_ids>; тест на две позиции с одинаковыми entry_ids.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:15:41 +04:00
Andrey Epifancev
d76cad1210 fix(web): окно корректировки — исходный контроль из ответа сервера, предел суммы, один percentText (#206)
I-2: sourceDiff = суммы сторон, отклонение и порог из агрегата; diffOf только для распределения.
M-1: целая часть суммы не более 16 цифр («Слишком большая сумма»). M-6, M-7: комментарий, один percentText.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:15:41 +04:00
Andrey Epifancev
f4a4f01c28 fix(web): уведомления вкладки корректировок — внутри бокса, видны в полноэкранном режиме (#206)
I-1: локальный notification.useNotification с getContainer на бокс вкладки; M-6, M-8: комментарии.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:15:41 +04:00
Andrey Epifancev
b499787d10 docs(web): таблица корректировок — README, ARCHITECTURE, tasks (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:05:02 +04:00
Andrey Epifancev
0667bca196 fix(web): уведомление об ошибке загрузки — actions вместо устаревшего btn (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:04:10 +04:00
Andrey Epifancev
b669e00efe style(web): таблица корректировок — Prettier, ESLint (вложенные тернарники, BOM) (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:57:24 +04:00
Andrey Epifancev
84c4f25a9b fix(web): окно корректировки — база черновика, подпись выбора (#206)
T6.11: при пересборке окна из нового агрегата (правок не было) база черновика
обновляется до текущей редакции корректировки, иначе при следующем открытии
показывалась ложная плашка об изменении.
T6.12: подпись кнопки «Выбрать» называет контрагента; ошибки полей статьи
объявляются role=alert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:55:35 +04:00
Andrey Epifancev
c1d402f0e3 fix(web): окно корректировки — пересборка состояния, клавиатура, доступность (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:53:22 +04:00
Andrey Epifancev
c559dd321c feat(web): окно «Корректировка операции» с черновиком (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:48:12 +04:00
Andrey Epifancev
c2cbbf5dfd fix(web): правки по ревью Task 5 — лимит комментария, подсказки, защита от двойного запроса (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:39:26 +04:00
Andrey Epifancev
14cceb80be feat(web): решения по строкам и отмена корректировки (#206)
Флажок «Учитывать в КФО» и меню строк (перенести, убрать, вернуть к
автоматике) отправляют allocate; «Отменить корректировку» открывает окно
с обязательным комментарием и вызывает revoke. Ошибки — уведомление с
текстом сервера, 409 — ещё перечитывание таблицы. Подсказки режима только
чтения вынесены в readOnly.ts, подсказка «Недоступно» убрана (T4.14).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:35:44 +04:00
Andrey Epifancev
14693d8dce fix(web): правки по ревью Task 4 — подсказки, очистка уведомления, доступность (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:26:28 +04:00
Andrey Epifancev
d98f264f90 feat(web): вкладка «Таблица корректировки» — таблица и панель (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:22:56 +04:00
Andrey Epifancev
ec6ece127f fix(web): правки по ревью Task 3 — утилиты денег, разбор сумм, черновик (#206)
- Копейки, процент и порог 5 % вынесены из mockCalc в utils/money;
  editorModel больше не зависит от фейка, тесты перенесены.
- Один разбор суммы строки ввода для проверки, живого контроля и сравнения;
  некорректные строки в живой контроль не входят.
- isDirty сравнивает суммы копейками; комментарий — точно.
- Черновик: savedAt проверяется через Date.parse.
- Тесты границ порога, пустых сторон и неизвестного rule_id.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:12:53 +04:00
Andrey Epifancev
b8a7782eae feat(web): модель окна корректировки и черновик (#206)
Состояние окна «Корректировка операции», проверки ввода, живой контроль
(исходные суммы и распределение), кандидаты «Добавить строку ОСВ» и
черновик в localStorage. Деньги — строки, сложение через sumAmounts,
ввод через parseAmountInput; процент — percentOfSmaller из mockCalc.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:09:13 +04:00
Andrey Epifancev
f4edb66f82 fix(web): фейк корректировок по ревью Task 2 (#206)
Стороны нового агрегата по знаку строки, RULE_REQUIRED, ENTRY_NOT_IN_VERSION,
атомарность allocate, возврат прежнего правила в кандидаты, тесты.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:05:13 +04:00
Andrey Epifancev
c05830face feat(web): фейк контракта корректировок и модель таблицы (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:02:47 +04:00
Andrey Epifancev
8eefa3ba02 feat(web): типы и клиент API таблицы корректировок (#206)
Типы 1:1 с components.schemas контракта корректировок, клиент API
(таблица, сохранение, отзыв, разнесение, экспорт), флаг
REACT_APP_CORRECTIONS_MOCK в Config. Ветка фейка пока бросает ошибку
(фейк — в следующей задаче). Строка R-1 в design.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 20:57:44 +04:00
Andrey Epifancev
57e54e4055 AURORA-1636/1693: правки ревью — архив ГК только фильтр списка справочника
- список ГК в сторе снова общий и полный (с архивными); «Архив» фильтрует только список справочника,
  выбор ГК — первая показанная, пустой список — «Группа компаний не выбрана»
- перенос ЮЛ и новая консолидация не предлагают архивные ГК
- «Входит в ГСК/ГСЗ» — поля строки in_gsk/in_gsz, колонки только в карточке ГК (не в «ЮЛ вне ГК»)
- «Архивировать» красным, а не «Разархивировать»; тексты модалки и кнопка «Сохранить» в изменении ГК
- вернул поясняющие комментарии; поиск ГК не сжимается галочкой «Архив»
- тесты: selectors (видимые ГК, выбор ГК), toCatalogueJurRow

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 17:27:04 +04:00
Andrey Epifancev
7e72a63b16 Влил main в ветку ревью AURORA-1636/1693 2026-10-28 17:13:46 +04:00
dcb92e197c refactoring 2026-10-28 12:14:40 +03:00
Andrey Epifancev
68a0af3450 Merge remote-tracking branch 'origin/main' into feat/197-back-to-primary-docs
# Conflicts:
#	web/src/utils/consolidations.test.ts
#	web/src/utils/consolidations.ts
2026-10-27 23:11:20 +04:00
Andrey Epifancev
f647e687fe fix(#195): флажки модалки сопоставления — одной строкой
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 23:01:00 +04:00
Andrey Epifancev
93ee8b2352 feat(#195): модалка сопоставления в режиме пар сразу сужена до участника пары
Решение владельца после показа на стенде: «Указать» во «Встречных записях»
открывает список из одного участника пары; «Показать все организации» —
обычный список. Чистая pairCandidateRows + vitest, спека и design.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:58:50 +04:00
Andrey Epifancev
a653172418 fix(web): «Назад» из документа возвращает панель «Первичные документы» организации (#197, AURORA-1682)
Открытая панель «Первичные документы» живёт в адресе экрана консолидации (?entity=<id ЮЛ> рядом с ?version=),
открытие и закрытие заменяют запись истории. «Назад» из документа, открытого из панели, возвращает на консолидацию
с той же версией и панелью той же организации; переключатель документа (AURORA-1692) и прямая ссылка — как прежде.

- utils/consolidations.ts: panelEntity / withPanelEntity + тест;
- ConsolidationsList: панель открыта по ?entity=, когда ЮЛ из адреса уже в сторе (без мелькания прежнего ЮЛ);
- ConsoleLegalEntities: onDrawerOpen(id ЮЛ строки);
- change back-to-primary-docs: MODIFIED document-review-ui «Переключатель документа», ADDED primary-files-ui
  «Открытая панель в адресе экрана консолидации».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:54:56 +04:00
Andrey Epifancev
d230fb13ee fix(web): смена ключа фильтра пар сбрасывает страницу в состоянии (M-13)
Возврат A→B→A даёт первую страницу, а не прежнюю.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:26:05 +04:00
Andrey Epifancev
e4c030d3e9 fix(web): режим пар — прокрутка внутри карточки, один запрос при смене фильтра (I-6, M-8, M-12)
Тело режима прокручивается внутри карточки; ключ и страница — одно состояние (currentPage);
запасная горизонтальная прокрутка таблиц на узком окне.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:24:39 +04:00
Andrey Epifancev
7c523b93d1 fix(web): сводка, догруженная при уходе с ОСВ, не кешируется (M-9)
Сводка живёт только в состоянии ожидающего перехода; при summary=null запрашивается заново.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:24:39 +04:00
Andrey Epifancev
95171f4f50 docs(#195): правки ревью Task 8 — формулировки раскладки, таблица решений
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 21:56:59 +04:00
Andrey Epifancev
e2e416282f feat(#195): раскладка режима «Встречные записи» — пары сверху, две таблицы на всю ширину; чистая логика пустых состояний
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 21:55:47 +04:00