Next.js не позволяет [channelId] и [id] на одном уровне.
Решение: /api/inbox/channel/[channelId]/* и /api/inbox/message/[id]/*
InboxTab: все fetch пути обновлены
ChannelView: вкладка 'Inbox' рядом с 'Аналитика'
InboxTab.js:
- Webhook setup кнопка (если не настроен)
- Табы: Новые / Все / Отвечено / Игнорировано
- Карточки сообщений с иконкой типа (question/praise/complaint/spam)
- AI-предложенный ответ с кнопкой 'Использовать →'
- Форма ответа прямо в карточке
- Кнопки: Ответить / Игнорировать / Спам
API routes: /api/inbox/[channelId], /reply, /status, /setup-webhook
PollModal:
- Вопрос + 2-10 вариантов ответа
- Типы: обычный / викторина (с правильным ответом и объяснением)
- Настройки: анонимность, несколько ответов
- Отложенная публикация через datetime-local
- Кнопка «📊 Опрос» в ChannelView (только для TG каналов)
HashtagSuggest:
- Появляется под сгенерированным постом
- Запрос в /api/generate/hashtags → Claude Haiku
- Клик по тегу — выбор, кнопка «Добавить в пост»
- Обновление тегов, закрытие панели
- app/spending/page.js: расходы по периодам, разбивка по провайдерам и типам
- app/api/usage/summary/route.js: прокси к engine /api/usage/summary
- Header.js: ссылка «Расходы» для admin (TrendingUp иконка)
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
- Auth: iron-session, регистрация/логин по email+password
- Дашборд со списком каналов
- 3-шаговая анкета создания канала (база/стиль/примеры+табу)
- Страница канала с генератором постов через polling
- Тёмная тема, Tailwind 3.4, accent emerald
- Прокси-API к zeropost-engine с x-user-id
- Совместимость с Next 16 async cookies/params