<ol><li><p>Внимание! Большая часть работы готова, нужно только все собрать вместе! <br><br><br><b>Существует готовый Python-код бота</b>, который умеет:</p><ul><li><p>Выполнять логику торговли (DCA, ReBuy, SL, Trailing и т.д.), написан с использованием библиотеки <code>ccxt</code>.</p></li><li><p>Работает «вживую» с реальными ордерами.</p></li></ul></li><li><p><b>Нужно развернуть многопользовательскую систему</b>, где каждый пользователь в своём кабинете может:</p><ul><li><p>Зарегистрировать/авторизоваться (логин и пароль).</p></li><li><p>Добавить/отредактировать свои API-ключи (Binance, KuCoin и т.д.).</p></li><li><p>Запустить «несколько экземпляров бота» (каждый с настройками: торговая пара, параметры SL/TP/DCA и пр.).</p></li><li><p>Отслеживать состояние бота(ботов): логи, статистику, открытые/закрытые сделки.</p></li></ul></li><li><p><b>Есть сервер на Ubuntu</b>, где всё должно работать:</p><ul><li><p>Планируется использовать Python (Django или другой веб-фреймворк на Python) для Личного кабинета.</p></li><li><p>Бэкэнд (бот) нужно интегрировать с веб-приложением (запуск/остановка/мониторинг).</p></li><li><p>Запуск «множества экземпляров» бота под одним сервером (или несколькими, если будет масштабирование).</p></li></ul></li><li><p><b>Требуется</b>:</p><ul><li><p>ТЗ для <b>Python-бэкенд-разработчика</b>, который доработает код бота, обеспечит возможность запускать несколько экземпляров, хранить их настройки, логику взаимодействия с базой.</p></li><li><p>ТЗ для <b>веб-разработчика (Django + Frontend)</b>, который создаст личный кабинет, авторизацию и привяжет к боту (через REST API, Celery, системные процессы или иные механизмы).</p></li></ul></li></ol>2. Техническое задание (черновой вариант)2.1. Python-бэкенд-разработчик<p><b>Задачи:</b></p><ol><li><p><b>Доработать код существующего бота</b>:</p><ul><li><p>Разделить «бэктестовую» часть и «онлайн-часть» (реальные ордера).</p></li><li><p>Уточнить, где и как хранить конфигурацию торговых параметров (SL/TP/Trailing, период ожидания и т.п.).</p></li><li><p>Добавить (или адаптировать) функционал для работы с <b>различными API-ключами</b> — чтобы бот мог обращаться к разным аккаунтам на биржах (Binance, KuCoin и пр.).</p></li><li><p>Оптимизировать работу с <code>ccxt</code> (Rate Limit, повторные попытки при ошибках и т.д.).</p></li></ul></li><li><p><b>Сделать архитектуру, позволяющую запускать несколько экземпляров бота</b>:</p><ul><li><p>Проработать, как именно будет запускаться бот:</p><ul><li><p>как отдельный процесс/сервис (например, через Celery, systemd или Supervisor),</p></li><li><p>или многопоточность/мультипроцессность в рамках одного приложения Python.</p></li></ul></li><li><p>Обеспечить независимость параметров (API-ключи, настройки) для каждого экземпляра.</p></li><li><p>Прописать методы (или API) для <i>запуска</i>, <i>остановки</i> и <i>мониторинга</i> каждого экземпляра.</p></li></ul></li><li><p><b>Интеграция с базой данных</b>:</p><ul><li><p>Определить структуру таблиц в СУБД (например, PostgreSQL):</p><ul><li><p><code>users</code> (пользователи),</p></li><li><p><code>bots</code> (экземпляры бота с полями: пользователь, настройки, статус, PID/идентификатор и т.д.),</p></li><li><p><code>bot_logs</code> (логи или результаты/сделки).</p></li></ul></li><li><p>Предусмотреть хранение в таблицах основных метрик/статусов: время запуска, текущий баланс, торговая пара и т.д.</p></li><li><p>При необходимости обеспечивать сохранение логов в текстовые файлы + сохранение ссылок на них в БД или S3.</p></li></ul></li><li><p><b>API или сервисный модуль</b> (для веб-приложения):</p><ul><li><p>Создать методы/функции, которые позволят Django-приложению «вызывать» действия бота: <code>start_bot(...)</code>, <code>stop_bot(...)</code>, <code>get_bot_status(...)</code> и т.п.</p></li><li><p>Возвращать информацию о текущих сделках, ордерах, ошибках.</p></li><li><p>Формат взаимодействия: REST (JSON), gRPC или вызов Python-функций напрямую (зависит от архитектуры).</p></li></ul></li><li><p><b>Безопасность и обработка ошибок</b>:</p><ul><li><p>Аутентификация/авторизация (каждый бот привязан к конкретному пользователю).</p></li><li><p>Обработка ошибок при подключении к бирже (например, неверные API-ключи).</p></li><li><p>Логи (в том числе исключений/ошибок) + документация, где смотреть эти логи.</p></li></ul></li></ol>2.2. Веб-разработчик (Django + Frontend)<p><b>Задачи:</b></p><ol><li><p><b>Создать личные кабинеты</b>:</p><ul><li><p>Регистрация/авторизация пользователей (e-mail + пароль или другое).</p></li><li><p>Раздел «профиль» (добавление/редактирование API-ключей).</p></li><li><p>Технически, Django предоставляет встроенную систему auth, можно расширить её модель <code>User</code>.</p></li></ul></li><li><p><b>Интерфейс управления ботами</b>:</p><ul><li><p>Страница «Мои боты»: список всех экземпляров (название, статус, торговая пара).</p></li><li><p>Кнопка «Создать бота» (открывается форма ввода параметров: торговая пара, SL, TP, DCA и т.д.).</p></li><li><p>Кнопка «Запустить» / «Остановить» и ручные действия (пр. «Закрыть все позиции»), если это предусмотрено логикой бота.</p></li><li><p>Отображение <b>логов</b> и <b>статистики</b> по конкретному боту (PNL, дата запуска, время последнего действия).</p></li></ul></li><li><p><b>Интеграция с бэкендом (ботом)</b>:</p><ul><li><p>Вызывать методы API (или Python-функции), предоставленные Python-бэкенд-разработчиком:</p><ul><li><p><code>POST /api/bots/start</code> — запуск</p></li><li><p><code>POST /api/bots/stop</code> — остановка</p></li><li><p><code>GET /api/bots/<bot_id>/status</code> — получение статуса</p></li><li><p>и т.д.</p></li></ul></li><li><p>Принимать ответы (JSON) и обновлять интерфейс (через Ajax, fetch, axios, или штатные средства Django).</p></li><li><p>Обрабатывать возможные ошибки (неправильные ключи, нет ответа от биржи).</p></li></ul></li><li><p><b>Frontend-часть</b>:</p><ul><li><p>Сделать <b>адаптивный дизайн</b> (под десктоп и мобайл) — хотя бы базовый.</p></li><li><p>Использовать Django Templates или «современный» фреймворк (React/Vue) в связке с Django Rest Framework — по согласованию.</p></li><li><p>Если нужно графически отображать результаты, удобнее использовать готовые JS-библиотеки для графиков (Chart.js, Highcharts и т.д.).</p></li></ul></li><li><p><b>Безопасность и хранение ключей</b>:</p><ul><li><p>Веб-приложение должно передавать и хранить API-ключи безопасно. Как минимум — шифровать пароли в базе, не хранить ключи в виде открытого текста.</p></li><li><p>Настроить HTTPS (SSL-сертификат).</p></li><li><p>Возможно, 2FA (двухфакторная аутентификация) в будущем, если требуется повышенная безопасность.</p></li></ul></li><li><p><b>Структура БД</b>:</p><ul><li><p>Модель <code>User</code> (возможно, расширенная).</p></li><li><p>Модель <code>BotInstance</code> (поля: owner (User), status, параметры, дата запуска, PID и т.д.).</p></li><li><p>Модель <code>BotLog</code> или хранение логов в файлах (по согласованию).</p></li></ul></li><li><p><b>Развёртывание</b>:</p><ul><li><p>Запуск Django-приложения под gunicorn / uwsgi.</p></li><li><p>Настройка Nginx в качестве reverse proxy.</p></li><li><p>Подготовить документацию, как развернуть на Ubuntu.<br><br>Внимание! Большая часть работы готова, нужно только все собрать вместе! </p></li></ul></li></ol>