Разработка тендерной площадки
Проведение конкурентных закупок — сложная задача, особенно для госзаказа или крупных B2B-контрактов. Заказчики сталкиваются с требованиями к безопасности (sealed bids), прозрачности (аудит) и юридической значимости (ЭЦП). Утечка цен до дедлайна подрывает доверие участников и снижает конкуренцию. Наша команда с 10+ летним опытом создаёт тендерные площадки под ключ, соответствующие стандартам 44-ФЗ и 223-ФЗ. Используем современный стек: React, Node.js, PostgreSQL, автоматизируем CI/CD через GitLab.
Реальный кейс: крупный B2B-холдинг жаловался на низкую активность поставщиков из-за опасений раскрытия цен. Развернули платформу на AWS EKS с модулем sealed bids на Go, используя AWS KMS для управления ключами. Результат: количество участников выросло втрое, экономия за год превысила 2 млн рублей. Автоматическая оценка заявок по весовым критериям сократила время обработки с пяти дней до двух секунд. Платформа поддерживает открытые и закрытые конкурсы, запрос котировок и электронные аукционы.
Для госзакупок по 44-ФЗ обязательна интеграция с ЕИС. Наша платформа автоматически дублирует опубликованные закупки, исключая ошибки ручного ввода. Все документы подписываются квалифицированной ЭП, audit log фиксирует каждое действие. Уведомления о статусах закупок — через email и Telegram.
Что такое тендерная площадка?
Тендерная площадка — электронная система, где заказчик публикует требования, поставщики подают заявки, а победитель определяется автоматически или комиссией. В отличие от маркетплейса, критична безопасность данных (шифрование цен) и неотвратимость логирования каждого действия.
Какие типы процедур поддерживаются?
| Процедура |
Описание |
Средняя длительность |
| Открытый конкурс |
Все поставщики подают заявки открыто |
20-30 дней |
| Закрытый конкурс |
Только приглашённые участники |
15-20 дней |
| Запрос котировок |
Одноэтапная процедура с ценовыми предложениями |
7-10 дней |
| Электронный аукцион |
Поставщики снижают цену в реальном времени |
1-2 дня |
| Двухэтапный конкурс |
Сначала технические предложения, затем ценовые |
25-40 дней |
Каждая процедура настраивается под бизнес-правила заказчика: веса критериев, автоматическое открытие предложений, уведомления.
Жизненный цикл тендера
Draft -> Published -> Accepting bids (deadline) -> Evaluation -> Award -> Contract -> Execution -> Closed
Каждый переход фиксируется в audit log с timestamp и пользователем. Изменение статуса после дедлайна невозможно.
Как работают запечатанные предложения (sealed bids)?
Ценовые предложения шифруются при подаче и расшифровываются после дедлайна. Используем симметричное шифрование с отдельным ключом для каждой заявки:
from cryptography.fernet import Fernet
# При подаче заявки
key = Fernet.generate_key() # ключ хранится зашифрованным
f = Fernet(key)
encrypted_price = f.encrypt(str(price).encode())
# Сохраняем encrypted_price, ключ раскрывается после дедлайна
# После дедлайна - автоматическое вскрытие
decrypted_price = f.decrypt(encrypted_price)
Альтернатива: envelope encryption через AWS KMS или HashiCorp Vault — ключ раскрытия активируется по расписанию. В 100% случаев sealed bids исключают утечку цен.
Оценка заявок: автоматическая vs ручная
| Тип оценки |
Скорость |
Прозрачность |
Риск ошибки |
| Автоматическая (только цена) |
Мгновенно |
Полная |
Низкий |
| Весовая (цена + тех. баллы) |
1-2 секунды |
Высокая |
Средний |
| Ручная (комиссия) |
3-5 дней |
Зависит от членов комиссии |
Высокий |
Автоматическая оценка в 10 раз быстрее ручной. Комбинируем подходы: для простых закупок — авто, для сложных — ручная с верификацией.
Почему важна интеграция с ЕИС?
Для госзакупок по 44-ФЗ и 223-ФЗ интеграция с ЕИС обязательна. Наша платформа автоматически публикует извещения и результаты, синхронизирует статусы. Это экономит до 10 часов в неделю на ручном вводе и исключает штрафы за несвоевременное размещение.
Электронная подпись и обжалование
Документы (договор, протокол, заявки) подписываются ЭЦП: КриптоПро для российских площадок, квалифицированная ЭП для юридически значимых закупок, интеграция с Госуслугами для верификации. Поставщик, не победивший, может подать жалобу. Процесс: описание нарушения -> рассмотрение -> решение (отклонить/признать нарушение/пересмотреть). Жалоба приостанавливает подписание договора (44-ФЗ).
Как мы разрабатываем тендерную площадку: пошагово
- Аналитика и проектирование — собираем требования, рисуем ER-диаграммы, спецификацию API.
- Разработка модуля публикации и подачи заявок — фронтенд на React, бэкенд на Laravel или Node.js.
- Реализация sealed bids — выбираем метод шифрования (envelope encryption, KMS), пишем модуль, интегрируем с хранилищем ключей.
- Интеграция ЭЦП и ЕИС — подключаем КриптоПро, настраиваем обмен с ЕИС через REST API.
- Тестирование — unit, integration, e2e тесты, нагрузочное тестирование.
- Деплой и мониторинг — Docker, Nginx, CI/CD, логирование.
- Обучение и документация — инструкции для администраторов и пользователей, API-документация.
Что вы получаете в итоге
| Документация и доступы |
Обучение и поддержка |
| Полная техническая документация, API-спецификация |
Обучение администраторов и пользователей |
| Доступ к исходному коду и репозиторию |
Техническая поддержка на этапе запуска |
| Сертификаты и лицензии на ПО |
Гарантийное обслуживание 12 месяцев |
Типичные ошибки при создании тендерной площадки
- Игнорирование требований 44-ФЗ к audit log и электронной подписи — несоответствие.
- Использование самописной криптографии для sealed bids — лучше проверенные библиотеки (cryptography, AWS KMS).
- Отсутствие уведомлений — поставщики пропускают дедлайны.
- Неправильная настройка весов критериев — автоматическая оценка выдаёт неверные результаты.
Сроки и стоимость
| Этап |
Длительность |
| MVP (публикация, подача, базовая оценка, audit log) |
3-4 месяца |
| Полноценная площадка (sealed bids, ЭЦП, несколько процедур, ЕИС) |
6-10 месяцев |
Стоимость рассчитывается индивидуально в зависимости от сложности и стека. Пример: для B2B-холдинга платформа окупилась за 8 месяцев, сократив цикл закупок на 40%.
Свяжитесь с нами для консультации по архитектуре. Закажите разработку MVP для быстрого старта торгов.
Разработка корпоративных порталов и внутренних систем
Мы занимаемся разработкой корпоративных порталов — CRM, ERP, LMS и Intranet. Каждый такой проект начинается не с вёрстки лендинга, а с того, как бизнес-правила лягут в архитектуру: кто видит какие данные, как синхронизируются 1С и учётная система, как 500 контактов превращаются в 500 000 без падения производительности. За 7 лет мы реализовали более 40 порталов для компаний с численностью от 50 до 5000 сотрудников. Оценим ваш проект за два рабочих дня — просто свяжитесь с нами.
Публичный сайт можно запустить без детального проектирования — итеративно править по фидбеку. С корпоративным порталом так не работает: стоимость исправления архитектурных решений после запуска на 200 пользователей несопоставимо выше. Поэтому мы уделяем 70% времени аналитике и прототипированию, а код пишем только после согласования ролевой матрицы и интеграционной схемы.
Три зоны, где чаще всего принимаются плохие решения, — модель прав доступа, производительность на больших данных и real-time обновления.
Как построить ролевую модель для 30 отделов?
Модель прав доступа. «Менеджер видит только своих клиентов, руководитель отдела — весь отдел, директор — всю компанию, но финансовые данные — только финансовый директор и выше». Это не три роли — это матрица из ролей, разрешений, организационных единиц и владения записями. Если это реализовать через if ($user->role === 'manager') в контроллерах — через полгода код станет неподдерживаемым.
Правильный подход: Spatie Laravel Permission для базовой ролевой модели + Policy классы для object-level permission (can('view', $deal) проверяет не только роль, но и владение). Для сложных иерархических структур — ABAC (Attribute-Based Access Control) вместо RBAC.
Производительность на больших данных. CRM с 500 000 контактов, фильтрация по 10 полям, сортировка по активности — это задача, где наивная реализация выдаёт 15-секундные запросы. Composite indexes, денормализация агрегатов (last_activity_at на самой записи вместо MAX по связанной таблице), Elasticsearch для full-text поиска по контактам.
Real-time обновления. Несколько сотрудников работают с одним документом или задачей. Без WebSocket — постоянные setInterval с polling каждые 5 секунд, лишняя нагрузка на сервер, задержка обновлений. Laravel Broadcasting + Pusher/Soketi или собственный WebSocket сервер на Node.js — для уведомлений и изменений в реальном времени.
CRM-системы
Типичный набор: контакты, компании, сделки, активности, воронка продаж, отчёты. Технически это несложно. Сложность — в деталях.
Pipeline с кастомными стадиями. Каждая компания хочет свою воронку. Стадии должны быть настраиваемыми без деплоя. Таблица pipeline_stages с position, color, is_final, probability — и drag-and-drop для изменения порядка на UI (React DnD или dnd-kit).
История изменений. Кто и когда изменил статус сделки, поменял ответственного, добавил заметку. Audit log через Observer или spatie/laravel-activitylog. На UI — timeline с фильтрацией по типу активности.
Интеграция с почтой. IMAP/SMTP для подключения корпоративного ящика, автоматическая привязка входящих писем к контактам по email-адресу. Это надёжно работает только при правильной обработке bounce, spam, автоответов — нужна фильтрация.
Почему ERP — не про код, а про данные?
ERP — это когда CRM, склад, производство, бухгалтерия и HR объединены в единую систему. Полный ERP с нуля — редкая задача (обычно интегрируются с существующими системами), но модульные системы под конкретный бизнес — регулярная.
Ключевой принцип: финансовые операции должны быть неизменяемыми. Не UPDATE orders SET status = 'cancelled' — а создание новой записи order_cancellations с ссылкой на исходный заказ. Это принцип immutable ledger, который упрощает аудит и reconciliation.
Интеграция с 1С — почти всегда часть ERP-проекта. Двусторонняя синхронизация: из 1С в портал (справочники, остатки, цены) и из портала в 1С (заказы, документы). RabbitMQ как шина событий между системами надёжнее прямого HTTP-взаимодействия — в случае недоступности 1С сообщения ждут в очереди.
Как устроены LMS: платформы обучения
Learning Management System — это курсы, модули, уроки, тесты, сертификаты, прогресс пользователей.
Видео-контент — самая нагруженная часть LMS. Хранить видео на собственном сервере и отдавать через Nginx — плохая идея: дорого, медленно, нет адаптивного битрейта. Правильно: загрузка в S3/Cloudflare R2, транскодирование через AWS Elemental MediaConvert или Mux, HLS-плейлист для адаптивного стриминга через Video.js или Plyr.
Прогресс просмотра — через периодическую отправку watch_position с фронтенда (каждые 10–30 секунд), хранение в Redis с периодической синхронизацией в PostgreSQL. Не сохранять каждую секунду в БД — это убьёт производительность.
SCORM-совместимость — если нужна интеграция с корпоративными тренинговыми материалами. Отдельный модуль, есть готовые библиотеки (scorm-again).
Intranet и HR-порталы
Корпоративный интранет: новости, документы, оргструктура, HR-процессы (отпуска, заявки, KPI).
Оргструктура в базе данных — это иерархическая структура. Adjacency list (parent_id на каждой записи) прост в реализации, но медленен при рекурсивных запросах. Nested Sets или Closure Table быстрее для чтения иерархии, сложнее при изменениях. В PostgreSQL — рекурсивные CTE (WITH RECURSIVE) с adjacency list — баланс между простотой и производительностью.
Согласование документов и заявок — workflow engine. Простые линейные согласования (сотрудник → менеджер → HR → бухгалтер) можно сделать без специального движка. Нелинейные (параллельные ветки, условные переходы, делегирование) — стоит рассмотреть готовые решения: Temporal.io для workflow orchestration или собственный конечный автомат на базе state-machine паттерна.
Что входит в работу
При заказе разработки корпоративного портала вы получаете:
- Архитектурную документацию (ER-диаграммы, схема интеграций, матрица ролей)
- Полный код в Git-репозитории с CI/CD
- Доступы к инфраструктуре (хостинг, базы данных, хранилища)
- Обучение администраторов и ключевых пользователей (2–3 сессии)
- Гарантийную поддержку на 3 месяца после запуска
Наши принципы проектирования опираются на официальную документацию Laravel по авторизации (Policies) и рекомендации по работе с очередями.
Технический стек для порталов
| Слой |
Инструменты |
| Backend |
Laravel + PostgreSQL |
| Frontend |
React + TypeScript (Inertia.js или отдельный SPA) |
| Real-time |
Laravel Echo + Soketi / Pusher |
| Поиск |
Meilisearch (быстрый старт) или Elasticsearch (объём) |
| Очереди |
Laravel Queue + Redis |
| Файлы |
S3-compatible (MinIO self-hosted или AWS S3) |
| Мониторинг |
Sentry + Telescope (dev) |
Ориентиры по срокам
| Тип портала |
Срок |
| CRM (базовый) |
10–16 недель |
| LMS (курсы + видео + тесты) |
14–22 недели |
| HR-портал (отпуска, KPI, оргструктура) |
12–20 недель |
| Корпоративный ERP (модульный) |
24–52 недели |
Стоимость рассчитывается индивидуально после детальной аналитики требований и ролевой модели. Чтобы получить предварительную оценку, напишите нам — мы проанализируем вашу задачу и предложим оптимальное решение под ключ.