# Коммерческое предложение ## Проект Система сигналов на базе Alpinbet с парсером, backend API, PWA-клиентом, push-уведомлениями и административной панелью. ## 1. Цель проекта Разработка системы для получения сигналов из источника Alpinbet, их обработки и доставки пользователям в режиме, близком к реальному времени, с разграничением доступа по подписке и по ботам. ## 2. Состав работ ### 2.1 Backend Будет реализовано: - регистрация и авторизация пользователей; - роли пользователей и базовое разграничение прав; - система подписок с датой окончания и проверкой доступа; - разграничение доступа к ботам; - API для PWA-клиента и административной панели; - прием и обработка сигналов от парсера; - логика отправки уведомлений; - базовое логирование системных событий. Ограничения: - backend не гарантирует 100% доставку уведомлений, так как доставка зависит от внешних push-провайдеров и настроек устройства пользователя; - при изменении бизнес-логики доступа, тарифов или ролей требуется отдельная доработка. ### 2.2 Интеграция с Alpinbet Будет реализовано: - подключение к источнику данных Alpinbet по учетным данным заказчика; - регулярный опрос страниц с интервалом около 20 секунд; - сохранение сигналов в систему; - защита от дублирования сигналов; - привязка сигнала к конкретному боту/источнику; - поддержка встроенного списка ботов в парсере. На текущем этапе в парсер зашиваются следующие боты: - `raketafon` — `https://alpinbet.com/dispatch/antigol/raketafon` - `pobeda-1-comand` — `https://alpinbet.com/dispatch/antigol/pobeda-1-comand` - `raketabas` — `https://alpinbet.com/dispatch/antigol/raketabas` - `sol-1www` — `https://alpinbet.com/dispatch/antigol/sol-1www` - `fon-stb` — `https://alpinbet.com/dispatch/antigol/fon-stb` Важно: - доступ к Alpinbet, учетные данные и фактическая структура страниц находятся на стороне заказчика; - при изменении API, HTML-структуры, механизма авторизации или адресов страниц Alpinbet требуется отдельная доработка; - при недоступности источника система не генерирует сигналы; - качество и стабильность парсинга напрямую зависят от стабильности внешнего источника. ### 2.3 Push-уведомления Будет реализовано: - отправка уведомлений при появлении новых сигналов; - регистрация устройства пользователя; - доставка через web push; - базовая обработка невалидных push-подписок. Ограничения: - на iPhone push-уведомления работают через PWA и зависят от Safari, разрешений пользователя и системных настроек; - уведомления могут приходить с задержкой; - гарантируется попытка отправки уведомления, но не гарантируется фактическое получение на устройстве. ### 2.4 Клиентское приложение (PWA) Будет реализовано: - доступ через браузер как web-приложение; - установка на телефон как PWA; - авторизация пользователя; - просмотр списка сигналов; - просмотр срока действия подписки; - отображение доступных пользователю ботов; - работа с push-уведомлениями в рамках возможностей браузера. Ограничения: - приложение является PWA, а не нативным приложением; - публикация в App Store и Google Play не входит в данный этап; - функциональность ограничена возможностями браузера и платформенных ограничений PWA. ### 2.5 Административная панель Будет реализовано: - просмотр списка пользователей; - управление сроками доступа и подписками; - выдача и продление доступа; - управление доступом к ботам; - базовый просмотр сигналов и статусов доставки уведомлений. Не входит: - сложная аналитика; - финансовая отчетность; - CRM-функции и продвинутая история изменений. ### 2.6 Запуск системы Будет выполнено: - настройка серверного окружения; - деплой проекта; - базовая проверка работоспособности backend, parser, frontend и push-механизма; - проверка получения сигналов из подключенных ботов. ## 3. Что не входит в проект - публикация в App Store / Google Play; - интеграция платежных систем; - юридические документы и правовая часть; - техническая поддержка сторонних сервисов и поставщиков; - доработки, вызванные изменениями на стороне Alpinbet, Firebase, браузеров или операционных систем; - SLA на внешние сервисы и гарантии бесперебойной работы источника данных. ## 4. Технические ограничения и допущения - система работает по модели best effort для внешних интеграций; - парсер зависит от доступности Alpinbet и сохранности учетной сессии; - при изменении структуры страниц могут потребоваться срочные корректировки селекторов и логики парсинга; - скорость появления сигнала у пользователя зависит от источника, интервала опроса, сети, браузера и push-провайдера; - доступ к ботам, список ботов и учетные данные предоставляются заказчиком.