feat(admin): тумблер вкл/выкл генерации картинок

Главный выключатель в разделе «Генерация картинок» (флаг on в конфиге,
независим от наличия токена). Выключено → /api/imggen отдаёт 503
«временно выключена». Админ-тест работает и при выключенном тумблере
(generateImage проверяет только наличие конфига). Бейдж различает
«Включена / Выключена / Не настроена».

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-12 12:00:05 +03:00
parent 88651d85ab
commit ddc260e114
3 changed files with 29 additions and 5 deletions
+6 -1
View File
@@ -1108,6 +1108,8 @@ function getImggen(_req, res) {
let stats = { count: 0, bytes: 0 };
try { stats = require('./imggenController').stats(); } catch (e) {}
const cd = Number(c.cooldownMs), dc = Number(c.dailyCap);
const configured = !!(c.provider === 'cloudflare' && c.accountId && c.token);
const on = c.on !== false;
res.json({
provider: c.provider || 'cloudflare',
accountId: c.accountId || '',
@@ -1115,7 +1117,9 @@ function getImggen(_req, res) {
hasToken: !!c.token,
cooldownMs: Number.isFinite(cd) && cd >= 0 ? cd : 4000,
dailyCap: Number.isFinite(dc) && dc >= 0 ? dc : 40,
enabled: !!(c.provider === 'cloudflare' && c.accountId && c.token),
on,
configured,
enabled: configured && on,
models: IMGGEN_MODELS,
stats,
});
@@ -1125,6 +1129,7 @@ function saveImggen(req, res) {
const b = req.body || {};
const c = _imgCfg();
c.provider = b.provider || c.provider || 'cloudflare';
if (typeof b.on === 'boolean') c.on = b.on;
if (b.accountId !== undefined) c.accountId = String(b.accountId || '').trim();
if (b.model !== undefined) c.model = String(b.model || '').trim();
if (b.clearToken) c.token = '';