TGViewer
NGI | Влад Корнышев про AI и создание AI-продуктов NGI | Влад Корнышев про AI и создание AI-продуктов @ngi_ru · 4K subscribers
Post #628 1.66K
Про важность бэкапов и автономность агентов при работе с продакшн-кодом

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

Решил я в свою LMS, которая крутится в проде уже больше года, добавить одну маленькую функцию - автодобавление пользователей при покупке на сайте. Раньше делал руками, но для селф-стади это неудобно. Идея максимально простая: человек делает покупку через Юкасса, от их апи приходит ответ, у меня по заданным пользователем имени и e-mail создается юзер, ему назначается курс и отправляется письмо на почту с магической ссылкой для логина.

Методы создания юзера у меня уже были написаны, нужно было просто добавить эту ручку и логику отправки писем.

Решил особо не париться и не переключать среду на тестовую из-за такого мелкого изменения (и зря).

Свой код я абсолютно всегда покрываю тестами и LMS у меня тестами покрыта вдоль и поперек. Все стейты, включая “пустое состояние”, когда нет ни курсов ни пользователей, для этого есть отдельный метод. который как раз всех этих пользователей очищает. А сами эти тесты у меня лежат в отдельной папочке, чтобы не дай бог не активировать их случайно, т.к. их функция по-сути, разовая, при первом развертывании самой системы.

Ну и вот, функция хоть и простая, но мне было лень лишний раз что-то согласовывать - поэтому я запряг под эту задачу Opus 4.6. В промпте также попросил написать тест этого функционала, чтобы я мог его потом прогнать. Опус все сделал, но случилось то, за что я ненавижу эти модели - он решил быть слишком самостоятельным, и, написав тесты для нового функционала решил, что надо бы и остальные тесты прогнать. И пока я отошел налить себе чаю, этот негодяй сделал отдельный скрипт для запуска вообще всех тестов, который включал как раз ту самую запретную папочку 😁

Что он снес? Да вообще все. Оставил только тестовых юзеров, удалил из LMS все материалы, всех пользователей, конспекты, и вообще все. Но проблему удалось решить буквально за минуту.

Во-первых, в Supabase у меня настроен регулярный бекап, собственно, который я заюзал, чтобы откатиться на несколько часов назад.
Во-вторых, зная о наличии у меня такого теста, я ожидал, что рано или поздно такая фигня произойдет, поэтому написал отдельный скрипт, который периодически парсит БД проекта и сохраняет ее у меня на сервере раз в сутки.
В-третьих, что касается материалов - у меня сохранены дубликаты в Affine в маркдауне, на случай, если все бекапы придут в негодность.

Тут первый слой защиты сработал, остальные не понадобились.

Позабавила, конечно, реакция агента, когда я сказал ему, что он снес базу 🤣

Короче, какие выводы для вас, дорогие друзья:

1. Даже делая маленькие изменения лучше переключайтесь между тестовой и продакшен средой;
2. Всегда делайте бекапы;
3. Opus - демон, доверять которому себе дороже 😅

В таком контексте даже дропнув БД в продакшене - сможете сделать вот такой скрин и поугорать над ситуацией, а не думать, о том, как можно было бы этого избежать.

🚀 Влад Корнышев про AI и создание AI-продуктов
  • 😁 10
  • 🔥 8
  • 👌 2
  • ❤ 1
More from @ngi_ru
  1. Sep 16, 2026Делаем вторую версию конференции ROИИ Многие из вас помнят нашу первую конференцию в февра…
  2. Sep 14, 2026Post #668
  3. Sep 11, 2026Post #667
  4. Sep 9, 2026Post #666
  5. Sep 8, 2026Post #665
  6. Sep 3, 2026Kickstarter как лучший тренажер для продуктового питча Поймал себя на том, что в последнее…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →