feat(postcast-tool): AutogenTab — категории, темы, ротация

Новая вкладка «Автогенерация» в ChannelView:

Настройки:
  - Включить/выключить автогенерацию
  - posts_per_day: 1-20 (каждый пользователь настраивает сам)
  - Час и минута запуска генерации

Планируется сегодня:
  - Черновики сегодняшней генерации с кнопкой «Открыть»
  - Пустое состояние с временем следующей генерации

Категории контента:
  - Список с бейджами «сегодня» / «не сегодня» (ротация)
  - Форма создания: иконка, название, slug, описание, цвет
  - Каждая категория раскрывается с панелью тем:
    · Список тем с жанровыми бейджами [ТУТОРИАЛ][СРАВНЕНИЕ][МНЕНИЕ][ДАЙДЖЕСТ][КЕЙС]
    · Toggle is_used (✓ / ○)
    · Добавить тему вручную (Enter или кнопка)
    · AI-генерация N тем (5/10/15/20/30/50)
    · Удалить тему

Ротация на 7 дней:
  - Preview скользящего окна — видно что выйдет в каждый день
  - Подпись «X из Y категорий» с объяснением алгоритма

API proxy:
  /api/engine/channels/:channelId/[[...path]] — catch-all к engine :3035
This commit is contained in:
Aleksei Pavlov
2026-06-24 20:05:41 +03:00
parent 69367da665
commit cdd507f1c5
3 changed files with 660 additions and 1 deletions
+6 -1
View File
@@ -15,6 +15,7 @@ import FromUrlModal from './FromUrlModal';
import PollModal from './PollModal';
import HashtagSuggest from './HashtagSuggest';
import InboxTab from './InboxTab';
import AutogenTab from './AutogenTab';
const GOAL_LABELS = {
educational: 'Обучение', news: 'Новости',
@@ -364,7 +365,7 @@ export default function ChannelView({ channel }) {
{/* Вкладки */}
<div className="flex items-center gap-0.5 rounded-lg p-0.5 bg-surface2 border border-border self-start mb-2">
{[['generate','Создать пост'],['analytics','Аналитика'],['inbox','Inbox']].map(([id,label]) => (
{[['generate','Создать пост'],['autogen','Автогенерация'],['analytics','Аналитика'],['inbox','Inbox']].map(([id,label]) => (
<button key={id} onClick={() => setActiveTab(id)}
className={`px-4 py-1.5 rounded-md text-sm font-medium transition-colors
${activeTab===id ? 'bg-surface text-text shadow-sm' : 'text-text-soft hover:text-text'}`}>
@@ -377,6 +378,10 @@ export default function ChannelView({ channel }) {
<ChannelAnalytics channelId={channel.id} channelName={channel.tg_username} />
)}
{activeTab === 'autogen' && (
<AutogenTab channel={channel} />
)}
{activeTab === 'inbox' && (
<InboxTab channel={channel} />
)}