12 Commits

Author SHA1 Message Date
Aleksei Pavlov 5bc413da50 feat(zero): admin UI for Zero notes management
Adds new admin section 'Заметки Зеро' () with:
  - manual 'Generate' button with channel/bucket/allow-dup form
  - status filter tabs with counters (draft/approved/published/failed/skipped)
  - per-note actions: approve / edit inline / regenerate with bucket pick / skip
  - status-colored cards with bucket icon, pose, scheduled time MSK
  - error display with attempt counter
  - tokens & model footer

Files:
  app/api/admin/zero/[...path]/route.js  catch-all proxy → engine
  components/admin/AdminZero.js          main component
  components/AdminPanel.js               +section in sidebar
2026-06-19 10:53:00 +03:00
Ник (Claude) 836e20e57e fix: React error #301 — load() in render body → useEffect
Причина: load() вызывался прямо в теле компонента (не в useEffect),
что триггерило setState → re-render → load() → бесконечный цикл.

Исправлено в AdminPanel.js:
  SpendingSection: if (!data && !loading) load(period) → useEffect
  DashboardSection: if (!data...) { load() } × 2 → useEffect
  SettingsSection: if (!loaded && !loading) → useEffect
  PlansSection: if (loading && !plans.length) → useEffect

Добавлен useEffect в import.
2026-06-13 23:31:51 +03:00
Ник (Claude) 789cfe10db feat: admin panel — SMTP, topic bank, maintenance mode UI
AdminTopicBank.js: банк тем блога по категориям
  Аккордеон: неиспользованные + использованные темы
  Прогресс-бар использования, кнопка +10 AI (фоновая генерация)
  Мультистрочное добавление (одна строка = одна тема)
AdminPanel: + Email/SMTP + Банк тем блога + Mail иконка
SmtpTestButton: тест отправки прямо в разделе SMTP
API routes: /api/admin/blog-topics, /[id], /generate, /api/admin/email/test
2026-06-13 11:46:10 +03:00
Ник (Claude) 2e9f099b95 feat: AdminContent — content defaults UI
AdminContent.js: настройки дефолтов по 4 группам
  Контент: язык, стиль, цель, длина (select)
  Форматирование: изображения, эмодзи, хештеги (toggle)
  Авто-черновики: кол-во в день, время генерации
  AI-инструкции: базовый промт (textarea)
Инлайн сохранение — кнопка Сохранить появляется только при изменении
Подсказка: изменения применяются только к новым каналам
AdminPanel: раздел Контент-дефолты с Sliders иконкой
2026-06-13 11:22:56 +03:00
Ник (Claude) 06340ab24e feat: AdminAutogen — blog autogeneration UI
AdminAutogen.js для каждой категории (ai-tools, ai-dev, automation, cybersec):
  - Toggle вкл/выкл + статус (статей за 7д, тем в банке, время след.запуска)
  - Настройки: статей/день, час, минута + кнопка Сохранить
  - Кнопка Запустить прямо сейчас (фоновая генерация)
  - Последний/следующий запуск с датами
Очередь тем: добавить тему с категорией и приоритетом, удалить
AdminPanel: раздел Автогенерация с BookOpen иконкой
API routes: /api/admin/autogen, /[category], /[category]/run, /queue/[id]
2026-06-13 10:36:38 +03:00
Ник (Claude) a07cc224a9 feat: AdminLogs — error log viewer
AdminLogs.js:
  Топ-5 частых ошибок с прогресс-баром
  Фильтр по источнику (все/генерация/AI/публикация)
  Список с раскрываемыми карточками:
    - Левая граница цветом по типу (timeout/auth/model/other)
    - Краткое и полное описание ошибки
    - Контекстные подсказки (ссылка на настройки, объяснение причины)
  Классификация: Таймаут/Rate limit/Модель/Пустой ответ/Сеть/Авторизация
AdminPanel: раздел Логи ошибок с AlertTriangle иконкой
API route: /api/admin/logs
2026-06-13 10:24:12 +03:00
Ник (Claude) 92872ed59c feat: AdminQueue — generation queue UI
AdminQueue.js: статистика по статусам + список 30 последних задач
  4 счётчика (done/processing/pending/failed) с цветами
  Алерт для застрявших задач + кнопка Сбросить
  Фильтр по статусу, retry для failed задач
  Детали: тип, тема, ошибка, токены, время
AdminPanel: раздел Очередь между Движком и Тарифами
API routes: /api/admin/queue (GET+DELETE), /api/admin/queue/[id]/retry
2026-06-13 10:14:10 +03:00
Ник (Claude) b620927c25 feat: promo codes UI + apply on /billing
AdminPromos.js: создание/список/toggle/удаление промокодов
  auto-generated code, type (credits/%), max_uses, expires, description
AdminPanel: раздел Промокоды между Тарифами и Пользователями
/billing page: кнопка '🎁 Есть промокод?' → форма ввода → apply-promo API
API routes: /api/admin/promos, /api/admin/promos/[id], /api/billing/apply-promo
2026-06-13 09:37:19 +03:00
Ник (Claude) e5f6662aed feat: AdminUsers — full user management UI
AdminUsers.js: список пользователей с поиском
  Детальная страница пользователя:
    - Профиль (email, дата рег, статус)
    - Баланс кредитов и тариф
    - Список каналов с платформами
    - История транзакций (20 последних)
    - Кнопки: начислить кредиты, сменить тариф, заблокировать/разблокировать
AdminPanel: billing раздел → AdminUsers (был AdminBilling)
API routes: /api/admin/users/[id] (GET+PATCH), /api/admin/credit (POST)
2026-06-13 00:14:59 +03:00
Ник (Claude) 92b743512c feat: admin dashboard UI — DashboardSection as default panel
AdminPanel: Сводка раздел первый (initialSection='dashboard')
DashboardSection: users stats, channels by platform, posts stats,
  revenue vs AI costs cards, drafts pending alert, registrations bar chart 14d
SECTIONS: +Dashboard, +Engine (Движок)
API route: /api/admin/dashboard proxy
2026-06-13 00:10:40 +03:00
Ник (Claude) a5f6c080bd feat: admin panel improvements
Header: убрана кнопка Система (дубль Админ), убраны устаревшие импорты
AdminPanel: 6 разделов (AI-провайдеры, Движок, ЮKassa, Расходы AI, Тарифы, Пользователи)
  Тарифы: редактор планов (цена/кредиты/каналы) + стоимость операций
  Движок: ENGINE_PUBLIC_URL, APP_PUBLIC_URL, TELEGRAM_API_BASE, AUTO_DRAFT_*
PlansSection: inline-редактирование тарифов и credit_costs
API routes: /api/admin/plans/[id], /api/admin/credit-costs/[operation]
2026-06-13 00:02:52 +03:00
Ник (Claude) 1fbdc9f9b9 feat: unified admin panel + back buttons everywhere
AdminPanel.js: sidebar nav с 4 разделами (Настройки API, ЮKassa, Расходы AI, Пользователи)
  Встроены: SettingsSection (API-ключи), SpendingSection (расходы), AdminBilling
  Breadcrumb навигация
/system/page.js: теперь рендерит AdminPanel
Header: 'Расходы' → 'Админ' (ссылка на /system), убран TrendingUp
BackButton.js: переиспользуемая кнопка назад
  Добавлена на /drafts, /billing, /plans
2026-06-12 23:57:38 +03:00