AURORA-1683 Комментарии к документу: список на экране проверки и счётчик в панели #182

Merged
aep merged 6 commits from feat/180-document-comments into main 2026-10-26 23:51:13 +03:00
Owner

Closes #180. Jira: AURORA-1683 (эпик AURORA-1353).

Что сделано

Только фронт (web/), бэкенд и DBML не менялись — API комментариев был готов (GET/POST /documents/{id}/comments, comments_count).

  • Экран документа [41]: кнопка «Добавить комментарий» заменена на «Комментарии (N)». Открывает боковую панель: список (автор, дата и время по Москве, текст с переносами) по возрастанию времени, внизу поле ввода (до 4000 символов) и «Добавить». После добавления список и счётчик обновляются сразу. Окно CommentModal удалено.
  • Панель «Первичные документы» [39-01]: в строке документа — кнопка с иконкой комментария и числом (при нуле — только иконка). По клику — поповер «Комментарии к документу <файл>», только чтение; пусто — «Комментарий отсутствует», кнопка «Закрыть».
  • Общие части — web/src/widgets/DocumentComments/ (useDocumentComments, CommentsList, DocumentCommentsDrawer, CommentsPopover).
  • OpenSpec change document-comments-ui: ADDED «Комментарии к документу» (document-review-ui) и «Комментарии документа в панели» (primary-files-ui).

Для ревью фронта простыми словами

  • useDocumentComments — маленький хук: грузит список по запросу и помнит номер последнего запроса, поэтому ответ, пришедший после закрытия панели/поповера, выбрасывается и не перетирает свежий.
  • Поповер antd рисуется в отдельном слое страницы, но клики из него по дереву React доходят до строки таблицы и открывали бы документ. Поэтому весь Popover обёрнут в span, который гасит всплытие (так же исправлен FileWarningsPopover, где был тот же дефект).
  • key={doc.id} на боковой панели: экран документа при переключении документа не пересоздаётся, без ключа недописанный текст переходил бы на другой документ, а удалить комментарий нельзя.

Проверки

  • npm test — 383/383; npm run lint — 0 ошибок (предупреждения — в файлах вне ветки); make web-check — зелёный; openspec validate document-comments-ui --strict — valid.
  • make check-full — зелёный: unit 1906 passed / 1 skipped; integration 1169 passed; e2e 1 passed; statements-check 0 (синхронна с arm-statements 25b2bb8); dbml-check, docker-build, web-check — ок. В worktree запускался с ARM_KA_DOCS, DBML, COMPOSE_FILE абсолютными путями (рядом с worktree нет ../docs).
  • Браузер (Playwright, 1600×1000), копия локальной БД на alembic 0010: добавление и перезагрузка («Комментарии (1)»), счётчик без перезагрузки, ошибка 403 (текст остаётся в поле), многострочный и длинный текст без пробелов, счётчик и поповер в панели, пустой поповер, клики по кнопке/заголовку/содержимому поповеров не открывают документ, черновик не переходит на другой документ.
  • Не прогнан: сценарий «Причина замены документа» (нужно распознавание) — проверить на нашем стенде при выкладке (R-10).

Rulings I made

  • R-1 — поповер панели только для чтения, добавление только на экране документа (цена: добавить поле в поповер — небольшая правка).
  • R-2 — при нуле комментариев в панели иконка без числа (косметика).
  • R-3 — время «dd.mm.yyyy hh:mm» по Москве (косметика).
  • R-4 — «Добавить» не прячем без права DOCUMENT_EDIT, отказ сервера показываем сообщением (пользователь без права видит кнопку).
  • R-5 — при перечитывании после добавления прежний список держится до ответа (косметика).
  • R-6 — Drawer size={420} вместо устаревшего width (нет).
  • R-7 — отступ 28 px между полем и «Добавить» под счётчик символов antd (косметика).
  • R-8 — кнопки строки панели прижаты вправо (косметика).
  • R-9 — проверка в браузере на копии БД armka_1683, общий стенд не тронут (копию удалить при закрытии).
  • R-10 — сценарий «причина замены» не прогнан в браузере (проверить на стенде).
  • R-11 — обёртка stopPropagation вокруг всего Popover, исправлен и FileWarningsPopover (нет).
  • R-12 — key={doc.id} на боковой панели (нет).

Находки

Маркер Суть Статус
I-1 клик по заголовку поповера открывал документ fixed 8c7146d
I-2 черновик комментария переходил на другой документ fixed 8c7146d
M-1 длинное имя файла в заголовке растягивает поповер deferred
M-2 при смене документа до ответа виден список прежнего fixed 8c7146d
M-3 нет ?? 0 у comments_count на экране документа rejected — DocumentOut отдаёт 0 по умолчанию, фронт и бэк в одном монорепо
M-4 решения не перенесены в design.md fixed 8c7146d
M-5 tasks.md не отражал непрогнанный сценарий замены fixed 8c7146d
O-1 локальный стенд на alembic 0007, код требует 0010 deferred
R-10 сценарий «причина замены» не прогнан deferred

Deferred

  • M-1 — длинное имя файла в заголовке поповера комментариев растягивает поповер.
  • O-1 — обновить локальный стенд до alembic 0010.
  • R-10 — прогнать «причину замены» на нашем стенде при выкладке.

🤖 Generated with Claude Code

Closes #180. Jira: AURORA-1683 (эпик AURORA-1353). ## Что сделано Только фронт (`web/`), бэкенд и DBML не менялись — API комментариев был готов (`GET`/`POST /documents/{id}/comments`, `comments_count`). - **Экран документа [41]:** кнопка «Добавить комментарий» заменена на «Комментарии (N)». Открывает боковую панель: список (автор, дата и время по Москве, текст с переносами) по возрастанию времени, внизу поле ввода (до 4000 символов) и «Добавить». После добавления список и счётчик обновляются сразу. Окно `CommentModal` удалено. - **Панель «Первичные документы» [39-01]:** в строке документа — кнопка с иконкой комментария и числом (при нуле — только иконка). По клику — поповер «Комментарии к документу <файл>», только чтение; пусто — «Комментарий отсутствует», кнопка «Закрыть». - Общие части — `web/src/widgets/DocumentComments/` (`useDocumentComments`, `CommentsList`, `DocumentCommentsDrawer`, `CommentsPopover`). - OpenSpec change `document-comments-ui`: ADDED «Комментарии к документу» (`document-review-ui`) и «Комментарии документа в панели» (`primary-files-ui`). ### Для ревью фронта простыми словами - `useDocumentComments` — маленький хук: грузит список по запросу и помнит номер последнего запроса, поэтому ответ, пришедший после закрытия панели/поповера, выбрасывается и не перетирает свежий. - Поповер antd рисуется в отдельном слое страницы, но клики из него по дереву React доходят до строки таблицы и открывали бы документ. Поэтому весь `Popover` обёрнут в `span`, который гасит всплытие (так же исправлен `FileWarningsPopover`, где был тот же дефект). - `key={doc.id}` на боковой панели: экран документа при переключении документа не пересоздаётся, без ключа недописанный текст переходил бы на другой документ, а удалить комментарий нельзя. ## Проверки - `npm test` — 383/383; `npm run lint` — 0 ошибок (предупреждения — в файлах вне ветки); `make web-check` — зелёный; `openspec validate document-comments-ui --strict` — valid. - `make check-full` — зелёный: unit 1906 passed / 1 skipped; integration 1169 passed; e2e 1 passed; statements-check 0 (синхронна с arm-statements 25b2bb8); dbml-check, docker-build, web-check — ок. В worktree запускался с `ARM_KA_DOCS`, `DBML`, `COMPOSE_FILE` абсолютными путями (рядом с worktree нет `../docs`). - Браузер (Playwright, 1600×1000), копия локальной БД на alembic 0010: добавление и перезагрузка («Комментарии (1)»), счётчик без перезагрузки, ошибка 403 (текст остаётся в поле), многострочный и длинный текст без пробелов, счётчик и поповер в панели, пустой поповер, клики по кнопке/заголовку/содержимому поповеров не открывают документ, черновик не переходит на другой документ. - **Не прогнан:** сценарий «Причина замены документа» (нужно распознавание) — проверить на нашем стенде при выкладке (R-10). ## Rulings I made - R-1 — поповер панели только для чтения, добавление только на экране документа (цена: добавить поле в поповер — небольшая правка). - R-2 — при нуле комментариев в панели иконка без числа (косметика). - R-3 — время «dd.mm.yyyy hh:mm» по Москве (косметика). - R-4 — «Добавить» не прячем без права `DOCUMENT_EDIT`, отказ сервера показываем сообщением (пользователь без права видит кнопку). - R-5 — при перечитывании после добавления прежний список держится до ответа (косметика). - R-6 — `Drawer size={420}` вместо устаревшего `width` (нет). - R-7 — отступ 28 px между полем и «Добавить» под счётчик символов antd (косметика). - R-8 — кнопки строки панели прижаты вправо (косметика). - R-9 — проверка в браузере на копии БД `armka_1683`, общий стенд не тронут (копию удалить при закрытии). - R-10 — сценарий «причина замены» не прогнан в браузере (проверить на стенде). - R-11 — обёртка `stopPropagation` вокруг всего `Popover`, исправлен и `FileWarningsPopover` (нет). - R-12 — `key={doc.id}` на боковой панели (нет). ## Находки | Маркер | Суть | Статус | |---|---|---| | I-1 | клик по заголовку поповера открывал документ | fixed 8c7146d | | I-2 | черновик комментария переходил на другой документ | fixed 8c7146d | | M-1 | длинное имя файла в заголовке растягивает поповер | deferred | | M-2 | при смене документа до ответа виден список прежнего | fixed 8c7146d | | M-3 | нет `?? 0` у `comments_count` на экране документа | rejected — `DocumentOut` отдаёт 0 по умолчанию, фронт и бэк в одном монорепо | | M-4 | решения не перенесены в design.md | fixed 8c7146d | | M-5 | tasks.md не отражал непрогнанный сценарий замены | fixed 8c7146d | | O-1 | локальный стенд на alembic 0007, код требует 0010 | deferred | | R-10 | сценарий «причина замены» не прогнан | deferred | ### Deferred - M-1 — длинное имя файла в заголовке поповера комментариев растягивает поповер. - O-1 — обновить локальный стенд до alembic 0010. - R-10 — прогнать «причину замены» на нашем стенде при выкладке. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 6 commits 2026-10-26 23:48:57 +03:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
I-1: обёртка со stopPropagation вокруг всего Popover (CommentsPopover и FileWarningsPopover);
I-2, M-2: key={doc.id} на боковой панели комментариев; решения R-5…R-12 в design.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aep merged commit fabc74982b into main 2026-10-26 23:51:13 +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-core#182
No description provided.