fix: complete admin catalog UX and recovery #38

Merged
admin merged 4 commits from feature/admin-ux-hardening into main 2026-09-11 09:50:04 +00:00
Collaborator

Каталог сохранял номер страницы при смене фильтров и мог показывать пустой результат при существующих совпадениях. Фильтры теперь начинают с первой страницы, устаревший offset корректируется в общем обработчике.

Закрывается issue #37: подписанные и сгруппированные фильтры, компактные 5 колонок, пресеты, native dialog и клавиатура, закреплённое ФИО на мобильных экранах, понятные даты/статусы, отдельные empty/error/loading/stale состояния и повторная загрузка. При сбое БД каталог возвращает 503 с сохранением запроса; polling имеет таймаут и защиту от параллельных запросов.

README приведён к текущему Compose (api/worker/postgres), удалённому MCP и версии 0.8.1. Проверки: 58 pytest tests passed; node --check; Playwright desktop/mobile, фильтры, dialog/focus, пресеты и error/retry прошли. Последний документационный коммит a989c5c отдельно проверен: блокирующих замечаний нет.

Closes #37. PR не сливается автоматически.

Каталог сохранял номер страницы при смене фильтров и мог показывать пустой результат при существующих совпадениях. Фильтры теперь начинают с первой страницы, устаревший offset корректируется в общем обработчике. Закрывается issue #37: подписанные и сгруппированные фильтры, компактные 5 колонок, пресеты, native dialog и клавиатура, закреплённое ФИО на мобильных экранах, понятные даты/статусы, отдельные empty/error/loading/stale состояния и повторная загрузка. При сбое БД каталог возвращает 503 с сохранением запроса; polling имеет таймаут и защиту от параллельных запросов. README приведён к текущему Compose (api/worker/postgres), удалённому MCP и версии 0.8.1. Проверки: 58 pytest tests passed; node --check; Playwright desktop/mobile, фильтры, dialog/focus, пресеты и error/retry прошли. Последний документационный коммит `a989c5c` отдельно проверен: блокирующих замечаний нет. Closes #37. PR не сливается автоматически.
agent added 1 commit 2026-08-28 12:57:16 +00:00
Author
Collaborator

Review: есть blocking findings.

  1. [blocking] app/templates/directory.html:135aria-labelledby задан на вложенном <section>, а не на самом <dialog>. У native dialog accessible name не будет связан с columns-dialog-title; перенесите aria-labelledby="columns-dialog-title" на <dialog> (или задайте aria-label самому dialog).

  2. [blocking] app/static/admin.js:103-115 — после первой ошибки polling показывается сообщение, но polling прекращается (return false), и пользователю не даётся retry-действие. Это не соответствует issue #37 (ошибка должна иметь действие восстановления) и оставляет прогресс навсегда устаревшим до перезагрузки страницы. Сохраните polling с ограниченным retry/backoff либо добавьте явную кнопку «Повторить».

Non-blocking: не реализованы заявленные presets колонок и отдельное loading/stale-состояние; тесты проверяют строки шаблонов, но не рендеринг Jinja, native dialog/focus flow или поведение polling. compileall проходит; pytest в окружении недоступен. git diff --check также сообщает CRLF/trailing whitespace в новых CSS/HTML-фрагментах.

Итог: blocking issues остаются, PR пока не готов к merge.

Review: есть blocking findings. 1. [blocking] `app/templates/directory.html:135` — `aria-labelledby` задан на вложенном `<section>`, а не на самом `<dialog>`. У native dialog accessible name не будет связан с `columns-dialog-title`; перенесите `aria-labelledby="columns-dialog-title"` на `<dialog>` (или задайте `aria-label` самому dialog). 2. [blocking] `app/static/admin.js:103-115` — после первой ошибки polling показывается сообщение, но polling прекращается (`return false`), и пользователю не даётся retry-действие. Это не соответствует issue #37 (ошибка должна иметь действие восстановления) и оставляет прогресс навсегда устаревшим до перезагрузки страницы. Сохраните polling с ограниченным retry/backoff либо добавьте явную кнопку «Повторить». Non-blocking: не реализованы заявленные presets колонок и отдельное loading/stale-состояние; тесты проверяют строки шаблонов, но не рендеринг Jinja, native dialog/focus flow или поведение polling. `compileall` проходит; `pytest` в окружении недоступен. `git diff --check` также сообщает CRLF/trailing whitespace в новых CSS/HTML-фрагментах. Итог: blocking issues остаются, PR пока не готов к merge.
agent added 1 commit 2026-08-28 13:01:08 +00:00
Author
Collaborator

Финальный независимый review PR #38: проверены diff feature/admin-ux-hardening относительно main и ключевые файлы. aria-labelledby находится непосредственно на dialog; polling продолжает работу после ошибок и доступна кнопка «Повторить»; presets колонок подключены; версия 0.8.0 и changelog обновлены. Новых блокирующих регрессий не обнаружено — no blocking findings.

Финальный независимый review PR #38: проверены diff feature/admin-ux-hardening относительно main и ключевые файлы. aria-labelledby находится непосредственно на dialog; polling продолжает работу после ошибок и доступна кнопка «Повторить»; presets колонок подключены; версия 0.8.0 и changelog обновлены. Новых блокирующих регрессий не обнаружено — no blocking findings.
agent added 1 commit 2026-09-11 08:26:03 +00:00
agent changed title from fix: harden admin UX and accessibility to fix: complete admin catalog UX and recovery 2026-09-11 08:26:50 +00:00
agent added 1 commit 2026-09-11 09:35:08 +00:00
Author
Collaborator

Проверен только последний коммит a989c5c (docs: align version and test instructions).

  • CHANGELOG.md синхронизирован с версией 0.8.1.
  • README уточняет, что SQLite используется тестами с данными, а отдельные API smoke-тесты используют текущую конфигурацию приложения.
  • git diff --check проходит.

По последнему коммиту блокирующих замечаний нет.

Проверен только последний коммит `a989c5c` (`docs: align version and test instructions`). - `CHANGELOG.md` синхронизирован с версией 0.8.1. - README уточняет, что SQLite используется тестами с данными, а отдельные API smoke-тесты используют текущую конфигурацию приложения. - `git diff --check` проходит. По последнему коммиту блокирующих замечаний нет.
admin merged commit e1ba77c337 into main 2026-09-11 09:50:04 +00: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: admin/miem_workers#38