Commit Graph

27 Commits

Author SHA1 Message Date
Ник (Claude) d0fd328011 feat: PollModal + HashtagSuggest UI
PollModal:
- Вопрос + 2-10 вариантов ответа
- Типы: обычный / викторина (с правильным ответом и объяснением)
- Настройки: анонимность, несколько ответов
- Отложенная публикация через datetime-local
- Кнопка «📊 Опрос» в ChannelView (только для TG каналов)

HashtagSuggest:
- Появляется под сгенерированным постом
- Запрос в /api/generate/hashtags → Claude Haiku
- Клик по тегу — выбор, кнопка «Добавить в пост»
- Обновление тегов, закрытие панели
2026-06-11 19:55:24 +03:00
Ник (Claude) 675d04c5ab feat: YuKassa payments category in SystemSettings 2026-06-11 19:41:09 +03:00
Ник (Claude) 9bd38bc645 feat: billing complete — plans page, admin billing, credit cost hints
/plans: страница тарифов с карточками, стоимостью операций, FAQ
/system → Биллинг: таблица пользователей с кредитами, ручное начисление
ChannelView: badge стоимости (2кр текст + 5кр картинка) под кнопкой генерации
  Ошибка INSUFFICIENT_CREDITS → понятное сообщение
  После генерации — event credits-updated → обновление badge в header
Header: подписка на credits-updated event
API роуты: /api/billing/plans, /api/billing/admin/users, /api/billing/admin/credit
2026-06-11 18:42:54 +03:00
Ник (Claude) 1cce478f27 feat: billing UI — balance in header + /billing transactions page
- Header: Coins badge с кредитами, ссылка на /billing
- app/billing/page.js: баланс, план, стоимость операций, история транзакций
- app/api/billing/balance/route.js, transactions/route.js — прокси к engine
- lib/engine.js: getBillingBalance, getTransactions, getBillingPlans, adminCreditUser
2026-06-11 18:28:56 +03:00
Ник (Claude) a8df9acbcb refactor: remove HD quality option from ChannelEdit AI-стиль tab
Вместо выбора standard/HD показываем информационный блок:
gpt-5-image-mini, routerai.ru, ~₽2.72/картинка, high quality
Убраны: imageQuality state, image_quality payload, HD модель gpt-5.4-image-2
2026-06-11 15:44:33 +03:00
Ник (Claude) 8d015add30 feat: custom prompt UI + AI-style tab in ChannelEdit
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
2026-06-11 15:15:22 +03:00
Ник (Claude) f4860f0e70 feat: /spending page — AI cost dashboard (aiprimetech + routerai)
- app/spending/page.js: расходы по периодам, разбивка по провайдерам и типам
- app/api/usage/summary/route.js: прокси к engine /api/usage/summary
- Header.js: ссылка «Расходы» для admin (TrendingUp иконка)
2026-06-11 13:20:52 +03:00
Ник (Claude) 95c24d477a fix: инструкция подключения канала — @idbot вместо @userinfobot 2026-06-10 17:36:51 +03:00
Ник (Claude) 8244789f10 feat: multi-select image styles, fix descriptions
- IMAGE_STYLES: исправлены описания (realistic-photo = AI-фотореализм, не сток)
- Стиль изображений: single-select → multi-select (чередуется случайно)
- Добавлено пояснение: AI-генерация ≠ стоковые фото; реальный человек → поиск фото
- DB: channel_style.image_style varchar(30) → varchar(255)
2026-06-10 15:50:49 +03:00
Ник (Claude) e330ac3871 feat: вкладка Подключение в ChannelEdit (bot token, TG channel id, VK token) 2026-06-10 15:22:45 +03:00
Ник (Claude) 80e962463b fix: add Sparkles to lucide imports in ChannelEdit 2026-06-10 15:18:20 +03:00
Ник (Claude) 8ad9d19569 fix: goal+language in ChannelEdit, metrics 500 (await params)
ChannelEdit.js:
- Добавлены goal (multi-select + кастомные, как в форме создания)
- Добавлен language (select: ru/en/uk/kk)
- Импортированы Plus, X иконки и GOALS константа

app/api/metrics/channel/[channelId]/route.js:
app/api/metrics/best-time/[channelId]/route.js:
- await params (Next.js 16 требует), иначе 500
2026-06-10 15:10:33 +03:00
Ник (Claude) a3d881aeed refactor: убрать Заметки из навигации app.zeropost.ru 2026-06-09 11:55:55 +03:00
Ник (Claude) 3e04df32c5 feat: Notes manager — Заметки редактора в app.zeropost.ru
- app/notes/page.js: страница управления заметками (создать/редактировать/
  удалить/закрепить/скрыть). Список с превью, inline-форма.
- app/api/notes/route.js: GET+POST прокси к engine /api/notes
- app/api/notes/[id]/route.js: PATCH+DELETE прокси
- lib/engine.js: listNotes, createNote, updateNote, deleteNote
- Header.js: ссылка «Заметки» в навигации (MessageCircle иконка)
2026-06-09 11:44:33 +03:00
Ник (Claude) d413f5f018 feat: image_prompt_instructions in ChannelEdit
- Добавлен state imagePromptInstructions с дефолтом из style.image_prompt_instructions
- Новая карточка UI с textarea (макс 500 символов + счётчик)
- Поле включено в PATCH payload
- Размещено между палиткой и info-блоком «Как это работает»
2026-06-09 10:48:38 +03:00
Ник (Claude) 69226cbbde fix: Link2 undefined crash + goal multi-select + custom goal
ChannelView.js:
- Добавлен Link2 в import lucide-react (ReferenceError при открытии канала)
- Отображение goal учитывает множественные значения через split(',')

app/page.js:
- Аналогичный фикс отображения goal (split → map → join)

channels/new/page.js:
- Цель канала: single-select → multi-select (можно выбрать несколько)
- Кастомная цель: поле + кнопка «+», Enter, чипы с удалением
- Сохраняется как CSV строка (goal: goals.join(','))

DB:
- channels.goal varchar(50) → varchar(255) для длинных кастомных значений
2026-06-09 08:39:32 +03:00
Ник (Claude) 8f4dc1a386 system: AI-провайдеры + блок «Расход AI»
* components/SystemSettings.js: добавлен компонент UsageSummary сверху —
  сводка вызовов и стоимости с переключателем периода (Сегодня/Неделя/
  Месяц/Всё) и группировкой (по сервису/провайдеру/модели). Виджеты
  cost_rub/calls/tokens/images + таблица breakdown.

* components/SystemSettings.js: в массив CATEGORIES добавлена категория
  'ai_providers' первой — Aleksei видит все 11 строк (Текст/Картинки
  ключи+URL+модели + AI_USD_RUB_RATE + AI_PROVIDER_MARKUP) сверху.
  Существующая инфраструктура SettingRow (маскировка секретов, save+toast)
  переиспользуется без изменений.

* lib/engine.js: добавлены engine.usageSummary(params) и engine.usageRecent(limit).

* app/api/admin/usage/summary/route.js (новый): прокси-роут к engine
  /api/usage/summary через requireAdmin.

Verify:
* next build прошёл без ошибок.
* /system → 307 redirect на /login (неавторизованный — корректно).
* /api/admin/usage/summary → 403 Forbidden (не-админ — корректно).
2026-06-08 20:21:49 +03:00
aleksei b13f956099 fix(calendar): isoDay use local date parts — fixes MSK off-by-one day grouping 2026-06-08 16:32:51 +03:00
Nik (Claude) eac6e2ed13 feat: P4 ChannelAnalytics tab; P5 FromUrlModal + URL→draft in ChannelView 2026-06-08 11:09:03 +03:00
Nik (Claude) b8a570f04a feat: P3 PostTemplates — 7 post structure presets in ChannelView 2026-06-08 10:58:56 +03:00
Nik (Claude) 0c8ca23015 feat: P2 PostPreview — TG/VK/MAX preview with char counter, integrated in ChannelView 2026-06-08 10:57:38 +03:00
Nik (Claude) 999119d58d feat: P1 Calendar — CalendarView (month/week/list, drag&drop, channel filter) 2026-06-08 10:16:54 +03:00
Nik (Claude) 2e550d2993 feat: photo-search, system settings, ROADMAP
- PhotoSearchModal: Yandex photo-search с профилями доменов
- SystemSettings: управление app_settings (admin-only, /system)
- ROADMAP.md: актуальный план фич P1-P10
- Header, ChannelView, session: поддержка is_admin
2026-06-07 14:04:14 +03:00
Alexey Pavlov 76eb519018 feat: light theme by default with dark toggle, CSS variables, FOUC prevention, theme persistence 2026-05-31 17:39:26 +03:00
Alexey Pavlov 1a1eac16ee feat: post saving, instant publish, scheduling, post history per channel 2026-05-31 17:36:02 +03:00
Alexey Pavlov e2b64baf2e feat: post variants, transforms, image generation, AI ideas, channel edit page with image style settings 2026-05-31 17:32:39 +03:00
Alexey Pavlov 5dd975a9cd feat: zeropost-tool — Next.js 16 кабинет
- Auth: iron-session, регистрация/логин по email+password
- Дашборд со списком каналов
- 3-шаговая анкета создания канала (база/стиль/примеры+табу)
- Страница канала с генератором постов через polling
- Тёмная тема, Tailwind 3.4, accent emerald
- Прокси-API к zeropost-engine с x-user-id
- Совместимость с Next 16 async cookies/params
2026-05-31 08:38:10 +03:00