(История экономиста с неоконченной Computer Science в мире Логистики)
Хабр, привет! Меня зовут Александр и я обычный менеджер по работе с ключевыми клиентами в логистической компании, которая занимается в основном контейнерными перевозками из Китая в РФ (рекламы не будет).

Кратко обо мне: всегда интересовали компьютеры и программирование, но жизнь складывалась немного иначе чем хотелось. В 14 лет всей семьей уехали жить в Италию, где я закончил экономический, а также потом поехал учиться на 3 года на Computer Science в г. Пиза (да, это там, где башня падает и все никак не упадет). К сожалению, в связи с бумом ковида было принято решение возвращаться домой, да и долги по учебе не добавляли оптимизма в связи с чем, спустя год изоляции (возможно многие знают как жестили в Европе с ограничениями) я отправился на родину в Москву, где после непонятного года я смог более-менее укрепиться в сфере международных перевозок.
Несмотря на все пертурбации, я по-прежнему искал любыми способами оставлять в жизни место и время для программирования, хабра и поиска интересных решений и попыток самому что-то сделать годное. В моем небольшом арсенале есть основы С с универа и Java/Kotlin/JS , которые я использую везде куда дотягиваются руки.
История началась с того, что я не раз уже руками писал небольшие скрипты или же десктопные мини окошки, которые бы помогали мне в работе, но со временем я понял, что мне банально не хватает времени и инженерных навыков чтобы быстро создавать инструмент под нужную мне задачу (рынок логистики очень быстро меняется).
Первые потуги с автоматизацией на Java + DeepSeek как помощник для написания длинных парсеров, которые лень ковырять самому по началу показались мне очень многообещающими, и я частенько проводил вечера за клавиатурой после работы, радуясь тому, как быстрее пошло дело.
Самое интересное началось тогда, когда я посмотрел очередной быстрый инфообзор от одного мною любимого англоязычного ютубера (у которого кстати название канала немного похоже на название инструмента о котором пойдет речь). После чего, собственно, было принято решение «потрогать» свеженькое решение от гуглов и посмотреть на сколько это может подойти именно мне т.к. верстать я не умею от слова совсем. А там же обещали FullStack разработку в одном окне!
Первые впечатления: Открыв Firebase Studio, я очень обрадовался большому колл-ву стэков и языков, которые мне предлагали использовать для генерации кода.
Как ни странно, при всей моей любви к Java, я выбрал TypeScript + React + Next.js т.к. планировал лёгкое приложение, которое будет работать исключительно в браузере без бэкенда (вся логика выполняется в браузере).
Идея была проста: есть Excel файл (и не один) с кучей листов , колонок , комментариев, цен и т.д.
В обычном режиме не опытный человек будет минут 15 (если не больше) собирать по этому файлу предложение с маршрутом и ценами и ещё переживать, что всё ли он учёл , правильно ли прочитал комментарий, нужную ли колонку выбрал, не забыл ли что то выписать и т.д. Хотелось как то автоматизировать эту задачу т.к. по сути данные все есть , но как я уже писал выше, моих сил хватало лишь на частичный функционал который не охватывал всей картины. Пример Excel таблицы ниже, данные замазаны для безопасности.

Функционал: Пользователь может использовать 3 сценария
После загрузки в программу excel файлов (ценим безопасность, ресурсы не публикуются открыто)
Точечный поиск предложения, выбирая в боксах нужные ему порты отправления, прибытия, тип контейнера и т. д. и получит готовое предложение со всей информацией которую он потом может скопировать в буфер обмена(форматируется по другим правилам чтобы не показывать лишнее).
Выбрать только город/порт отправления, тип контейнера и в какой город доставить. Функция выведет новый экран, на котором будут лучше 6 предложений с таким же функционалом копирования. Есть разделение на Море + ЖД (Мультимодальная) и на Прямое ЖД.
Dashboard — в нём есть «Лучшее», это предложения которые подобрали логисты на данный момент и иногда лучше заглянуть туда т.к. тут публикуются спец. тарифы которых может не быть в базе (есть идея их тоже парсить и выдавать при общем поиске).
Также был добавлен функционал для формирования инструкций по предложению, которое уже нужно передавать в отдел оперативников дальше, с полным описанием и т.д.




Проба пера
Начал я оченьбодренько, UI рисовался за секунды, и я не мог нарадоваться что мне не нужно с этим возиться. Успешно объяснил нейронке как читать данные из Excel (Ниже я распишу все найденные мною подходы, которые упрощали для меня работу с Gemini, если у Вас также есть что посоветовать — буду очень рад Вашим комментариям!).
И как обычно всегда появляется большое НО, которое обламывает всю радость начинающего вайбкодера, я допустил критическую ошибку (да у меня в голове были заранее мысли что такое может случиться, но я откладывал до последнего пока это не произошло).
Ошибка была самой банальной, Gemini налопатил мне всё в 1 файл в 2к+ строк и в итоге он банально уже не мог с ним работать из‑за его размеров.
Пройдя все 5 стадий принятия, попыток откатить на предыдущие версии и заставить нейронку вынести куски в отдельные модули — пришлось похоронить проект.
Виртуальная машина (которую Вам бесплатно предоставляет гугл под проект) постоянно падала и кнопка reset стала чуть ли не единственным что я нажимал пол дня чтобы хоть как то воскресить это чудо.
Возрождение феникса
Создав проект заново, япросто как Франкенштейна пересобрал из кодовой базы тот же самый калькулятор, но заведомо каждые 2–3 итерации не очень больших по контенту промтов, просил Gemini рефакторить и модуляризировать код, с чем он успешно справлялся. По моим ощущениям данная версия 2.0 работает хорошо с файлом если он не превышает +‑ 500 строк, собственно, стараюсь теперь всегда держать в этом диапазоне колл‑во строк и не допускать больших файлов. На данный момент структура проекта выглядит примерно так как на фото ниже.

Проблемы и решения
В один момент я попросил его разом сделать большую часть UI и + логику для DashBoard‑а (скрин будет ниже).
Он все сделал как надо, но вот беда, функция, которая должна была работать для всех опций, работала только для 1-й (самой последней). Как бы я не упрашивал исправить баг нейросеть, она постоянно выдавала одно и то же и даже 7 итераций и танцы с бубном не помогли. В этот момент я понял, что нужно подключаться на более глубокий уровень.
Забравшись в код (хоть я и не пишу сам на TS, но понимаю, что там в целом происходит) и по примеру того, как бы я костыльно писал бы сам код на Java, объяснил мой подход про связывание объектов между собой и как это должно быть реализовано нейронке, после чего О ЧУДО! Нейронка сделала именно так, как нужно и все чудесным образом заработало. (Итоги используемых мною лайфхаков приведу ниже). Чувство гордости за найденное решение ободрило меня, и я уже не боялся в дальнейшем если сталкивался с похожими ситуациями.

Итак, советы
1) Для успешного проектирования проекта, очень полезно будет хотя бы краем уха знать про такие вещи как рефакторинг и разбиение кода на модули. Gemini не Архитектор (им в идеале должны быть Вы), а просто обезьянка которая шлепает вам код. Просите рефакторить и модуляризировать (выносить функционал в отдельные файлы) большие файлы, над которыми сейчас работаете раз в 2-3 промта. Если промт затрагивал большие изменения, то лучше не ждать, а сразу провести эту профилактику чтобы не оказаться в моей ситуации. Не забывайте также заходить в проект и проверять вручную файлы на их громоздкость либо возможность разбить на ещё большое колл-во модулей.
2) Если вы работаете с Excel таблицами, то при неправильном парсинге очень советую скармливать вместе с промтом скриншот таблицы, Gemini намного быстрее разберется что у него не так, чем если бы Вы пытались описать ему это словами (даже если вы очень подробно и дотошно все прописываете). Изначально я описывал только словами и об этом додумался лишь уже к концу проекта.
3) Не ленитесь, если нейронка начинает тупить и повторяться, пройдитесь хотябы глазами по коду(Gemini комментирует и сам код если попросить, по этому по нему довольно удобно проходиться если вы до этого прислушались к совету и все разбили на понятные модули). или попросите описать Вам как он работает, чтобы Вы могли придумать как обойти проблему с другой стороны (нейронка за Вас это врятли сделает).
4) Не бойтесь читать умные книги по архитектуре и проектированию ПО , в работе с нейронкой это намного важнее(мое личное мнение), чем знание синтаксиса и алгоритмов.
5) Обращайте внимание на логи которые Gemini старательно добавляет в код для поиска возможных проблем и лучшего понимания ситуации, консоль разработчика не такая страшная как может показаться в начале.
6) Очень часто когда проект уже разросся(а рефакторинг уже выполнен), Gemini бывает сложно вносить корректировки в проект и он просто виснет. Просите его разбить задачу на несколько этапов и выполнять их по 1 и чтобы после того как он выполнил часть, просил Вас подтвердить может ли он продолжить вносить изменения. Так вы не будете зависать и плавно внедрите нужный Вам функционал.
7) Gemini частенько начинает "забывать" исправлять код, он составляет четкий план корректировки , но не создает xml файл для редактирования кода. Старайтесь не упускать этот момент , чтобы не начиналась каша в проекте. Это можно легко заметить когда он текст написал, но никаких изменений по файлам нет. Просто попросите его создать xml и внести изменения. Не дайте себя одурачить, иногда он может написать, что всё ок и изменения были внесены, но если нету реального окошка с изменениями и файлом, значит он Вам нагло врёт!
Итог
Проект готов, потрачено +- месяц по 2 часа после работы и иногда по пол дня в выходные (да, дел в IRL хватает достаточно, к сожалению). Весь интересующий меня и моих коллег функционал внедрён, спасено огромное колл-во человеко-часов и нервов. Готовлюсь к хостингу на том же Firebase и понемногу добавляем доп. функции + улучшаем дизайн. (Всегда есть такое, чего бы хотелось добавить).
Очень удобно, что в их сервисе есть функция для предоставления ссылки и QR кода, по которому любой желающий может пройти и протестировать Ваш проект ещё до публикации даже с телефона (чем мы активно пользуемся для тестирования обновлений).
Я утолил на время свою жажду к созиданию и привнес пользу лично себе и бизнесу. Уже планируем интегрировать это решение и для филиалов.
Вместо 15-20 минут на поиск информации – тратиться не больше 2х минут. Новички больше не задают глупых и однотипных вопросов, а логисты могут заниматься своими прямыми обязанностями вместо исправления косяков и разжевывания одних и тех же проблем с недопониманием (что порой вытекали просто из за сложности/громосткости Excel файлов). Начальство тоже довольно, т.к. менеджеры теперь во время звонка с клиентом могут дать моментально цену а не ссылаться на логистов и что "в скором времени вернемся к Вам", причем не любую, а по предпочтению клиента и его нюансов (смотри первую функцию где выбираются конкретно все параметры), что значительно увеличивает конверсию и уверенность клиента что с ним работает не случайный мальчик а "Специалист"
Затраты также нулевые, только личное время , пока пользователей не много и нету backend-а хоститься можно бесплатно.
Отдам также должное нашему логистическому отделу , который так бережно и скрупулёзно каждый день собирает и агрегирует всю информацию в Excel файлы и проверяет актуальность данных, без таких людей, не было бы ни данного проекта, ни какого либо понимания как нам в целом работать. Так что от себя похвалю Илью и Дениса, которые стоят на страже нашего логистического порядка!
Вопросы? Спрашивайте! Расскажу:
Как объяснить Gemini логистику, если он путает морские и ж/д тарифы,
Почему Firebase иногда тормозит (и как с этим жить),
Как убедить коллег, что ваш калькулятор — не просто "свистоперделка", а спасение.
P.S. Если вы тоже считаете ставки в Excel — давайте обмениваться шаблонами и придумывать цифровые решения!
Возможно вместе мы найдем общие и более удобные способы работы :-)
Приглашаю всех заинтересованных в ТГ группу «болталку» созданную специально для этих целей: https://t.me/PowerLogIT Буду рад!
Комментарии (2)
lenadroid
13.06.2025 13:11Отличная статья. Ты грамотно подошел к проблеме, многие на твоем месте просто забили бы на проект после первой попытки.
И вообще очень круто, что поделился именно граблями и их решениями. Про то, что Gemini иногда "забывает" создавать XML с изменениями - это прям боль.
Кстати, полностью согласна про архитектуру vs синтаксис при работе с AI. Это как раз то, что я всегда говорю новичкам - нейронка код нашлепает, а вот maintainable структуру проекта продумать может только человек.
ExternalWayfarer
Вижу "вайб кодинг", "AI", "нейро-" и прочие модные в этом году словечки, статья отправляется в мусорку, а автор в ЧС.