From 8d015add30da3617c6b7ae1786c0c15d44e07df8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=20=28Claude=29?= Date: Thu, 11 Jun 2026 15:15:22 +0300 Subject: [PATCH] feat: custom prompt UI + AI-style tab in ChannelEdit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ChannelEdit: - Вкладка «AI-стиль»: textarea для ai_style_prompt, выбор image_quality (standard/hd) - Описание моделей: gpt-5-image-mini vs gpt-5.4-image-2 с ценами в кредитах ChannelView: - Коллапсируемое поле «Доп. инструкции для AI» под темой поста - Индикатор (синяя точка) если промт заполнен - customPrompt передаётся в /api/generate --- components/ChannelEdit.js | 85 +++++++++++++++++++++++++++++++++++++++ components/ChannelView.js | 35 +++++++++++++++- 2 files changed, 119 insertions(+), 1 deletion(-) diff --git a/components/ChannelEdit.js b/components/ChannelEdit.js index 5d33550..a429794 100644 --- a/components/ChannelEdit.js +++ b/components/ChannelEdit.js @@ -63,6 +63,7 @@ const IMAGE_PALETTES = [ const TABS = [ { id: 'content', label: 'Контент', icon: Type }, { id: 'images', label: 'Картинки', icon: ImageIcon }, + { id: 'ai', label: 'AI-стиль', icon: Sparkles }, { id: 'connect', label: 'Подключение', icon: Plug }, ]; @@ -106,6 +107,10 @@ export default function ChannelEdit({ channel }) { const [tokenVerifying, setTokenVerifying] = useState(false); const [tokenStatus, setTokenStatus] = useState(null); // null | 'ok' | 'error' + // AI-стиль + const [aiStylePrompt, setAiStylePrompt] = useState(channel.ai_style_prompt || ''); + const [imageQuality, setImageQuality] = useState(channel.image_quality || 'standard'); + const [saving, setSaving] = useState(false); const [deleting, setDeleting] = useState(false); const [error, setError] = useState(''); @@ -121,6 +126,8 @@ export default function ChannelEdit({ channel }) { tg_channel_id: tgChannelId.trim() || null, tg_username: tgUsername.trim() || null, vk_access_token: vkToken.trim() || null, + ai_style_prompt: aiStylePrompt.trim() || null, + image_quality: imageQuality, style: { tone, formality, humor, post_length: postLength, @@ -442,6 +449,84 @@ export default function ChannelEdit({ channel }) { )} + {/* TAB: AI-стиль */} + {tab === 'ai' && ( +
+ {/* Промт для генерации статей */} +
+
+ +

Стиль генерации статей

+
+

+ Дополнительные инструкции для AI при автоматической генерации статей в этом канале. + Применяется ко всем статьям канала. При ручной генерации можно переопределить. +

+