Skip to content

fix(ui): широкая таблица регистров и журнала прокручивается внутри карточки - #1922

Open
AnnaSIceberg wants to merge 3 commits into
ivanarama:mainfrom
AnnaSIceberg:fix/inforeg-list-table-overflow
Open

AnnaSIceberg wants to merge 3 commits into
ivanarama:mainfrom
AnnaSIceberg:fix/inforeg-list-table-overflow

Conversation

@AnnaSIceberg

Copy link
Copy Markdown

Режим работы

  • Эксперимент: PR остаётся Draft, гипотеза или контракт ещё меняются
  • Поставка: результат проверен, текущий HEAD готов к конвейеру

Draft — до зелёного CI, затем перевожу в Ready.

Что было

В списке регистра сведений (/ui/inforeg/<имя>) таблица с несколькими измерениями/ресурсами и длинными значениями вылезала за правый край белой карточки: строка выходила за рамку формы. Причина — таблица лежит прямо в .card без прокручиваемой обёртки. У справочников и документов она давно обёрнута в <div style="overflow-x:auto">, а у регистра сведений, движений и остатков регистра накопления и журнала документов — нет. Мобильное правило main table{display:block;overflow-x:auto} действует только на узком экране, на десктопе таблица просто шире карточки.

Что стало

Таблицы этих четырёх списков (page-inforeg-list, page-register-movements, page-register-balances, page-journal) обёрнуты в тот же <div style="overflow-x:auto">, что и список справочника: широкая таблица прокручивается по горизонтали внутри карточки. Боковая панель деталей (ob-list-wrap) не затронута: обёртка внутри .card, у которой уже min-width:0.

Пользовательский результат и границы

Широкий регистр/журнал больше не ломает вёрстку страницы. Не входит: отчёты и прочие служебные таблицы; редактирование записи регистра сведений — отдельная заявка #1921.

Проверки

  • TestListTablesScrollInsideCard идёт через публичные маршруты (chi-роутер s.Mount): GET /ui/inforeg/rates, /ui/register/<имя>, /ui/register/<имя>/balances, /ui/journal/<имя> — и требует, чтобы таблица списка стояла внутри overflow-x:auto.
  • Мутационная проверка: без правки шаблона тест краснеет во всех трёх подтестах.
  • go test ./internal/ui и go vet ./internal/ui зелёные локально; SQL не затронут.
  • Пересечения: открытых PR/заявок про вёрстку этих списков нет.

🤖 Generated with Claude Code

…рточки

Списки регистра сведений, движений и остатков регистра накопления и журнала
документов выводили таблицу прямо в .card без прокручиваемой обёртки: при
многих колонках или длинных значениях строки уходили за правый край белой
карточки. У справочников и документов таблица давно обёрнута в
overflow-x:auto — теперь так же и здесь.

Generated-with: Claude Code
@AnnaSIceberg
AnnaSIceberg marked this pull request as ready for review October 6, 2026 10:51
@ivanarama

Copy link
Copy Markdown
Owner

Ревью. (круг 1)
Reviewed-SHA: ee5637c
Outcome-Label: reviewed
Что меняется: Таблицы регистра сведений, движений и остатков регистра накопления и журнала документов получили обёртку overflow-x:auto внутри карточки; добавлен регрессионный тест через публичные HTTP-маршруты.
Проверено: Проверены оба изменённых файла и окружающие шаблоны, CSS и обработчики выбора строк; точный HEAD ee5637c проверен в отдельном detached worktree; go build ./... — успешно; go test -count=1 ./internal/ui — успешно, 247.366 с; затронутые шаблоны приватны для internal/ui, HTTP-роутер и JavaScript списков проверены в этом пакете; go vet ./internal/ui — успешно; TestListTablesScrollInsideCard проходит все четыре HTTP-маршрута; контрольная мутация с исходным templates.go из base 66a9a10 даёт ожидаемый отказ во всех трёх подтестах; Chromium, viewport 1280×900: шесть успешных сценариев с широкими колонками на HTML из публичных маршрутов и штатным ui.js; прокрутка происходит в обёртке, ширина main не растёт; выбор строк и панель деталей регистра сведений и журнала работают при закрытой и открытой панели; Chromium, viewport 820×900 и 390×900: отдельно проверены все четыре маршрута на HEAD и с неизменённым шаблоном base; мобильное расширение карточек регистра сведений и журнала одинаково воспроизводится до и после diff, классифицировано как прежний дефект в хвосте; git diff --check HEAD^ HEAD — успешно; Обязательные CI точного HEAD: build, lint, postgres-integration, vuln, smoke, e2e, test-windows, launcher-webview-build — SUCCESS.
Блокирующее: нет.
Хвост:

  1. [заявка] При ширине экрана ≤820px карточки в .ob-list-wrap растягиваются до ширины содержимого таблицы: мобильный flex-direction:column сохраняет align-items:flex-start, а .card имеет max-width:none. На реальном HTML GET /ui/inforeg/rates с Warehouse = strings.Repeat("Очень длинное название склада ", 20) и GET /ui/journal/orderjournal с Title = strings.Repeat("Длинный заголовок ", 30) при viewport 390px ширина карточек составляет около 4754px и 4394px; горизонтально прокручивается вся страница, а table и новая обёртка не имеют внутренней прокрутки. Контроль с неизменённым templates.go из base 66a9a10 даёт те же размеры: дефект предшествует PR и не блокирует исправление десктопа. Ограничить поперечную ширину карточки в мобильной раскладке и закрепить браузерной проверкой с длинными значениями → заголовок: «fix(ui): ограничить ширину карточек регистра сведений и журнала на мобильном экране»
    Вердикт: годится к мержу.

@ivanarama

Copy link
Copy Markdown
Owner

PromptPilot service marker: REVIEW result publication claimed.

@ivanarama ivanarama added the reviewed Ревью: блокирующего нет — ждёт ship label Oct 7, 2026
@ivanarama

Copy link
Copy Markdown
Owner

PromptPilot service marker: REVIEW result committed.

@ivanarama ivanarama added the ship Иван одобрил мерж: пастух может вливать label Oct 7, 2026
@ivanarama

Copy link
Copy Markdown
Owner

No description provided.

@ivanarama

Copy link
Copy Markdown
Owner

No description provided.

@ivanarama

Copy link
Copy Markdown
Owner

Ревью. (круг 2; интеграционная проверка base-sync)
Reviewed-SHA: 79d6432
Outcome-Label: changes-requested
Что меняется: Автоматический base-sync перенёс исходный проверенный HEAD ee5637c на main d93ddaf. Родители merge-коммита — ровно [from, base]; intent 6048193833 и done 6048215452 связаны с исходным каноничным review/claim/completion и неизменённым trusted ship-event. Собственная правка PR сохранилась: четыре прокручиваемые обёртки и регрессионный HTTP-тест. Дельта из main — шесть файлов internal/ui с исправлением кнопки карточки reference:_users и закрытия вкладок с текстовой 404.
Проверено: Точная интеграционная дельта from → to и результат git merge-tree по общему предку: пять blob совпадают с результатом автомёржа; в templates.go сохранён исходный файл плюс ровно шестистрочный refHasCard из base. Проверен diff относительно подмешанного base; собственные изменения PR не поменялись. Два полных последовательных GraphQL-прохода совпали; REST node_id/fullDatabaseId и исходный epoch-sha256 подтверждены. Хвост перенесён из исходного каноничного ревью 6045692922. В отдельном detached worktree точного HEAD: go build ./... — успешно; go test -count=1 ./internal/ui — успешно; go vet ./internal/ui — успешно; go test -count=1 -run '^TestTabsBehaviorInNode$' -v ./internal/ui — успешно, все 28 JavaScript-сценариев проходят через штатный HTTP-harness. Прямой Node-запуск без обязательных HTML-fixtures был ошибкой вызова; штатный harness подтвердил результат. Затронуты только внутренние шаблоны, HTTP-формы и скрипты пакета internal/ui; их потребители проверены в этом пакете, весь бинарь — сборкой. git diff --check from to — успешно. Обязательные CI точного HEAD, снимок 2026-10-07 22:49:36 UTC: build — SUCCESS; lint — SUCCESS; postgres-integration — SUCCESS; vuln — FAILURE; smoke — SUCCESS; e2e — SUCCESS; test-windows — SUCCESS; launcher-webview-build — SUCCESS. Полный набор go test ./... не запускался.
Блокирующее:

  1. Обязательный vuln точного HEAD завершился FAILURE: лог шага govulncheck показывает отказ govulnpolicy — достижимая GO-2026-6629 в модуле версии v0.40.0 вне allowlist, exit status 1. До зелёного обязательного CI PR к мержу не годится. REVIEW фиксирует блокер и возвращает PR в changes-requested.
    Хвост:
  2. [заявка] При ширине экрана ≤820px карточки в .ob-list-wrap растягиваются до ширины содержимого таблицы: мобильный flex-direction:column сохраняет align-items:flex-start, а .card имеет max-width:none. На реальном HTML GET /ui/inforeg/rates с Warehouse = strings.Repeat("Очень длинное название склада ", 20) и GET /ui/journal/orderjournal с Title = strings.Repeat("Длинный заголовок ", 30) при viewport 390px ширина карточек составляет около 4754px и 4394px; горизонтально прокручивается вся страница, а table и новая обёртка не имеют внутренней прокрутки. Контроль с неизменённым templates.go из base 66a9a10 даёт те же размеры: дефект предшествует PR и не блокирует исправление десктопа. Ограничить поперечную ширину карточки в мобильной раскладке и закрепить браузерной проверкой с длинными значениями → заголовок: «fix(ui): ограничить ширину карточек регистра сведений и журнала на мобильном экране»
    Вердикт: есть замечания.

@ivanarama

Copy link
Copy Markdown
Owner

No description provided.

@ivanarama ivanarama added the changes-requested Ревью: есть замечания — фиксер дорабатывает label Oct 7, 2026
@ivanarama

Copy link
Copy Markdown
Owner

No description provided.

@ivanarama ivanarama removed the ship Иван одобрил мерж: пастух может вливать label Oct 7, 2026
Обновить golang.org/x/text до v0.41.0 с исправлением паники
secure/precis и восстановить обязательную проверку vuln PR ivanarama#1922.

Generated-with: Codex
PP-Fix-Transition: from=79d643211304cb55217ce4a5fd356ca42353dd5e review-comment=6048455758 claim=6048457484 epoch-sha256=5b0ec18ec697af785b2f856ebad400ff0e5a526702a7d3433e6bf5664a8f5410
@ivanarama

Copy link
Copy Markdown
Owner

Доработка по блокирующему пункту 1 завершённого ревью 6048455758.

Обновлена только зависимость golang.org/x/text: v0.40.0 → v0.41.0, с контрольными суммами в go.sum. Это версия с исправлением GO-2026-6629: https://pkg.go.dev/vuln/GO-2026-6629. Изменение оформлено отдельным обычным коммитом поверх проверенного HEAD; обходов vuln и изменений allowlist нет.

Проверено локально на Go 1.26.6: go build ./...; go test -count=1 ./internal/ui ./internal/backup ./internal/dsl/interpreter ./internal/equipment ./tools/pipelinehealth; go test -count=1 ./internal/auth ./internal/storage; go vet для этих семи пакетов; govulncheck v1.6.0 -json ./... → go run ./tools/govulnpolicy; git diff --check. Проверка уязвимостей завершилась успешно: достижимых уязвимостей вне allowlist нет, подавлено 0.

Неблокирующий пункт «Хвост» о мобильной ширине карточек оставлен для отдельной заявки по процедуре. Новый HEAD возвращается в REVIEW; обязательный GitHub CI должен проверить этот SHA.

@ivanarama ivanarama removed the changes-requested Ревью: есть замечания — фиксер дорабатывает label Oct 8, 2026
@ivanarama

Copy link
Copy Markdown
Owner

Ревью. (круг 3)
Reviewed-SHA: 0f0af6e
Outcome-Label: changes-requested
Что меняется: Четыре таблицы списков — регистр сведений, движения и остатки регистра накопления, журнал документов — получают горизонтальную прокрутку внутри карточки. HTTP-тест проверяет публичные маршруты. Поверх base-sync обновлён golang.org/x/text с v0.40.0 до v0.41.0; исходная правка шаблонов сохранена.
Проверено: Полный текущий diff относительно base d93ddaf, шаблоны, CSS и обработчики выбора строк; тест обращается к chi-роутеру через s.Mount. В отдельном detached worktree точного HEAD: go build ./... — успешно; go test -count=1 ./internal/ui ./internal/backup ./internal/dsl/interpreter ./internal/equipment ./tools/pipelinehealth ./internal/auth ./internal/storage — все семь пакетов успешно; go vet для этих же пакетов — успешно. Пять пакетов непосредственно используют x/text, storage и auth проверены как потребители PostgreSQL-драйвера и аутентификации; остальной бинарь покрыт сборкой. Изменения upstream x/text v0.40.0 → v0.41.0 ограничены secure/precis, его тестом и файлами зависимостей; код charmap не менялся. go run golang.org/x/vuln/cmd/govulncheck@v1.6.0 -json ./... — exit 0; поток проверен go run ./tools/govulnpolicy — exit 0, достижимых уязвимостей вне allowlist нет, подавлено 0. Официальный advisory GO-2026-6629 указывает исправление в v0.41.0. Регрессионный TestListTablesScrollInsideCard прошёл в составе пакета; контрольная мутация через go -overlay с неизменённым templates.go из base отвергнута во всех трёх подтестах, как ожидалось. git diff --check base HEAD — успешно. Полный go test -count=1 ./... не запускался: круг затронутых пакетов и потребителей ограничен и перечислен. Два полных последовательных GraphQL-прохода совпали; REST node_id и decimal id совпадают с GraphQL id/fullDatabaseId; current server epoch, edit/deletion fence и обе исторические review → claim → completion связи подтверждены без реконструкции прошлой epoch. CI точного HEAD, снимок 2026-10-08T12:52:16.959533+00:00: build — ABSENT; lint — ABSENT; postgres-integration — ABSENT; vuln — ABSENT; smoke — ABSENT; e2e — ABSENT; test-windows — ABSENT; launcher-webview-build — ABSENT.
Круги: Всего две завершённые пары: круг 1 — reviewed, круг 2 — changes-requested. Ранее только один вердикт «есть замечания», поэтому условие эскалации после двух таких кругов ещё не наступило. Блокер vuln предыдущего круга устранён.
Блокирующее:

  1. Для проверенного HEAD нет успешного полного набора обязательного GitHub CI: build — ABSENT; lint — ABSENT; postgres-integration — ABSENT; vuln — ABSENT; smoke — ABSENT; e2e — ABSENT; test-windows — ABSENT; launcher-webview-build — ABSENT. В REST check-runs и commit status точного SHA нет зарегистрированных проверок; workflow-runs этого SHA также отсутствуют и в основном репозитории, и в fork. Локальная зелёная проверка уязвимостей не заменяет обязательный CI; пока он не подтвердит текущий SHA, PR к мержу не готов.
    Хвост:
  2. [заявка] При ширине экрана ≤820px карточки в .ob-list-wrap растягиваются до ширины содержимого таблицы: мобильный flex-direction:column сохраняет align-items:flex-start, а .card имеет max-width:none. На реальном HTML GET /ui/inforeg/rates с Warehouse = strings.Repeat("Очень длинное название склада ", 20) и GET /ui/journal/orderjournal с Title = strings.Repeat("Длинный заголовок ", 30) при viewport 390px ширина карточек составляет около 4754px и 4394px; горизонтально прокручивается вся страница, а table и новая обёртка не имеют внутренней прокрутки. Контроль с неизменённым templates.go из base 66a9a10 даёт те же размеры: дефект предшествует PR и не блокирует исправление десктопа. Ограничить поперечную ширину карточки в мобильной раскладке и закрепить браузерной проверкой с длинными значениями → заголовок: «fix(ui): ограничить ширину карточек регистра сведений и журнала на мобильном экране»
    Вердикт: есть замечания.
    Человеку: Нужно обеспечить запуск обязательного CI именно для 0f0af6e и получить успешный результат. Хвост о мобильной ширине карточек перенесён из каноничного ревью 6048455758 без повторного браузерного измерения; это прежний дефект, отдельная работа после merge.

@ivanarama

Copy link
Copy Markdown
Owner

No description provided.

@ivanarama ivanarama added the changes-requested Ревью: есть замечания — фиксер дорабатывает label Oct 8, 2026
@ivanarama

Copy link
Copy Markdown
Owner

No description provided.

@ivanarama

Copy link
Copy Markdown
Owner

Автоматическая доработка остановлена: единственный блокирующий пункт завершённого ревью 6060327455 — отсутствие обязательного GitHub CI для текущего HEAD 0f0af6e.

Повторно проверены check-runs и workflow-runs точного SHA: в ivanarama/onebase проверок и запусков нет; в AnnaSIceberg/onebase запусков также нет. Workflow CI основного репозитория активен. Доступ ivanarama к fork имеет permissions.push=false и permissions.admin=false: разрешённые maintainer edits этой ветки PR не дают права запускать workflows fork. Перезапускать существующий run нечего.

Нужен ответ мейнтейнера или автора fork: запустите CI через workflow_dispatch на ветке fix/inforeg-list-table-overflow в AnnaSIceberg/onebase для указанного SHA и обеспечьте успешные build, lint, postgres-integration, vuln, smoke, e2e, test-windows и launcher-webview-build. После получения результатов запросите независимую перепроверку отдельной строкой pp:review-again. Если для запуска требуется изменение кода или инфраструктуры, сначала определите конкретный объём доработки и верните этот HEAD в FIX точным pp:fix-decision.

Proof текущего ревью подтверждён двумя совпавшими полными GraphQL-проходами; review, earliest claim и completion неизменны. Новая правка кода для этого блокера не определена. PR передаётся человеку с needs-decision по процедуре FIX.

@ivanarama ivanarama added needs-decision Нужно решение Ивана and removed changes-requested Ревью: есть замечания — фиксер дорабатывает labels Oct 8, 2026
@AnnaSIceberg

Copy link
Copy Markdown
Author

CI для HEAD 0f0af6e запущен в форке (workflow_dispatch) — все обязательные проверки зелёные: https://github.com/AnnaSIceberg/onebase/actions/runs/37814285346 . Прошу вернуть PR в REVIEW.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-decision Нужно решение Ивана reviewed Ревью: блокирующего нет — ждёт ship

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants