Панель «Первичные документы»: рабочий стол консолидации и загрузка в консолидацию (#26) #27

Merged
aep merged 7 commits from feat/26-console-files into test 2026-10-10 09:00:48 +03:00
Owner

Closes #26. Связано: docs #90 (PR #91, контракт), RSHB/arm-core#96 (ядро с новыми маршрутами).

Ручной прогон на стенде не выполнен, PR не вливать до прогона. Ядро с маршрутами консолидации (arm-core#96) ещё не выкачено на стенд (O-1).

Что сделано (простым языком)

  • Панель «Первичные документы» в версии теперь показывает «рабочий стол» консолидации: файлы, загруженные в эту консолидацию, и файлы, чьи документы привязаны к её версиям.
  • Переключатель «Все документы организации» показывает все файлы юрлица; у файлов других консолидаций появляется подпись («2024 К4», «вне консолидации», «другая консолидация»), у файлов текущей — нет.
  • Загрузка идёт новым маршрутом POST /consolidations/{cid}/legal-entities/{le}/files. Параметр consolidation_version_id больше не отправляется. Кнопка загрузки недоступна, если версия не «в работе» (INITIATED, DOCUMENTS_PROCESSING, DATA_CORRECTION), с подсказкой.
  • «Текущая консолидация» вычисляется функцией-селектором из списка консолидаций группы и открытой версии (а не хранится отдельным полем стора): так нечему рассинхронизироваться. Пока список не загружен (прямая ссылка), панель работает в режиме «все» без переключателя.
  • После создания новой консолидации список консолидаций группы перечитывается (иначе на странице той же группы загрузка оставалась бы заблокированной).
  • Чистая логика (селектор, подпись, маршруты, строки списка) покрыта vitest; компоненты по правилам проекта автотестами не покрываются.
  • scripts/demo-prepare.sh переведён на маршруты консолидации; CLAUDE.md обновлён.

Rulings I made

  • R-4 — ручной прогон отложен до выката arm-core#96 на стенд; выполнит сессия. Цена ошибки: UI-дефект всплывёт позже, до merge PR.
  • R-5 — trailer коммита 5b7b02a «Claude Haiku 5.5» вместо «Claude Fable 5.1», историю не переписывал. Цена: неверная атрибуция в одном коммите.
  • R-6 — промежуточное состояние между Task 2 и 3 (tsc-ошибка, versionId в модалке) принято, закрыто в Task 3. Цена: нет (закрыто tsc).
  • R-7 — consolidation_id в demo-prepare.sh берётся из карточки версии GET /consolidations/versions/$V. Цена: скрипт не запускался на живом ядре.
  • R-8 — после создания консолидации перечитывается список группы (находка I-1). Цена: правка вне Impact proposal, один лишний запрос.
    (R-1…R-3 и R-4…R-8 записаны в openspec/changes/console-files/design.md.)

Findings

Маркер Суть С��атус
T1.1 IN_WORK_STATUSES экспортируется без нужды deferred
T1.2 путаное имя теста consolidationLabel fixed c5537d5
T1.3 нет теста хука useCurrentConsolidation rejected: хук-тесты в проекте не пишутся
T2.1 docstring в files.ts > 140 символов deferred
T2.2 legalEntityId без encodeURIComponent rejected: UUID, как было
T2.3 409-тест: код во втором аргументе ApiError rejected: достаточно для rethrow
T3.1 / M-3 лишняя зависимость + biome-ignore fixed c5537d5
T3.2 порядок импортов rejected: biome чист
T3.3 сброс «все» при смене ЮЛ rejected: желаемое поведение
T3.4 нет тестов компонентов rejected: правило проекта
T4.1 demo-prepare.sh: curl -s без -f deferred
T4.2 шапка скрипта «в версию» fixed c5537d5
I-1 после создания консолидации загрузка заблокирована fixed c5537d5
I-2 R-4…R-8 не в design.md fixed c5537d5
M-1 подсказка при неопределённой консолидации неточна deferred
M-2 tooltip на disabled-кнопке fixed c5537d5 (проверить визуально при прогоне)
M-4 переключатель рядом с кнопкой, а не под ней (D-3) deferred
O-1 ручной прогон на стенде deferred
O-2 FileOut.consolidation_id обязательное поле; сверить с ядром #96 deferred (при прогоне)

make check

Зелёный (rc=0): tsc чисто, biome без замечаний в файлах ветки (7 старых предупреждений noExplicitAny в чужих файлах), vitest 24 файла / 138 тестов, сборка прошла.

🤖 Generated with Claude Code

Closes #26. Связано: docs #90 (PR #91, контракт), RSHB/arm-core#96 (ядро с новыми маршрутами). > **Ручной прогон на стенде не выполнен, PR не вливать до прогона.** Ядро с маршрутами консолидации (arm-core#96) ещё не выкачено на стенд (O-1). ## Что сделано (простым языком) - Панель «Первичные документы» в версии теперь показывает «рабочий стол» консолидации: файлы, загруженные в эту консолидацию, и файлы, чьи документы привязаны к её версиям. - Переключатель «Все документы организации» показывает все файлы юрлица; у файлов других консолидаций появляется подпись («2024 К4», «вне консолидации», «другая консолидация»), у файлов текущей — нет. - Загрузка идёт новым маршрутом `POST /consolidations/{cid}/legal-entities/{le}/files`. Параметр `consolidation_version_id` больше не отправляется. Кнопка загрузки недоступна, если версия не «в работе» (INITIATED, DOCUMENTS_PROCESSING, DATA_CORRECTION), с подсказкой. - «Текущая консолидация» вычисляется функцией-селектором из списка консолидаций группы и открытой версии (а не хранится отдельным полем стора): так нечему рассинхронизироваться. Пока список не загружен (прямая ссылка), панель работает в режиме «все» без переключателя. - После создания новой консолидации список консолидаций группы перечитывается (иначе на странице той же группы загрузка оставалась бы заблокированной). - Чистая логика (селектор, подпись, маршруты, строки списка) покрыта vitest; компоненты по правилам проекта автотестами не покрываются. - `scripts/demo-prepare.sh` переведён на маршруты консолидации; CLAUDE.md обновлён. ## Rulings I made - R-4 — ручной прогон отложен до выката arm-core#96 на стенд; выполнит сессия. Цена ошибки: UI-дефект всплывёт позже, до merge PR. - R-5 — trailer коммита 5b7b02a «Claude Haiku 5.5» вместо «Claude Fable 5.1», историю не переписывал. Цена: неверная атрибуция в одном коммите. - R-6 — промежуточное состояние между Task 2 и 3 (tsc-ошибка, versionId в модалке) принято, закрыто в Task 3. Цена: нет (закрыто tsc). - R-7 — `consolidation_id` в demo-prepare.sh берётся из карточки версии `GET /consolidations/versions/$V`. Цена: скрипт не запускался на живом ядре. - R-8 — после создания консолидации перечитывается список группы (находка I-1). Цена: правка вне Impact proposal, один лишний запрос. (R-1…R-3 и R-4…R-8 записаны в `openspec/changes/console-files/design.md`.) ## Findings | Маркер | Суть | С��атус | |---|---|---| | T1.1 | `IN_WORK_STATUSES` экспортируется без нужды | deferred | | T1.2 | путаное имя теста consolidationLabel | fixed c5537d5 | | T1.3 | нет теста хука useCurrentConsolidation | rejected: хук-тесты в проекте не пишутся | | T2.1 | docstring в files.ts > 140 символов | deferred | | T2.2 | legalEntityId без encodeURIComponent | rejected: UUID, как было | | T2.3 | 409-тест: код во втором аргументе ApiError | rejected: достаточно для rethrow | | T3.1 / M-3 | лишняя зависимость + biome-ignore | fixed c5537d5 | | T3.2 | порядок импортов | rejected: biome чист | | T3.3 | сброс «все» при смене ЮЛ | rejected: желаемое поведение | | T3.4 | нет тестов компонентов | rejected: правило проекта | | T4.1 | demo-prepare.sh: curl -s без -f | deferred | | T4.2 | шапка скрипта «в версию» | fixed c5537d5 | | I-1 | после создания консолидации загрузка заблокирована | fixed c5537d5 | | I-2 | R-4…R-8 не в design.md | fixed c5537d5 | | M-1 | подсказка при неопределённой консолидации неточна | deferred | | M-2 | tooltip на disabled-кнопке | fixed c5537d5 (проверить визуально при прогоне) | | M-4 | переключатель рядом с кнопкой, а не под ней (D-3) | deferred | | O-1 | ручной прогон на стенде | deferred | | O-2 | `FileOut.consolidation_id` обязательное поле; сверить с ядром #96 | deferred (при прогоне) | ## make check Зелёный (rc=0): tsc чисто, biome без замечаний в файлах ветки (7 старых предупреждений noExplicitAny в чужих файлах), vitest 24 файла / 138 тестов, сборка прошла. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 7 commits 2026-10-10 00:04:10 +03:00
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Чистые функции findCurrentConsolidation, isInWork, consolidationLabel и хук
useCurrentConsolidation; FileOut.consolidation_id; тесты vitest.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Загрузка и список файлов в demo-prepare.sh идут через /consolidations/$C/legal-entities/$LE/files,
C берётся из consolidation_id карточки версии.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Sidebar: после создания консолидации перечитывается список группы
- useLegalEntityFiles: убран biome-ignore в зависимостях эффекта
- FilesDrawer: курсор и pointer-events у недоступной кнопки загрузки
- design.md: решения R-4..R-8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Author
Owner

Ручной прогон на стенде выполнен 10.10.2026 (ядро — ветка arm-core feat/96-console-files с миграцией 0006 на :8000, фронт — эта ветка на :3000, Playwright, viewport 1440×900, пользователь ka_go).

Шаг Результат
1. Панель РБ из версии 2024 К3 стол: 11 файлов 2024 К1–К3 (backfill миграции), переключатель выключен, кнопка загрузки активна; раскладка как в макете [39] (заголовок, ИНН, кнопка, колонки Документ / Период / Проверка / Статус)
2. «Все документы организации» 19 файлов; у файлов консоли 2025 К1 подпись «· 2025 К1», у файлов текущей консоли подписи нет
3. Загрузка годовой ОСВ 66 за 2024 через [40] «Принято: 1»; файл появился в столе (период «2024 · 12 мес.»), распознан и автоподтверждён быстрее 10 с — окно «Обработка» для переключения режима поймать не удалось, Review Focus 3 остаётся проверенным по коду
I-1: «Новая консолидация» 2023 К4 → панель РБ сразу список обновился без F5, стол пустой («Документов нет»), кнопка загрузки активна
4. Версия CANCELLED (через API) кнопка недоступна, при наведении подсказка «Загрузка доступна только в версии в работе», стол показывается (M-2 подтверждён визуально)
5. Прямая ссылка ?version= страница и панель открываются, в консоли только известное предупреждение antd про static message
O-2 FileOut.consolidation_id ядро #96 отдаёт поле, подписи строятся по нему

Не проверено: подпись «вне консолидации» (у РБ после backfill нет файлов без консоли), scripts/demo-prepare.sh на живом ядре (не запускался — все файлы РБ/Счастливочной 2024 Q1–Q3 на стенде уже загружены, скрипт получит одни DUPLICATE_FILE).

Скриншоты шагов 1, 2, I-1, 4 — локально в SDD workspace ветки (.superpowers/sdd/2026-10-09-console-files-web/shot-*.png).

Ручной прогон на стенде выполнен 10.10.2026 (ядро — ветка arm-core `feat/96-console-files` с миграцией 0006 на :8000, фронт — эта ветка на :3000, Playwright, viewport 1440×900, пользователь ka_go). | Шаг | Результат | |---|---| | 1. Панель РБ из версии 2024 К3 | стол: 11 файлов 2024 К1–К3 (backfill миграции), переключатель выключен, кнопка загрузки активна; раскладка как в макете [39] (заголовок, ИНН, кнопка, колонки Документ / Период / Проверка / Статус) | | 2. «Все документы организации» | 19 файлов; у файлов консоли 2025 К1 подпись «· 2025 К1», у файлов текущей консоли подписи нет | | 3. Загрузка годовой ОСВ 66 за 2024 через [40] | «Принято: 1»; файл появился в столе (период «2024 · 12 мес.»), распознан и автоподтверждён быстрее 10 с — окно «Обработка» для переключения режима поймать не удалось, Review Focus 3 остаётся проверенным по коду | | I-1: «Новая консолидация» 2023 К4 → панель РБ сразу | список обновился без F5, стол пустой («Документов нет»), кнопка загрузки активна | | 4. Версия `CANCELLED` (через API) | кнопка недоступна, при наведении подсказка «Загрузка доступна только в версии в работе», стол показывается (M-2 подтверждён визуально) | | 5. Прямая ссылка `?version=` | страница и панель открываются, в консоли только известное предупреждение antd про static message | | O-2 `FileOut.consolidation_id` | ядро #96 отдаёт поле, подписи строятся по нему | Не проверено: подпись «вне консолидации» (у РБ после backfill нет файлов без консоли), `scripts/demo-prepare.sh` на живом ядре (не запускался — все файлы РБ/Счастливочной 2024 Q1–Q3 на стенде уже загружены, скрипт получит одни `DUPLICATE_FILE`). Скриншоты шагов 1, 2, I-1, 4 — локально в SDD workspace ветки (`.superpowers/sdd/2026-10-09-console-files-web/shot-*.png`).
aep merged commit 418697afe5 into test 2026-10-10 09:00:48 +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#27
No description provided.