fix(DocumentReview): заголовок колонки аналитики по виду, ИНН только при контрагентах (#39, AURORA-1666) #40

Merged
aep merged 2 commits from feat/39-osv-analytics-column into test 2026-10-17 13:42:19 +03:00
Owner

Что и почему

На экране «Просмотр ОСВ» колонка называлась «Контрагент / аналитика», поиск — «Контрагент или ИНН», колонка ИНН была всегда. У ОСВ по основным средствам, номенклатуре и т. п. там не контрагенты, ИНН пустой (108 из 249 ОСВ контура). Данные распознаны верно, дефект только в подаче.

Теперь (решение владельца 17.10.2026):

  • заголовок колонки зависит от вида строк-листьев (структурные строки субсчёта/подразделения и договоры не учитываются): только контрагенты — «Контрагент»; один другой вид — его название из файла (group_name, напр. «Основные средства»); смесь видов или вид без названия — «Аналитика», а при смеси перечень видов во всплывающей подсказке заголовка;
  • колонка ИНН и подсказка поиска «Контрагент или ИНН» — только если в документе есть контрагенты; иначе колонки ИНН нет, поиск подписан «Поиск по аналитике». Число колонок до сумм (labelSpan строки «Итого по документу») и ширина scroll.x считаются от наличия ИНН/подразделения.

group_name в arm-core/tabular-parser — название группировки из шапки файла на этом уровне (DBML: «Контрагенты», «Договоры»), для листьев не-контрагентов — тип OTHER. Поведение позволяет решение как описано.

Файлы: osvRows.ts (чистая analyticsHeading, поля analyticsTitle/analyticsHint/hasCounterparties в OsvTable), osvRows.test.ts (7 новых тестов: контрагенты, договор под контрагентом, ОС, смесь, два вида не-контрагентов, вид без названия, нет листьев), OsvDocument.tsx (колонки, поиск, labelSpan, scroll.x; свойства Table/scroll.y не менялись — пересечение с #38 минимально), openspec/specs/document-review-ui/spec.md (требование и сценарий).

Closes #39. Jira AURORA-1666.

make check

Зелёный целиком: biome «Checked 142 files, No fixes applied» (7 прежних warning ESLint в чужих файлах), tsc без ошибок, Test Files 25 passed (25), Tests 157 passed (157), rsbuild build — ready, built in 0.91 s.

Браузерная проверка (стенд контура, окно 1600×1000)

  • ОСВ 01 «Пекарни» (0ce14346…): заголовок «Основные средства», колонки ИНН нет, подсказка «Поиск по аналитике», поиск «Хундай» → «Строк: 1», «Итого по документу» под своими колонками.
  • ОСВ 60 (7319361b…): «Контрагент», колонка ИНН, подсказка «Контрагент или ИНН», поиск по ИНН 7727759298 → «Строк: 2».
  • ОСВ 76 (9ff96594…, смесь): «Аналитика», подсказка «Виды аналитики: Контрагенты, без названия».
    Скриншоты (реальные данные, вне репозитория): scratchpad/shots-39/ (os01, c60, c76, поиск, tooltip).

Rulings I made

  • R-1: вид листа = COUNTERPARTY или значение group_name (для не-контрагентов); у контрагентов в подсказке имя берётся из group_name, иначе «Контрагенты».
  • R-2: вид без названия в перечне подсказки подписан «без названия»; если вид один и без названия — «Аналитика» без подсказки.
  • R-3: документ без листьев аналитики — «Аналитика», без ИНН.
  • R-4: в specs добавлено требование и один сценарий (ОС) прямо в document-review-ui.

Находки

Маркер Суть Статус
R-1 вид = COUNTERPARTY или group_name fixed 94cb0a4
R-2 вид без названия: «без названия» в подсказке fixed 94cb0a4
R-3 нет листьев → «Аналитика», без ИНН fixed 94cb0a4
R-4 требование в specs fixed 94cb0a4
O-1 codegraph в worktree ответил (не пуст) rejected не дефект
O-2 порт 3102 занят чужим dev-сервером, мой ушёл на 3103; затем pkill -f "rsbuild dev --port 3102" остановил и чужой сервер на 3102 deferred (перезапустить владельцу #38)

🤖 Generated with Claude Code

## Что и почему На экране «Просмотр ОСВ» колонка называлась «Контрагент / аналитика», поиск — «Контрагент или ИНН», колонка ИНН была всегда. У ОСВ по основным средствам, номенклатуре и т. п. там не контрагенты, ИНН пустой (108 из 249 ОСВ контура). Данные распознаны верно, дефект только в подаче. Теперь (решение владельца 17.10.2026): - заголовок колонки зависит от вида строк-листьев (структурные строки субсчёта/подразделения и договоры не учитываются): только контрагенты — «Контрагент»; один другой вид — его название из файла (`group_name`, напр. «Основные средства»); смесь видов или вид без названия — «Аналитика», а при смеси перечень видов во всплывающей подсказке заголовка; - колонка ИНН и подсказка поиска «Контрагент или ИНН» — только если в документе есть контрагенты; иначе колонки ИНН нет, поиск подписан «Поиск по аналитике». Число колонок до сумм (`labelSpan` строки «Итого по документу») и ширина `scroll.x` считаются от наличия ИНН/подразделения. `group_name` в arm-core/tabular-parser — название группировки из шапки файла на этом уровне (DBML: «Контрагенты», «Договоры»), для листьев не-контрагентов — тип OTHER. Поведение позволяет решение как описано. Файлы: `osvRows.ts` (чистая `analyticsHeading`, поля `analyticsTitle/analyticsHint/hasCounterparties` в `OsvTable`), `osvRows.test.ts` (7 новых тестов: контрагенты, договор под контрагентом, ОС, смесь, два вида не-контрагентов, вид без названия, нет листьев), `OsvDocument.tsx` (колонки, поиск, labelSpan, scroll.x; свойства Table/scroll.y не менялись — пересечение с #38 минимально), `openspec/specs/document-review-ui/spec.md` (требование и сценарий). Closes #39. Jira AURORA-1666. ## make check Зелёный целиком: biome «Checked 142 files, No fixes applied» (7 прежних warning ESLint в чужих файлах), tsc без ошибок, `Test Files 25 passed (25)`, `Tests 157 passed (157)`, `rsbuild build` — ready, built in 0.91 s. ## Браузерная проверка (стенд контура, окно 1600×1000) - ОСВ 01 «Пекарни» (0ce14346…): заголовок «Основные средства», колонки ИНН нет, подсказка «Поиск по аналитике», поиск «Хундай» → «Строк: 1», «Итого по документу» под своими колонками. - ОСВ 60 (7319361b…): «Контрагент», колонка ИНН, подсказка «Контрагент или ИНН», поиск по ИНН 7727759298 → «Строк: 2». - ОСВ 76 (9ff96594…, смесь): «Аналитика», подсказка «Виды аналитики: Контрагенты, без названия». Скриншоты (реальные данные, вне репозитория): scratchpad/shots-39/ (os01, c60, c76, поиск, tooltip). ## Rulings I made - R-1: вид листа = COUNTERPARTY или значение `group_name` (для не-контрагентов); у контрагентов в подсказке имя берётся из `group_name`, иначе «Контрагенты». - R-2: вид без названия в перечне подсказки подписан «без названия»; если вид один и без названия — «Аналитика» без подсказки. - R-3: документ без листьев аналитики — «Аналитика», без ИНН. - R-4: в specs добавлено требование и один сценарий (ОС) прямо в document-review-ui. ## Находки | Маркер | Суть | Статус | |---|---|---| | R-1 | вид = COUNTERPARTY или group_name | fixed 94cb0a4 | | R-2 | вид без названия: «без названия» в подсказке | fixed 94cb0a4 | | R-3 | нет листьев → «Аналитика», без ИНН | fixed 94cb0a4 | | R-4 | требование в specs | fixed 94cb0a4 | | O-1 | codegraph в worktree ответил (не пуст) | rejected не дефект | | O-2 | порт 3102 занят чужим dev-сервером, мой ушёл на 3103; затем `pkill -f "rsbuild dev --port 3102"` остановил и чужой сервер на 3102 | deferred (перезапустить владельцу #38) | 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-17 11:04:53 +03:00
Заголовок колонки считается по видам строк-листьев (osvRows.analyticsHeading): «Контрагент»,
название вида из файла или «Аналитика» с подсказкой. Колонка ИНН и подсказка поиска — только при
контрагентах; labelSpan и ширина scroll.x зависят от числа колонок. Требование — в specs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aep added 1 commit 2026-10-17 11:06:20 +03:00
Требование «ОСВ-документ» описывало дерево с колонками «контрагент, ИНН»,
что расходилось с плоской таблицей (#12) и с новым правилом колонок (#39).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aep merged commit 37d5d27a49 into test 2026-10-17 13:42:19 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-web#40
No description provided.