fix: история за период не обрезается по свежему краю — прореживание по всему окну
...
На реальном интервале 30 с окно 24 ч — это 2880 точек, неделя — ~7 тыс., а
запрос ограничивался LIMIT'ом по свежему краю: страница сервера просит 1500
точек, поэтому «7 d» показывал последние ~7 часов, а «24 h» — ~12. Сырые сутки
вытесняли всю старую историю вместе с дайджестами, и полосы min–max на длинных
периодах вообще не доезжали до графика.
Теперь `limit` — это «сколько точек вернуть максимум»: в окне читается до
FETCH_CAP строк, и если их больше limit, точки прореживаются равномерно по
всему периоду (первая — начало запрошенного интервала, последняя — сейчас),
а дайджесты выброшенных сливаются в оставшуюся. Прореживание вынесено в общий
`app/digest.py` (им же пользуется MCP-тул server_history — у него была та же
обрезка на окне 168 ч); в группе остаётся последняя точка, так что свежий край
не теряется.
Проверено на демо-данных: 7 d отдаёт окно целиком (03.10 → 10.10),
час со спайком доезжает как cpu max 97.5 и /data max 88, часы простоя — как
n < exp, тултип полосы показывает «23.5–32% · замеров 240/240».
Eugene Sukhodolskiy
committed
11 hours ago