Обзор Ось 2 — Поверхности взаимодействия (резюме простыми словами)
Версия: 1.0 Дата: 05.05.2026 Статус: Готов к обсуждению
Назначение документа
Этот документ — резюме второй архитектурной оси платформы для непрофильного читателя. Он не заменяет каноничный документ Поверхности взаимодействия и контуры платформы (ось 2), а служит коротким и понятным введением для тех, кто не работает с архитектурой каждый день: руководителей, новых членов команды, внешних консультантов, партнёров на этапе знакомства.
Цель резюме — чтобы любой грамотный читатель за 10–15 минут понял, через какие двери платформа общается с миром, чем эти двери отличаются и почему их нельзя сводить к одной.
О чём документ
Документ описывает вторую из шести архитектурных осей платформы — поверхности взаимодействия (surfaces). Простыми словами: это «двери», через которые платформа общается с миром. Через одну дверь заходят внутренние сотрудники, через другую — туристические агентства, через третью — партнёры по программному интерфейсу, через четвёртую — конечные клиенты, через пятую — внутренние сервисы платформы между собой, через шестую — пользователи конструктора туров.
Главный смысл: каждая дверь — это самостоятельный контракт со своими правилами. Это не «один и тот же интерфейс с разными настройками видимости», а разные интерфейсы.
Главный принцип
Один программный интерфейс для всех — ложная идея. Разные стороны (партнёры, агентства, конечные клиенты, внутренние операторы) имеют разные потребности, разные ритмы изменений, разные правила видимости коммерческой информации. Платформа предоставляет разные контракты каждой стороне — а не одно API с фильтрами по ролям.
Из этого следует:
- темп эволюции каждой двери — независимый;
- набор разрешённых полей, политика видимости цен, политика согласия и аутентификация — своя для каждой двери;
- одно и то же действие (например, поиск) на разных дверях может по-разному называться, по-разному вести себя и возвращать разный результат;
- одно и то же доменное состояние (например, фиксированная цена) видно на разных дверях по-разному: клиент видит итоговую цену, агент — её структуру, партнёр — контракт-безопасные суммы, внутренний оператор — всю историю применения политик.
Шесть поверхностей платформы
Поверхность 1. Внутренняя операционная (Internal Operational Surface)
Кто использует: внутренние команды платформы — операторы, модераторы данных, поддержка, финансовый отдел, инструменты ручного разбора.
Что особенного:
- Самая богатая модель данных — видны все поля, все источники, все следы изменений.
- Полные операции изменения — те, которых нет ни на одной внешней двери (ручная переопределение, форсированная повторная публикация, ручное решение о маппинге).
- Быстрый темп изменений — внешний контракт не нужен, внутренние пользователи следуют за платформой.
- Прямая связь с внутренними процессами — отражает доменные сущности напрямую.
Что живёт здесь: очереди модерации данных, мониторинг поставщиков, обработка аномалий, исключительные ситуации бронирований, инструменты сверки и финансовой поддержки, ручная повторная проверка, переопределение коммерческих политик, аудит-журналы.
Что не должно жить здесь: ежедневная работа агентств, партнёрские интеграции, функции для конечных клиентов — у них свои двери.
Поверхность 2. Агентская рабочая (Agency Working Surface)
Кто использует: туристические агентства, агенты, внутренние и внешние пользователи, которые собирают предложения, формируют коммерческие фиксации, создают и сопровождают бронирования, ведут клиента и историю.
Что особенного:
- Полноценная рабочая система продаж и сопровождения — это не «сайт поиска отелей», а полная рабочая среда.
- Рабочее пространство как единица — единицей измерения здесь не только пользователь, но и его рабочее пространство. Черновики, фиксации, предложения принадлежат рабочему пространству, не лично пользователю.
- Объяснимость данных — агент видит применённую коммерческую политику, срок действия фиксации, причины пересчёта цены.
- Контекст клиента — агент работает в контексте конкретного клиента, ведёт его историю.
- Долгие сессии — черновик, предложение, бронирование сопровождаются длительными сессиями.
- Журналируемость решений — следы решений сохраняются для последующего разбора.
Главные сценарии: поиск туристических продуктов, сравнение вариантов, создание коммерческой фиксации с явной видимостью применённой политики, агентская надбавка к цене, инициирование бронирования и сопровождение его жизни, работа с конструктором туров, создание клиентского предложения и отправка его клиенту, ведение истории клиента, отчётность по своим продажам и комиссиям.
Поверхность 3. Партнёрский программный интерфейс (Partner API Surface)
Кто использует: партнёры с платным доступом — B2B-интеграторы, белые-лейблы (white-label), реселлеры, корпоративные системы для путешествий, внешние агрегаторы.
Что особенного:
- Узкий стабильный контракт — строже и стабильнее внутренней и агентской дверей.
- Жёсткое версионирование — крупные и мелкие версии с явной политикой совместимости.
- Окно совместимости — старые версии поддерживаются заданное время после выхода новых.
- Аутентификация и разрешения — программные ключи с явными разрешениями, разделение тестовой и боевой среды, ротация ключей.
- Квоты и тарифные уровни — каждый тариф имеет явные лимиты.
- Изоляция сред — отдельные тестовая и боевая точки входа.
- Контракт-безопасные суммы — партнёр не видит внутренней структуры цены, только то что зафиксировано контрактом.
- Webhook-доставка как первоклассная — асинхронные уведомления с подписью, политикой повторов, версионированием полезной нагрузки.
Главные сценарии: поиск через партнёрский запрос, получение проекций предложений, создание коммерческой фиксации с партнёр-специфичной политикой, инициирование бронирования от имени конечного клиента партнёра, получение событий жизни бронирования через webhook, работа с конструктором туров через закрытый интерфейс (если тариф позволяет), партнёрская аналитика и отчёты потребления.
Что не должно утекать сюда: сырые данные поставщиков, внутренние детали модерации, внутренние коммерческие детали, информация о других партнёрах.
Это самая важная коммерческая дверь платформы — основной продукт по якорю «B2B-маркетплейс программных интерфейсов».
Поверхность 4. Витрина для конечных клиентов (B2C Storefront Surface)
Кто использует: конечные клиенты сайта vitrip.store, конечные клиенты партнёров через белые-лейбловые интеграции (если архитектура такого витриного типа разрешена тарифом партнёра).
Что особенного:
- Высокий объём чтения — много запросов на просмотр с эффективным кешированием.
- Презентационная безопасность — никаких операционных и маржинальных деталей.
- Ориентация на конверсию — интерфейс оптимизирован под превращение посетителя в покупателя.
- Минимизация внутренних деталей — пользователь видит только то, что ему нужно для решения о покупке.
- Ограниченная видимость цены — итоговая сумма без разбивки на наценки и комиссии.
- Регуляторное соответствие — для EU обязательное согласие на cookie, при оплате — усиленная аутентификация (PSD2 SCA), при продаже пакетных туров — обязательная информация по директиве о пакетных путешествиях.
- Скорость и поисковая оптимизация — для своих сайтов критичны время загрузки и видимость в поисковиках.
Главные сценарии: поиск туристических продуктов, просмотр карточек объектов и галерей, сравнение цен и условий, создание собственного бронирования с оплатой, просмотр истории своих бронирований, самостоятельная отмена и изменение, переход в персональное предложение по ссылке от агента.
Что не должно утекать сюда: агентская и партнёрская маржа и структура цены, внутренние идентификаторы поставщиков, технические детали приёма данных и модерации, любая информация других тенантов.
Поверхность 5. Сервис-к-сервису (Service-to-Service Surface)
Кто использует: внутренние сервисы платформы между собой, внутренние фоновые задачи, потребители и производители событий, машинные идентичности для внутренней автоматизации.
Что особенного:
- Сильная связь с внутренней доменной моделью — может работать с богатыми наборами данных, не обязательно контракт-безопасными.
- Богатый набор контекста — больше деталей, чем во внешних дверях.
- Идемпотентность — все критические операции безопасны при повторе.
- Безопасность повторного воспроизведения — потребители безопасны для повторных проигрываний событий.
- Дисциплина схем — все события и команды имеют явные схемы.
- Сильная наблюдаемость — каждое взаимодействие порождает трассы и метрики.
- Аутентификация через сервисную идентичность и взаимный TLS — никаких неявных доверий между сервисами.
Главные классы взаимодействий: доменные события через шину сообщений, синхронные команды между сервисами, асинхронная координация через очереди работы, широковещание через потоки событий.
Поверхность 6. Закрытая поверхность конструктора туров (Tour Builder Closed Surface)
Кто использует: собственные интерфейсы платформы (vitrip.store, агентская рабочая поверхность), партнёры с платным тарифом, дающим доступ к программному интерфейсу конструктора туров.
Что особенного:
- Закрытый программный интерфейс — не публичный, не доступен в свободной тестовой среде; доступ через близкую к партнёрской поверхность, но с отдельной коммерческой моделью.
- Модульный программный интерфейс композиционных примитивов — низкоуровневые модули как первичные единицы:
- модуль размещения,
- модуль переезда (авто, авиа, ж/д, водный),
- модуль активности или впечатления,
- модуль услуги (гид, страховка, виза),
- модуль аренды транспорта,
- модуль страхования,
- пользовательский модуль,
- информационный модуль.
- Сборка с состоянием — черновик становится вариантом, потом предложением, потом версией, потом материализованным артефактом.
- Проверки совместимости — соответствие модулей по времени, географии, вместимости, политикам.
- Отслеживание изменений — что изменилось в исходных предложениях и как это влияет на собранный тур.
- Цепочка ответственности на уровне тура — определяется составом модулей и поставщиками.
- Цена на уровне всего тура — отдельная коммерческая логика, не сумма цен компонентов (наценка на тур, скидка пакета, всё-включено).
Двойное использование:
- Платформа собирает собственные туры от своего имени (платформа = упаковщик и продавец).
- Партнёры с платным тарифом проектируют туры под свои каналы продаж (платформа = агрегатор и сервис конструктора туров).
Девять рабочих контуров
Поверхности — это «как стороны общаются». Контуры — это «как контракты группируются по доменным процессам». Один контур может проявляться на нескольких поверхностях с разной видимостью.
- Контур приёма данных — адаптеры приёма данных от поставщиков. Видна только на внутренней поверхности.
- Контур публикации — решение о готовности предложения к показу. Видна на всех поверхностях, на которые публикуется.
- Контур поиска и обнаружения — приём поискового намерения, ранжирование, возврат результатов. Видна на агентской, партнёрской, B2C, в конструкторе туров.
- Контур фиксации обещаний — создание коммерческой фиксации с применённой политикой, сроком действия, пересчётом, аннулированием. На разных поверхностях — разная видимость структуры цены.
- Контур транзакционного коммита — фиксация бронирования, подтверждение поставщика, жизненный цикл после бронирования. Видна на агентской, партнёрской, B2C и внутренней.
- Контур композиции тура — сборка многокомпонентного тура с проверкой совместимости и отслеживанием изменений. Главная — закрытая поверхность конструктора туров.
- Контур взаиморасчётов — партнёрские балансы, кредитные лимиты, записи клиринга, расчёты с поставщиками, агентские комиссии. Видна на внутренней, партнёрской, агентской.
- Контур управления данными — модерация, решения о маппинге, обработка аномалий, разрешение конфликтов. Видна только на внутренней.
- Контур наблюдаемости и инцидентов — метрики, трассы, журналы, дашборды, оповещения, реагирование на инциденты. Видна на внутренней, партнёрской (часть аналитического продукта), агентской.
Пять перекрёстных правил
Правило 1. Каноничные сущности не дублируются для разных поверхностей
Один и тот же объект размещения, предложение, коммерческая фиксация, бронирование, тур существуют в одном экземпляре в каноничной модели. На разных поверхностях их видимость разная, но сущность одна.
Правило 2. Кросс-поверхностные изменения статуса разрешены только через управление данными
Если действие на одной двери должно повлиять на видимость на другой (например, оператор внутренней двери приостановил публикацию предложения для всех внешних) — это идёт через контур управления данными, не напрямую.
Правило 3. Контракт-безопасное представление коммерческих сумм для внешних дверей
Внешние двери (партнёрский интерфейс, витрина для клиентов) не получают доступа к маржинальной структуре, следам применения коммерческой политики, контексту подготовки взаиморасчётов. Только то, что зафиксировано контрактом.
Правило 4. Видимость по поверхностям — первоклассное правило
Модель видимости — не runtime-фильтр на готовых данных, а часть контракта поверхности. Документируется явно для каждого поля доменной сущности.
Правило 5. У каждой поверхности своё соглашение об уровне обслуживания
Время безотказной работы, задержки ответа, актуальность данных — разные для каждой двери. Партнёрский интерфейс имеет жёстче требования чем внутренний, витрина для клиентов — самые строгие к задержкам и доступности для конверсии.
Поверхности и тарификация
Каждая дверь имеет свою коммерческую модель:
- Партнёрский программный интерфейс — главная поверхность тарификации. Цена зависит от объёма поисковых запросов, фиксаций, бронирований, инференса машинного обучения, бюджета вызовов поставщиков, сложности запросов.
- Закрытая поверхность конструктора туров — отдельная коммерческая модель (платный тариф), цена за композиционные операции.
- Агентская рабочая — подписка плюс комиссия с продаж.
- Витрина для конечных клиентов — собственный канал, монетизация через маржу платформы на туристических продуктах.
- Внутренняя и сервис-к-сервису — нет внешней тарификации, внутренние операционные расходы.
Связь с шестью осями архитектуры
Поверхности проявляются на других пяти осях:
- На каноничной доменной оси — у каждой сущности своя видимость на каждой поверхности.
- На оси платформы как продукта — поверхности и есть продуктовые поверхности с тарифами.
- На оси данных и интеллекта — каждая дверь — источник аналитических событий со своими потоками.
- На операционной оси — у каждой двери свои метрики качества и инструкции реагирования.
- На оси связи с реализацией — карта соответствия дверей с уже работающим кодом существующей реализации.
Связь с реальной реализацией
В уже работающем коде существующей реализации сейчас:
- Адаптер приёма данных от поставщиков реализован, но это адаптер приёма, не партнёрский интерфейс — не путать.
- Сайт vitrip.store — зачаточная витрина для клиентов (фронтенд на лёгких технологиях, бэкенд на PHP).
- Агентская поверхность — в концепции, не реализована.
- Партнёрский программный интерфейс — в концепции, не реализована.
- Внутренняя операционная поверхность — частично через административную панель сайта.
- Закрытая поверхность конструктора туров — в концепции, не реализована.
Транспорт и протоколы — производный уровень
Документ намеренно не фиксирует:
- конкретный шлюз программного интерфейса;
- выбор стиля программного интерфейса (REST, gRPC, GraphQL) для каждой двери;
- точную сетевую топологию.
Главный тезис: транспорт — производный уровень. Сначала контракт двери, затем выбор транспорта.
Что разумно зафиксировать как направление:
- партнёрский программный интерфейс — REST с описанием в стандарте OpenAPI плюс webhook'и в стандарте AsyncAPI;
- сервис-к-сервису — gRPC и события через шину сообщений;
- внутренняя операционная — REST плюс WebSocket для интерактивности;
- витрина для клиентов — HTTP/HTML плюс REST для динамики;
- агентская рабочая — REST плюс WebSocket для интерактивности;
- закрытая поверхность конструктора туров — REST плюс webhook'и, возможно gRPC для S2S-вариантов.
Это направление, не догма. Окончательные решения — на стадии создания контрактных документов.
Две таксономии поверхностей
В проекте существуют две взаимодополняющие таксономии поверхностей, и важно их не путать:
- Контракты поверхностей (этот документ) — разделение по типу контракта, который платформа предоставляет миру. Фокус — на формальном уровне: что отдаётся как стабильный контракт, как он версионируется, какая коммерческая модель.
- Клиентские поверхности (другой каноничный документ) — разделение по продукту, который видит пользователь или машинная интеграция. Фокус — на потребителе: какие приложения, машинные интеграции, встраиваемые виджеты существуют как продуктовые единицы.
Эти таксономии не противоречат — они проецируются друг на друга. Например, партнёрский программный интерфейс в этом документе — это контрактный слой, который обслуживает двух разных типов клиентов: машинные интеграции и интерфейс/комплект разработчика для партнёров-операторов.
Что нельзя делать с этой картой поверхностей
- Делать вид, что поверхности — просто разные представления одного программного интерфейса.
- Подражать структуре конкретных поставщиков при дизайне партнёрской двери.
- Объединять закрытую поверхность конструктора туров с партнёрским программным интерфейсом в одну дверь — у них разные коммерческие модели.
- Допускать утечку маржинальной структуры на внешние двери.
- Вводить временные поверхности «пока запустим, потом разделим» — каждая поверхность первоклассная сразу.
Итог
Документ закрепляет карту дверей платформы — шесть отдельных поверхностей с разными контрактами, ритмами изменений, правилами видимости и коммерческими моделями. Главное послание простое: разные стороны взаимодействия требуют разных контрактов, и попытка свести их к одному «универсальному API» — архитектурная ошибка, ведущая к компромиссам со всеми сторонами одновременно. Каждая дверь — самостоятельный продукт с собственным жизненным циклом, и платформа сразу проектируется под эту реальность.
Связанная документация
- Поверхности взаимодействия и контуры платформы (ось 2) — полный каноничный документ, источник истины этой оси.
- Главная архитектурная ось — карта всех шести осей платформы.
- Манифест переосмысления платформы — роль и принципы платформы.
- Каноничная доменная ось (ось 1) — словарь главных понятий.
- Обзор Ось 1 — резюме простыми словами — резюме первой оси по тому же шаблону.
- Платформа как продукт (ось 3) — тарификация и продуктовая модель.
- Ось данных и интеллекта (ось 4) — события и аналитика.
- Операционная ось (ось 5) — надёжность и восстановление.
- Связь с реализацией (ось 6) — мост между архитектурой и существующей реализацией.