1. Регистрация и аутентификация пользователя
1.1 Общий процесс
Каждый новый пользователь должен зарегистрироваться в системе. Регистрация двухэтапная: сначала по номеру телефона, затем верификация по SMS коду.1.2 Пошаговый процесс
Шаг 1: Пользователь вводит номер телефона- Пользователь открывает приложение/сайт Chat Bridge
- Вводит свой номер телефона (например: +7 999 123-45-67)
- Система нормализует номер (приводит к единому формату: +79991234567)
- Система генерирует случайный 4-значный код (например: 1234)
- Система отправляет SMS: “Ваш код для входа в Chat Bridge: 1234”
- Код действителен 5 минут
- Пользователь получает SMS и вводит код в приложение
- Если код неверный — ошибка, нужно попросить новый код
- Если прошло > 5 минут — код истёк, нужно запросить новый
- Если это первая регистрация — система создаёт нового пользователя
- Если это повторный вход — система находит существующего пользователя
- Система отмечает пользователя как “верифицированного”
- Система выдаёт пользователю уникальный API токен (длинная строка вроде
a1b2c3d4e5f6g7h8...) - Этот токен нужен для всех последующих запросов к системе
- Пользователь может теперь видеть свои компании и данные
1.3 Специальный случай: Регистрация по пригласительной ссылке
Если пользователь регистрируется, переходя по пригласительной ссылке, процесс немного отличается: Без пригласительной ссылки:- Вход → SMS верификация → Пользователь видит пустой список компаний → Может создать свою компанию
- Пользователь нажимает на ссылку → Вход → SMS верификация → Автоматическое присоединение к компании → Может сразу видеть данные компании
- Пользователь автоматически добавляется в компанию с определённой ролью (MAINTAINER, RESPONSIBLE или MANAGER)
- Все объявления компании автоматически привязываются к пользователю (по номеру телефона)
- Счётчик использований ссылки увеличивается на 1
- Если ссылка имела лимит использований, и он исчерпан, других пользователей больше не смогут присоединиться
1.4 Например: Процесс присоединения нового менеджера
2. Жизненный цикл компании
2.1 Общее описание
Компания в системе проходит несколько этапов, от создания до полной работы. На каждом этапе система требует выполнения определённых действий.2.2 Пять основных этапов
Этап 1: СОЗДАНИЕ (NEW)
Что происходит:- Пользователь (MAINTAINER) создаёт новую компанию
- Вводит название компании (обязательно)
- Опционально вводит юридические реквизиты (ИНН, ОГРН, банковские реквизиты и т.д.)
- Создаёт запись о компании в базе данных
- Автоматически присваивает статус WAITING_FOR_PROVIDER_SELECTION
- Добавляет создателя в компанию с ролью MAINTAINER
Этап 2: ВЫБОР ПЛАТФОРМ (WAITING_FOR_PROVIDER_SELECTION)
Что происходит:- Пользователь выбирает, какие платформы хочет подключить
- Avito — ОБЯЗАТЕЛЬНО
- Cian — опционально (флаг
use_cian = true/false) - Domclick — опционально (флаг
use_domclick = true/false)
- Сохраняет выбор пользователя
- Если выбран Avito → переходит в статус WAITING_FOR_AVITO_FEED
- Если выбран Cian → позже перейдёт в статус WAITING_FOR_CIAN_ACCESS
- Если выбран Domclick → позже перейдёт в статус WAITING_FOR_DOMCLICK_ACCESS
Этап 3: НАСТРОЙКА AVITO (WAITING_FOR_AVITO_FEED → WAITING_FOR_AVITO_ACCESS)
Шаг 3.1: Ввод XML фида Что происходит:- Пользователь вводит URL XML фида со своими объявлениями
- URL примерно такой:
https://example.com/my_real_estate_feed.xml
- Сохраняет URL
- Пока ничего не загружает (загрузит позже)
- Переходит в статус WAITING_FOR_AVITO_ACCESS
- Пользователь нажимает “Подключить Avito”
- Переводится на сайт Avito (как авторизация в соцсети)
- Вводит логин и пароль от своего аккаунта на Avito
- Avito спрашивает: “Разрешить Chat Bridge доступ к вашему аккаунту?”
- Пользователь нажимает “Разрешить”
- Получает от Avito специальный код авторизации
- Обменивает этот код на access_token и refresh_token
- Сохраняет токены в зашифрованном виде
- Переходит в следующий статус
- Переходит в WAITING_FOR_CIAN_ACCESS или WAITING_FOR_DOMCLICK_ACCESS
- Если других платформ нет → переходит в WAITING_FOR_FULL_SYNCHRONIZATION
Этап 4: НАСТРОЙКА ДРУГИХ ПЛАТФОРМ (если выбраны)
Для Cian:- Пользователь берёт
client_secretиз личного кабинета Cian - Вводит его в Chat Bridge
- Система проверяет, работает ли токен (делает запрос в Cian API)
- Если работает → сохраняет токен
- Если не работает → ошибка, нужно проверить токен
- Пользователь берёт два токена из личного кабинета:
stats_secretиchats_secret - Вводит ID своей компании в системе Domclick
- Вводит оба токена в Chat Bridge
- Система проверяет оба токена отдельно
- Если оба работают → сохраняет
- Если один не работает → ошибка
Этап 5: ПОЛНАЯ СИНХРОНИЗАЦИЯ (WAITING_FOR_FULL_SYNCHRONIZATION)
Что происходит:- Система запускает автоматическую синхронизацию всех данных
- Это может занять от нескольких минут до часа (зависит от объёма)
-
Загрузка объявлений из Avito:
- Скачивает XML фид по URL
- Парсит объявления (адрес, цена, описание, фото)
- Получает публичные ID объявлений через Avito API
- Загружает объявления в базу данных
-
Привязка объявлений к менеджерам:
- Для каждого объявления есть номер телефона менеджера
- Система ищет в системе пользователя с таким номером телефона
- Если находит → привязывает объявление к этому пользователю
- Если не находит → объявление остаётся “свободным” (только владелец может видеть)
-
Загрузка чатов со всех платформ:
- Для каждой подключённой платформы (Avito, Cian, Domclick)
- Система запрашивает все активные чаты
- Сохраняет чаты в базу данных
-
Загрузка сообщений:
- Для каждого чата система загружает всю историю сообщений
- Сохраняет дату, время, текст, автора, статус доставки
-
Завершение:
- Если всё прошло успешно → статус меняется на COMPLETED
- Если была ошибка → статус остаётся WAITING_FOR_FULL_SYNCHRONIZATION
- Пользователь может попросить пересин хронизацию вручную
2.3 Состояние COMPLETED и дальнейшая работа
После завершения настройки:- Статус компании = COMPLETED
- Система работает в автоматическом режиме
- Фоновые процессы регулярно:
- Обновляют токены Avito (раз в час)
- Загружают новые чаты (каждые 15-30 минут)
- Загружают новые сообщения (каждые 15-30 минут)
- Добавить в компанию новых менеджеров
- Выключить платформу (например, перестать использовать Cian)
- Обновить токены вручную при ошибках
- Запросить полную повторную синхронизацию
3. Управление командой
3.1 Роли в компании
Каждый пользователь в компании имеет одну из трёх ролей:MAINTAINER (Владелец/Администратор)
Права:- Создавать и удалять компанию
- Изменять все данные компании (название, реквизиты)
- Создавать пригласительные ссылки для добавления других пользователей
- Управлять интеграциями (подключать/отключать платформы, обновлять токены)
- Видеть всех пользователей в компании и их роли
- Удалять пользователей из компании
- В каждой компании может быть несколько MAINTAINER
RESPONSIBLE (Ответственный)
Права:- Видеть все объявления и чаты компании
- Видеть данные всех менеджеров
- Создавать пригласительные ссылки
- НЕ может: управлять интеграциями, менять данные компании, удалять компанию
- Может быть несколько в компании
MANAGER (Менеджер)
Права:- Видеть объявления, которые к нему привязаны
- Видеть чаты по этим объявлениям
- Отвечать в чатах
- Видеть свой профиль
- НЕ может видеть: объявления других менеджеров, чаты других менеджеров, данные компании, настройки платформ
- Видит только свои объявления и чаты
3.2 Процесс добавления нового пользователя
Шаг 1: MAINTAINER или RESPONSIBLE создаёт пригласительную ссылку Шаг 2: Новый пользователь переходит по ссылке и регистрируется Шаг 3: Система автоматически присоединяет пользователя3.3 Отзыв пригласительной ссылки
Когда может быть нужно:- Ссылка была случайно отправлена не тому человеку
- Хотите изменить срок действия ссылки
- Хотите уменьшить лимит использований
- MAINTAINER / RESPONSIBLE удаляет ссылку
- Ссылка больше не работает
- Люди, которые уже присоединились по ссылке, остаются в компании
- Новые люди не смогут присоединиться по этой ссылке
4. Синхронизация данных
4.1 Общие принципы
Синхронизация = загрузка и обновление данных из внешних платформ в систему Chat Bridge. Почему нужна:- Каждый день добавляются новые чаты
- Клиенты пишут новые сообщения
- На платформах могут добавляться новые объявления
- Объявления: один раз при первой настройке, потом по требованию
- Чаты и сообщения: каждые 15-30 минут в автоматическом режиме
4.2 Синхронизация объявлений
Источник данных: XML фид Avito Процесс:- Система скачивает XML по URL
- Парсит каждое объявление:
- Адрес, описание
- Цена, площадь, количество комнат
- Фото
- Номер телефона менеджера (в описании или отдельно)
- Получает публичный ID объявления через Avito API
- Сохраняет в базу данных
- Для каждого объявления в XML есть номер телефона менеджера
- Система ищет пользователя с этим номером в компании
- Если находит → привязывает объявление
- Если не находит → объявление остаётся “свободным”
4.3 Синхронизация чатов и сообщений
Процесс: Для каждой подключённой платформы (Avito, Cian, Domclick):-
Запрос чатов:
- Система запрашивает у платформы: “Дай мне все активные чаты”
- Получает список чатов с ID клиента, названием объявления, датой последнего сообщения
-
Для каждого чата:
- Система запрашивает всю историю сообщений
- Загружает 100+ сообщений (в зависимости от платформы)
- Сохраняет текст, дату, автора, статус доставки
-
Привязка к объявлению:
- Система видит, какое объявление обсуждается в чате
- Ищет это объявление в базе данных
- Привязывает чат к объявлению
-
Привязка к клиенту:
- Система видит, кто написал в чат
- Ищет пользователя с этим номером телефона
- Если находит → привязывает чат к пользователю (как “клиент”)
- Если не находит → чат остаётся без привязки (но видна информация о клиенте)
4.4 Обновление токенов Avito
Когда нужно:- Все токены имеют срок действия (обычно 1 год или больше)
- За час до истечения система должна обновить токен
- Система проверяет: когда истекает текущий токен?
- Если осталось < 1 часа → система автоматически обновляет токен
- Для обновления используется refresh_token (специальный токен для обновления)
- Получает новый access_token и новую дату истечения
- Сохраняет новый токен в БД (в зашифрованном виде)
- Токен помечается как недоступный (
is_available = false) - Система не может загружать чаты из Avito
- MAINTAINER получает уведомление, что нужно переавторизоваться
5. Работа с чатами
5.1 Как видит менеджер
Когда менеджер открывает приложение, он видит единую ленту всех чатов со всех платформ, в которых он упомянут:5.2 Фильтрация чатов
Менеджер может фильтровать ленту по разным параметрам: По статусу прочтения:- Только непрочитанные чаты
- Только прочитанные чаты
- Все чаты
- Только чаты из Avito
- Только чаты из Cian
- Только чаты из Domclick
- Любая комбинация
- Только входящие (клиент написал)
- Только исходящие (менеджер писал)
- Оба
- Только активные чаты
- Только архивные чаты
- По имени клиента
- По тексту сообщения
- По адресу объявления
5.3 Просмотр чата и истории
Когда менеджер нажимает на чат:-
Система показывает:
- Имя клиента
- Номер телефона клиента
- Название объявления и фото
- Адрес объекта
- Цена объекта
- Полная история сообщений в чате
-
История сообщений:
- Все сообщения отсортированы от старых к новым
- Видно, кто написал (менеджер или клиент)
- Видна дата и время каждого сообщения
- Видно, прочитано ли сообщение
-
Различные типы сообщений:
- Текстовые сообщения
- Фотографии
- Ссылки
- Документы/файлы
- Системные сообщения (например, “Клиент начал набирать…“)
5.4 Отправка ответа
Когда менеджер хочет ответить:-
В Chat Bridge:
- Менеджер вводит текст ответа
- Нажимает “Отправить”
- Система сохраняет сообщение в БД
-
Синхронизация обратно:
- Система отправляет ответ на оригинальную платформу (Avito/Cian/Domclick)
- Система говорит платформе: “Отправь этот текст клиенту”
- Платформа доставляет сообщение клиенту
-
Клиент видит:
- Если Avito: ответ появляется в чате Avito
- Если Cian: ответ появляется в чате Cian
- Если Domclick: ответ появляется в чате Domclick
6. Статусы и переходы
6.1 Статус компании
Компания всегда находится в одном из 9 статусов: Важно: каждый статус требует от пользователя выполнить определённое действие.6.2 Статус сообщения
Каждое сообщение имеет свой статус:- НЕОТПРАВЛЕННОЕ — пользователь ещё печатает или только что нажал отправить
- ОТПРАВЛЕННОЕ — система отправила сообщение на платформу
- ДОСТАВЛЕННОЕ — платформа подтвердила доставку сообщения клиенту
- ПРОЧИТАННОЕ — клиент прочитал сообщение
6.3 Статус чата
- АКТИВНЫЙ — есть новые сообщения, идёт активная переписка
- НЕАКТИВНЫЙ — давно нет сообщений (если не было сообщений > 7 дней)
- АРХИВНЫЙ — чат закрыт, но история сохранена
7. Безопасность и конфиденциальность данных
7.1 Кто видит что
MAINTAINER:- Видит ВСЕ данные компании
- Видит все объявления
- Видит все чаты
- Видит данные всех пользователей
- Видит все объявления компании
- Видит все чаты
- Видит данные всех пользователей
- Не видит настройки интеграций (токены)
- Видит ТОЛЬКО свои объявления
- Видит ТОЛЬКО свои чаты
- Видит ТОЛЬКО свои сообщения
- Не видит ничего другого
7.2 Защита токенов
- Все токены (Avito, Cian, Domclick) зашифрованы в базе данных
- Даже администраторы системы не могут увидеть реальный токен
- Токены используются только для запросов к платформам
- Токены никогда не отправляются клиенту
7.3 SMS верификация
- Каждый новый пользователь должен подтвердить номер телефона
- SMS код действителен только 5 минут
- SMS код на 4 цифры (10 000 комбинаций) — невозможно угадать
- Если человек вводит неправильный код 3 раза → нужно запросить новый код