Илья Шкура
EN UK RU

Заметки · октябрь 2026

Магазин, который выглядел готовым: 28 проблем вне обычного пути.

Магазин трикотажа собрали в Claude Code по 17 сообщениям обычными словами — так, как владелец описал бы, чего хочет: каталог, оплата картой или переводом, возвраты, админка с отчётами, установка на телефон. Код владелец не читал. После последнего сообщения магазин выглядел как магазин настоящего бренда и работал при обычном просмотре.

Магазин вымышленный, данные тестовые; он собран для этой проверки. Каждая находка ниже — настоящий прогон.

Что говорил ИИ, который его собирал, и что было на самом деле

  • Он написал «Orders can't be placed twice». Это подтвердилось. Но ключ, который это обеспечивал и хранился на устройстве 12 часов, после обрыва связи отдавал заказ одного покупателя следующему, кто заказывал с того же устройства.
  • Он написал, что заказы и адреса покупателя удаляются с устройства, когда тот выходит из аккаунта. После выхода устройство по-прежнему открывало заказ покупателя с именем, улицей, почтой и телефоном.
  • Он написал, что дашборд, отчёты и склад сходятся с заказами и что он проверил каждый. Возвраты «за последние 30 дней» на дашборде дали €5 619,79, а в отчётах €5 483,80: обе цифры верны для своего периода, под одинаковым названием.

Четыре главные

  • Любой новый аккаунт читал заказы гостей. Аккаунт заводился за минуту. С ним любой заказ, сделанный без аккаунта, открывался по номеру: имя, адрес, почта, телефон, что купили. Номера шли подряд, а без аккаунта делали примерно четыре заказа из десяти.
  • Чужой заказ после обрыва связи. Следующий покупатель на том же устройстве нажимал «Оформить · €53,99» и видел заказ предыдущего на €29,99 с его адресом.
  • Возврат на любую сумму. Владелец мог записать возврат €500 по заказу на €29,99, и покупатель получал письмо, что €500 уже в пути.
  • Оплата отменённого заказа. Владелец отменил заказ, пока покупатель был на странице оплаты картой. Покупатель заплатил €27,99; магазин оплату не записал и ничего не вернул.

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

Что выдержало

Цены и остатки задавала база, а не страница. Суммы всех 2 059 заказов сошлись до цента, отчёты совпали с независимым пересчётом. Без аккаунта данные покупателей прочитать было нельзя. Поддельные уведомления об оплате отклонялись.

Что я из этого выношу

«Готово» — это слово того, кто собирал, а он проверяет путь, который сам построил. Проблемы живут рядом с этим путём. Поэтому каждая найденная проблема становится тестом, который сначала падает: на этом магазине из 51 такого теста на сданной версии падало 42, после исправлений — ни одного. И каждое исправление проверяется заново перед следующим, потому что часть того, что нашлось позже, внесли сами исправления.

Четыре вещи, которые можно попробовать на своём приложении за десять минут:

  • Зарегистрироваться новым пользователем и открыть чужой заказ или запись, поменяв номер в адресе.
  • Оборвать связь сразу после нажатия кнопки, которая списывает деньги, а потом заказать снова как другой человек с того же устройства.
  • Отменить заказ, пока в другой вкладке открыта его страница оплаты, а потом заплатить.
  • Ввести слишком большую сумму и сумму в формате страны ваших покупателей (1.234,56).

Перед выходом магазина в сеть нашлась ещё одна: форма рассылки отправляла письмо магазина на любой адрес любое число раз. Она исправлена, и исправленный магазин работает: откройте его сами с демо-входом со страницы кейса.

Полный кейс со снимками до и после и отчётом на 22 страницы: Интернет-магазин, собранный ИИ: проверен и исправлен.