Прошло 3,5 месяца после поста про 150 000 этикеток. Теперь у меня в kleykod клиенты, 4 миллиона кодов и дубли заказов на полмиллиона
3,5 месяца назад я написал тут пост про 150 000 этикеток с кодами маркировки за 12 минут. Он собрал 287 тысяч показов, 4 207 плюсов и 703 комментария. Я посчитал: 264 человека мне респектнули, 106 обосрали, 333 прочитали и промолчали. В 65 комментах мат, самая глубокая ветка срача — 13 этажей, и к концу там спорили уже не со мной, а друг с другом. Заметная часть объясняла мне, что я дурак и не знаю, что такое API Честного Знака.
Рассказываю, что было дальше. Спойлер: теперь я знаю API Честного Знака. Лучше бы не знал.
Звонок
Через неделю после поста мне позвонила женщина. Назовём её Д. Компания-импортёр, одежда, 73 GTIN, товар едет из Казахстана и Китая. Маркировку они везли первый раз в жизни, а сервис, которым пользовались, упёрся в лимит 150 тысяч кодов на выгрузку. Ей же надо было сильно больше — и чтобы DataMatrix отдельными наклейками, и агрегация в блоки и короба, потому что швеи в Казахстане должны это всё наклеить и собрать.
Я сказал: лимит — это не Честный Знак, это ваш сервис. Через API можно заказать до 2 миллионов кодов. В комментах меня как раз в этот момент называли дураком, поэтому отступать было некуда.
Так у моего сервиса появился клиент — целая компания. А у меня — вторая работа, ночные сообщения и человек, который тестирует мои фичи лучше любого QA-инженера.
Как я чуть не заказал кодов на всю зарплату
Апрель. Переезжаем с одного API Честного Знака на другое (в первом не оказалось одежды — да, так бывает). Деплоим на прод. Всё работает. Красота.
Вечером пишет клиентка: у нас в кабинете Честного Знака куча задублированных заказов. Кабинет — её, своего доступа у меня нет, так что подключаюсь к её компьютеру через AnyDesk и смотрю сам: заказов кодов — как талонов в поликлинике. Система при таймауте решала, что заказ не создался, и заказывала ещё раз. И ещё. И ещё.
Всего надублировалось 450 тысяч кодов.
Нюанс, от которого мои два АПИшка и пятая точка сжались так, что аж холодок по телу: код маркировки стоит 60 копеек с НДС. 450 тысяч дублей — это 270 тысяч рублей за воздух. За эту задачу я пытался заработать 2,5 тысячи. А мог заработать минус 270 тысяч.
Слава богу, у клиентки в Честном Знаке стояла оплата по нанесению: деньги за коды списываются не при заказе, а когда код реально нанесён на товар. Значит, было окно. Сидел через AnyDesk в чужом компьютере и вручную аннулировал заказы, сверяясь с нашей базой, чтобы случайно не прибить настоящий — за который казахи уже ждут этикетки. Список аннулированного скачал в CSV. На случай, если в комментах спросят «а докажи».
Успели. Все 450 тысяч аннулировались бесплатно, деньги за них так и не пришли. Жопка снова порвалась вместо кошелька — это уже традиция.
С тех пор в проекте есть «защита от дублей», и когда нейронка предлагает отрефакторить тот кусок кода, я реагирую как бабка на предложение переставить иконы.
Один битый код из миллиона
Май. У клиентки партия под миллион кодов, выгружала она их через сторонний сервис. И в этой партии она находит один битый код. Сама. Один из миллиона. Поддержка того сервиса разводит руками — файл большой, кода не видно, будем выяснять.
Скармливаю файл нейронке. Она говорит: если извлекать этот код как CSV — он битый, внутри лишние запятые, а если читать по-другому — нормальный. Запятые оказались внутри криптохвоста, и CSV-парсер на них ломался.
Клиентка написала: «Молодец нейронка». Считаю это официальной благодарностью в адрес искусственного интеллекта от лица российского бизнеса.
4 миллиона кодов
Потом объявился руководитель повыше. Задача: 4 миллиона кодов, которые лежат в CSV, превратить в DataMatrix и собрать PDF под их макет — сразу в типографию.
Три месяца назад я бы от такой цифры вспотел. Но к этому моменту у меня уже всё было обкатано боем: библиотеки, которые превращают код маркировки в DataMatrix-картинку и укладывают её в PDF, протестированы на прошлых партиях. Все грабли собраны заранее.
Поднял под задачу отдельный сервер. 4 миллиона этикеток обработались за 4 часа. В прошлом посте 150 тысяч заняли 12 минут — если пересчитать в штуки в минуту, я ещё и разогнался.
Сколько заплатили — промолчу. Скажу так: я продешевил и сам это знаю, не пишите об этом в комментах. Прайс с тех пор подрос.
Что в итоге
С одного поста на Пикабу за 3,5 месяца:
— компания-клиент, которая платит за сервис и заказывает работы: подписка, разовые выгрузки, сейчас — проект по проверке агрегации; — человек из мира заводской интеграции маркировки в личке («вдруг нам будет взаимно интересно»); — 57 подписчиков, из-за которых мне теперь стыдно не писать посты; — и переписка с клиенткой на 6 963 сообщения. С мамой у меня меньше. Мама, прости.
Я всё ещё «вайбкодер»: код пишет нейронка, я разгребаю последствия, проверяю каждую строчку про деньги и не сплю перед отгрузками. Клиентка шлёт скриншоты с багами в полночь, я отвечаю «понял, поправлю», и почему-то это лучшая работа из всех, что у меня были.
Мораль не поменялась: пока большие сервисы упираются в лимиты и «будем выяснять», обычный человек с нейронкой и упрямством может закрыть дырку — и дырка начнёт платить. Даже если в комментах он дурак.
P.S. Хейтеры из того поста, привет. Я вас посчитал: 106. Про API Честного Знака теперь можете спрашивать меня.




