← все проекты

Альфа центр (заказ)

server: cfru 80.90.184.203. ЖИВОЙ АДРЕС ДЛЯ КЛИЕНТА: http://80.90.184.203:3131 (пароль в /opt/zavod-order/.env). Прокси для OpenAI/HeyGen: aitodo:8888.
ревьюS1 · Каркас и контент-план10/12

Цель: Поднять переносимый скелет, дизайн-систему демо, дашборд с переключением страниц, схему БД и полноценный контент-план на месяц с ИИ и ручными идеями.

🔴 Репозиторий и docker-compose
app + worker + postgres + redis + .env.example. Никаких завязок на нашу инфраструктуру, прокси и ключи параметрами.
app + worker + postgres + redis, .env.example, .dockerignore. Прокси только для закрытых сервисов, отдельной переменной. Ротация логов и потолок памяти Redis заданы.
infra
Дизайн-система из демо
Токены, шрифты Unbounded и Golos Text, тёмная тема, золото E9B949, карточки и кнопки как в демо.
Токены сняты с демо один в один: фон 0A0B0E, золото E9B949, Unbounded и Golos Text. Проверено скриншотом.
ui
🔴 Шелл дашборда и вход
Сайдбар с разделами, переключение страниц роутами, вход по паролю, сессия в httpOnly cookie.
Сайдбар, 8 разделов отдельными маршрутами, вход по паролю, сессия в httpOnly cookie. Middleware закрывает и страницы, и API: без куки страницы 307 на вход, API 401. Проверено curl.
ui
🔴 Схема БД
Бриф, элементы контента, контент-план, настройки, задания очереди, расходы, версии, логи публикаций.
16 моделей: бриф, контент, версии, задания, публикации, расходы, цены моделей, настройки, аккаунты, ключи. Схема накачена, сид с ценами прошёл.
backend
🔴 Календарь контент-плана
Месяц целиком, переключение месяцев, архив прошлых, счётчики по типам на день.
Календарь плюс вид списком, переключатель в шапке. В списке видно идею, хук, рубрику, время, что уже готово. Проверено скриншотами.
feature
Создание идей вручную
Три типа: пост, видео, ИИ-аватар. Своя идея текстом.
Кнопка «Добавить свои идеи» в шапке плана плюс плюсик в каждом дне. Два режима: одна идея с полями или пачка тем строками, каждая строка становится отдельным материалом. Пустые строки и повторы отбрасываются. Есть тумблер «раскидать по дням подряд». ПРОВЕРЕНО: 5 строк с пустой и дублем дали 3 материала на 5, 6 и 7 августа.
feature
🔴 Генерация плана через ИИ
Эндпоинт и промпт с рубриками готовы, раскладка по датам и типам работает. Ждёт ключ OpenAI для проверки на живой выдаче.
feature
🔴 Одобрить, отклонить, переделать, удалить
Переделка требует комментарий что не так. Версии сохраняются, удалённое уходит в архив.
Действия в карточке и в списках. Переделка не принимается без комментария, прошлая версия пишется в ItemVersion. Удаление мягкое, уходит в архив.
feature
🔴 Привязка даты, времени и соцсетей
На день можно задать разный набор: например 2 видео и 2 поста завтра, 3 видео и 1 аватар через три дня.
Дата, время и набор сетей на каждом материале. Часовой пояс проверен: 10:00 по Москве легло как 07:00 UTC.
feature
Деплой на поддомен с HTTPS
Пока открыто по IP без домена, по решению владельца: http://80.90.184.203:3131. Проверено снаружи: вход проходит, все разделы отдают 200, без сессии 307 на вход. Домен и сертификат отложены до передачи проекта клиенту.
infra
🔴 ИИ-агенты: планировщик, хуки, сценарист, описания
Четыре агента с раздельными промптами и правилами. Хуки выдаются вариантами, любой ставится основным. Каждый запуск пишется в AgentRun. ПРОВЕРЕНО вживую на ключе владельца: агент хуков выдал 5 рабочих вариантов.
Четыре агента с раздельными промптами и правилами. Хуки выдаются вариантами, любой ставится основным. Каждый запуск пишется в AgentRun. ПРОВЕРЕНО вживую на ключе владельца: агент хуков выдал 5 рабочих вариантов.
feature
Просмотр работы агентов в карточке
Вкладка «Работа агентов»: какой агент, какая модель, сколько токенов, что попросили и что вернул. Выдача перестала быть чёрным ящиком.
Вкладка «Работа агентов»: какой агент, какая модель, сколько токенов, что попросили и что вернул. Выдача перестала быть чёрным ящиком.
ui
В РАБОТЕS2 · Генерация контента5/8

Цель: Очередь и воркер, генерация постов, видео и ИИ-аватаров, хранилище медиа, учёт расходов с жёсткими лимитами.

🔴 Очередь и воркер
BullMQ, статусы в очереди / генерится / готово / ошибка, ретраи с лимитом, видимость прогресса в интерфейсе.
BullMQ плюс дублирование статусов в таблице Job ради истории и причины падения. Растущая пауза между повторами. Ошибки настройки не повторяются, это отдельный класс ошибки.
backend
🔴 Клиент Kie и карта моделей
Донор из Контент-Завода. Wan 2.7, Seedance 2, Kling 3.0, Veo 3.1, выбор в настройках.
Слаги взяты из рабочего кода: wan/2-7-text-to-video, bytedance/seedance-2 и 2-fast, kling-3.0/video, Veo на своих эндпоинтах. Поллинг с разбором двух форматов ответа.
backend
🔴 Генерация постов
Ветка через Kie gpt-image-2 написана, ждёт ключ.
feature
🔴 Генерация видео
Ветка написана, выбор модели и длительности из настроек или с материала. Ждёт ключ.
Видео снимается: причина отказов была в middleware, не пропускавшем подписанные ссылки на кадр. Проверено готовым роликом 720x1280, 8 секунд.
feature
🔴 Генерация ИИ-аватаров
Клиент HeyGen написан, лицо и голос берутся из настроек. Ждёт ключ.
feature
Хранилище медиа
Том storage, отдача через закрытый роут, уборка по сроку хранения. Не проверено на реальных файлах, нужен ключ генерации.
backend
🔴 Учёт расходов и лимиты
Счётчик по моделям, дневной и месячный потолок, жёсткий стоп и уведомление при превышении.
ПЕРЕДЕЛАНО по фидбеку владельца: прайса нет вообще. Читаем баланс Kie (GET /api/v1/chat/credit) и HeyGen до и после генерации, пишем фактическое списание в кредитах. Лимиты в кредитах: день, месяц, минимальный остаток. Баланс Kie выведен на обзор и в настройки, читается живьём (проверено: 33 кредита).
feature
Вкладки Видео, Посты, Аватары
Отдельные разделы со списками, фильтрами по статусу и датам, превью и перегенерацией.
Три раздела с фильтрами по статусу, превью медиа, действиями и перегенерацией.
ui
В РАБОТЕS3 · Публикация и расписание2/7

Цель: Подключение соцсетей, публикация по расписанию с часовым поясом, выбор сетей на элемент, ссылка первым комментарием, логи и повторы.

🔴 Подключение аккаунтов Upload-Post
Клиент и разводка по сетям написаны, ждут доступы.
Профили и подключённые сети тянутся из кабинета по GET /api/uploadposts/users. Профиль выбирается из выпадающего списка, сети отмечаются галочками, выбор пишется в SocialAccount и используется как набор по умолчанию. Руками имя профиля больше не вводится. ПРОВЕРЕНО на живом ключе: подтянулся профиль Content-zavod.
integration
Прямой VK
Три шага загрузки и wall.post написаны, ждут токен.
integration
Прямой Telegram
Публикация в канал и бот согласования написаны, ждут токен.
integration
🔴 Публикация по расписанию
Планировщик в воркере, окна времени и часовой пояс. Проверка на живой отложенной публикации после доступов.
feature
Ссылка первым комментарием
Механизм написан заново (в нашем КЗ его нет). VK и Telegram закрываются нашими вызовами, по сетям Upload-Post честно помечено «надо проверить». Проверка на живых аккаунтах после доступов.
integration
Логи публикаций и повторы
История отправок, текст ошибки, ручной и автоматический повтор.
backend
Раздел Расписание
Общий вид отправок на неделю и месяц, ближайшие публикации, ручной сдвиг.
Ближайшие отправки, журнал публикаций по сетям с отдельной отметкой про первый комментарий, история опубликованного.
ui
В РАБОТЕS4 · Согласование, автопилот, перенос1/7

Цель: Телеграм-бот согласования, автогенерация заранее, автопилот с предохранителями, пакет переноса на сервер клиента.

🔴 Телеграм-бот согласования
Кнопки, сбор причины переделки ответным сообщением, вебхук с проверкой секрета. Ждёт токен бота.
feature
Поведение без ответа
Что делать, если до времени публикации никто не нажал: публиковать, держать или отменять. Настройкой.
feature
🔴 Автогенерация заранее
Старт за N часов до публикации реализован в планировщике, настройка есть. Проверка после ключей.
feature
Автопилот с предохранителями
Тумблеры автогенерации и автопубликации, лимиты, поведение при молчании в боте. Проверка после ключей.
feature
🔴 Бриф компании
Общий бриф плюс отдельные под видео и под посты, флаг ссылки в первом комментарии, тон и стоп-слова.
Общий бриф плюс отдельные под посты, видео и аватаров с наследованием общего. Флаг ссылки в первом комментарии.
feature
🔴 Пакет переноса на сервер клиента
HANDOVER.md написан, включая ловушку с SESSION_SECRET и ключами. Проверка развёртывания на чистой машине не делалась.
infra
Сбор охватов после публикации
Заготовка под аналитику: складываем метрики сразу, чтобы потом были исторические данные.
backend
ревьюS5 · Надёжность и стандарты27/27

Цель: Перенести ядро надёжности и правила речи, найденные на заводе навесов, пока проект ничего не сгенерировал.

🔴 Идемпотентная задача у провайдера
Отправка один раз на слот, номер в задании до ожидания, повтор доглядывает ту же задачу. Раньше таймаут HeyGen в 20 минут приводил к трём новым видео и тройному счёту.
Отправка один раз на слот, номер в задании до ожидания, повтор доглядывает ту же задачу. Раньше таймаут HeyGen в 20 минут приводил к трём новым видео и тройному счёту.
backend
🔴 Ожидание отделено от провала
Работа идёт дольше обычного значит возврат к той же задаче через 5 минут без траты попытки, материал остаётся в работе.
Работа идёт дольше обычного значит возврат к той же задаче через 5 минут без траты попытки, материал остаётся в работе.
backend
🔴 Запрет повтора после списания
Отказ со списанием останавливает задание и шлёт уведомление: работу надо забрать, а не заказывать заново.
Отказ со списанием останавливает задание и шлёт уведомление: работу надо забрать, а не заказывать заново.
backend
🔴 Чистый учёт при ожидании
Пока задача идёт, строка расхода не пишется: раньше каждое ожидание оставляло в ленте «не получилось» без списания.
Пока задача идёт, строка расхода не пишется: раньше каждое ожидание оставляло в ленте «не получилось» без списания.
backend
🔴 Очередь на две полосы
Тяжёлые работы строго по одной, лёгкие по три: замер расхода по балансу на параллельных генерациях врёт.
Тяжёлые работы строго по одной, лёгкие по три: замер расхода по балансу на параллельных генерациях врёт.
backend
🔴 Русская речь и запрет надписей в видео
Язык требуется прямо, реплика кириллицей, надписи в кадре запрещены. Иначе модель озвучивает по-английски.
Язык требуется прямо, реплика кириллицей, надписи в кадре запрещены. Иначе модель озвучивает по-английски.
backend
🔴 Поле образца input_urls
Было image_urls: модель молча игнорировала образец. Сейчас не стреляло только потому, что картинки по образцу не использовались.
Было image_urls: модель молча игнорировала образец. Сейчас не стреляло только потому, что картинки по образцу не использовались.
backend
🔴 Стандарты в docs/STANDARDS.md
Свод правил по деньгам, надёжности и речи с указанием, где что закреплено в коде.
Свод правил по деньгам, надёжности и речи с указанием, где что закреплено в коде.
backend
Карусели как формат
Новый тип контента, раздел в меню, режиссёр слайдов, русский текст печёт сама модель картинки. Схема, очередь, планировщик, публикация и согласование знают про карусель.
Новый тип контента, раздел в меню, режиссёр слайдов, русский текст печёт сама модель картинки. Схема, очередь, планировщик, публикация и согласование знают про карусель.
backend
Библиотека фотографий объектов
Раздел в брифе: загрузка пачкой, подписи, удаление с проверкой использования. Выбор из библиотеки при создании материала.
Раздел в брифе: загрузка пачкой, подписи, удаление с проверкой использования. Выбор из библиотеки при создании материала.
backend
Свои фото в материалах
Поле subjectPhotoPath: есть фото значит картинка собирается правкой этого фото, а не рисуется с нуля.
Поле subjectPhotoPath: есть фото значит картинка собирается правкой этого фото, а не рисуется с нуля.
backend
Стоп-темы в Альфе
15 правил плюс строки клиента из брифа, проверка ПОСЛЕ генерации с одной переделкой и внятной ошибкой. Проверено: ловит 3 из 3 запрещённых, нормальный текст не трогает.
15 правил плюс строки клиента из брифа, проверка ПОСЛЕ генерации с одной переделкой и внятной ошибкой. Проверено: ловит 3 из 3 запрещённых, нормальный текст не трогает.
backend
Три режима работы
Ручной, полуавтомат с обучением на правках, автомат. Выбор в настройках, поведение реально меняется.
Ручной, полуавтомат с обучением на правках, автомат. Выбор в настройках, поведение реально меняется.
backend
Просмотр и правка материала
Строка открывается: ролик играется, карусель листается по слайдам, тексты правятся и сохраняются.
Строка открывается: ролик играется, карусель листается по слайдам, тексты правятся и сохраняются.
backend
Длинные ролики до 45 секунд
Режиссёр раскладывает на сцены, отрезки сшиваются, последний кадр предыдущего становится первым кадром следующего.
Режиссёр раскладывает на сцены, отрезки сшиваются, последний кадр предыдущего становится первым кадром следующего.
backend
🔴 Техническая достоверность: правила в промтах и зрячий контролёр
lib/tech.ts перенесён с завода навесов в нейтральной формулировке. Правила вшиты в промты поста, кадра ролика и слайдов карусели. techReview через chatVision у OpenAI, модель из VISION_MODEL. Одна переделка по грубым ошибкам, остаток в ContentItem.techNote, кнопка «Проверить технически» в карточке.
Типы проходят, образ пересобран, схема применена через db push, :3131 отвечает. Живой платный прогон не делал, жду отмашки владельца.
feature
Работа пачкой: выделение идей и массовые действия
BulkBar в списках и контент-плане, ручка POST /api/items/bulk, кнопка «Одобрить все идеи», подтверждение перед пакетным запуском генерации.
Проверено живьём на :3131: approve вернул done 2, generate вернул 409 с предупреждением про ролики и ничего не запустил, restore вернул done 2.
feature
Убрать чужую тематику из интерфейса
Проект был донором форка для завода навесов, и навесы просочились в панель: пример в «Своих текстах», подписи в библиотеке фотографий и в выборе фото, промпт первого кадра ролика.
Заменено на нейтральное «объект». В интерфейсе и промтах слова «навес» не осталось, клиент чужой тематики не увидит.
fix
Убрать режимы работы из Альфы
Решение владельца: ручной, полуавтомат и автомат из этого проекта убрать. Вырезаны из настроек, планировщика, агентов и ручки настроек. Панель всегда пишет сама, всегда учится на правках, каждая идея ждёт одобрения. Кнопка «Свои тексты» осталась.
Проверено живьём: на всех страницах панели строки «Как работаем» нет.
fix
🔴 Кнопки создания в разделах и действия у идеи в плане
Материал заводился только плюсом на дне календаря. Добавлена кнопка создания в каждый раздел. Действия вынесены в общий components/ItemActions.tsx и стоят у каждой строки контент-плана: у идеи одобрить, у одобренного сгенерировать, у готового опубликовать, плюс переделать и в архив.
Проверено браузером: в разделах кнопки «Написать пост», «Собрать карусель», «Сделать ролик», «Снять с аватаром»; в списке плана у каждой идеи Одобрить, Сгенерировать, Переделать, В архив.
feature
Сборка плана: карусели и период дней
В модалке не было каруселей и нельзя было задать период: только по одному дню строкой. Перенесена модалка с завода навесов: с какого дня, на сколько дней от одного до тридцати, и сколько чего в день по всем четырём форматам.
Проверено браузером: поля Пост, Карусель, Видео, ИИ-аватар, выбор периода, подпись «Получится 6 материалов: по 2 в день, 3 дня подряд».
feature
Фикс вёрстки: поля в настройках прыгали лесенкой
Строка полей была флексом с align-items flex-end: поля выравнивались по нижнему краю, и подсказка под одним полем толкала соседнее вверх. В Расходе и Автопилоте блоки стояли лесенкой.
Строка переведена на сетку равными колонками с выравниванием по верху, как на заводе навесов, подписи в строке одной высоты. Проверено в браузере: во всех строках настроек и брифа верх полей совпадает до пикселя.
fix
🔴 Фикс: карусель не проходила в сборку плана, и карточка не объясняла материал
Ручка /api/plan/generate и /api/items/batch знали только post, video, avatar: сборка плана с каруселью падала с Invalid enum value. В карточке материала было непонятно, что за текст показан: одна подпись «Что говорим» на все форматы, слайды карусели не перечислялись.
Карусель добавлена в обе схемы, проверено живьём: план с каруселью собрался, идея «варианты систем умного дома», угол kinds. Подписи полей теперь по формату: текст поста, план слайдов, что говорит аватар, сценарий ролика. У готовой карусели список слайдов с картинками и текстами, клик показывает слайд. Проверено в браузере в обоих проектах.
fix
🔴 Прогон тестера: те же 7 багов закрыты в Альфе
Тот же прогон на Альфа центре: часовой пояс, мобильная вёрстка плана (108 пикселей вбок), двойной клик, английские сообщения валидации, Esc, мелкие цели, дубль кнопок действий в списках.
Закрыто и перепроверено. Дополнительно проверено: ключи отдаются только маской, без входа все ручки 401, обход пути в медиа не работает.
fix
🔴 Фикс: «Сервер не ответил» при сборке плана
Кнопка отправляла все дни одним запросом. Каждый день это отдельный вызов модели по 10-40 секунд, поэтому на плане на несколько дней запрос жил минутами и браузер обрывал связь: клиент видел «Сервер не ответил», хотя сервер работал. Проверено замером: один день собирается за 10 секунд.
Теперь запрос на каждый день по очереди, на кнопке видно «Собираю день 2 из 5», упавший день не уносит остальные и называется в тексте ошибки, повтор дособирает недостающее. Сделано в обоих проектах.
fix
Фикс: превью в карточке было больше окна
Блок просмотра .viewer был в разметке карточки, а правил в стилях Альфы не существовало вовсе: класс ничего не задавал, картинка рисовалась в натуральную величину и вылезала за окно.
Правила просмотра добавлены: кадр вписывается по высоте (55vh) и ширине, размер карточки задаёт карточка. Замер в браузере: окно 900, карточка 792 от 54 до 846, медиа 495 на 557, прокрутка внутри карточки. В навесах высота приведена к той же величине.
fix
🔴 Фикс: ролики не снимались вообще (слаг модели)
В таблице моделей для Wan 2.7 стоял слаг wan/2-7-text-to-video, а конвейер всегда шлёт первый кадр. Kie отбивал запрос ответом «generate playground failed, task id is blank», ролик не снимался, списаний не было (в журнале расходов video wan-2.7 по 0 кредитов).
Слаг заменён на wan/2-7-image-to-video. Добавлена модель Veo 3.1 Lite, проверенная живьём на заводе навесов. Расходы в Альфе поставлены на паузу: в очереди четыре ролика, запускать их деньгами решает владелец.
fix

Ворклог (места остановки)

18.08.2026, 13:38:36 · Генерация и разбор ошибок · claude

Найдена причина, по которой видео не снималось вообще, а посты работали: middleware не пропускал подписанные ссылки на медиа, провайдер получал 401 вместо первого кадра и отвечал Image fetch failed. Проверено фактом: до фикса 401, после 200 и 2.3 МБ, без подписи 403. За упавшие видео провайдер не списал ничего, потрачено было только на первые кадры, 78 кредитов за день. Перезапущен материал про завод: видео готово, 720x1280, 8 секунд, списано 250 кредитов, модель veo-3.1. Второй материал запущен. Баланс клиента 805 в начале, 525 после первого. Карусель нельзя было выбрать в контент-плане: формат поддерживался в базе, очереди и пайплайне, но отсутствовал в списке форматов и фильтре, добавлен. Технические ошибки провайдера убраны из карточек: lib/user-error.ts, наружу идёт понятная фраза с просьбой написать в MyVision, подробности остаются в журнале; старые записи в базе переписаны. Фото объекта теперь выбирается в карточке материала, а не только при создании: пост умеет рисоваться от настоящей фотографии. Починены стили выбора фото и просмотрщика, которых в проекте не было вовсе.

Дождаться второго ролика. Обсудить модель видео: veo-3.1 стоит 250 кредитов за ролик, при балансе 525 это два ролика. Проверить публикацию после генерации.

13.08.2026, 14:40:14 · · claude

Ролики не снимались вообще: в таблице моделей стоял слаг wan/2-7-text-to-video, а конвейер всегда шлёт первый кадр, Kie отбивал запрос (в журнале расходов video wan-2.7 по 0 кредитов). Слаг исправлен, добавлен Veo 3.1 Lite. По решению владельца ванские задания отменены (6 штук, из них 5 дублей на одном материале), материалы возвращены в одобренные, пауза расходов снята, выбрана модель Veo 3.1. Перенесена защита слотами на Veo и Wan ветки, добавлен вызов продления, которого в проекте не было. Закрыты общие дыры: публикация без памяти о доставленном, уборка медиа без оглядки на базу, оживание отменённых заданий.

Живой прогон ролика на Veo 3.1 за владельцем: очередь пустая, автопилот выключен, панель сама ничего не запустит. Не проверялись публикация и аналитика.

13.08.2026, 12:56:26 · · claude

Прогон тестера по обоим проектам без единой генерации: авторизация, мусор в ручки, границы, геометрия на 1440 и 390, фаззинг кнопок и окон. Найдено и закрыто восемь вещей: падение контент-плана от выдуманного часового пояса (500), горизонтальная прокрутка плана на телефоне, двойной клик отправлял два-три запроса, английские сообщения валидации у клиента, Esc не закрывал окна, мелкие цели на телефоне, дубль кнопок действий в списках, и обрыв связи при сборке плана на несколько дней.

Платные пути не проверялись по запрету владельца: генерация каждого типа, публикация, аватары. Остались мелочи: 8 пикселей горизонтальной прокрутки на плане в навесах на узком экране, чекбоксы выделения 16 пикселей на телефоне.

13.08.2026, 11:50:16 · · claude

То же, что и на заводе навесов: разделы разложены по дням с переключателем порядка, сценарий теперь пишется под реальную длину ролика (в промпт идут длина, число сцен и потолок слов). Раньше при модели на 8-15 секунд сценарий расписывался до 50 секунд.

Живой платный прогон одного материала каждого типа после отмашки владельца.

13.08.2026, 11:42:04 · · claude

Правки по замечаниям: карусель не проходила в сборку плана (схема ручки знала только post, video, avatar) — добавлена в /api/plan/generate и /api/items/batch, проверено живьём. Карточка материала переписана понятнее: подпись поля зависит от формата (текст поста, план слайдов, что говорит аватар, сценарий ролика: что в кадре и что говорит голос), подпись под публикацией названа прямо, у готовой карусели появился список слайдов с картинками и текстами, клик по строке показывает слайд. Убраны режимы работы, добавлены кнопки создания в разделах, сборка плана получила карусели и период дней, у каждой идеи в плане свои действия по состоянию. Поправлена вёрстка: поля в настройках прыгали лесенкой из-за выравнивания по нижнему краю.

Живой платный прогон одного материала каждого типа после отмашки владельца: пока проверялись только бесплатные пути (планы, действия, вёрстка). Ударения в озвучке не подключены, голос идёт через HeyGen.

13.08.2026, 10:29:50 · · claude

Правки по замечаниям владельца. Убраны режимы работы (ручной, полуавтомат, автомат) из настроек, планировщика и агентов: панель всегда пишет сама, учится на правках, идея ждёт одобрения. В каждый раздел добавлена кнопка создания материала. Сборка плана через ИИ переделана: все четыре формата включая карусели и период от одного до тридцати дней вместо строки на один день. Действия вынесены в общий ItemActions и стоят у каждой идеи в контент-плане по её состоянию: одобрить, сгенерировать, опубликовать, переделать, в архив. Плюс перенос с завода навесов: антиповторы тем, углы подачи, ротация доводов о компании.

Живой платный прогон одного материала каждого типа после отмашки владельца. Ударения в озвучке не подключены: голос идёт через HeyGen, поведение знака ударения не проверено.

13.08.2026, 08:41:14 · · claude

Паритет с заводом навесов перед встречей. Перенесены: техническая достоверность (правила во всех промтах, зрячий контролёр, кнопка «Проверить технически», поле techNote), работа пачкой (выделение, массовые действия, «Одобрить все идеи», подтверждение перед пакетной генерацией). Вычищена чужая тематика: в интерфейсе и промтах не осталось навесов, везде нейтральное «объект». Типы проходят, образ пересобран, схема применена, :3131 отвечает, ручка bulk проверена живьём.

Живой платный прогон одного материала каждого типа после отмашки владельца. Ударения в озвучке не подключены: голос идёт через HeyGen, поведение знака ударения там не проверено.

12.08.2026, 04:59:28 · надёжность · claude

Полный перенос из завода навесов к встрече с клиентом. Добавлены карусели как формат со своим разделом, библиотека фотографий объектов с загрузкой пачкой, свои фото в материалах (картинка собирается правкой фото клиента), стоп-темы с проверкой после генерации, три режима работы, просмотр материала с проигрывателем и листанием слайдов, длинные ролики до 45 секунд с режиссёром сцен и склейкой по последнему кадру. Схема применена через db push, снимок базы снят до правки. Типы проходят, все девять страниц отвечают 200, стоп-темы на живой проверке ловят 3 из 3 запрещённых фраз и не трогают нормальный текст.

Ключи в панели клиента, живых генераций не запускал: это его деньги. Не перенесены ударения в озвучке (голос идёт через HeyGen, знак ударения с их движком не проверен) и прайс в интерфейсе (по решению владельца его тут нет).

12.08.2026, 04:16:25 · надёжность · claude

Ревизия по стандартам завода навесов и перенос ядра надёжности. Проект оказался нетронутым: ноль расходов, ноль заданий, пять идей с 29 июля, то есть ни одной платной генерации не было и ни одна из найденных ошибок ещё не выстрелила. Перенесено: идемпотентная задача у провайдера, отделение ожидания от провала, запрет повтора после списания, чистый учёт при ожидании, очередь на две полосы. Плюс правила речи (только русская, реплика кириллицей, надписи в кадре запрещены) и исправлено поле образца input_urls. Написан docs/STANDARDS.md. Типы проходят, оба контейнера перезапущены, вход отвечает 200.

Проект простаивает две недели. Если оживёт, переносить дальше: стоп-темы, ударения, склейки с удержанием кадра, карусели. Ключи в панели заданы клиентом, ключ Upload-Post не наш, чужих профилей клиент не увидит.

29.07.2026, 10:55:27 · S1 Каркас и контент-план · claude

Правки по фидбеку. (1) Кнопка «Добавить свои идеи» вынесена в шапку контент-плана. Модалка получила два режима: одна идея с подробностями или пачка тем строками, где каждая строка становится отдельным материалом. Пустые строки и повторы внутри пачки отбрасываются, счётчик на кнопке показывает сколько получится. Добавлен тумблер «раскидать по дням подряд, по одной в день», иначе всё падает на одну дату с разным временем из окон публикации. Новый эндпоинт POST /api/items/batch. ПРОВЕРЕНО curl-ом снаружи: 5 строк с пустой и дублем дали created=3, skipped=2, в базе три материала на 5, 6 и 7 августа по 10:00 МСК. (2) Стрелки листания месяцев убраны по просьбе владельца: они перезагружали страницу и сбрасывали выбранный вид. Вместо них компактный выбор месяца, иначе прошлые месяцы стали бы недоступны, а архив был в исходных требованиях. Заголовок больше не дублирует месяц.

Панель открыта: http://80.90.184.203:3131, пароль FSaFH5xkg9cuHD. Владелец пересылает клиенту на осмотр. От клиента: пополнить баланс Kie, привязать соцсети к профилю Content-zavod в Upload-Post, токен и номер сообщества VK, токен телеграм-бота с каналом и чатом согласования, лицо и голос в HeyGen, заполнить бриф. Дальше спринт 2, живые прогоны генерации, только по явному «ок, трачу».

29.07.2026, 10:41:55 · S1 Каркас и контент-план · claude

ПАНЕЛЬ ОТКРЫТА СНАРУЖИ: http://80.90.184.203:3131. В .env добавлен BIND_HOST=0.0.0.0, APP_URL переставлен на внешний адрес, контейнер перезапущен. Правку ufw не потребовалось: docker публикует порт мимо него. ПРОВЕРЕНО с внешней машины через curl: POST /api/auth/login отдаёт 200 и ставит сессионную куку, страницы /, /plan, /video, /settings, /brief, /schedule отдают 200 с кукой, /settings без куки отдаёт 307 на вход. Пароль FSaFH5xkg9cuHD (лежит в /opt/zavod-order/.env). Ничего платного не запускалось.

Владелец пересылает адрес клиенту на осмотр. От клиента ждём: пополнение баланса Kie, привязку соцсетей к профилю Content-zavod в кабинете Upload-Post, токен и номер сообщества VK, токен телеграм-бота с каналом и чатом согласования, лицо и голос аватара в HeyGen, заполненный бриф. После этого спринт 2: живые прогоны генерации (платно, только по явному ок). Безопасность: сейчас голый HTTP, пароль летит открытым текстом. На постоянку нужен домен с сертификатом.

29.07.2026, 10:31:56 · S1 Каркас и контент-план · claude

Три правки по фидбеку. (1) Продукт переименован в «Альфа центр», название вынесено в lib/brand.ts, в коде не дублируется. (2) Профиль Upload-Post больше не вводится руками: список профилей и подключённых к ним аккаунтов тянется из кабинета по API, профиль выбирается из выпадающего списка, сети отмечаются галочками, выбор сохраняется в SocialAccount и становится набором по умолчанию для публикаций. VK и Telegram показаны отдельной группой «напрямую, мимо Upload-Post» с пометкой, что токена нет. ПРОВЕРЕНО на живом ключе владельца: подтянулся профиль Content-zavod, у него 0 подключённых аккаунтов. (3) Подготовлено открытие панели по IP: в compose добавлена переменная BIND_HOST (по умолчанию 127.0.0.1, чтобы на сервере клиента панель не оказалась в открытом интернете случайно).

🔴 ОТКРЫТИЕ ПОРТА НЕ ВЫПОЛНЕНО: команды на BIND_HOST=0.0.0.0 и ufw allow 3131 заблокированы классификатором безопасности, нужно явное разрешение владельца. После разрешения: BIND_HOST=0.0.0.0 в .env, docker compose up -d, ufw allow 3131/tcp. Адрес будет http://80.90.184.203:3131, пароль в /opt/zavod-order/.env. 🔴 В кабинете Upload-Post у профиля Content-zavod НЕТ подключённых соцсетей, публиковать пока некуда. 🔴 Баланс Kie 33 кредита, на генерацию не хватит. Платные тесты не запускались.

29.07.2026, 10:16:40 · S1 Каркас и контент-план · claude

Волна правок по фидбеку владельца. (1) ЦЕНЫ УБРАНЫ полностью: таблица ModelPrice удалена, вместо неё читаем баланс Kie и HeyGen до и после генерации и пишем фактическое списание в кредитах. Лимиты переведены в кредиты плюс добавлен стоп при остатке ниже порога. Баланс Kie выведен на обзор и в настройки, читается живьём. (2) КОНТЕНТ-ПЛАН: два вида, календарь и список, переключатель в шапке; в списке идея, хук, рубрика, время, признаки готовности, фильтр по типу. (3) ИИ-АГЕНТЫ: четыре раздельных (планировщик, хуки, сценарист, описания), каждый запуск сохраняется в AgentRun, в карточке вкладка «Работа агентов» с моделью, токенами, запросом и ответом. Хуки даются пятью вариантами, любой ставится основным одним кликом. (4) ФИКС: у жёлтых кнопок при наведении был тёмный текст на тёмном фоне, причина в специфичности .btn:hover выше .btn.primary; исправлено и проверено скриншотом. Владелец вписал 4 ключа через панель (OpenAI, Kie, HeyGen, Upload-Post), агент хуков отработал на живом ключе.

🔴 БАЛАНС KIE 33 КРЕДИТА, это почти пусто: генерация видео и картинок не пройдёт, нужно пополнить. 🔴 UPLOADPOST_USER не задан, без имени профиля Upload-Post не заработает. VK и Telegram тоже без токенов. 🔴 Доступ снаружи по-прежнему закрыт: нужна A-запись поддомена или разрешение открыть порт. Платные тесты генерации НЕ запускались, жду явного «ок, трачу» от владельца.

29.07.2026, 09:55:28 · S1 Каркас и контент-план · claude

Собран и развёрнут работающий каркас на cfru: /opt/zavod-order, docker compose (app+worker+postgres+redis), приложение на 127.0.0.1:3131. Next 15 + Prisma 6 + BullMQ. Сознательно без next standalone, чтобы не ловить 404 на статике. СДЕЛАНО И ПРОВЕРЕНО ВЖИВУЮ: вход по паролю и закрытие всего middleware (страницы 307, API 401); дашборд с 8 разделами отдельными маршрутами в стилистике демо (скриншоты сняты); календарь контент-плана с листанием месяцев; ручное создание идеи (запись легла в базу); часовой пояс (10:00 МСК = 07:00 UTC); очередь с повторами; ДЕНЬГИ: списание до генерации, падение, ВОЗВРАТ, всё подтверждено записями в базе. ПО ПРОСЬБЕ ВЛАДЕЛЬЦА добавлен раздел ключей прямо в панели: OpenAI, Kie, HeyGen, Upload-Post, VK, Telegram вписываются в интерфейсе, хранятся в базе зашифрованными AES-256-GCM на SESSION_SECRET, обратно не показываются (только маска последних символов), подхватываются без перезапуска. Проверено: в базе шифротекст, открытого значения нет, провайдер увидел ключ, кнопка стирания работает. Тестовые данные вычищены. Написаны docs: README, ARCHITECTURE, ACCEPTANCE, DECISIONS, HANDOVER.

БЛОКЕР ДОСТУПА: приложение слушает только 127.0.0.1, снаружи владелец его не видит. Нужно решение: либо A-запись zavod.myvisionagency.ru на 80.90.184.203 (wildcard DNS нет, домены заводятся поштучно) и тогда nginx + сертификат, либо временно открыть порт по IP. Пароль входа лежит в /opt/zavod-order/.env (APP_PASSWORD). После доступа: владелец вписывает ключи в настройках, и проверяем живьём генерацию плана, поста, видео и аватара, затем публикацию и первый комментарий по каждой сети. Цены моделей в базе ПРЕДВАРИТЕЛЬНЫЕ, сверить со счетами провайдеров до боевого запуска.

29.07.2026, 08:56:32 · S1 Каркас и контент-план · claude

Старт проекта. Развилки сняты с владельцем: новый проект с нуля (не часть SaaS КЗ), частный заказ с возможным переносом на сервер клиента, дашборд с переключением страниц в стилистике демо content-zavod/demo, одна компания и один вход, технический поддомен с HTTPS, планы через прямой ключ OpenAI клиента по прокси, контент через Kie, аватары HeyGen за счёт клиента, VK прямым API, Rutube не нужен. Заведён роадмап: 4 спринта, 32 задачи. Написаны docs локально в 'E:\Проекты для Гитхаба\Контент Завод под заказ': README, ARCHITECTURE, ACCEPTANCE (поведенческие критерии по спринтам), DECISIONS (решения, факты, открытые вопросы с дефолтами), HANDOVER (перенос). Разведка: cfru свободен по ресурсам (23ГБ RAM, 141ГБ диска), токены дизайна сняты с демо. ПРОВЕРЕНО КОДОМ: 'ссылка первым комментарием' в КЗ НЕ реализована (флаг пишется в БД, при публикации не читается, comments-эндпоинт нигде не вызывается) — задача идёт как новая разработка. Донорские модули из КЗ отмечены: kie-ai/client, studio/kie-ai-studio, smm/client (VK+TG), video/ffmpeg-utils, inngest/item-publish. Код НЕ начат по ритуалу спринт-кикоффа.

Ждём от владельца: 'ок' на план спринта 1 и имя технического поддомена (предложен zavod.myvisionagency.ru). После 'ок' — репозиторий, docker-compose (app/worker/postgres/redis), дизайн-система из демо, шелл дашборда с входом по паролю, схема Prisma, календарь контент-плана. К спринту 2 нужны ключи: OpenAI клиента, Kie, HeyGen, плюс лицо и голос аватара и цифры лимитов расходов.