1.2.0
Added (#378)
- Настройки сроков хранения логов поддерживают значение 0 = «хранить бесконечно» (очистка отключена) (#378): потребитель очистки (
internal/memory/cleanup_service.go—purgeDBприdays <= 0пропускает таблицу, файлы LLM-логов чистятся только приdays > 0, janitor tool-outputs выключает только age-purge) уже исполнял эту семантику, но слой валидации запрещал её задать — у всех retention-ключей в реестре стоялMin: "1", фронт клампил 0 → 1, API отвечал 400. У 12 ключейretention_*_daysвinternal/settings/defs.goсменёнMin: "1"→Min: "0"(app_log, audit_log, tool_audit, cron_audit, file_audit, llm_usage, webhook_requests, refresh_tokens, checkpoints, llm_files, tool_outputs, llm_request_log), в каждое Description добавлена фраза «0 — хранить бесконечно (очистка отключена)» по образцуtool_outputs_size_cap_mb. ВалидацияvalidateParamне менялась (n < minVприMin="0"пропускает 0 и по-прежнему отсекает отрицательные —"-1"→ 400must be >= 0). Тесты:TestRetention_Update_ZeroMeansKeepForever(0 → 200, значение записано в стор),TestRetention_Update_BelowMin/TestRetention_Update_ErrorFormatпереведены на"-1"→ 400. Фронт: код не менялся (min приходит из API, кламп/validate()подхватывают автоматически), в подзаголовок/settings/log-settingsдобавлено пояснение «0 — записи хранятся бессрочно (очистка отключена)». Документация: новая секция «Хранение логов (retention)» вdocs/guide/configuration.md(полная таблица ключей, дефолтов, диапазонов и семантики 0; нюансretention_tool_outputs_days=0— age-purge выключен, size-cap и orphan-очистка работают). Особые случаи:retention_refresh_tokens_days=0— отозванные/истёкшие токены не удаляются никогда (активные и так защищены);retention_tool_outputs_days=0— age-purge off, size-cap продолжает чистить каталог.