mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-05 09:14:58 +03:00
Пагинация в порталах и контактах была нарисованной: сервер отдавал весь набор, браузер резал его на страницы. У сотрудников и агентов не было и этого. Любой из четырёх списков рос вместе с организацией и целиком уезжал клиенту. Серверная часть — страницы и фильтры до среза: - контакты: подзапросы вместо join-агрегатов (фильтр по каналу больше не урезает счётчики диалогов), поиск, каналы, агенты, «с открытым диалогом» и порядок — в SQL; - сотрудники: роль, группа и поиск по имени, почте и должности; - агенты: группа и поиск; - порталы: статус и поиск, архивные последними; - библиотека статей: категория с вложенными, язык, статус и поиск по последней редакции. Клиент: - один подвал со страницами на всё приложение вместо трёх разных (PortalTableFooter, SalesClientsPagination, TablePagination удалены); - usePagedResource: страница принадлежит набору фильтров, гонки ответов отсекаются, сервер решает, какая страница существует; - useDebounced вынесен в shared — поиск придерживает запрос; - карточка сотрудника грузится по идентификатору, а передача владения сама запрашивает кандидатов: список постраничный, и нужного человека может не быть на открытой странице; - App больше не тянет всех сотрудников на старте. Выпадающие выборы (ответственный, передача владения, фильтр по агентам) работают со справочниками; библиотеке знаний нужен серверный контракт со счётчиками прикреплений — до него потолок в 100 карточек оставлен явным. Контракт списков и лент записан в SPEC-CHATBALLS-0031 §8. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>