Сервис защиты сделок в ВКР: проектирование escrow-логики на кейсе «Авито Услуг»

Поддомен: Backend/Frontend (Платформенная разработка, marketplace-логика)
Роль эксперта: Архитектор ПО
Схема подачи: C (введение → FAQ → темы → основная часть → чек-лист → ошибки → CTA)

Введение

23 марта 2026 года «Авито Услуги» запустили тест партнёрского сервиса, который меняет саму логику заказа услуг и расчётов между заказчиком и исполнителем. Механика простая на словах и очень непростая в реализации: платформа фиксирует договорённости сторон и структурирует процесс — от подтверждения заказа до момента, когда деньги уходят исполнителю. Фактически речь о встроенном escrow-слое внутри маркетплейса.

Почему это важно для выпускника ИТ-специальности? Потому что здесь сходятся все классические задачи бэкенда: транзакционная целостность, идемпотентность платёжных операций, конечный автомат состояний сделки, разграничение прав, обработка споров и аудит. Такая тема легко превращается в ВКР, где есть что проектировать, что реализовывать и что измерять. И защищать её куда проще, чем очередную «информационную систему учёта книг в библиотеке».

FAQ: что спрашивают студенты до старта

1. Где взять данные, если внутренняя документация «Авито» закрыта?

Никакой тайны тут нет. Публичные интерфейсы платформы, открытые API песочниц платёжных провайдеров (ЮKassa, Тинькофф, CloudPayments дают тестовые среды), синтетический генератор заказов на Python/Go. Для ВКР достаточно воспроизвести логику процесса, а не копировать чужую базу. Если хотите живые числа — соберите их имитационным моделированием нагрузки (Locust, k6) и опишите в главе 3.

2. Какой стек тянуть, чтобы не утонуть?

Не гонитесь за микросервисами ради галочки. Для диплома отлично работает модульный монолит: backend на Spring Boot / ASP.NET Core / FastAPI, PostgreSQL как источник истины по состояниям сделки, Redis для блокировок, брокер сообщений (RabbitMQ или Kafka) — если хотите показать асинхронную часть. Этого хватит, чтобы раскрыть и транзакции, и идемпотентность, и отказоустойчивость.

3. Как посчитать эффективность такого сервиса, если нет реальных пользователей?

Сравнивайте «до/после» на одном синтетическом наборе сценариев. Метрики простые и защищаемые: время от подтверждения заказа до выплаты исполнителю (p50/p95), доля сделок, завершённых без ручного вмешательства, доля отменённых платежей, число инцидентов целостности данных (рассинхрон баланса). Сводите всё в одну таблицу и отдельно описывайте методику замеров — именно методику комиссия любит спрашивать.

4. Что делать с нормоконтролем схем и листингов?

Схемы — по ГОСТ 19.701 (единая система программной документации, правила выполнения схем алгоритмов и данных), архитектура — в нотации C4 или UML. Код в приложении нумеруйте построчно, а в тексте ссылайтесь: «см. листинг Б.2». И не тащите в приложение весь репозиторий — только значимые фрагменты, обычно 5–8 листингов.

Темы ВКР на базе кейса

Ниже — три варианта, от самого «архитектурного» до самого прикладного. Выбирайте по тому, что вам ближе: проектировать, кодить или измерять.

Как встроить материал статьи в главы ВКР

Глава 1: превращаем новость в обоснование

Не пересказывайте статью своими словами — это слабое место восьми работ из десяти. Нужен аналитический разбор. Составьте таблицу моделей расчётов: прямая оплата, предоплата, постоплата, депонирование, эскроу. По каждой строке — риски заказчика, риски исполнителя, кто держит деньги, кто разрешает спор. Кейс «Авито» становится последней строкой таблицы и одновременно мостиком к постановке задачи. Здесь же уместно вставить BPMN-диаграмму процесса: два пула (заказчик, исполнитель), отдельная дорожка под платформу.

Глава 2: проектирование и реализация

Основной объём. Минимум три диаграммы обязательны к защите:

Ядро — идемпотентность и корректность переходов. Простейший псевдокод обработчика подтверждения сделки:

def confirm_deal(deal_id: UUID, idempotency_key: str, actor_id: UUID):
    # 1. Защита от повторной обработки
    if idempotency_store.exists(idempotency_key):
        return idempotency_store.get(idempotency_key)

    with db.transaction(isolation="SERIALIZABLE"):
        deal = deal_repo.get_for_update(deal_id)

        if deal.state != DealState.AWAITING_CONFIRMATION:
            raise InvalidTransition(deal.state)
        if actor_id != deal.customer_id:
            raise AccessDenied("только заказчик подтверждает приёмку")

        # 2. Фиксируем переход и событие в одной транзакции (Transactional Outbox)
        deal.state = DealState.RELEASED
        outbox.append(PayoutRequested(deal_id=deal.id, amount=deal.amount))
        deal_repo.save(deal)

    result = {"deal_id": deal_id, "state": "RELEASED"}
    idempotency_store.put(idempotency_key, result, ttl=24h)
    return result

Отдельно распишите обработку сбоя на шаге выплаты. Именно здесь пригодится паттерн Saga с компенсацией: если платёжный шлюз вернул ошибку, сделка переводится в PAYOUT_FAILED, а не откатывается в исходное состояние — иначе баланс и статус разъедутся. Зафиксируйте это правило в тексте, оно показывает зрелость решения.

Глава 3: тестирование и метрики

Не ограничивайтесь «всё запустилось». Нужен управляемый эксперимент: набор из 500–1000 синтетических сделок, прогон через три сценария (успех, спор, отказ платёжного шлюза) и таблица замеров. Метрики поддомена, которые реально оценит комиссия:

МетрикаЧто показываетЦелевой ориентир
p95 времени до выплатыСкорость завершения сделки≤ 30 с без участия человека
Доля ручных разборовАвтономность механики≤ 5 % сделок
Число рассинхронов балансаЦелостность данных0 на 1000 сделок
Покрытие переходов автомата тестамиПолнота проверок100 % разрешённых веток
Доля запросов, отбитых антифродомЭффект защитных правилЗависит от модели угроз

Безопасность описывайте по OWASP ASVS хотя бы на уровне проверок аутентификации, авторизации на каждый переход и защиты от подмены идентификаторов сделки. Частая дыра в студенческих проектах — проверка, что пользователь «свой», но без проверки, что он именно участник конкретной сделки.

Чему вы научитесь на такой теме

Чек-лист перед сдачей
  • Задачи из введения дословно совпадают с выводами по главам — это первое, что проверяют.
  • Все схемы имеют подписи, номера и ссылки в тексте; нотации указаны явно (UML, C4, BPMN).
  • Листинги вынесены в приложение, в тексте — только ссылки и пояснения ключевых фрагментов.
  • Метрики сопровождаются методикой замера: стенд, число прогонов, инструмент (k6, JMeter).
  • Оформление по ГОСТ 19.701 для схем и ГОСТ 7.32 для отчёта — уточните требования своей кафедры.
  • Список источников: минимум 20 позиций, из них 5–7 — свежие публикации 2024–2026 годов.
  • Проверка на заимствования пройдена, включая приложения; API-спецификации не скопированы целиком.
Типичные ошибки студентов на этой теме
  1. Пересказ статьи вместо анализа. Работа начинается с «Авито запустил сервис…» — и на этом теория заканчивается. Плохо: нет сравнения моделей расчётов, нет модели угроз, нет обоснования выбора архитектуры. Исправление: глава 1 должна заканчиваться таблицей требований к вашему решению, выведенной из анализа.
  2. Состояние сделки как строка в БД без правил перехода. Тогда любая ручка API может перевести заказ из «ожидает оплаты» сразу в «выплачено». Комиссия это ловит моментально. Исправление: явный enum состояний, валидация перехода на уровне домена, а не контроллера, и тесты на запрещённые переходы.
  3. Метрики «на глаз». «Сервис работает быстро» — не результат. Нужны p50/p95, число сделок в прогоне и условия стенда. Иначе третий раздел превращается в декларацию, а не в исследование.
Если тема уже выбрана, но непонятно, как перейти от идеи к работающему прототипу и защищаемому тексту, — можно начать с бесплатной консультации. Мы разбираем структуру работы, подсказываем, какие схемы и метрики усилят конкретно вашу тему, и помогаем выстроить план на 120 часов. Темы любые — от escrow-сервисов до систем мониторинга.

Материал подготовлен экспертами компании [Название сайта]. Мы помогаем студентам с 2010 года. Если вам нужна помощь в разработке темы или оформлении работы, наши специалисты готовы подсказать.

Последнее обновление: 2026-09-12

Источник: На платформе "Авито" тестируют сервис по защите сделок в сегменте услуг (опубликовано 2026-03-23)