Бизнес-логика
Пользовательский путь от регистрации до публикации видео: персоны, генерация, сториборды, LoRA-тренировка.
TL;DR
GoraGen — SaaS-платформа для AI-генерации видео. Пользователь регистрируется, получает кредитный баланс, выбирает персонажа из библиотеки или тренирует собственного, описывает сцену словами — платформа генерирует видео, оценивает качество автоматически, повторяет до приемлемого результата, и помогает запостить в соцсети по расписанию.
GoraGen — что делает платформа
Кому это нужно
Контент-мейкерам, маркетологам, агентствам и независимым продавцам, которым нужно регулярно выпускать видео-контент, но нет времени, бюджета или навыков для съёмочного процесса. AI-видео покрывает диапазон от 5-секундных вертикальных роликов для TikTok/Reels до многошотовых сториков.
Главная боль, которую закрывает платформа: качество AI-видео сегодня — это лотерея. Один и тот же промпт может выдать отличный результат и полный мусор. Профессиональный AI-видеограф запускает генерацию 5-15 раз с разными параметрами, оценивает на глаз, выбирает лучший. GoraGen это автоматизирует — между генерацией и пользователем встаёт Gemini, который оценивает результат по объективным критериям и сам решает: оставить, попробовать ещё раз с другими параметрами, или признать что эта модель не справляется и переключиться на другую.
Пользовательский путь
Шаг 1. Регистрация и кабинет
Регистрация через email — пароль шифруется Argon2. После регистрации создаётся workspace (рабочее пространство для команды) и пользователь получает welcome-credit. JWT-куки выставляются на .goragen.com, так что landing, dash и admin делят сессию.
В кабинете (apps/dash) — главный экран с балансом кредитов, недавними генерациями и подсказками. Из кабинета доступны: библиотека персонажей, конструктор сценариев, история генераций, тренировка LoRA, голосовое клонирование, distribution в соцсети, биллинг.
Шаг 2. Выбор персоны
Персона — это виртуальный «актёр»: внешность, стиль одежды, манера. В системе три источника персон: — System personas — заготовки от платформы (мужчины, женщины, разные возрасты, стили). — Workspace personas — кастомные, созданные внутри workspace. — Mine — те, что пользователь натренировал сам через LoRA-wizard.
Каждая персона имеет «лукбук» — набор сгенерированных кадров для предпросмотра. И «пресеты» — готовые наборы параметров (камера, фоны, освещение), которые работают именно с этой персоной.
Шаг 3. Одиночная генерация
Самый простой путь: выбрал персону, написал промпт, нажал «генерировать». Под капотом:
- Промпт на русском (если был) переводится на английский через
deep-translator. - Claude выбирает подходящую модель: WAN 2.2 (для движения), HunyuanVideo (для длинных кадров), LTX 2.3 (для image-to-video) — на основе анализа промпта.
- Через Vast.ai арендуется GPU-instance (40-80GB VRAM в зависимости от модели).
- Workflow ComfyUI собирается программно из шаблонов с подстановкой LoRA-моделей (если персона их использует).
- Запрос ставится в очередь на удалённом ComfyUI, прогресс льётся клиенту через WebSocket.
- Готовое видео уходит на оценку в Gemini 2.5 Pro: четыре критерия (соответствие промпту, артефакты, временная согласованность, общее качество), каждый 0–10, плюс вердикт
excellent / good / acceptable / poor / regenerate. - Если
regenerateилиpoor— Gemini предлагает изменения параметров, генерация запускается заново. Еслиacceptable— увеличиваем seed на 1 и повторяем. Еслиgood/excellent— сохраняем результат и записываем как рецепт в базу.
Пользователь видит весь этот процесс в реальном времени через WebSocket — какая модель выбрана, на какой попытке мы сейчас, что Gemini сказал.
Шаг 4. Сториборды
Для многошотовых видео — отдельный режим. Пользователь описывает сцены (sh1: «персонаж входит в комнату», sh2: «крупный план лица», sh3: «выход в дверь»). Платформа генерирует каждый шот, но не тушит Vast-instance между ними — сторибордовый раннер передаёт keep_instance=True всем кроме последнего шота. Это экономит 1-2 минуты на провижениг GPU для каждого шота после первого.
Если сторибордовый раннер падает посередине — safety net в storyboard_runner.py тушит instance принудительно, чтобы не платить за зависший GPU.
Шаг 5. LoRA-тренировка
Если пользователь хочет своего персонажа — он загружает 15-30 фото, и платформа тренирует LoRA-модель на kohya_ss. Шаги:
- BLIP-2 captioning — модель пишет подписи к фотографиям автоматически.
- Validation grid — генерируются тестовые кадры до тренировки, чтобы оценить baseline.
- Запускается тренировка на Vast-instance с ≥40GB VRAM — это 45-90 минут.
- После тренировки — новая валидационная сетка, чтобы сравнить.
- Модель пушится в R2-хранилище, метаданные — в
lora_workspacesтаблицу. - Персона автоматически создаётся в библиотеке пользователя со статусом «Mine».
Шаг 6. Дистрибуция
Готовое видео можно запостить в соцсети по расписанию. distribution_worker тикает каждые 30 секунд, выбирает посты, дошедшие до даты публикации, отправляет в социальную платформу. Captions генерирует Claude из метаданных видео.
Экономика и кредиты
Кредиты резервируются в начале генерации (предполагаемый объём) и коммитятся по факту (фактический расход GPU-времени + стоимости API-вызовов). Если генерация фейлится — кредиты возвращаются. Live-тикер показывает в UI текущий spent / reserved / remaining / USD-эквивалент.
user_daily_spend ограничивает максимальный расход за сутки — защита от runaway-стоимостей при багах в коде.
Multi-tenant
Платформа multi-tenant в духе «workspace = команда». В одном workspace может быть несколько пользователей с разными правами. Все данные изолированы по workspace: персоны, LoRA-модели, история, биллинг.
Admin-ролу видит cross-workspace (для саппорта и аудита). Все админ-действия логгируются в domain_events (append-only event log).