
Разбор · Опубликовали 08.10.2026
Синтетические данные для проверки кода агента должны воспроизводить ограничения реальных записей
Как проверить правку на сложных заказах без копии рабочей базы: правила записей, ожидаемые результаты и повторяемый набор для одной функции.
Текст написан инженером, который ведёт машину агентов vibecoding.ru, вместе с машиной агентов · факты проверены 8 октября 2026
Вымышленные заказы помогут проверить правку агента без копии рабочей базы, только если сохранят её связи, ограничения сумм и историю событий.
Покажем, как составить такой набор для функции возврата, сверяясь с поломками нашей машины агентов; собственного опубликованного генератора и клиентского кейса синтетических данных у нас нет.
Не хотите разбираться сами? Внедряем ИИ в ваш бизнес: задачи без лимита, одна цена в месяц, отмена в любой момент.
1. Сначала опишите правила функции, затем придумывайте записи.
Синтетические данные здесь означают вымышленные записи для проверки программы. CTO нужно убедиться, что после правки агент правильно считает возврат, выдаёт доступ или меняет статус заказа. Имена покупателей могут быть любыми; связь заказа с оплатой и предел возврата должны соответствовать правилам продукта.
Начните с критерия готовности задачи: что функция принимает, что возвращает и какие действия запрещены. Инженер сверяет это описание с владельцем процесса и схемой данных. Требование «сгенерировать побольше похожих заказов» оставляет агенту право самому придумать, что считается правильным результатом.
Документация PostgreSQL описывает ограничения полей и связей, а DataCebo отдельно различает закономерности данных и обязательные правила. Похожесть на рабочие записи ещё не обеспечивает соблюдения правила. Если возврат нельзя сделать без оплаты, это условие надо записать и проверять явно.
Правила набора описывают допустимые записи.
PostgreSQL, раздел Constraints; DataCebo, User input to enhance synthetic data generation, прочитаны 08.10.2026. Правила возврата: учебный пример редакции, не готовая спецификация платёжного сервиса.
2. Связи и история важнее правдоподобных имён.
Возьмём вымышленный заказ: оплачено 10 000 ₽, ранее возвращено 7 000 ₽, доступный остаток 3 000 ₽. Запрос на 4 000 ₽ должен получить отказ. Если генератор создал только новые заказы без истории возвратов, ошибка в расчёте остатка останется незаметной.
Значения надо придумывать вместе. У оплаты есть заказ, у возврата есть оплата, у повторного уведомления сохраняется тот же идентификатор события. Когда каждую таблицу наполняют независимо, получаются правдоподобные строки, которые не складываются в проверяемую историю.
Теперь добавьте развязку: запрос на ровно 3 000 ₽ должен пройти, а его повтор не должен увеличить общую сумму возврата. Такой пример проверяет границу и повтор события. Тысячи свежих заказов с разными именами могут ни разу не проверить ни то ни другое.
Одна история проверяет сумму, границу и повтор.
Учебный пример редакции, 08.10.2026. Все суммы вымышлены; остаток рассчитан как 10 000 − 7 000 = 3 000 ₽. Последние два шага идут после принятого возврата на 3 000 ₽.
3. Редкие и ошибочные записи добавляют намеренно.
Набор допустимых записей нужен, чтобы проверить обычную работу. Но сложная правка должна пережить и неверный запрос: например, возврат ссылается на отсутствующую оплату. Такую запись добавляют намеренно и заранее задают ожидаемый отказ без изменений в учёте. Запрос подают на вход функции, не вставляя невозможную связь в таблицу с обязательным внешним ключом.
Генератор, который всегда соблюдает все ограничения, может убрать именно те ошибки входа, которые программа обязана распознавать. Разделите данные для успешных операций и данные для проверки отказов. Невозможная запись допустима в отрицательном сценарии, если тест не выдаёт её за нормальную.
Отдельный вопрос: старые записи. Например, раньше дата могла отсутствовать, а новая форма уже требует её заполнить. Надо выяснить, должна ли функция обработать старую запись, вернуть понятную ошибку или отправить её на ручную проверку; автоматически «починенный» генератором пропуск не проверит этот выбор.
У каждой группы записей своя задача.
Редакционная схема проверки на основе ограничений PostgreSQL и материалов DataCebo, 08.10.2026. Перечень подбирают под функцию; это не перечень всех возможных ошибок продукта.
4. Наши поломки показывают, какие условия теряют проверки.
В открытой машине агентов на vibecoding.ru инженер ведёт машину агентов и записывает сбои вместе с изменениями правил. Эти истории не доказывают качество генератора синтетических данных. Они показывают, почему набор должен сохранять состояние покупки, форму ответа и повторы событий.
При ревью оплаты курса обнаружили условие, которое связывало отправку письма с первым созданием доступа. Если письмо не ушло, повтор уведомления уже видел созданный доступ и пропускал отправку. После правки проверяется отдельная запись об отправленном письме: существующий доступ сам по себе не означает, что покупатель получил письмо.
В другом эпизоде тесты пропустили несовместимую форму ответа, и после выпуска страницы новостей стали падать. При приёмке правки агента полезно проверять весь результат, который получает следующая часть программы: корректный расчёт внутри функции ещё не означает, что ответ примет вызывающий код.
Поломка становится полезной после закреплённого правила.
09.09
Ревью оплаты курса выявило риск: после сбоя отправки повтор уведомления не отправлял письмо, потому что доступ уже существовал. Исправление: отправку проверяют по журналу писем отдельно от создания доступа.
24.09
После изменения ответа страницы новостей стали падать, хотя тесты были зелёными. Исправление: добавили проверку формы ответа; она воспроизводила ошибку до исправления кода.
25.09
Тестовая покупка разового ролика получила статус ушедшего клиента: правило учитывало только месячный тариф. Исправление: статус стал учитывать и недавнюю разовую оплату.
Исходные записи журналов машины за 09.09, 24.09 и 25.09.2026, сверены 08.10.2026. Последний эпизод разобран в уроке «Касса на фантиках» курса по агентной инженерии; деньги в тестовой покупке были ненастоящими.
5. Сохранённый сценарий позволяет проверить следующую правку.
Один успешный прогон ещё трудно повторить. Сохраните конкретные записи и ожидаемые ответы, а для повторной генерации запишите версию генератора и исходное значение случайности. Если функция зависит от времени, зафиксируйте часы; если от уведомлений, сохраните их порядок и идентификаторы.
Документация Hypothesis показывает, как повторять найденные сбои и закреплять конкретный пример в тесте. Для вашей функции важно удержать сам проблемный случай: после обновления генератора случайный набор может оказаться другим. Сохранённая история возврата остаётся понятной и человеку, и следующему агенту.
Проверьте также силу проверки: временно уберите из копии функции вычитание предыдущих возвратов. Сценарий с запросом на 4 000 ₽ должен обнаружить ошибку. Если он по-прежнему проходит, ожидаемый ответ или способ сравнения не ловит нарушение; такой набор ещё рано использовать для приёмки.
Приёмке нужен набор вместе с ожидаемыми ответами.
Редакционная процедура приёмки, 08.10.2026; принцип сохранения и повтора примера: документация Hypothesis. Этот учебный набор в рамках подготовки статьи не запускали: таблица описывает требуемый результат работы.
6. Заказывайте проверочный набор для одной функции.
Начать можно с возврата, выдачи доступа или расчёта скидки: инженер собирает правила с владельцем процесса, агент готовит записи и прогон, инженер проверяет ожидаемые ответы. Учебный возврат считается описанным, когда в наборе есть предыдущие 7 000 ₽, граница остатка и повтор события; одни новые заказы для этой задачи недостаточны.
Если обсуждаются данные клиентов у агента, сначала выберите, как появятся вымышленные записи. Их можно придумать по правилам функции; модель, обученная на рабочих записях, уже использует эти записи при обучении. ICO отдельно отмечает: синтетические данные могут оставаться неанонимными. Само название набора не доказывает, что исходные сведения исчезли.
Подготовку набора для конкретной функции можно включить в очередь подписки на агентную разработку: «Один проект» стоит 250 000 ₽/мес по странице услуг на 08.10.2026. Это цена подписки, а не отдельного набора; состав работы согласуют для вашего продукта. Чтобы определить первый участок проверки, обсудите задачу разработки.
Что и как мы проверяли
| Факт | Что известно | Проверено |
|---|---|---|
| Правила данных | Прочитаны первоисточники PostgreSQL, DataCebo и Hypothesis; рекомендации применены к учебной функции. | 2026-10-08 |
| Наш опыт | Истории сверены по исходным записям; своего опубликованного генератора и клиентского кейса нет. | 2026-10-08 |
| Суммы возврата | Вымышлены редакцией; арифметика и ожидаемые ответы заданы для иллюстрации, код не запускали. | 2026-10-08 |
| Анонимность | ICO: синтетические данные могут быть неанонимными; статья не оценивает безопасность конкретного набора. | 2026-10-08 |
| Цена подписки | «Один проект», 250 000 ₽/мес, сверено с живой страницей /services. | 2026-10-08 |
7. Частые вопросы
Для генерации синтетических данных обязательно нужен ИИ?+
Нет. Для проверки одной функции достаточно заданных вручную записей или простого генератора по правилам. ИИ может помочь составить варианты, но правильные ответы подтверждает владелец процесса вместе с инженером.
Сколько синтетических записей нужно для проверки?+
Число зависит от правил функции. Сначала перечислите обычные, граничные, ошибочные и повторные сценарии. Большой объём полезен для отдельной проверки нагрузки, но не заменяет отсутствующий сценарий возврата после предыдущего возврата.
Можно ли просто заменить имена в копии рабочей базы?+
Замена имён не превращает набор автоматически в анонимный и не делает его синтетическим в смысле этой статьи. Для описанного подхода значения придумывают по правилам; сведения из рабочих записей в набор не переносят.
Может ли агент написать генератор и тесты на свою правку?+
Может подготовить их. Но если он придумал и поведение, и правильный ответ, тест может закрепить ту же ошибку. Инженер сверяет ожидаемые результаты с правилами процесса, затем проверяет, что намеренное нарушение действительно обнаруживается.
Синтетический набор заменяет все проверки перед выпуском?+
Нет. Он проверяет перечисленные условия выбранной функции. В нём могут отсутствовать важные особенности рабочих данных; найденные позже ошибки нужно превращать в новые сохранённые сценарии.
Как убедиться, что записи достаточно похожи на реальные?+
Для этой задачи сравнивают список ограничений, допустимых состояний и последовательностей событий. Правдоподобное имя не помогает обнаружить повторный возврат. Для обучения моделей сходство распределений решает другую задачу, которую статья не разбирает.
Источники
- PostgreSQL, Constraints · прочитано 08.10.2026 — документация
- DataCebo, User input to enhance synthetic data generation · прочитано 08.10.2026 — разработчики SDV
- SDV, Constraint-Augmented Generation · прочитано 08.10.2026 — документация
- Hypothesis, Replaying failures · прочитано 08.10.2026 — документация
- ICO, Anonymisation glossary, Synthetic data · прочитано 08.10.2026 — первоисточник
- vibecoding.ru, открытая машина агентов · срез 08.10.2026 — наш проект
- vibecoding.ru, агентная разработка, тариф «Один проект» · срез 08.10.2026 — наш проект
- vibecoding.ru, ответственность за ошибки ИИ · исходные журналы сверены 08.10.2026 — наш опыт
- Курс по агентной инженерии, урок «Касса на фантиках» · запись от 25.09.2026 — наш курс
Запомнить
1. Начните с правил одной функции: поля, связи, суммы, состояния и повторы событий.
2. Генерируйте связанную историю, а правильный ответ задайте до прогона кода.
3. Добавьте обычные, граничные и намеренно ошибочные записи; не потеряйте разрешённые старые состояния.
4. Сохраните записи, время и порядок событий; убедитесь, что проверка обнаруживает намеренное нарушение.
5. Каждую найденную ошибку закрепите отдельным сценарием и запускайте его после следующих правок.