diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a81beb5 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,92 @@ +# Changelog + +Все заметные изменения проекта `selectel-ml-tui`. + +## [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.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