Перейти к содержимому
Антон ГончаровРазработчик ИИ-систем

Сервис на Go · очередь · подтверждение

Агент закупки

Агент, который сам покупает кофе, не должен терять заявку посередине и не должен отправить её дважды, если процесс упал. Здесь заявка — задача в очереди River. Она останавливается на подтверждении, а кнопка «Оборвать отправку» роняет шаг: повтор дописывает тот же заказ, а не новый.

Сценарий: Обжарочная «Зерно» — вымышленная: зелёный кофе трёх сортов и локальный поставщик.

Скриншот демо: Агент закупки

Открыть демо

Поставщик локальный. Очередь и шаги — сервис на Go и PostgreSQL.

Приложение работает в браузере: на сервер ничего не отправляется.

Что показывает демо

  • Шаги заявки: остаток, черновик, подтверждение, отправка

  • Если килограммов не хватает, заявка отклоняется и в ленте написано, сколько было на складе

  • Отправка не начинается, пока закупщик не подтвердит черновик

  • Обрыв отправки возвращает ту же задачу в очередь

  • Номер заказа поставщику записывается один раз

Как попробовать

  1. Закупите Эфиопию

    «Закупить 30 кг Эфиопии». Заявка проверит остаток и остановится на черновике.

  2. Подтвердите

    «Подтвердить отправку» — поставщику уходит один номер заказа.

  3. Оборвите отправку

    Новая заявка, затем «Оборвать отправку». В ленте появится обрыв и следом тот же заказ, без второго номера.

  4. Попросите слишком много

    «Закупить 50 кг Колумбии» — на складе 6 кг, заявка отклоняется.

Без платных нейросетей

Поставщик — локальная запись в базе, без писем и оплат. Очередь настоящая: каждый шаг — задача River в PostgreSQL, и она переживает обрыв.

Демо работает без API-ключей OpenAI, YandexGPT или GigaChat. Там, где рабочая система обращается к модели, стоит локальная заглушка с тем же интерфейсом — поэтому демо бесплатно, всегда доступно и ничего не выдумывает.

Что будет в рабочем проекте

  • Поставщик — МойСклад, 1С или почта, а не запись в демо-базе
  • Подтверждение уходит закупщику в Telegram
  • Та же очередь для других долгих агентов: договоры, оплаты, выгрузки
  • Отдельный воркер, который можно остановить, не останавливая шлюз

Стек

  • Go
  • River
  • pgx
  • sqlc
  • goose
  • PostgreSQL
  • slog
  • React 19

Нужен такой же для вашего бизнеса?

Расскажите о задаче — отвечу, что из демо подойдёт вам, сколько это займёт и что понадобится с вашей стороны.

Другие демо в этом разделе

Все демо
  • Веб-приложение · OCR · проверка реквизитов

    работает

    Распознавание документов

    Загрузите счёт или акт — фото, скан или PDF. Приложение распознаёт текст, вытаскивает реквизиты и строки таблицы и проверяет их: контрольные суммы ИНН и счетов, итог и НДС.

    • React
    • TypeScript
    • Нейросеть в браузере
  • Веб-приложение · диалоги · сделки · аналитика

    работает

    Панель оператора

    Рабочее место оператора, которому бот передаёт сложные обращения: очередь с таймером, резюме диалога, черновик ответа, сделки на канбане и аналитика — на живом потоке клиентов.

    • React
    • TypeScript
  • Веб-приложение · Recharts · RBAC · аудит

    работает

    SaaS-дашборд

    Кабинет команды выручки SaaS: MRR по тарифам, движение выручки, отток, здоровье клиентов, выгрузка CSV для Excel и журнал действий. Все цифры считаются из одной истории за год — смена тарифа в карточке клиента сразу двигает MRR на графиках.

    • React
    • TypeScript
  • Веб-приложение · Laravel · PostgreSQL

    работает

    Складской учёт на Laravel

    Учёт склада, где остаток — сумма проводок, а не «поле qty--»: заказы с резервом «всё или ничего», сборка по ячейкам, приёмка с импортом CSV, инвентаризация и журнал. Гонка двух настоящих процессов PHP в PostgreSQL показывает, зачем нужна блокировка строки.

    • PHP
  • Веб-приложение · метрики · оповещения

    работает

    Мониторинг бота

    Как следят за ботом, когда он уже работает с клиентами: сколько запросов, как быстро он отвечает, как часто ошибается или не знает ответа. Журнал запросов с трассой каждого ответа и правила, которые пишут дежурному в Telegram, если что-то пошло не так.

    • React
    • TypeScript
  • Сервис на Go · лимиты · журнал

    работает

    Шлюз к нейросетям

    Один OpenAI-совместимый вход для ботов обжарочной: у каждого свой ключ, потолок запросов в минуту и бюджет токенов на сутки. Повтор с тем же ключом не списывает бюджет второй раз, а сбой основной модели уходит на запасную.

    • Go
    • React
    • TypeScript
  • Сервис на Go · MCP · инструменты

    работает

    MCP-сервер «Зерна»

    Агент вызывает склад и заказы обжарочной инструментами Model Context Protocol: остатки, статус заказа, новая заявка. Рядом виден сам обмен JSON-RPC.

    • Go
    • React
    • TypeScript
  • Парсер на Python · работает в браузере

    работает

    Мониторинг цен конкурентов

    Парсер на Python каждый день обходит сайты трёх конкурентов магазина электроники: HTML-каталог с пагинацией, sitemap с JSON-LD и SPA с API. Сопоставляет товары с каталогом, присылает уведомления об изменениях, рекомендует цену по правилам и выгружает отчёт в Excel. Python работает прямо в браузере.

    • Python
    • React
    • TypeScript
  • Веб-приложение · PWA · нативный JS

    работает

    Офлайн-приложение курьера

    Рабочий день курьера: заказы, звонок клиенту, вручение с фото и подписью. Приложение открывается и работает без сети, а изменения уходят в диспетчерскую, когда связь вернётся. Если диспетчер за это время изменил тот же заказ — курьер выбирает, чья версия верная.

    • Нативный JS