1.3 User Stories & Use Cases

Документ описывает ключевые пользовательские флоу платформы PSP Aggregator. Каждый процесс привязан к матрице ролей и жизненному циклу сделки.

Документ описывает ключевые пользовательские флоу платформы PSP Aggregator. Каждый процесс привязан к матрице ролей и жизненному циклу сделки.

Статусы сделки в MVP: Draft, Negotiation, Agreed, Declined, Revoked, Terminated, Archived. Истечение срока Secure-ссылки (1 неделя) переводит сделку в Revoked.


1. Flow: Agent Outbound

Агент собирает Proposal из офферов, задаёт Agent Margin и отправляет Secure-ссылку мерчанту.

sequenceDiagram
    participant Agent as Агент
    participant Admin as Платформа (Admin)
    participant Merchant as Мерчант

    Note over Agent: Сборка Proposal (Draft)
    Agent->>Merchant: Нажатие Generate Secure Link (Assignee: Merchant)
    Note over Agent, Merchant: Статус: Negotiation

    Merchant-->>Agent: Запрос скидки вне системы (Assignee: Agent)

    alt Скидка в рамках Agent Margin
        Agent->>Merchant: Агент снижает свою маржу (Assignee: Merchant)
    else Скидка требует изменения Base Rate
        Agent->>Admin: Request Special Terms с комментарием (Assignee: Admin)
        Admin->>Agent: Admin снижает Base Rate (Assignee: Agent)
        Agent->>Merchant: Передача новых условий (Assignee: Merchant)
    end

    Merchant->>Agent: Мерчант нажал Accept (Assignee: Agent)
    Note over Admin, Agent: Сделка заблокирована (статус: Agreed)

Шаги:

  1. Каталог (Agent): агент входит в систему и фильтрует офферы (GEO → метод оплаты).
  2. Формирование подборки (Agent): выбирает офферы и нажимает Create Proposal.
  3. Настройка Proposal (Agent): обязательно вводит название бренда мерчанта. Видит Base Rate, задаёт Agent Margin персонально для каждого оффера. Опционально прикрепляет сопроводительный комментарий. Нажимает Generate Secure Link.
  4. Генерация ссылки: пре-аппрува Admin нет — агент не может снизить Base Rate. Система генерирует Secure-ссылку со сроком жизни 1 неделя.
    • State machine: сделка переходит в Negotiation, Assignee = Merchant.
  5. Отправка ссылки: агент отправляет ссылку вне платформы (Telegram / email).
  6. Решение мерчанта: мерчант видит Final Fee; Real Name скрыт, виден Alias. Три пути:
    • Вариант А (согласие): нажимает Accept & Leave Contacts. Точечный встречный комментарий — [Post-MVP].
    • Вариант Б (отказ / отзыв / тайм-аут): отказ мерчанта → Declined; отзыв участником или истечение 1 недели → Revoked.
    • Вариант В (запрос скидки): в MVP мерчант торгуется в Telegram, агент обновляет Agent Margin в тикете и генерирует новую ссылку (Assignee = Merchant).
  7. Пинг Admin (Request Special Terms): если нужна скидка на Base Rate, агент нажимает Request Special Terms и вводит текстовое обоснование. Событие пишется в Event Log, Assignee = Admin. После ответа мяч возвращается агенту. Точечные комментарии к цифрам — [Post-MVP].
  8. Финал: мерчант принимает условия → статус Agreed. Real Name открывается мерчанту. Admin получает уведомление для старта биллинга вне платформы.

2. Flow: Merchant Inbound

Мерчант, допущенный на платформу SuperAdmin, самостоятельно выбирает оффер из каталога или отправляет холодный запрос.

sequenceDiagram
    actor Merchant as Мерчант
    participant App as Платформа
    actor Admin

    Merchant->>App: Логин и фильтрация каталога
    alt Вариант А: выбор офферов
        Merchant->>App: Выбор офферов и Request Connection
    else Вариант Б: холодный запрос
        Merchant->>App: Contact Us (пустая заявка + комментарий)
    end
    Note over App: Сделка создана: Negotiation
    App-->>Admin: Алерт: входящая заявка
    Admin->>App: Подбор тарифов / уточнение с мерчантом
    Merchant->>App: Accept
    Note over App: Статус: Agreed
    App-->>Merchant: Real Name провайдера открыт

Шаги:

  1. Авторизация (Merchant): мерчант входит в кабинет.
  2. Каталог (Merchant): видит офферы. Ставки — Final Fee при Agent Margin = 0, то есть Base Rate. Виден Alias, не Real Name.
  3. Заявка (Merchant): два пути:
    • Вариант А: выбирает один или несколько офферов, нажимает Request Connection. Опционально оставляет комментарий.
    • Вариант Б (холодный запрос): если ничего не подошло, нажимает Contact Us / Request Custom Terms и отправляет текстовый запрос. Создаётся сделка без офферов.
    • State machine: статус Negotiation, Assignee = Admin.
  4. Обработка (Admin): если заявка пустая, Admin вручную подбирает офферы.
  5. Акцепт: мерчант принимает условия → Agreed.
  6. Деанонимизация: после Agreed Real Name провайдера открывается мерчанту.

3. Flow: Admin Outbound

Admin собирает прямое предложение мерчанту, минуя агента. Agent Margin = 0.

sequenceDiagram
    actor Admin
    participant App as Платформа
    actor Merchant as Мерчант

    Admin->>App: Create Direct Proposal в каталоге
    Admin->>App: Сборка офферов (Agent Margin = 0)
    Note over App: Сделка: Draft, затем Negotiation
    Admin->>Merchant: Отправка Secure-ссылки
    Merchant->>App: Выбор тарифа и Accept
    Note over App: Статус: Agreed
    App-->>Admin: Алерт: успешный старт

Шаги:

  1. Инициирование (Admin): нажимает Create Direct Proposal в каталоге.
  2. Сборка (Admin): выбирает пул офферов. Agent Margin не применяется (0%).
    • State machine: сборка в Draft; после отправки ссылки — Negotiation, Assignee = Merchant.
  3. Отправка ссылки: Admin отправляет Secure-ссылку мерчанту.
  4. Акцепт (Merchant): мерчант выбирает тариф и нажимает Accept.
  5. Финал: статус Agreed. Платформа уведомляет Admin. Real Name открывается мерчанту.

4. Registration Flow (Closed Invite)

В MVP платформа — закрытый клуб. Кнопки Sign Up на лендинге нет. Роль назначает только SuperAdmin.

sequenceDiagram
    actor SuperAdmin
    participant App as Платформа
    actor Guest as Гость

    SuperAdmin->>App: Копирует статичную ссылку /registration
    SuperAdmin->>Guest: Отправляет ссылку (Telegram / Email)
    Guest->>App: Переходит по ссылке и заполняет данные
    Note over App: Аккаунт: Pending (без роли)
    App-->>SuperAdmin: Алерт: новая заявка на регистрацию
    SuperAdmin->>App: Назначает роль (Merchant / Agent) или Reject
    Note over App: Статус: Active
    App-->>Guest: Доступ в каталог открыт

Шаги:

  1. Приглашение (SuperAdmin): в разделе Users нажимает Invite User, копирует статичную ссылку и отправляет её.
  2. Регистрация (Guest): гость заполняет First Name, Last Name, Email, Telegram, Password.
  3. Карантин (система): аккаунт создаётся в статусе Pending без роли. Пользователь видит экран ожидания проверки. Доступ к функционалу закрыт.
  4. Модерация (SuperAdmin): в таблице Pending Users назначает роль (Agent или Merchant) либо отклоняет заявку (Rejected).
  5. Активация: при назначении роли статус Active, доступ в каталог открыт.

[Post-MVP]: автоматическая регистрация мерчанта по Secure-ссылке агента без ручной модерации SuperAdmin.


5. Flow: Provider & Offer Management

Admin заводит провайдера (скрытого) и формирует на его базе публичные офферы для каталога.

sequenceDiagram
    actor Admin
    participant App as Платформа

    Admin->>App: Add Provider (детальный профиль)
    Note over App: Провайдер сохранён (скрыт от агента и мерчанта)
    Admin->>App: Create Offer
    Admin->>App: Привязка к провайдеру + публичный Alias
    Admin->>App: Raw Provider Rate + Platform Margin
    Note over App: Платформа рассчитывает Base Rate
    Admin->>App: Конструктор атрибутов
    Admin->>App: Публикация
    Note over App: Статус оффера: Active
    App-->>Admin: Оффер появляется в каталоге

Шаги:

  1. Профиль провайдера (Admin): в закрытом разделе «Провайдеры» нажимает Add Provider. Заполняет Real Name, описание, страны, валюты, методы интеграции, контакты. Карточка доступна только Admin / SuperAdmin.
  2. Инициация оффера (Admin): Create Offer, выбор провайдера из списка.
  3. Анонимизация: задаёт публичный Alias (например Card-EU-01). Это имя видят агенты и мерчанты в каталоге.
  4. Ценообразование:
    • вводит Raw Provider Rate;
    • устанавливает Platform Margin;
    • система рассчитывает Base Rate для каталога.
  5. Конструктор атрибутов: пары «поле — значение» (GEO, методы, лимиты, холд и др.). На их основе работают фильтры каталога.
  6. Публикация: оффер со статусом Active сразу виден агентам (для Proposal) и прямым мерчантам (для inbound-заявок).

6. Flow: Availability Management

Каскадная пауза провайдера или точечная пауза оффера.

sequenceDiagram
    actor Admin
    participant App as Платформа

    Admin->>App: Pause на провайдере
    App-->>Admin: Модальное окно (связанные офферы и сделки)
    Admin->>App: Подтверждение паузы
    Note over App: Провайдер и все его офферы: Paused
    App-->>Admin: Отметка в каталоге
    Note over App: Агенты получают алерты по сделкам в Negotiation

Шаги:

  1. Инициация паузы (Admin): в профиле провайдера нажимает Pause.
  2. Предупреждение (система): модальное окно со списком связанных офферов и активных сделок.
  3. Анализ (Admin): может открыть отфильтрованный список сделок из модалки (impact analysis).
  4. Каскадная заморозка: провайдер и все его офферы переходят в Paused.
  5. Отображение в каталоге: офферы не удаляются, получают бейдж Paused / Temporarily Unavailable.
  6. Точечная пауза: Admin может поставить на паузу отдельный оффер, не трогая провайдера целиком.
  7. Возобновление: кнопка Resume возвращает провайдера или оффер в Active.

7. Связанные документы