Как мы с нейросетью за вечер написали свой веб-сервис вместо Google Таблиц — и забыли про тормоза и блокировки
Представьте: утро понедельника, оператор открывает отчёт — а он не грузится. И вчера не грузился. И позавчера. Вроде бы те же онлайн-таблицы, что работали годами, но сервер где-то за океаном, доступ то ли закручивают, то ли сам сервис уходит из России. Знакомая картина для десятков компаний, которые до сих пор сидят на облачных зарубежных инструментах.
В этой статье — честная история о том, как мы прошли путь от «всё пропало» до работающего веб-сервиса, который занимает 20 мегабайт оперативки, летает быстрее любого онлайн-редактора и не зависит ни от одного зарубежного сервера. В главной роли — нейросеть, которая написала 90% кода. И да, это может повторить кто угодно.
Проблема: когда онлайн-таблицы перестают быть «онлайн»
У нас в проекте был отчёт. Обычный, но важный: операторы каждый день заносили в него количество доставок, сверяли фактические цифры с данными из производственной системы, вычисляли суммы и отклонения. Всё это жило в одном из популярных облачных офисных сервисов — назовём его условно «зарубежные таблицы».
И однажды они просто перестали открываться.
Не из-за пароля. Не из-за прав доступа. А потому что доступ к сервису из России стал нестабильным. С VPN — медленно, без VPN — никак. Зарубежные облачные сервисы методично превращаются в тыкву для российских пользователей, и этот тренд только усиливается. Ждать, пока всё наладится — стратегия так себе. Нужно было что-то своё.
«Поставить готовое» — и почему это не взлетело
Первая мысль очевидна: ставим готовый self-hosted аналог таблиц. Тот же NocoDB, например. Красиво, функционально, open-source. Закинул в Docker — и живи.
Но реальность быстро вернула с небес на землю:
- Сервер — скромный. Четыре ядра, ограниченная оперативка, и на нём уже крутится с десяток сервисов. Каждый новый — борьба за ресурсы.
- NocoDB и аналоги требуют отдельную базу данных. PostgreSQL или MySQL — это ещё один контейнер, ещё один потребитель RAM. Свободной оперативки кот наплакал.
- Избыточность. Нам не нужен конструктор таблиц с правами, API и вебхуками. Нужен один конкретный отчёт с тремя пользователями и пятью заходами в день.
Тащить ради этого монструозный комбайн — как возить пакет молока на карьерном самосвале. Нужно было кастомное, лёгкое решение.
Нейросеть в роли разработчика: как это было
И тут случился поворот, ради которого эта статья и написана. У меня был доступ к современным нейросетям — тем самым, которые уже неплохо пишут код. Я решил: а пусть нейросеть и сделает.
Не «сгенерирует идею», не «поможет разобраться». А напишет работающий сервис. С нуля.
Шаг первый: загружаем контекст
Я выгрузил из старых онлайн-таблиц файлик с нашим отчётом и приложил его прямо в диалог с нейросетью. Внутри — структура: какие поля заполняются, как считается сумма доставок, как идёт сверка количества с данными из производственной системы (там, где у нас все заказы).
Нейросеть прочитала файл и моментально поняла логику. Без лишних вопросов. Увидела, что данные вносятся по дням, что есть сравнение фактических и плановых цифр, что нужна итоговая сумма. И начала предлагать архитектуру.
Шаг второй: жёсткие ограничения
Я сразу предупредил: оперативной памяти очень мало, отдельную базу не поднять, всё должно крутиться в Docker. Нейросеть предложила два пути: PHP или Python. Проверили сервер — оказалось, PHP не установлен, зато Python уже был. Решение принято: Python.
Шаг третий: фреймворк и архитектура
Нейросеть предложила Bottle — легковесный микрофреймворк, который распространяется одним файлом и не тянет за собой гору зависимостей. Для базы данных — SQLite: встроенная, не требует отдельного процесса, файл базы лежит прямо в контейнере. Идеальное совпадение с нашими ограничениями.
Дальше — больше. Нейросеть не просто набросала код. Она сама предложила:
- разделение на роли: администратор (видит всё, редактирует) и оператор (только ввод данных);
- форму для ввода — интуитивно понятную, с автоподстановкой дат;
- выгрузку отчётов в Excel — потому что «нужно же бухгалтерии куда-то отправлять»;
- графики по дням — визуализацию, о которой я даже не просил, но которая оказалась жутко полезной.
И всё это заработало с первого раза. Не с пятого, не с десятого. С первого.
Что получилось: цифры и факты
На выходе — полноценный веб-сервис в Docker-контейнере. Вот его ключевые характеристики:
- Потребление оперативной памяти: 20–30 мегабайт. Для сравнения: один только браузер с открытой онлайн-таблицей жрёт в десять раз больше.
- База данных: SQLite, встроенная. Никаких отдельных контейнеров, портов и конфигов.
- Скорость открытия: мгновенная. Раньше те же таблицы в онлайн-сервисе грузились тяжело, с задержками. Теперь интерфейс отзывается на клик быстрее, чем моргает экран.
- Надёжность: абсолютная. Сервис на собственном сервере в России. Никаких блокировок, санкций и внезапных отключений.
- Изоляция: Docker. Легко развернуть, легко обновить, легко перенести.
Почему SQLite — это не «временное решение»
Многие слышат «SQLite» и думают: ну, это для прототипов, а в продакшн надо PostgreSQL. Это миф. SQLite держит сотни одновременных чтений и десятки записей без малейших проблем. Для трёх пользователей и пяти заходов в день — это запас прочности на два порядка выше необходимого.
Плюс — никакого администрирования. Файл базы данных бекапится одной командой. Не падает, не требует репликации, не просыпается посреди ночи с требованием срочно расширить tablespace.
Почему это сработало: три слагаемых успеха
Первое — чёткая постановка задачи. Нейросеть не умеет читать мысли (пока). Но если дать ей конкретный файл с реальными данными, описать логику и ограничения — она выдаёт результат, от которого отвисает челюсть.
Второе — правильные ограничения. Пространство решений сузилось до нескольких вариантов именно потому, что мы сразу сказали: Docker, минимум RAM, без отдельной базы. Нейросеть не блуждала в облаках архитектурных фантазий, а сразу пошла по прагматичному пути.
Третье — готовность проверять и докручивать. Да, пару правок я потом внёс руками. Но это были мелочи — подписи полей, отступы в форме. Весь каркас, вся логика, фронтенд и бэкенд — работа нейросети.
Что это значит для рынка и для вас
Мы стоим на пороге тектонического сдвига. Раньше путь от «нужен сервис» до «сервис работает» занимал недели или месяцы и требовал разработчика. Сегодня — один вечер и нейросеть. Порог входа в создание кастомного корпоративного ПО рухнул до нуля.
Это означает, что лёгкие самописные сервисы под узкие бизнес-задачи станут нормой. Зачем терпеть тормоза универсального комбайна, если можно за вечер собрать ровно то, что нужно именно вам? Зачем зависеть от облачного провайдера с непонятной юрисдикцией, если собственный Docker-контейнер на российском хостинге решает вопрос раз и навсегда?
Импортозамещение перестаёт быть дорогим и болезненным процессом. С правильным инструментарием это быстрее, дешевле и — давайте честно — приятнее, чем сидеть и ждать, пока зарубежный сервис соизволит загрузиться.
Заключение: попробуйте сами
Если у вас есть похожая задача — отчёт, который живёт в зарубежных таблицах и в любой момент может оказаться недоступным — не ждите. Возьмите нейросеть, приложите структуру данных, опишите ограничения сервера и попросите сделать сервис на Python + Bottle + SQLite в Docker. Результат может вас серьёзно удивить.
Тот самый отчёт теперь открывается мгновенно. Операторы довольны. Администратор видит графики. И всё это на 20 мегабайтах оперативки. Если это не магия, то я не знаю, как это назвать.