Системы названы, но описания их API нет, и не указано, кто его предоставит
Чем оборачивается. Подрядчик закладывает стоимость и срок вслепую, исходя из предположений о методах, форматах и способе аутентификации. После заключения договора выясняется, что документации нет, а владелец второй системы не обязан её выдавать. Работа встаёт, срок сдвигается, а виноватого в договоре не назначено.
Как написать правильно. Добавьте раздел «Исходные данные для интеграции»: по каждой системе — версия, тип интерфейса, ссылка на актуальную документацию или приложение к ТЗ. Отдельной строкой укажите, кто и в какой срок после подписания договора передаёт доступ к документации, и что считается задержкой по вине заказчика.
Не описано поведение при сбое обмена
Чем оборачивается. Платёж прошёл, а в учёте он не отразился. Запрос ушёл, ответ не пришёл. Если в ТЗ не сказано, что система делает в таких случаях, подрядчик выбирает сам, и на приёмке заказчик обнаруживает, что дубли, потерянные записи или молчаливые отказы его не устраивают. Спорить не по чему: требования не было.
Как написать правильно. Опишите сценарии отказа явно: недоступность второй стороны, таймаут, ответ с ошибкой, повторная отправка одного и того же сообщения. Для каждого — что делает система: повторяет запрос, кладёт в очередь, помечает запись, уведомляет ответственного, и кого именно. Отдельно потребуйте защиту от дублей при повторах.
У второй стороны нет тестовой среды, и это нигде не оговорено
Чем оборачивается. Интеграцию приходится проверять на боевой системе либо не проверять вовсе. В первом случае риск для реальных данных и платежей, во втором — ошибки всплывают после запуска. Приёмочные испытания формально проходят на заглушках, а реальный обмен впервые происходит в день запуска.
Как написать правильно. В ТЗ укажите, для каких систем нужен тестовый контур, кто его предоставляет и в какой срок. Если тестового контура у стороны нет, пропишите альтернативу: эмулятор, согласованный набор тестовых данных, окно проверки на боевой системе с описанием ограничений. Приёмочные испытания привяжите к этому контуру.
Ответственность за данные на стыке систем не распределена
Чем оборачивается. Когда в одной системе сумма или статус один, а в другой — другой, каждая сторона считает ошибкой чужую. Подрядчик говорит, что передал то, что получил. Владелец исходной системы — что она работает штатно. Заказчик остаётся без ответа, кто исправляет данные и кто за них отвечает.
Как написать правильно. Включите раздел о владении данными: для каждого объекта обмена — какая система является источником истины, кто отвечает за качество исходных данных, кто за преобразование при передаче. Пропишите порядок разбора расхождений: кто фиксирует, кто исправляет, в какой срок.
Нет требования к журналу обмена
Чем оборачивается. Спор о том, отправлялось ли сообщение, что в нём было и какой ответ пришёл, невозможно разрешить без записей. Без журнала разбор инцидента превращается в сверку памяти участников, а претензии к подрядчику или к владельцу соседней системы остаются недоказанными.
Как написать правильно. Требуйте журнал обмена отдельным пунктом: что фиксируется (время, направление, идентификатор операции, статус, код ошибки), как долго хранится, кто имеет доступ к просмотру, как защищены персональные и платёжные данные в записях. Укажите, что журнал является основанием при разборе споров.
Приёмка описана общими словами: «интеграция работает»
Чем оборачивается. Без проверяемых критериев акт можно не подписывать неограниченно долго или подписать, не проверив ничего существенного. Обе стороны оказываются в позиции, где любая оценка результата субъективна.
Как написать правильно. Для каждого сценария обмена составьте перечень проверок: входные данные, ожидаемый результат, среда проверки. Включите в приёмку негативные сценарии из раздела о сбоях и проверку журнала. Условие подписания акта сформулируйте через прохождение этих проверок.