← Назад к блогу

системный анализ · 6 минут

Документация API, Wiki и письмо поддержки расходятся: что решить до разработки

Редакционная схема синтетического примера: четыре разных источника сходятся к открытому решению, после которого следует проверка.

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

Ниже — синтетический пример, не клиентский результат.

Четыре источника, одна интеграция

Команда переводит интеграцию с платёжным провайдером Acme Pay с API v1 на v2.1. В папке лежат четыре материала:

ИсточникЧто в нём полезноОграничение
Официальная документация v2.1текущий контракт APIтребует проверки владельца контракта
Wiki «Интеграция v1»история старой реализацииописывает прошлую версию
Репозиторий прототипареальные решения в кодепрототип не равен действующему контракту
Письмо поддержкиуточнение ограниченияне заменяет официальный контракт

В документации и Wiki расходятся детали авторизации и идентификатора клиента. Репозиторий повторяет старую реализацию. Письмо поддержки уточняет срок жизни токена и лимит частоты запросов, но не становится из-за этого новой спецификацией.

Если просто передать все четыре файла агенту, он соберёт связный ответ. В нём могут одновременно оказаться несовместимые детали авторизации, старый адрес API и ограничение из письма. Текст будет выглядеть профессионально, пока разработчик не попробует выполнить его.

Сначала карта источников, затем решение

До постановки задачи я фиксирую для каждого источника пять полей: идентификатор, дату, владельца, статус и область действия.

Это не превращает самую свежую запись в истину автоматически. Дата помогает увидеть устаревший материал, владелец — найти право на решение, статус — отличить действующий контракт от архива, область действия — не перенести ограничение одного потока на всю систему.

После такой инвентаризации появляется очередь решений:

  1. какой способ авторизации действует в v2.1;
  2. какой адрес API должен использоваться;
  3. где хранится токен и как проверяется его срок жизни;
  4. какие ограничения запросов должны попасть в сценарий;
  5. кто принимает результат, если источники не удаётся согласовать.

Пока эти вопросы открыты, агент может подготовить варианты, но не должен выбирать «самую гладкую» версию.

Связь решения с проверкой

Каждое принятое решение должно вести к проверяемому сценарию. Если владелец подтверждает новую схему авторизации, меняются не только конфигурация и один тест.

Затрагиваются получение токена, обработка истечения срока, повтор запроса, журналирование и секреты в окружении. Старый тест может остаться зелёным, потому что он проверяет прежний путь.

Поэтому я связываю три объекта:

источник → решение → проверка.

Изменился источник — проверяю, какие решения на нём основаны. Изменилось решение — отмечаю зависимые сценарии и тесты. Только после этого повторяю приёмку.

Удобный минимальный журнал выглядит так:

ИсточникРешениеПроверкаСостояние
S01 + S04Какой срок жизни токена действует: 24 часа или 4 часа?Истечение, повторная авторизация и отказUNKNOWN до ответа поддержки
S01 против S03Реализовать проверку подписи вебхука по S01Неверная подпись отклоняетсяРешение ясно; реализация и проверка не подтверждены
S01Параметры retry policy не заданыПроверка отказа и повторовUNKNOWN до уточнения G01

Такой журнал не маскирует пробелы. Он показывает, какое решение ещё нельзя превращать в обязательный тест и кто должен закрыть вопрос.

Что делать агенту, а что оставить человеку

Агент полезен для инвентаризации: он может найти цитаты, сравнить версии, построить список зависимостей и показать противоречия. Он может подготовить несколько вариантов тестов.

Но он не должен сам объявлять источник авторитетным, закрывать конфликт или принимать риск за владельца продукта. Это граница между исполнением и решением.

Практический минимальный протокол выглядит так:

  1. собрать карту источников;
  2. выписать противоречия отдельными пунктами;
  3. назначить владельца каждого решения;
  4. зафиксировать область действия и дату решения;
  5. связать решение с изменёнными сценариями и проверками;
  6. пометить старое свидетельство устаревшим;
  7. повторить проверку и получить человеческую приёмку.

В синтетическом примере это важнее, чем скорость генерации спецификации. Связный документ не устраняет конфликт источников. Он только делает конфликт менее заметным.

Пока решение не принято, честный результат агента должен содержать открытый вопрос, а не выдуманную определённость.