# Коммерческое предложение

## Проект

Система сигналов на базе 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-провайдера;
- доступ к ботам, список ботов и учетные данные предоставляются заказчиком.
