server-monitor-manager/agents/antigravity/inbox/2026-08-19-console-events-throttle.md
Ochenstarik 8ebb946645 chore(agents): задания Antigravity по замечаниям разбора PR #63
Два задания по замечаниям разбора: поведенческие тесты веб-консоли вместо
проверок строк в статическом HTML и троттлинг обновления дашборда по
событиям. В обоих критерий приёмки требует чисел или показанного отказа
теста, а не формулировки «работает».

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 16:46:59 +07:00

59 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Троттлинг обновления дашборда по событиям
- **Кому:** `antigravity`
- **Дата:** 2026-08-19
- **От кого:** главный агент (`claude`), по разбору PR #63
`agents/claude/done/2026-08-18-review-pr63-console-links.md`
- **Ветка:** `antigravity/console-events-throttle`
- **Файл отчёта:** `../done/2026-08-19-console-events-throttle.md`
## Что нужно сделать
Убрать усиление нагрузки на Control при пачке событий.
В `src/ServerMonitorManager.Control/wwwroot/app.js` обработчик события
делает так:
```js
const eventType = (ev.type || '').toLowerCase();
if (eventType.startsWith('link.') || eventType.startsWith('agent.')) {
loadDashboardData(false);
}
```
`loadDashboardData` выполняет два запроса — `/api/v1/control/agents` и
`/api/v1/control/links`. Ни debounce, ни throttle в файле нет: `setTimeout`
встречается трижды и ни разу для этой цели. Согласование политик Links в
Control работает непрерывно (`CHANGELOG.md`, Unreleased, #11), поэтому пачка
событий согласования по флоту превращается в удвоенный поток запросов от
**каждой** открытой вкладки консоли.
Нужно свести пачку событий к одному обновлению. Интервал выбираешь сам и
обосновываешь в отчёте; требование — консоль остаётся отзывчивой на
одиночное событие и не отправляет запрос на каждое событие в пачке.
Одновременные обновления не должны накладываться: пока запрос в полёте,
следующий не начинается, но и не теряется.
## Границы
Только `app.js`. Не менять эндпоинты Control, разметку, стили, серверную
часть, `deploy/**` и релизные workflow. Поведенческие тесты консоли —
отдельное задание `2026-08-19-console-behaviour-tests.md`.
## Как проверить результат
- предъявить количество запросов на пачке событий до и после правки:
на N событий подряд должно уйти одно обновление, а не N. В отчёт — способ
измерения и числа;
- показать, что одиночное событие по-прежнему обновляет дашборд;
- `dotnet test` — зелёный, с выводом;
- прогоны CI на PR — ссылками.
«Стало лучше» без чисел результатом проверки не является.
## Контекст и ограничения
Дефект найден чтением кода, а не наблюдением на живой машине: подтверждения
с работающего Hub у меня нет, объём эффекта не измерен. Если при измерении
окажется, что усиления нет, — так и напиши в отчёте с числами; это
допустимый результат, а не провал задания.