(low) ObjectInfraMap: счётчик «Найдено N POI» и чипы категорий считаются по уже отфильтрованным бэкендом данным #1434

Closed
opened 2026-06-15 05:54:49 +00:00 by bot-backend · 0 comments
Collaborator

Severity: low · Категория: frontend · Файл: frontend/src/components/analytics/ObjectInfraMap.tsx:38-45,120

ObjectInfraMap.tsx:29-45,55,120. activeCat передаётся в хук как category (стр. 31), и analytics-api.ts:195 кладёт его в query params (params.set("category", ...)), поэтому при активной категории сервер возвращает только POI этой категории. stats (чипы) строятся из того же data (стр. 38-45), а заголовок «Найдено {data?.length} POI в радиусе {maxDist} м» (стр. 120) показывает число только выбранной категории. Следствие: после клика по чипу остальные кнопки категорий исчезают (stats содержит только активную), и переключиться на другую категорию напрямую нельзя — нужно сначала снять фильтр повторным кликом по активному чипу (toggle стр. 55: setActiveCat(activeCat === cat ? null : cat)); счётчик «N POI» перестаёт означать суммарное число в радиусе. Чинить: считать stats и общий счётчик по неотфильтрованному набору (отдельный запрос без category либо клиентская фильтрация при category, передаваемой только в рендер таблицы), оставив category-фильтр только для отображаемого списка.

Почему баг: stats и счётчик должны отражать весь набор POI в радиусе, но вычисляются из ответа, уже суженного фильтром category. При activeCat != null UI теряет все остальные категории, а «N POI» перестаёт означать суммарное число.

Как чинить: Держать полный (без category) набор для построения чипов и общего счётчика (отдельный запрос либо клиентская фильтрация), а category применять только к строкам таблицы.


deep-audit «армия ботов 2» · verify+harden, confidence 0.8 · unit U86

**Severity:** low · **Категория:** frontend · **Файл:** `frontend/src/components/analytics/ObjectInfraMap.tsx:38-45,120` ObjectInfraMap.tsx:29-45,55,120. activeCat передаётся в хук как category (стр. 31), и analytics-api.ts:195 кладёт его в query params (params.set("category", ...)), поэтому при активной категории сервер возвращает только POI этой категории. stats (чипы) строятся из того же data (стр. 38-45), а заголовок «Найдено {data?.length} POI в радиусе {maxDist} м» (стр. 120) показывает число только выбранной категории. Следствие: после клика по чипу остальные кнопки категорий исчезают (stats содержит только активную), и переключиться на другую категорию напрямую нельзя — нужно сначала снять фильтр повторным кликом по активному чипу (toggle стр. 55: setActiveCat(activeCat === cat ? null : cat)); счётчик «N POI» перестаёт означать суммарное число в радиусе. Чинить: считать stats и общий счётчик по неотфильтрованному набору (отдельный запрос без category либо клиентская фильтрация при category, передаваемой только в рендер таблицы), оставив category-фильтр только для отображаемого списка. **Почему баг:** stats и счётчик должны отражать весь набор POI в радиусе, но вычисляются из ответа, уже суженного фильтром category. При activeCat != null UI теряет все остальные категории, а «N POI» перестаёт означать суммарное число. **Как чинить:** Держать полный (без category) набор для построения чипов и общего счётчика (отдельный запрос либо клиентская фильтрация), а category применять только к строкам таблицы. --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.8 · unit U86</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:54:49 +00:00
bot-backend added the
scope/backend
label 2026-06-15 11:02:04 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1434
No description provided.