Вступление
Я налоговый юрист и автор телеграм-канала «Налоговый Инсайдер». В моей работе есть рутинные задачи, которые сложно автоматизировать стандартными средствами вроде Excel. Одна из таких задач — расчет пени по НДС при подаче уточненной налоговой декларации.
В этой статье я расскажу, как не написав самостоятельно ни строчки кода с помощью Gemini и ChatGPT я прошел путь от идеи до работающего приложения на Flask , и с какими неочевидными техническими проблемами (вроде устаревшего Python на хостинге и CGI-скриптов) столкнулся гуманитарий-юрист пытаясь запустить современную программу на обычном хостинге.
Проблема: Почему Excel не справляется
Любой бухгалтер или налоговый юрист знает: подача уточненной налоговой декларации (УНД) с суммой к доплате — это риск штрафа в 20% от суммы налога (ст. 122 НК РФ). Чтобы гарантированно избежать штрафа, необходимо выполнить требование п. 4 ст. 81 НК РФ: до подачи уточненки заплатить недоимку и пени.
Если с недоимкой все прозрачно, то расчет пени по НДС вручную — это трудоемкий процесс, где легко допустить ошибку:
Дробление суммы: Сумму налога по каждому счету-фактуре необходимо разбить на три равные части (так как НДС уплачивается долями).
Разные сроки уплаты: У каждой из этих частей свой срок начала просрочки (28-е число каждого месяца квартала).
Динамическая ставка ЦБ: В период 2022–2025 годов ключевая ставка менялась многократно.
Сложная формула: В зависимости от периода и статуса налогоплательщика ставка пени может составлять 1/300 или 1/150 от ставки ЦБ, также действовали моратории.
Когда реестр операций насчитывает сотни строк, Excel становится громоздким, а риск человеческой ошибки возрастает. Мне нужен был инструмент, который решает эту задачу быстро и безошибочно.
Как я использовал вайб-кодинг
Я использовал связку: платные версии Gemini и ChatGPT plus. Моя роль заключалась в постановке задачи. Обычно я записывал сначала аудио, затем трансформировал в текст и посылал запрос в Gemini. Затем если Gemini откровенно буксовал, то я переключался на ChatGPT и обратно также.
В Gemini я использовал версию Pro. В ChatGPT версию 5.2 Thinking (Extended). Пользовался больше Gemini, потому что версия 3 Pro быстрая и результативная. Возможно ChatGPT 5.2 Thinking и лучше в коде, но уж слишком долго думает. Иногда уходило больше 10 минут на обдумывание отдельных вопросов. Возможно стоило выбрать версию Thinking (Standart). Еще буду экспериментировать с этими моделями. Но в целом Gemini полностью устраивает.
Изначально, таким образом я написал скрипт на python потратив на это максимум пару часов.

Но дальше встал вопрос, как «двигать в массы» - дать возможность людям пользоваться моим приложением. У меня уже был сайт на хостинге timeweb, и это был самый простой вариант: разместить калькулятор на поддомене.
Реализация: Столкновение с реальностью хостинга
Так я понял, что самым сложным этапом оказалось не создание программы, а её запуск в интернете. Здесь я, как человек далекий от IT, столкнулся с рядом проблем. Дальше опишу, какие проблемы встречались при настройки программы на сайте. Возможно, где-то буду не прав. Все, что опишу ниже, проблемы - выявленные LLM.
1. Конфликт поколений (Старый Python)
Ситуация: В панели управления хостингом была доступна версия Python 3.4. Мой код был написан на Python 3.10. При запуске сайт мгновенно падал с ошибкой, потому что старый сервер просто не понимал новые команды.
Решение от AI: Я скинул скриншот панели в чат. Gemini ответила: «Системный Python слишком старый. Тебе нужно собрать свое виртуальное окружение (venv) с новой версией и заставить сервер использовать его».
Нейросеть написала мне пошаговую инструкцию для терминала: как скачать Python, как его скомпилировать и как создать venv. Затем она сгенерировала код для файла запуска passenger_wsgi.py, где жестко прописала путь к новому интерпретатору.
2. Проблема режимов (CGI)
Ситуация: Сервер выдавал ошибку 500. В логах (которые я тоже скармливал ИИ) было: End of script output before headers.
Диагноз от AI: ChatGPT объяснил мне, что сервер работает в устаревшем режиме CGI, ожидая, что скрипт сам отправит заголовки. Flask этого не делает.
Решение от AI: Нейросеть сгенерировала код-«переходник» с использованием библиотеки wsgiref. Это сработало.
3. Кодирование в Base64
Ситуация: Чтобы настроить красивые ссылки, нужно было создать файл .htaccess с правилами. Я пытался ввести команду в консоль, но она ломалась из-за символа !.
Решение от AI: Когда я пожаловался на ошибку, Gemini предложила закодировать текст файла в Base64, чтобы обмануть консоль. ИИ выдал мне команду вида: echo "T3B0aW9ucyArRXhlY0NHSQp..." | base64 -d > .htaccessЯ просто вставил это — и файл создался корректно.
4. Невидимые символы Windows
Ситуация: Сервер писал No such file or directory, хотя файл лежал на месте.
Диагноз от AI: Я скопировал код из своего блокнота на Windows. Нейросеть предположила, что при копировании в конец строк попали невидимые символы \r (возврат каретки), которые ломают Linux.
Решение от AI: Мне дали команду sed -i 's/\r$//' filename. Я ввел её, и ошибка исчезла.
Результат
В итоге, не написав ни одной строчки кода своими руками (только ctrl+c и ctrl+v), я получил рабочий инструмент «Калькулятор пени по УНД».


Что он умеет:
Парсит Excel-реестры.
Делит НДС на 3 части и учитывает праздники.
Считает пени по базе ставок ЦБ (включая 16% с 22.12.2025).
Выгружает результат в Excel.
Для меня этот опыт показал, что современные LLM-модели выводят вайб-кодинг на новый уровень. Эксперт в предметной области (в данном случае — в налогах) теперь может создавать сложные IT-инструменты, используя нейросети как руки разработчика.
Ссылка на калькулятор: https://und.naloginsider.ru/
В комментариях можете закидать меня тухлыми помидорами и рассказать, насколько «костыльным» получилось решение с точки зрения профи ?.
И, конечно, всем спасибо за прочтение :-)
P.S. Оригинал статьи написан мной, текст отредактирован с помощью Gemini.
Комментарии (8)

Aleksandr_Moosienko
29.12.2025 05:52Мой товарищ делал что-то подобное , когда еще все мы нет так активно использовали ИИ. Он там тоже считал пени, но правда девелоперный юрист . За основу он взял гугл шитс и там же скрипты использовал на гугл скриптс , практически тот же js. Правда пришлось провести ему уроки по js, с неделю где-то . Но за то он даже бота в тг сделал, который работал на вебхуках, считал пени и заполнял таблицу.

strannik96 Автор
29.12.2025 05:52Тоже хочу сделать бота. Хорошая идея. Вообще конечно долго возился, сотни запросов в gemini отправлял, что бы код поправить.

BeLord
29.12.2025 05:52У меня возникло несколько вопросов:
Первый вопрос по тестированию - как вы его проводили? Из опыта - то что скрипт правильно обработал пачку данных, еще не значит, что следующий раз он корректно посчитает другие данные.
Второй вопрос: вот сегодня нормативка одна, завтра другая, вы пробовали менять данные, к примеру сделать НДС 22% процента, изменить пени и проверить насколько корректно скрипт эти изменения отработает?
Вопрос три: вы проверяли корректность округления сумм, если да, то как?

strannik96 Автор
29.12.2025 05:52На первый вопрос, да сначала самостоятельно рассчитывал с помощью эксель и через калькулятор пени который в консультанте. Еще отдавал считать бухгалтеру. Про второй и третий вопрос не понял, в чем собственно вопрос? При чем здесь процент по НДС, калькулятор считает пени с суммы недоимки, а не с суммы процента по НДС, здесь важна ставка ЦБ, наличие моратория, и дни просрочки. Если нормативка изменится то поправлю код калькулятора и если вы заходили на сайт то видели, что там указана дата актуальности расчетов. Что нужно проверить в округлении сумм?

BeLord
29.12.2025 05:52Смотрите, ИИ сама по себе ничего про нормативные правила округления не знает, округление при вычислениях производится математически, если не указано другого. А теперь, мы можем округлять пени за день до второго знака, а потом суммировать за период, можем считать ежедневные пени до н-го знака и итоговую сумму округлить. Как вы понимаете итоговые суммы получатся разные. Раньше можно было округлять итоговую сумму, как сейчас не знаю.
Теперь по поводу второго вопроса. Я имел ввиду следующее - когда ключевая ставка 16% то в расчетах все просто. Если вы пользуетесь Экселем, то что 16%, что 13% для пользователя одно и тоже, Эксель сам "знает" как правильно взять любой процент. Если же вы сами пишете свой алгоритм расчета, то можно его написать так, что 16% он будет считать правильно, а 13% нет. Для этого и нужно тестирование, чтобы сразу недочеты кода исправить и потом, к этому не возвращаться.

strannik96 Автор
29.12.2025 05:52По округлению сумма НДС сразу приводится к копейкам, дальше дробление на 1/3 сделано так, что две доли округляются до копеек, а третья считается остатком, поэтому три доли всегда в сумме дают исходный НДС «копейка в копейку». Пени за каждый день считаются без округления “каждый день до 2 знаков”, и до копеек округляется только итоговая сумма в конце. Это исключает накопление копеечных искажений на длинных периодах.
Про процентную ставку. Я не давал ИИ задачу написать ставку только под 16%. Ставка берётся функциейget_key_rate(date)она ищет последнюю по дате ставку, которая действовала на конкретный день, и соответственно и считает пени исходя из действующей в день ставки.
K0Jlya9
Надо было использовать агентов для работы. Они буквально за тебя своими руками всё делают. Причем могут делать даже то чего от ллм не ожидаешь, бинарный файл редкого формата прочитать? Да легко.
strannik96 Автор
Спасибо! Попробую. Пока с агентами еще не работал.