feat(admin): раздел «Генерация картинок» — управление провайдером и тест
Новый админ-раздел: Account ID / токен (маскируется) / модель Cloudflare, лимиты (пауза, дневной лимит) из БД, статистика, кнопка теста генерации. imggenController: лимиты и модель теперь из конфига, поддержка JSON и бинарного ответа CF, переиспользуемые generateImage() и stats(). Бэкенд GET/PUT /api/admin/imggen + POST /api/admin/imggen/test (admin-only). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
AdminCtx.isAdmin = isAdmin;
|
||||
|
||||
/* Admin-only tabs: show to everyone for discoverability, but lock for non-admins */
|
||||
const ADMIN_ONLY_TABS = ['btn-tab-subjects','btn-tab-permissions','btn-tab-shop','btn-tab-gam','btn-tab-tpl','btn-tab-sims','btn-tab-games','btn-tab-assistant'];
|
||||
const ADMIN_ONLY_TABS = ['btn-tab-subjects','btn-tab-permissions','btn-tab-shop','btn-tab-gam','btn-tab-tpl','btn-tab-sims','btn-tab-games','btn-tab-assistant','btn-tab-imggen'];
|
||||
const lockSvg = '<svg class="adm-lock" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>';
|
||||
ADMIN_ONLY_TABS.forEach(id => {
|
||||
const el = document.getElementById(id);
|
||||
@@ -66,6 +66,7 @@
|
||||
sims: 'sims',
|
||||
games: 'games',
|
||||
assistant: 'assistant',
|
||||
imggen: 'imggen',
|
||||
sublog: 'sublog',
|
||||
access: 'access',
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user