Задачи чат-бота: интерактивное меню или каталог, приём текстовых заказов, финансовые операции. Продукт: для анонимных подарков. Техзадание есть. # Техническое задание на разработку Telegram-бота для анонимных подарков ## 1. Общая концепция проекта Необходимо разработать Telegram-бота для создания и получения анонимных подарков. Основная механика бота заключается в том, что пользователь создаёт собственный профиль подарков, указывает пожелания и данные для доставки. Другие пользователи могут перейти на его страницу через Telegram, выбрать подарок из встроенного каталога товаров и оплатить его. Главная особенность проекта: **отправитель не видит адрес, номер телефона и другие личные данные получателя.** Все данные для доставки хранятся внутри системы и используются только для оформления и доставки заказа. В боте должен быть реализован **импортированный каталог товаров из поддерживаемых маркетплейсов**. Пользователь должен иметь возможность открыть поиск, написать название любого интересующего предмета, например: * iPhone; * наушники; * кроссовки; * LEGO; * духи; * клавиатура; * игрушка; * подарок определённого бренда; и получить список подходящих товаров из каталога. Пользователь не должен вручную искать ссылку на товар. Поиск товаров должен происходить непосредственно внутри Telegram-бота. --- # 2. Основная механика работы В проекте существует два основных типа пользователей: 1. **Получатель подарков.** 2. **Отправитель подарка.** Один и тот же пользователь может выступать в обеих ролях. --- # 3. Регистрация и запуск бота После запуска бота пользователю отображается приветственное сообщение с кратким описанием сервиса. Например: «Создай свой список желаемых подарков и поделись им с друзьями. Они смогут подарить тебе любой товар, при этом твой адрес останется скрытым». Основные кнопки: * ?? Мои подарки; * ?? Найти подарок; * ?? Мой профиль; * ?? Мои заказы; * ?? Настройки; * ? Помощь. --- # 4. Профиль пользователя Каждый пользователь должен иметь собственный профиль. В профиле отображаются: * Telegram-имя; * username; * фотография профиля, если доступна; * описание; * пожелания; * список желаемых подарков; * настройки приватности. Пользователь может самостоятельно указать: * имя или псевдоним; * описание; * список пожеланий; * любимые категории товаров; * любимые бренды; * размеры одежды; * размеры обуви; * предпочтения; * подарки, которые пользователь не хочет получать. --- # 5. Данные для доставки Получатель должен иметь возможность указать: * имя получателя; * номер телефона; * город; * адрес доставки; * индекс; * дополнительные комментарии для доставки. Данные должны храниться в защищённой части системы. **Ни один другой пользователь не должен иметь возможности увидеть эти данные.** Отправитель подарка видит только информацию о выбранном товаре и статус доставки. --- # 6. Импортированный каталог товаров В боте должен существовать полноценный каталог товаров. Каталог должен импортироваться из подключённых маркетплейсов. На первом этапе могут поддерживаться: * Ozon; * Wildberries; * Яндекс Маркет; * другие маркетплейсы, которые будут добавлены позднее. Каталог должен содержать информацию о товарах: * название; * фотография; * цена; * описание; * категория; * бренд; * маркетплейс; * ссылка или внутренний идентификатор товара; * наличие товара. --- # 7. Поиск товаров В Telegram-боте должна быть отдельная функция: **?? Найти подарок** После нажатия бот предлагает пользователю написать название товара. Например: «Напишите, что вы хотите найти». Пользователь пишет: `AirPods` После этого бот выполняет поиск по импортированному каталогу и показывает подходящие товары. Результаты поиска должны отображаться в виде карточек. Каждая карточка содержит: * фотографию; * название товара; * цену; * маркетплейс; * краткую информацию; * кнопку «Открыть»; * кнопку «Добавить в желания»; * кнопку «Подарить». Если найдено много товаров, необходимо реализовать: * пагинацию; * кнопку «Следующий товар»; * кнопку «Предыдущий товар»; * фильтры; * сортировку. --- # 8. Фильтры каталога Пользователь должен иметь возможность фильтровать товары. Основные фильтры: * маркетплейс; * минимальная цена; * максимальная цена; * категория; * бренд; * наличие; * рейтинг, если эта информация импортируется. Также должна быть сортировка: * сначала дешёвые; * сначала дорогие; * популярные; * по релевантности. --- # 9. Карточка товара После выбора товара открывается подробная карточка. Карточка должна содержать: * фотографию или несколько фотографий; * название; * стоимость; * описание; * характеристики; * маркетплейс; * наличие; * кнопку «Добавить в желания»; * кнопку «Подарить». Если пользователь добавляет товар себе, он появляется в его списке желаемых подарков. --- # 10. Создание списка желаемых подарков Пользователь может самостоятельно искать товары через встроенный каталог и добавлять их в свой список. Например: Пользователь ищет: `PlayStation 5` Выбирает нужную версию. Нажимает: **«Добавить в мои желания»** Товар появляется в его профиле. Пользователь может: * удалить товар; * изменить приоритет; * отметить товар как особенно желаемый; * скрыть товар; * переместить в другую категорию. --- # 11. Список желаний пользователя У каждого пользователя должна быть персональная страница или интерфейс списка желаний внутри Telegram. Другой пользователь должен иметь возможность открыть список через специальную ссылку. Пример механики: `https://t.me/НазваниеБота?start=gift_уникальный_id` При переходе бот открывает список подарков конкретного пользователя. Отправитель видит: * имя получателя; * фотографию; * описание; * пожелания; * список желаемых товаров. При этом он **не видит адрес доставки и другие личные данные**. --- # 12. Возможность подарить любой товар из каталога Отправитель не ограничивается только заранее добавленными желаниями пользователя. Он должен иметь возможность: 1. Открыть профиль получателя. 2. Нажать кнопку «Найти другой подарок». 3. Перейти во встроенный поиск. 4. Найти любой товар из импортированного каталога. 5. Выбрать товар. 6. Оформить подарок для конкретного получателя. Таким образом, отправитель может подарить: * товар из списка желаний; * любой другой товар из общего каталога. --- # 13. Оформление подарка После выбора товара пользователь нажимает: **?? Подарить** Бот показывает: * название товара; * фотографию; * стоимость; * комиссию сервиса; * итоговую стоимость. Пример: Стоимость товара: 5 000 ? Комиссия сервиса: 2% Комиссия: 100 ? Итого: 5 100 ? После этого отображается кнопка: **Оплатить подарок** --- # 14. Комиссия сервиса С каждой покупки сервис получает комиссию. Стандартная комиссия: **около 2% от стоимости товара.** Комиссия рассчитывается автоматически. Формула: `Стоимость товара ? 2%` Итоговая стоимость: `Стоимость товара + комиссия` Размер комиссии должен изменяться через административную панель. --- # 15. Анонимность Отправитель подарка не должен видеть: * точный адрес получателя; * номер телефона; * полное имя, если пользователь решил использовать псевдоним; * другие личные данные. Отправитель видит только: * профиль получателя; * выбранный товар; * стоимость; * статус заказа. Статусы заказа: * ожидает оплаты; * оплачен; * заказ оформляется; * отправлен; * доставлен; * отменён. --- # 16. Сообщение к подарку Перед оплатой отправитель может добавить сообщение. Например: «Надеюсь, тебе понравится ??» Также должны быть варианты: * отправить анонимно; * показать имя отправителя; * отправить без сообщения. Получатель видит сообщение после оформления или получения подарка. --- # 17. Основной дизайн Основной дизайн Telegram-бота и всех визуальных элементов должен быть выполнен в **тёмно-розовой тематике**. Визуальный стиль: * современный; * минималистичный; * премиальный; * яркий; * ориентированный на молодую аудиторию. Основные цвета: * тёмно-розовый; * насыщенный розовый; * тёмные оттенки; * дополнительные светлые акценты. Темно-розовая тема должна использоваться в: * главном меню; * каталоге; * карточках товаров; * кнопках; * профилях пользователей; * списках желаний; * оформлении заказа. Если для интерфейса используется Telegram Mini App, визуальная часть должна быть адаптирована под мобильные устройства. --- # 18. Раздел товаров 18+ В каталоге должна быть отдельная категория: **?? 18+** При переходе пользователя в эту категорию необходимо выполнить проверку возраста. Перед входом отображается предупреждение: «Этот раздел содержит товары, предназначенные только для пользователей старше 18 лет». Кнопки: * ?? Мне есть 18 лет; * ?? Вернуться назад. Если пользователь подтверждает возраст, ему открывается каталог 18+. --- # 19. Изменение темы для категории 18+ При переходе в раздел 18+ основной дизайн должен автоматически изменяться. ### Стандартная тема: **Тёмно-розовая.** ### Тема категории 18+: **Чёрно-оранжевая.** При активации категории 18+ должны изменяться: * фон; * кнопки; * карточки товаров; * элементы навигации; * фильтры; * корзина; * страница оформления заказа. Основная палитра 18+: * чёрный; * тёмно-серый; * оранжевый; * тёмно-оранжевый. Переход между темами должен быть плавным. После выхода из категории 18+ бот или Mini App должен вернуться к стандартной тёмно-розовой теме. --- # 20. Важное ограничение темы 18+ Черно-оранжевая тема применяется только во время: * просмотра каталога 18+; * просмотра товара категории 18+; * добавления такого товара в список желаний; * оформления заказа товара категории 18+. Обычные разделы бота продолжают использовать стандартную темно-розовую тему. --- # 21. Оплата После подтверждения заказа пользователь переходит к оплате. Необходимо реализовать безопасную оплату через подключённую платёжную систему. После успешной оплаты: 1. Заказ получает статус «Оплачен». 2. Система сохраняет заказ. 3. Получатель определяется автоматически. 4. Адрес получателя используется для оформления доставки. 5. Отправитель не получает доступ к адресу. 6. Пользователи получают соответствующие уведомления. --- # 22. Импорт и обновление каталога Каталог не должен быть статичным. Необходимо реализовать систему импорта товаров. Система должна: * получать товары из поддерживаемых источников; * добавлять их в собственную базу данных; * обновлять цены; * обновлять наличие; * обновлять фотографии; * удалять недоступные товары. Обновление должно выполняться автоматически по расписанию. Частота обновления должна настраиваться. Например: * каждые 30 минут; * каждый час; * несколько раз в день. --- # 23. Поиск по каталогу Поиск должен работать быстро даже при большом количестве товаров. Необходимо предусмотреть: * поиск по названию; * поиск по ключевым словам; * поиск по бренду; * поиск по категории; * исправление или игнорирование незначительных ошибок в названии; * поиск на русском языке; * возможность добавления других языков в будущем. Пример: Пользователь пишет: `айфон 15` Поиск должен также находить: `Apple iPhone 15`. Пользователь пишет: `беспроводные наушники` Бот показывает соответствующие товары из всех доступных маркетплейсов. --- # 24. Защита от покупки уже подаренного товара Если товар находится в списке желаний пользователя и один человек начал его покупать, необходимо предотвратить ситуацию, когда несколько человек одновременно купят один и тот же подарок. После начала оформления товар может временно получать статус: **«Бронируется»** После успешной оплаты: **«Подарено»** Другие пользователи должны видеть, что данный товар уже выбран или подарен. При отмене или неуспешной оплате бронь автоматически снимается через установленный промежуток времени. --- # 25. Мои подарки В разделе «Мои подарки» пользователь видит: * активные желания; * забронированные подарки; * подаренные товары; * полученные товары. Пользователь может: * добавить новый товар; * удалить товар; * изменить приоритет; * скрыть подарок; * отметить подарок как полученный. --- # 26. Отправленные подарки В разделе отправителя должны отображаться: * фотография товара; * название; * стоимость; * дата покупки; * статус доставки. Отправитель не видит личные данные получателя. --- # 27. Уведомления Получатель получает уведомления: * вам подарили подарок; * подарок оформлен; * подарок отправлен; * подарок доставлен. Отправитель получает уведомления: * оплата прошла успешно; * заказ оформляется; * подарок отправлен; * подарок доставлен. --- # 28. Административная панель Необходимо создать административную панель. Администратор должен иметь возможность: ### Пользователи * просматривать пользователей; * блокировать; * удалять; * просматривать статистику. ### Каталог * добавлять источники товаров; * запускать импорт; * отключать маркетплейсы; * редактировать категории; * удалять товары; * модерировать товары 18+. ### Заказы * просматривать все заказы; * изменять статусы; * отменять заказы; * решать спорные ситуации. ### Финансы * просматривать сумму заказов; * просматривать комиссию; * изменять процент комиссии; * просматривать статистику доходов. --- # 29. Техническая архитектура Проект должен состоять из следующих основных частей: 1. **Telegram-бот.** 2. **Backend/API.** 3. **База данных пользователей и заказов.** 4. **Отдельная база или поисковый индекс каталога товаров.** 5. **Система импорта товаров из маркетплейсов.** 6. **Система обновления цен и наличия.** 7. **Платёжная интеграция.** 8. **Административная панель.** 9. **Telegram Mini App для удобного просмотра большого каталога.** Для большого каталога рекомендуется использовать именно **Telegram Mini App**, так как стандартные кнопки Telegram-бота будут неудобны для просмотра большого количества товаров, поиска, фильтрации и карточек. При этом сам Telegram-бот отвечает за: * регистрацию; * уведомления; * профиль; * ссылки на подарки; * заказы; * сообщения; * запуск Mini App. А каталог, поиск и выбор товаров могут работать внутри Mini App. --- # 30. Главный пользовательский сценарий ## Получатель 1. Запускает Telegram-бота. 2. Создаёт профиль. 3. Указывает данные для доставки. 4. Открывает каталог. 5. Находит нужные товары через поиск. 6. Добавляет их в список желаний. 7. Получает персональную ссылку. 8. Отправляет ссылку друзьям или подписчикам. ## Отправитель 1. Получает ссылку на профиль получателя. 2. Открывает Telegram-бота. 3. Видит список желаний. 4. Может выбрать подарок из списка. 5. Или нажать «Найти другой подарок». 6. Через поиск находит любой товар в общем каталоге. 7. Выбирает товар. 8. Добавляет сообщение. 9. Оплачивает подарок. 10. Отслеживает статус доставки. При этом на всех этапах: **адрес получателя остаётся скрытым от отправителя.** --- # 31. Главная идея проекта Telegram-бот представляет собой сервис анонимных подарков со встроенным каталогом товаров. Пользователь может создать список желаний или просто указать свои предпочтения. Другой пользователь может открыть его профиль, выбрать подарок из списка либо самостоятельно найти **любой доступный товар через встроенный поиск каталога**. После оплаты подарок оформляется и отправляется получателю. **Отправитель никогда не видит адрес доставки получателя.** Основная визуальная тема проекта — **тёмно-розовая**. При работе с товарами категории **18+** интерфейс автоматически переключается на **чёрно-оранжевую тему**.