Полный отчёт о выполненных работах по проекту EastPay. Каждый пункт договора — с подробным описанием, ссылками на файлы и подтверждающими материалами. Ниже — также работы, выполненные сверх обязательств по нашей инициативе.
| № | Функция по договору | Статус | Подтверждение |
|---|---|---|---|
| 1 | Разработка и внедрение ядра AI Chat Agent | Готово | Перейти → |
| 2 | Интеграция с CRM-системой (Chatwoot) | Готово | Перейти → |
| 3 | Подключение каналов связи (Telegram) | Готово | Перейти → |
| 4 | Разработка сценариев и скриптов общения | Готово | Перейти → |
| 5 | Структура и настройка базы данных | Готово | Перейти → |
| 6 | Автоматизация обработки лидов | Готово | Перейти → |
| 7 | Настройка аналитики и отчётов | Готово | Перейти → |
| 8 | Обучение и передача документации | Готово | Перейти → |
8 из 8 пунктов выполнены — все обязательства по договору закрыты
Следующие работы были выполнены дополнительно к договорным обязательствам. Подробнее — в разделе ниже.
Полноценная веб-панель: React + Refine + Ant Design. 9 страниц: дашборд, заявки, клиенты, курсы, аудит, профиль.
Настройка VPS: Nginx, SSL, Docker, PM2, автоматические бэкапы в 03:00, SSH-hardening, UFW, fail2ban.
Branding-шаблоны email для приглашения операторов в систему (Edge Function invite-user).
Админ-кабинет (демо-версия)
CRM и контроль диалогов операторов с клиентами
Управление курсами валют (панель)
Управление веб-хуками и автоматизацией
Сервер (VPS) для хранения данных и работы системы
Настройка AI-ответов и интеграция с мессенджерами (Flow builder)
AI-провайдер (интеллект чат-агента)
Основная база данных и серверные функции (Backend)
Главный AI-ассистент EastPay. Работает на платформе NextBot Cloud, подключён к Supabase как бэкенд. Общается с клиентами в Telegram, считает курсы, создаёт заявки.
Каждая функция — это «инструмент» AI-агента. Когда клиент спрашивает курс, бот сам вызывает нужную функцию через Supabase Edge Function nextbot-api.
Получает текущие курсы обмена. Клиент спрашивает «какой курс?» — бот вызывает эту функцию.
📄 Открыть документ →Курсы с учётом наценки города (surcharge). Для городов с разными условиями.
📄 Открыть документ →Считает итоговую сумму сделки: клиент даёт X → получает Y по курсу Z.
📄 Открыть документ →Промпт — это «мозг» агента: набор правил, которым он следует. За время разработки было 7 итераций, каждая улучшала качество ответов и безопасность.
Полная защита от prompt-injection, обязательное использование tools, запрет на ответы «из головы», hardened security.
📄 Открыть документ →Каждая предыдущая версия сохранена для аудита. Краткое содержание: v1=базовый, v2=тон общения, v3=tools, v4=безопасность, v5=рефакторинг, v6=оптимизация.
docs/ai-agent/prompts/1-version-promt.md … 6-version-promt.mdChatwoot — CRM для управления диалогами с клиентами. Развёрнут на собственном сервере (self-hosted), подключён к AI-агенту через n8n. Оператор видит все диалоги в одном окне и может вмешаться в любой момент.
Установлен через Docker на сервере EastPay. Все данные хранятся локально — ничего не уходит на сторонние серверы.
📄 Открыть документ →Специальный тип канала, через который n8n пересылает сообщения из Telegram в Chatwoot и обратно.
Два потока: (1) новое сообщение в Telegram → n8n → Chatwoot, (2) оператор пишет в Chatwoot → n8n → Telegram клиенту.
📄 Открыть документ →В Supabase таблица channel_mapping связывает: telegram_chat_id ↔ nextbot_dialog_id ↔ chatwoot_conversation_id. Это позволяет не дублировать сообщения.
Оператор пишет «бот продолжай» или «стоп» прямо в Chatwoot — команда невидима для клиента, но управляет AI-агентом.
📄 Открыть документ →Telegram — основной канал общения с клиентами. Настроен бот и информационный канал.
Основной AI-бот для клиентов. Отвечает 24/7, считает курсы, создаёт заявки. Подключён к NextBot Cloud.
Информационный канал EastPay. Новости, обновления курсов, акции.
Бот зарегистрирован через @BotFather. Токен подключён в NextBot Cloud. NextBot принимает webhook от Telegram и обрабатывает сообщения через AI-агент.
При первом запуске бот отправляет приветственное сообщение с описанием возможностей и инструкцией. Настроено в NextBot → Scenarios.
📄 Открыть документ →Кроме CRM (Chatwoot), все новые заявки дублируются в закрытую Telegram-группу для оперативного контроля.
Закрытая Telegram-группа для операторов и руководства. Сюда приходят мгновенные уведомления о новых событиях.
Когда клиент подтверждает сделку и AI вызывает create_order — в группу приходит сообщение с деталями: номер заявки, валютная пара, сумма, город, контакт клиента.
Когда клиент просит связать с оператором или AI не может ответить — срабатывает escalate_to_manager, и в группу приходит уведомление с просьбой подключиться.
Edge Function nextbot-api при обработке action=create_order или escalate_to_manager отправляет сообщение через Telegram Bot API в группу-чат.
Оператор работает через Chatwoot CRM. Вот основные действия, которые доступны:
В Chatwoot видны все диалоги AI-бота с клиентами в реал-тайм. Оператор может читать переписку и оценивать качество ответов AI.
Команда стоп — AI перестаёт отвечать, оператор общается с клиентом напрямую. Команда невидима для клиента.
Команда бот продолжай — AI снова начинает отвечать на сообщения клиента.
Оператор пишет сообщение в Chatwoot → n8n пересылает его клиенту в Telegram. Клиент не знает, что он общается не с ботом.
Карточка клиента в Chatwoot: имя, telegram_chat_id, история всех диалогов.
Новые заявки и эскалации мгновенно появляются в группе «EastPay | Заявки» — не нужно сидеть в Chatwoot постоянно.
Все сценарии диалогов, API-функции, и примеры разговоров. AI-агент обучен на реальных диалогах и следует строгим правилам.
Реальные примеры: обмен валюты, вопрос по статусу, эскалация менеджеру, вопрос не по теме, попытка взлома промпта.
📄 Открыть документ →Настройка inline-кнопок при /start, автоматические приветствия, сценарии реактивации.
📄 Открыть документ →Что происходит при эскалации, как оператор перехватывает диалог, как бот возвращается.
📄 Открыть документ →Supabase (PostgreSQL) — основное хранилище всех данных EastPay. Включает 17 таблиц, 3 Edge Functions, Row Level Security. Проект: cvzsgjksswowqgfxvrsb.
Единый API-эндпоинт для всех запросов от AI-агента. NextBot вызывает эту функцию, передаёт action (get_rates, calculate_deal и т.д.), получает ответ.
URL: https://cvzsgjksswowqgfxvrsb.supabase.co/functions/v1/nextbot-apiФункция приглашения операторов в систему. Создаёт пользователя и отправляет ссылку для регистрации.
Сервис логирования действий. Записывает события в таблицу audit_logs.
Нажмите на название таблицы, чтобы увидеть колонки. Данные актуальны на момент генерации отчёта.
| Колонка | Тип | Описание |
|---|---|---|
| id PK | bigint | ID клиента |
| telegram_id | text | Telegram ID (unique) |
| telegram_username | text | @username |
| full_name | text | Полное имя |
| phone | text | Телефон |
| verification_status | text | unverified / verified |
| risk_level | text | low / medium / high |
| total_volume_usd | numeric | Общий объём сделок в USD |
| deals_count | int | Количество сделок |
| is_ai_paused | bool | AI выключен для этого клиента |
| is_ambassador | bool | Флаг амбассадора |
| referrer_id FK→clients | bigint | Реферал |
| Колонка | Тип | Описание |
|---|---|---|
| id PK | bigint | ID заявки |
| client_id FK→clients | bigint | Кто создал |
| manager_id FK→profiles | uuid | Ответственный менеджер |
| location_id FK→locations | bigint | Город |
| instrument_id FK→instruments | bigint | Валютная пара |
| direction | enum | buy / sell |
| amount_give / amount_get | numeric | Суммы обмена |
| currency_give / currency_get | text | Валюты (USD, USDT, RUB…) |
| exchange_rate | numeric | Курс для клиента |
| cost_price_rate | numeric | Себестоимость (для расчёта прибыли) |
| estimated_profit_usdt | numeric | Расчётная прибыль |
| status | enum | new → calculated → payment_pending → processing → delivery → done / cancelled / dispute |
| delivery_method | text | Способ доставки |
| Колонка | Тип | Описание |
|---|---|---|
| id PK | bigint | ID города |
| name | text | Название (unique) |
| country | text | Страна |
| currency_local | text | Локальная валюта |
| surcharge_percent | numeric | Наценка города (%) |
| is_active | bool | Активен ли город |
| Колонка | Тип | Описание |
|---|---|---|
| id PK | bigint | ID инструмента |
| name | text | Название (USDT→USD, RUB→THB…) |
| base_currency | text | Базовая валюта |
| cost_rate_expression | text | Формула расчёта себестоимости |
| fixed_fee_usdt | numeric | Фиксированная комиссия |
| Колонка | Тип | Описание |
|---|---|---|
| id PK | bigint | ID |
| location_id FK→locations | bigint | Город |
| instrument_id FK→instruments | bigint | Инструмент |
| cost_price_percent | numeric | % себестоимости |
| selling_rate_percent | numeric | % продажи клиенту |
| min_amount | numeric | Мин. сумма обмена |
| Колонка | Тип | Описание |
|---|---|---|
| symbol PK | text | Валютная пара (USDTHB, USDTRUB…) |
| rate | numeric | Текущий курс |
| is_active | bool | Активна ли пара |
| Колонка | Тип | Описание |
|---|---|---|
| id PK FK→auth.users | uuid | ID (= auth user) |
| role | enum | super_admin / admin / operator / city_manager / pending |
| assigned_location_id FK→locations | bigint | Город привязки |
| email, full_name, telegram_username | text | Данные профиля |
| Колонка | Тип | Описание |
|---|---|---|
| id PK | uuid | ID маппинга |
| telegram_chat_id | bigint | Telegram chat ID клиента |
| nextbot_dialog_id | bigint | ID диалога в NextBot |
| chatwoot_contact_id | int | ID контакта в Chatwoot |
| chatwoot_conversation_id | int | ID диалога в Chatwoot |
| operator_active | bool | Оператор управляет (AI спит) |
| Колонка | Тип | Описание |
|---|---|---|
| id PK | uuid | ID |
| message_id | text | ID сообщения (идемпотентность) |
| direction | text | nb_to_cw / cw_to_nb / cw_to_tg |
| status | text | sent / error |
Аудит всех действий в системе: user_id, action, table_name, old_data, new_data, ip_address, severity. Используется для безопасности и отладки.
RAG-база знаний агента: content (текст), embedding (vector), metadata (jsonb). Используется для поиска ответов по документации.
История чатов из n8n AI-агента. session_id + message (jsonb) + created_at.
Логи чатов: client_id, order_id, sender, message_content, is_read.
Активность проекта: stat_name, stat_value (jsonb). Для дашборда аналитики.
Блокировки для предотвращения race conditions в n8n workflows.
Шаблоны сообщений: title, category, content, trigger_keywords. Подготовлены, пока не наполнены.
Таблицы для будущего встроенного чата на веб-панели: user_id, title, role (user/assistant/system), content.
n8n — оркестратор автоматизации. Связывает NextBot, Supabase и Chatwoot. Весь путь от первого сообщения клиента до создания заявки — полностью автоматический.
Webhook из NextBot → n8n → находит/создаёт Contact в Chatwoot → находит/создаёт Conversation → создаёт Message. Использует таблицу channel_mapping и sync_message_log для идемпотентности.
Оператор пишет в Chatwoot → Webhook → n8n → определяет telegram_chat_id через channel_mapping → шлёт в Telegram Bot API.
Таблица sync_message_log (167 записей) + workflow_locks (18 записей) — гарантируют, что одно сообщение не будет отправлено дважды.
Два источника аналитики: Chatwoot (диалоги и эффективность) и Supabase Dashboard (данные, заявки, логи).
Количество диалогов, среднее время первого ответа, процент решённых AI vs оператором.
Сколько диалогов обработал каждый оператор, средняя оценка, время ответа.
Все сообщения за всё время — доступны для ревью и обучения.
12 заявок с фильтрацией по статусу, дате, сумме. Визуальный интерфейс (Table Editor).
11 клиентов: Telegram ID, объём сделок, риск-уровень, статус верификации.
69 записей: кто, когда, что сделал. IP-адреса, severity, old/new data.
Встроенный SQL-редактор для произвольных запросов. Можно строить кастомные отчёты.
Supabase Dashboard → SQL EditorПолный комплект документации для самостоятельной работы с системой. Все файлы — в проектной директории в формате Markdown.
Как мониторить диалоги, вмешиваться, управлять AI-ботом. Команды: «бот продолжай», «стоп», «менеджер ответит».
📄 Открыть документ →(1) AI справляется сам — просто мониторить. (2) Вмешаться и ответить. (3) Передать коллеге.
Полный справочник по платформе: агенты, функции, сценарии, база знаний, интеграции, диалоги, рассылки.
docs/ai-agent/nextBot/00-overview.md … 08-broadcasts.mdКак менять промпт, добавлять функции, настраивать параметры памяти.
📄 Открыть документ →Для каждой функции: параметры, URL, headers, body, примеры ответов.
docs/ai-agent/nextBot/functions/*.mdДокумент перехода: как работала старая система и почему перешли на AI.
📄 Открыть документ →Следующие компоненты были разработаны и внедрены исполнителем дополнительно к договорным обязательствам. Они значительно расширяют возможности платформы.
Полноценная веб-панель управления, созданная до заключения договора как демонстрация технических возможностей. Стек: React 18 + Refine v4 + Ant Design v5 + Vite.
Общая статистика: количество заявок, клиентов, выручка, конверсия. Графики и виджеты.
apps/admin-panel/src/pages/dashboard/CRUD для заявок: список, фильтры, детали, смена статуса, назначение менеджера.
apps/admin-panel/src/pages/orders/Карточки клиентов, история сделок, уровень риска, статус верификации.
apps/admin-panel/src/pages/users/Редактирование market_rates: себестоимость, наценка, минимальные суммы по городам.
apps/admin-panel/src/pages/rates/Просмотр всех действий в системе: кто, когда, что изменил.
apps/admin-panel/src/pages/audit-logs/Управление операторами и администраторами: роли, привязка к городу, приглашения.
apps/admin-panel/src/pages/system-users/Настройки учётной записи оператора.
apps/admin-panel/src/pages/profile/Полная настройка production-сервера (VPS, Ubuntu 24.04 LTS, AMD EPYC) с нуля.
Rails + Sidekiq + PostgreSQL + Redis. 5 контейнеров. Полностью изолированная CRM.
HTTPS для всех сервисов. Let's Encrypt автопродление.
Key-only SSH, отключён root login, firewall, защита от brute-force.
Cron-задание в 03:00: резервное копирование Chatwoot DB. Скрипт: /srv/eastpay/backups/backup-chatwoot.sh
Автозапуск Node.js приложений при перезагрузке сервера.