Контроль расходов на LLM: дашборд, $ лимиты (общие и на каждую модель), Circuit Breaker по исчерпанию баланса провайдера, кэш ответов. Модели больше не зашиты в коде — реестр в БД с автообнаружением по API-ключу, отдельным от точечных настроек каждой модели.
Финансовый контроль
- Дашборд расходов /billing.html: по провайдерам, моделям, дням, кэш-хитам
- $ лимиты: глобальные (день/месяц) и индивидуальные на каждую модель
- Circuit Breaker по HTTP 402: разблокировка только вручную, после пополнения баланса
- Кэш ответов LLM (Redis) с оценкой экономии в дашборде
- Двухпороговые алерты о приближении к лимиту (80% / 95%)
Реестр ИИ-моделей
- Вкладка «🤖 ИИ Модели» в settings.html: подключения (API-ключи) отдельно от точечных настроек моделей
- Автообнаружение моделей по ключу: новые появляются выключенными с пометкой «новая», пропавшие не удаляются автоматически
- Веса моделей — отдельный спойлер, проверка суммы = 1.00, авто-перераспределение веса при отключении модели
- Возврат провайдера OpenAI + поддержка «своего» OpenAI-совместимого эндпоинта
- Справки (?) по каждому параметру модели с примерами (уровни сложности, таймаут, лимиты)
Безопасность
- Единый ключ шифрования (WEBDAV_ENCRYPT_KEY) для всех секретов проекта, включая API-ключи моделей
- webdav_storage.encrypt_secret() больше не сохраняет секрет открытым текстом при отсутствии ключа
Исправления
- GET /api/models/status падал с AttributeError — исправлено
- Фоновые задачи tasks.py были сломаны с момента миграции на PostgreSQL (content/::int[])
- Провайдеры Claude/DeepSeek не возвращали usage — расходы считались бы $0