Платформа закупок строительных материалов

Закупка стройматериалов —
по предложениям, а не по звонкам

Мини-тендер собирает коммерческие предложения поставщиков в одном месте: вы задаёте материал, объём и адрес доставки, платформа ведёт раунды и считает отчёт. Что именно уже работает, а что нет, — ниже без прикрас.

39
контрактов API
путей в OpenAPI живого сервера
14
экранов интерфейса
маршрутов Next.js в сборке
7
раундов ограничение
максимум раундов задаётся тарифом
15
поставщиков в тендере
потолок участников (AD18)
образец вида экраначисла ниже вымышленные и ничего не измеряют
Тендер · Брусчатка 200×100×60
1 000 шт · Москва
Торги · Р2
12
Поставщиков
6
Ответов
84 ₽
Лучшая
⚡ идут торги↓ экономия против цели📬 6 ждут ответа

Пример интерфейса: числа на плитках показываются из ответа сервера, а не рисуются в разметке. «Лучшая цена» на карточке тендера не выводится — она считается в отчёте по полной цене (товар + доставка).

Что уже работает

/* реализовано в Фазе 1 и покрыто проверками

Посмотреть в интерфейсе
Мини-тендеры (RFQ)
Создание тендера с материалом, объёмом, адресом доставки и целевой ценой. Ограничение раундов задаётся тарифом.
Поиск и состав поставщиков
Подбор поставщиков под материал, добавление вручную, потолок участников приходит из ответа сервера, а не из интерфейса.
Письма и статусы доставки
Предпросмотр и подтверждение рассылки. Статусы «заблокировано», «отклонено», «ожидает» различаются тоном и подписью.
Ответы поставщиков
Список ответов, сравнение КП по цене, сроку, оплате и наличию. Ручной ввод неприкосновенен: автоматика его не перезаписывает.
Торги и отчёт
Запуск и подтверждение раунда, остановка с причиной из закрытого списка, отчёт с выгрузкой PDF и XLSX.
Честная деградация
Недоступность сервиса показывается как ограниченный режим с причиной и идентификатором запроса, а не пустым экраном.
Чего ещё нет
Перечислено явно, чтобы не выдать несуществующее за готовое.
  • рассылка поставщикам выключена — флаг `EMAIL_SENDING_ENABLED=false`: интерфейс показывает «заблокировано» с причиной (`SENDING_DISABLED`, `OUTSIDE_ALLOWLIST`), а не «отправлено»;
  • вложения и проверка файлов — узел W4 отложен решением владельца: хранилище и антивирус развёрнуты в контуре, но приложение к ним не обращается, файл из письма не сохраняется и не проверяется;
  • разбор писем без цены — если в письме цены нет или она не относится к предмету тендера, КП не создаётся: система не выдумывает цену, а оставляет ответ в ручном вводе и называет причину отказа;
  • правовой контур (оферта, политика обработки данных, сроки хранения) — заморожен решением владельца (AD8): правовых страниц нет, тексты согласий в базе отсутствуют, сроки помечены `tbd`;
  • сортировка ответов — строки идут по цене, а балл участника (0…1, меньше — лучше) показан отдельной колонкой и решает только равенство цен: это решение владельца, а не отсутствие данных;
  • сводка по портфелю — числа приходят из `GET /dashboard/summary` и скоупятся тендерами ПОЛЬЗОВАТЕЛЯ: платформенного агрегата по всем клиентам на витрине нет.

Соберите предложения поставщиков
в одном месте

/* создание тендера → поиск поставщиков → письма → сравнение КП → отчёт

Зарегистрироваться