Подпись пары без служебных слов, тест пары на фикстурах РБ, модалка при уходе с «ОСВ» на любую вкладку,
без «Экспорт» в режиме пар, README и ARCHITECTURE, таблица решений design.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Синтетика s46 (fixtures 530ede1, tabular-parser#71, AURORA-1714) — субсчета 60.111/60.112, которых нет в плане
счетов seed; test_all_golden_snapshots_mapped на main падал с «новые коды вне плана счетов».
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
reportTabNavigation: адрес новой вкладки и replace; OsvTabs переходит через неё (и после модалки [31-00]).
Change report-tabs-history: MODIFIED «Вкладки страницы отчёта по версии» (intercompany-matrix-ui).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Кандидаты «Требуется проверка» / «Распознан» и состояние файлов («Обработка» / «Ошибка загрузки») чек-лист берёт
только со стола консолидации (§9.5 п. 11) — тем же фильтром, что панель «Первичные документы» (`files.on_desk`).
Документы организации из других консолидаций и из карточки ЮЛ ячейку больше не меняют: без документов — «Отсутствует».
В `on_desk` документ подзапроса — псевдоним: в запросе по `Document` он иначе коррелирует с внешним.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GET /me дополнен role_details [{code, name}] (аддитивно), фронт показывает
названия ролей, при их отсутствии — коды. Требования внесены в спеки
authn-authz и consolidations-ui, change 184-user-role удалён.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Пара «новый документ — прежний» с counterparty_check = MISMATCH у любого из двух
в автозамене не участвует: сканы разных организаций в одной карточке больше не
вытесняют друг друга. UNKNOWN заменяется как прежде. Если файл оставлен только
из-за MISMATCH, в mapping_warnings нового файла — «автозамена не выполнена»
с именем и версией оставленного файла. Спека primary-files дополнена.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
I-1: обёртка со stopPropagation вокруг всего Popover (CommentsPopover и FileWarningsPopover);
I-2, M-2: key={doc.id} на боковой панели комментариев; решения R-5…R-12 в design.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Страница ГК: снова выбирается первая ГК списка; список ЮЛ без выбранной ГК
не запрашивается (иначе уходил запрос по всем ГК), «ЮЛ вне ГК» грузится без ГК.
- Выбранная ГК обновляется после перезагрузки списка ГК — счётчик ЮЛ в шапке
и на вкладке после создания/переноса/вывода ЮЛ.
- Загрузка ГСК/ГСЗ: try/finally — ошибка не оставляет вечный спиннер.
- Форма ЮЛ: INVALID_INN/INVALID_KPP/INN_EXISTS/CRM_ID_EXISTS — у поля;
КПП приводится к верхнему регистру при вводе.
- crm_id ГСК/ГСЗ — string | null; колонка «ID в CRM»; LE_PAGE вместо литерала;
возвращён комментарий в фильтре шахматки.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- суммы сторон со знаком, как в шахматке; строки с суммой < 0 в упаковку не идут, причина NEGATIVE_AMOUNT;
при min(ΣA, ΣB) ≤ 0 процент null и элиминация 0, статус списка AUTO — только при элиминации > 0
- группы одного размера выбираются по проценту расхождения к меньшей сумме (точной дробью), ничья — по равному проценту
- elimination_amount группы и тройки переименован в deviation_amount; version_no тройки обязателен
- суммы и проценты пар в JSON — с двумя знаками
- elimination-pairs по правилу с measure ≠ closing — 422 INVALID_RULE
- дельта спеки, design.md (R-7, R-8), tasks, README
make check-full: exit 0 (1896 passed; integration 990 passed).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Основная спека consolidations-api возвращена к main: фиксация версии правил,
пары тройки и список версии — в дельте change (MODIFIED «Создание
консолидации», ADDED «Пары ВГО тройки», «Пары ВГО версии», «Правила
элиминации зафиксированной версии», REMOVED старое требование правил);
data-model — DBML 5.23 и миграция 0010. design.md — решения владельца 23.10
и «Decisions made without discussion» R-1…R-6.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- consolidation_version.elimination_rules_version NOT NULL: миграция 0010
проставляет существующим версиям номер правил, действовавших на дату
создания (по Москве), иначе последних открытых; без правил — отказ;
создание версии без действующих правил — 409 ELIMINATION_RULES_MISSING;
ветки «правила не зафиксированы» убраны (rules, preset, is_version_fixed
всегда true);
- GET …/elimination-totals: все тройки «правило ББ × упорядоченная пара
периметра» с ΣA, ΣB, расхождением, суммой элиминации, статусом
AUTO/DISCREPANCY/ONE_SIDED/MANUAL и osv_entry_ids; сводная ОСВ строится
один раз; сбор строк сторон вынесен в _collect_rule_sides — общий
с упаковкой тройки.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>