125 Commits

Author SHA1 Message Date
aep
de4e477f2d Merge pull request 'Просмотр ОСВ как в 1С: строки счетов и субсчетов, без строк-показателей (#51, AURORA-1702, AURORA-1703)' (#52) from feat/51-osv-view-rows into test 2026-10-20 23:07:35 +03:00
Andrey Epifancev
e202711584 fix(DocumentReview): просмотр ОСВ как в 1С — строки счетов и субсчетов, без строк-показателей (#51, AURORA-1702, AURORA-1703)
- AURORA-1702: таблица в порядке файла — счёт, субсчёт и подразделение с вложенными строками выводятся
  строками-группами (жирным, со своими сальдо и оборотами), вложенные — с отступом по уровню; фильтр по счёту
  оставляет счёт и все его субсчета, при поиске строки-группы скрываются.
- AURORA-1703: строки-показатели («Кол.», «НУ», «Вал.», «ПР»/«ВР»: OTHER, вид не BU/SUM и не равен виду
  родителя) в рублёвую таблицу не попадают и родителя группой не делают — строка БУ снова видна с
  наименованием и рублями. В EntryOut добавлен data_type (ядро его уже отдаёт).
- filterRows перенесён в osvRows.ts (чистая функция с тестами); спека document-review-ui обновлена.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 00:00:55 +04:00
aep
a3c0010501 Merge pull request 'feat: add comments frontend, checklist modal, files delete, select options in document review' (#49) from feat/AURORA-144- into test 2026-10-19 13:23:36 +03:00
maxim
ff1e45c069 file id as option value for react rendering 2026-10-19 12:56:42 +03:00
Andrey Epifancev
0242486eac fix(#49): зелёный make check и исправления после ревью (AURORA-144)
- маршрут /documents/:document_id возвращён: старые ссылки («Открыть подтверждённую форму») снова открывают
  документ; ЮЛ и консолидация для переключателя документов берутся из документа и его файла, а не из адреса;
  в списке переключателя — вторая строка (тип · формат · дата), ББ и ОФР одного PDF различимы
- чек-лист: ОФР — ячейка INCOME (было 'OFR' → всегда «Отсутствует»), сборка строк — buildChecklistRows с тестами,
  rowKey по ЮЛ, типы ответа GET …/checklist
- удаление файла по id файла (fileId строки), а не по id документа (было 404); ошибка — без закрытия окна
- замена: настоящая загрузка нового файла в ту же консолидацию (автозамена ядра, 05-domain-rules §9.5 п. 3),
  причина — комментарием к заменяемому документу; кнопка доступна только в версии в работе
- комментарий: путь без хвостового «/», типы, закрытие только после успеха, лимит 4000
- счётчики над таблицей формы — модуль reviewCounters (по needs_review, как подсветка) с тестами;
  buildStatementGrid возвращён к test (падали 3 теста)
- PageTitle и store возвращены к test (ширина переключателя — внутри DocumentPage; имя ЮЛ — пропсом)
- цвет подписей полей в теме: #667085 (опечатка #665087)
- типы во всех новых компонентах: tsc 0 ошибок, ESLint/biome без ошибок, vitest 331/331, сборка

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 13:14:09 +04:00
maxim
0fdbd80fbd feat: add comments frontend, checklist modal, files delete, select options in document review 2026-10-19 11:33:39 +03:00
aep
8345f5e756 Merge pull request 'added company group table' (#31) from feat/legalEntities into test 2026-10-19 10:35:17 +03:00
Andrey Epifancev
5b13b74a7a Форматирование под ESLint + Prettier, зелёный make check (#31)
npm run format: порядок импортов (biome) в CompanyGroupsList.tsx, Prettier в
пяти файлах; правки только оформления. make check: eslint 0 ошибок
(19 предупреждений), vitest 324/324, build ок.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 11:27:10 +04:00
681697f728 fixed eslint bugs 2026-10-19 09:44:27 +03:00
e751c63c32 Merge branch 'feat/legalEntities' of https://git.aepif.ru/RSHB/arm-web into feat/legalEntities 2026-10-19 09:33:32 +03:00
25d2211ae6 fixed bugs 2026-10-19 09:33:27 +03:00
Andrey Epifancev
b1b9d219a4 Merge origin/test в feat/legalEntities (#31)
Конфликт в utils/labels: оставлены обе стороны — pluralRu ветки и
lineStatusLabel/severityLabel из test (контракт 2.0). make check зелёный:
eslint 0 ошибок (18 предупреждений, как до слияния), vitest 324/324, build ок.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 10:28:29 +04:00
aep
46639b19c8 Merge pull request 'Архив OpenSpec: statements-v2 (#43)' (#47) from chore/43-archive-statements-v2 into test 2026-10-19 08:28:05 +03:00
Andrey Epifancev
ae84c6b319 chore(openspec): архив statements-v2 (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 09:27:03 +04:00
aep
4a02512545 Merge pull request 'Нарушения проверок: expected/actual и индекс колонки nullable (#45)' (#46) from feat/45-nullable-checks into test 2026-10-18 21:56:09 +03:00
Andrey Epifancev
4fb477d5c2 Подпись пустой цели «цель не заполнена», тесты null/null (ревью I-1, M-1, M-2, M-4)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 22:55:42 +04:00
Andrey Epifancev
cb36ec8840 Нарушения проверок: expected/actual и индекс колонки могут быть null (#45)
Типы FailedCheckOut по API ядра (P3-30, P3-60); подпись «нет строки цели», «Без колонки» для -1/null; общий ключ списка.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 22:52:29 +04:00
aep
d0095f325e Merge pull request 'Единая нормализация ББ/ОФР: экран формы и карточка файла по API v5.19 (#43, arm-ka-docs#116)' (#44) from feat/43-statements-v2 into test 2026-10-18 19:09:17 +03:00
Andrey Epifancev
b4b8c04693 openspec(statements-v2): решения по итогам прогона в браузере (T11.D-1…D-5, #43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 20:07:51 +04:00
Andrey Epifancev
aa3054e4ed docs(arm-web): экран формы v5.19 — README и карта модулей (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 20:06:02 +04:00
Andrey Epifancev
88a4920d7d fix(arm-web): нераспознанный текст суммы, пустые подстроки без расшифровок, свёрнутый список предупреждений (#43)
T11.5 valueCellText, T11.10 emptySublineKeys пропускает detail, T11.11 collapseIssues (3 записи + «Показать все»).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 20:06:02 +04:00
Andrey Epifancev
a3199d636e fix(arm-web): вёрстка экрана проверки формы — ширины колонок, значки в ячейке, шапка, ссылка кнопкой (#43)
T11.1–T11.4, T11.6–T11.8: короткая подпись кнопки даты, фиксированная раскладка таблиц, код без переноса, значок уровня внутри ячейки, подсказка на всю ячейку, отступ child-строки, ссылка «Разберите строки без кода» — Button type=link.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 20:06:02 +04:00
Andrey Epifancev
12fcea7560 fix(statement): защитные значения по умолчанию для ядра без v5.19 (M-2, #43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:03:33 +04:00
Andrey Epifancev
4783593fe6 fix(statement): ссылка на строки без кода всегда видна, сортировка по row_index, Alert для ошибки скрытого поля кода, постоянный aria-label (T9.1, T9.2, T9.4, T7.1, T8.1, T3.3, M-3, #43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:03:33 +04:00
Andrey Epifancev
d965fdc064 fix(statement): округление уверенности в подсказках шапки, пустые тексты в подсказках, комментарий шапки (T5.1, T5.2, M-1, T3.1, #43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:03:33 +04:00
Andrey Epifancev
6556e3d58d fix(statement): не отправлять поля шапки, равные текущим (I-2, #43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:03:33 +04:00
Andrey Epifancev
8d2deb97a3 docs(openspec): решения без обсуждения из исполнения и имя кнопки «Подтвердить данные» (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:58:55 +04:00
Andrey Epifancev
fc5cc16b3d fix(files): клики внутри popover не открывают строку, ключи и aria-label (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:47:21 +04:00
Andrey Epifancev
fdf9358b40 feat(files): предупреждения файла структурами и предупреждения документа в панели файлов и у ОСВ (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:45:27 +04:00
Andrey Epifancev
5b11f2d00a feat(statement): блокировка подтверждения при строках без кода, LINES_UNRESOLVED и DUPLICATE_FORM (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:42:32 +04:00
Andrey Epifancev
a779d2a04a feat(statement): подтверждение ячеек, дата колонки, наименование организации и подтверждение даты (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:39:34 +04:00
Andrey Epifancev
d416422e73 feat(statement): правка строк — код с подсказкой из справочника, меню строки, LINE_CODE_TAKEN (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:36:07 +04:00
Andrey Epifancev
ef4d32592e refactor(statement): один черновик правок и сборка единственного PATCH (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:31:51 +04:00
Andrey Epifancev
8ab116fdba feat(statement): шапка — организация, поля на проверку и подсказки распознанного текста (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:28:41 +04:00
Andrey Epifancev
4ae8643d78 feat(statement): предупреждения и нарушения у строк, ячеек, колонок и в списке документа (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:25:51 +04:00
Andrey Epifancev
34d523afc7 feat(statement): вид строк по статусам, подсветка по needs_review, переключатель расшифровок (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:22:26 +04:00
Andrey Epifancev
c2f33e7af2 feat(statement): раскладка строк без кода и расшифровок на своих местах (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:19:37 +04:00
Andrey Epifancev
e4ee7f09b2 fix(fixtures): коды соотношения, column_index, порядок edition_lines (#43)
- issue i6 и checks.failed: codes — коды строк соотношения, параллельно line_ids.
- issue i2: column_index 3 (индекс колонки c2).
- edition_lines: 1370 перед 1600, по порядку бланка.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:17:41 +04:00
Andrey Epifancev
f83b03543e feat(types): API формы v5.19 — статусы строк, needs_review, issues, предупреждения файла (#43)
- types/api.ts: LineStatus, Severity, IssueKind, PeriodKind, FileWarningOut, IssueOut, EditionLineOut,
  IssueCountsOut, CellTarget, LinePatch, ColumnPatch; новые поля StatementHeaderOut, ColumnOut, ValueOut,
  LineOut, FailedCheckOut, StatementOut (form_variant, issues, edition_lines), DocumentBrief (issue_counts),
  DocumentOut (issues), JobBrief.warnings — FileWarningOut[].
- statementGrid.ts: GridRow получает статус строки, номер строки, код как распознан, флаги needs_review /
  is_confirmed / codeModified; cellFlags: внимание только по needs_review, новый флаг confirmed.
- labels.ts: lineStatusLabel, severityLabel.
- фикстура __fixtures__/statement-v2.json (БАЛАНС 2025 Q3, NEEDS_CHECK): 16 строк × 2 колонки, у каждой пары ValueOut.
- тесты: переносы полей v2 и покрытие пар строка × колонка, cellFlags по needs_review, подписи; хелперы
  row() / v() / gridRow / doc() дополнены значениями по умолчанию.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:15:29 +04:00
Andrey Epifancev
0f2bbc80c9 openspec(statements-v2): change и план экрана формы по API v5.19 (arm-ka-docs#116, #43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:11:49 +04:00
aep
783c3f0b17 Merge pull request 'Просмотр ОСВ: виртуализация таблицы (#38, AURORA-1665)' (#41) 2026-10-17 13:46:18 +03:00
Andrey Epifancev
b861646a86 Merge branch 'test' into feat/38-osv-virtual-table
Слияние с #39 (PR #40): scroll.x считается от фактических колонок, scroll.y — числом
для virtual. Колонки сумм расширены до 160 px: итоги из 17 цифр («Итого по документу»)
переносились на две строки и обрезались внизу таблицы (O-3). Спека: поиск — по аналитике.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 14:46:10 +04:00
aep
37d5d27a49 Merge pull request 'Просмотр ОСВ: заголовок колонки аналитики по виду (#39, AURORA-1666)' (#40) 2026-10-17 13:42:18 +03:00
Andrey Epifancev
a3e53c8cfc fix(DocumentReview): виртуализация таблицы ОСВ — большая ОСВ больше не роняет вкладку (#38, AURORA-1665)
Таблица строк ОСВ получила virtual (antd 6): в DOM только видимые строки.
Высота области прокрутки считается числом (osvBodyHeight) и обновляется при
изменении окна. В спеку document-review-ui добавлено требование про виртуализацию.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 12:08:22 +04:00
Andrey Epifancev
bbb1b598ad docs(spec): просмотр ОСВ — плоская таблица, колонки по факту (#39, AURORA-1666)
Требование «ОСВ-документ» описывало дерево с колонками «контрагент, ИНН»,
что расходилось с плоской таблицей (#12) и с новым правилом колонок (#39).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 12:06:14 +04:00
Andrey Epifancev
94cb0a4d74 fix(DocumentReview): заголовок колонки аналитики по виду, ИНН только при контрагентах (#39, AURORA-1666)
Заголовок колонки считается по видам строк-листьев (osvRows.analyticsHeading): «Контрагент»,
название вида из файла или «Аналитика» с подсказкой. Колонка ИНН и подсказка поиска — только при
контрагентах; labelSpan и ширина scroll.x зависят от числа колонок. Требование — в specs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 12:04:17 +04:00
aep
1237105af2 Merge pull request 'label переключателя пустых строк через htmlFor (#36, AURORA-1527)' (#37) from feat/36-a11y-switch into test 2026-10-16 18:40:21 +03:00
Andrey Epifancev
a4f54818cf fix(DocumentReview): label переключателя пустых строк связан через htmlFor (#36, AURORA-1527)
biome lint/a11y/noLabelWithoutControl остановил перенос в arm-core (sync-web, arm-core #120):
<label> обёртывал antd Switch. Switch получил id, подпись — label htmlFor. Заодно Prettier
переформатировал строку заголовка в ChecksPanel (длиннее 140).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 19:40:08 +04:00
aep
e252135c3b Merge pull request 'Подстроки под родителем, пустые строки детализации свёрнуты (#34, AURORA-1527)' (#35) from feat/34-subline-parent into test 2026-10-16 18:35:38 +03:00
Andrey Epifancev
85e1b86bb1 fix(ChecksPanel): заголовок мягких проверок «Предупреждения проверок (N)» (#34, AURORA-1527)
В soft_failed попадают мягкие соотношения §7 и жёсткие в пределах округления, а не только округление.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 19:09:37 +04:00