Files
selectel-ml-tui/CHANGELOG.md
T

115 lines
7.7 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.
# Changelog
Все заметные изменения проекта `selectel-ml-tui`.
## [1.0.4] — 2026-09-03
Анимация-«собачка» при обновлении статистики.
### Добавлено
- Экран **Dashboard**: полноэкранный индикатор загрузки — бегущая ASCII-собачка
поверх всего окна с полупрозрачным затемнением (`$background 80%`),
панелью по центру (рамка `border: round`), дорожкой из 🐾 и подписью
«Обновление статистики…». Анимация: переставляет лапы и виляет хвостом
(4 кадра, 0,12 с).
- На время загрузки ввод блокируется (горячие клавиши и фокус), после
завершения — возвращается.
- Показывается при автообновлении по таймеру и при ручном обновлении (`r`);
скрывается по завершении загрузки.
### Исправлено
- Индикатор больше не конфликтует со встроенным `Widget.loading` Textual
(ранее из-за одноимённого reactive показывались встроенные «точки»).
### Примечание
- Реализует задачу #1 («Новая загрузка обновления статистики»).
## [1.0.3] — 2026-08-19
Полноценный вывод данных из Gateway API ИИ-роутера (IAM).
### Добавлено
- Парсинг реальной схемы Gateway API:
- `/overview` → потребление за месяц (сумма в нанорублях, запросы, токены
всего, input/output/cache read/cache write), бюджет роутера (лимит/расход/
остаток);
- `/metrics` → метрики за 24 ч (доступность `success_rate_pct`, TTFT и
задержка в секундах→мс, запросы, токены) и `by_model` — по моделям
(запросы/доступность/TTFT);
- `/keys` → лимиты и расход по API-ключам (имя, префикс, статус, лимит,
потрачено, остаток).
- Новый экран **«API-ключи и лимиты»** (клавиша `k`) и панель бюджета на
главном экране.
- Модели: добавлены поля `requests`, `tokens_total`, `avg_latency_ms`; новые
модели `ApiKeyUsage`, `BudgetInfo`.
### Исправлено
- «Потрачено за месяц» берётся из Gateway Overview (совпадает с вкладкой
«Обзор»), биллинг — фолбэк при отсутствии IAM.
- `SettingsScreen` не перезаписывает конфиг, если интервал не менялся.
## [1.0.2] — 2026-08-19
Исправление отображения данных и прав на файлы конфигурации.
### Исправлено
- **Сумма за месяц**: раньше `end` обрезался до начала текущего дня — сегодняшние
расходы не входили в сумму. Теперь `end` = текущий момент (naive datetime),
сумма включает текущий день.
- **История**: в историю записывалась месячная сумма как «точка дня». Теперь
сохраняется дневная стоимость (отдельно показывается «Сегодня»).
- **Токены/модели**: при отсутствии IAM (нет сервисного пользователя) поля
Input/Output/Cache больше не показывают вводящие в заблуждение нули — выводится
пояснение «Токены и модели — только через IAM».
### Примечание
- Gateway API (токены по моделям, каталог моделей) требует IAM-токен сервисного
пользователя. В аккаунте нет сервисных пользователей — необходимо создать его
в панели (my.selectel.ru → IAM → Сервисные пользователи) и настроить через
`selectel-ml-tui config`.
- `credentials.json`/`config.toml` должны принадлежать текущему пользователю
(права 0600). Запуск от `root`/`sudo` создаёт файлы с владельцем root, из-за
чего обычный запуск падает с `PermissionError` — исправляется `chown`.
## [1.0.1] — 2026-08-19
Исправление: крах при запуске, если в `config.toml` (или env
`SELCTEL_REFRESH_INTERVAL`) указан `refresh_interval < 10`.
### Исправлено
- `load_settings()` больше не бросает `ValidationError` на некорректных
значениях: `refresh_interval` приводится к допустимому диапазону
(минимум 10 секунд), мусорные значения — к умолчанию 60.
- Мастер `selectel-ml-tui config` отклоняет интервал < 10 (повторный запрос).
## [1.0.0] — 2026-08-19
Релиз, готовый к использованию.
### Добавлено
- TUI-дашборд (Textual): потребление за месяц, метрики за 24 часа, таблица
«По моделям», статус `online`/`offline` в заголовке, автообновление.
- Экраны: **История** (бар-график + таблица по дням, периоды 7/30/90),
**Детали модели** (Enter в таблице моделей), **Настройки** (интервал
обновления, «Очистить кэш», пути, маскированный токен).
- API-клиенты: Billing Statistics (стоимость), Gateway API (токены/метрики),
IAM (получение и кэширование токена с автообновлением).
- Модели данных (pydantic) с валидацией и форматированием чисел.
- Локальный SQLite-кэш: снимки потребления/метрик/моделей, история по дням
(upsert), очистка старых записей (TTL 180 дней), экспорт CSV/JSON.
- CLI: `config` (интерактивный мастер), `run`, `export`, `doctor`
(диагностика окружения); `python -m selectel_ml_tui`.
- Адаптация под Ubuntu и macOS: скрипты установки, `scripts/run.sh`,
диагностика `TERM`/`LANG`/UTF-8, CI (GitHub Actions: ubuntu + macos).
- Упаковка: однофайловый бинарник через PyInstaller (`make build`).
### Качество
- 89 тестов, покрытие 91% (порог 80%).
- ruff (flake8/isort/format), mypy strict — без ошибок.
- Подсказка при первом запуске без токена, FAQ и troubleshooting в README.
[1.0.4]: https://github.com/selectel-ml-tui/selectel-ml-tui/releases/tag/v1.0.4
[1.0.3]: https://github.com/selectel-ml-tui/selectel-ml-tui/releases/tag/v1.0.3
[1.0.2]: https://github.com/selectel-ml-tui/selectel-ml-tui/releases/tag/v1.0.2
[1.0.1]: https://github.com/selectel-ml-tui/selectel-ml-tui/releases/tag/v1.0.1
[1.0.0]: https://github.com/selectel-ml-tui/selectel-ml-tui/releases/tag/v1.0.0