Задание: Разработчик встраиваемых систем. SaaS-сервис для автоматических ответов через ChatGPT, интегрированный с JivoSite (Дистанционная работа)
Краткое описание
Необходимо разработать веб-сервис, где клиент (например, владелец сайта или менеджер компании) сможет:
Самостоятельно создавать GPT-ассистентов через удобный интерфейс.
Настраивать их поведение (обучение, стиль ответов, доступ к данным).
Интегрировать бота в JivoChat, чтобы он общался с клиентами на сайте.
Сервис должен быть максимально простым для пользователя, но при этом гибким в настройках.
БРИФ: SaaS-сервис для автоматических ответов через ChatGPT, интегрированный с JivoSite
Цель
Разработать масштабируемый backend + UI, который:
принимает сообщения от JivoSite через webhook,
обрабатывает их с помощью OpenAI GPT-4o,
возвращает ответы обратно в Jivo API,
поддерживает гибкие настройки на уровне клиентов и ботов,
ведёт учёт токенов и баланса,
реализует базовую финансовую модель.
️ Техническая архитектура
Поток данных:
Jivo → Webhook Receiver (Go)
Webhook → Kafka (топик from_jivo)
Consumer (Go):
Проверка лимитов и баланса
Получение / создание GPT thread
Запрос к OpenAI
Подсчёт токенов (локально, через tiktoken)
Запись ответа в Kafka to_jivo
Consumer → Jivo API (отправка ответа)
Баланс клиента уменьшается на сумму запроса (в рублях)
️ Интерфейсы
Интерфейс клиента (Vue):
Личный кабинет с авторизацией (логин/пароль)
Список ботов
Создание/редактирование бота:
Температура
System prompt
Модель (GPT-4o)
Контекст (N сообщений)
Max tokens в ответе
API токен Jivo / webhook URL
Статус: активен / остановлен
Баланс клиента (в рублях)
Кнопка пополнить баланс (интеграция с внешними платёжками позже)
История транзакций и usage по токенам
️ Интерфейс модератора (Vue):
Авторизация (с ролью администратора)
Поиск клиентов
Просмотр и редактирование:
Профиля клиента
Списка ботов
Баланса
Лимитов
Ручное пополнение счёта клиента
Просмотр логов сообщений (в т.ч. ошибки OpenAI/Jivo)
Аналитика по токенам, чартам
Авторизация
Email + пароль (JWT)
Роли: admin, client
Возможность добавления пользователей вручную (через базу или invite-ссылку)
Учёт токенов и биллинг
Подсчёт токенов:
Используется локальный расчёт через tiktoken по каждому GPT-запросу.
Подсчитываются:
входящие токены (system prompt + история + сообщение)
токены ответа
Списание:
Токены переводятся в рубли по внутреннему курсу (например, 1000 токенов = 1.5 руб).
Баланс уменьшается после успешного ответа от OpenAI.
Баланс:
У клиента есть поле balance (в рублях).
При 0 — бот не отвечает.
Админ может вручную пополнить.
Клиент может инициировать пополнение через кнопку.
База данных (PostgreSQL)
Таблицы:
users: id, email, password_hash, role
clients: id, name, owner_user_id, balance, created_at
bots: id, client_id, name, settings (jsonb)
messages: id, bot_id, text, role, tokens, created_at
transactions: id, client_id, amount, type (debit/credit), comment, created_at
Backend стек (Go)
Компонент
Технология
Язык
Go
Web Framework
chi или echo
LLM-интеграция
github.com/sashabaranov/go-openai
Kafka
from_jivo, to_jivo
Redis
кэш лимитов, токенов, threadID
Auth
JWT (go-jose, или аналог)
Очередь
Kafka или Redis Streams (в dev/solo можно in-memory)
Логика FSM
внутри consumer-воркера
БД
PostgreSQL (через GORM или sqlc)
Хранилище логов
stdout + Loki / ELK
Мониторинг
Prometheus + Grafana
Frontend стек (Vue)
Раздел
Функциональность
Логин / регистрация
JWT-аутентификация
Клиентская панель
Настройка ботов, просмотр токенов, баланс
Модераторская панель
Доступ ко всем клиентам, ручные правки, просмотр usage
Компоненты UI
Vuetify или Naive UI
Взаимодействие
REST API или gRPC-gateway
Возможности масштабирования
Консьюмеры можно запускать в N экземплярах (CPU-bound)
Jivo может работать с тысячами сообщений / минуту через Kafka
Redis кеширует состояние, threadID, usage
Можно легко переключиться на облачный биллинг (Stripe / ЮKassa)