name: tenders-44fz description: Госзакупки 44-ФЗ для поставщика (друг Алекса — сувенирка/печать/брендинг). 4-шаговый агент: фильтр → анализ заказчика (победители, % снижения) → запрос цен поставщикам → маржа к НМЦ. Источники данных, инфра, обучение вайбкодингу. Используй при любой задаче про тендеры/закупки друга.
Tenders 44-ФЗ — агент-помощник поставщика госзакупок
⭐ Engine v2 (2026-06-10 вечер, АКТУАЛЬНОЕ): «движок пути к деньгам» — expert-loop калибровка на Вадиме, bottom-up смета, P(win|цена) →
platform/specs/SPEC-grantum-engine-v2-money-path-2026-06-10.md. ⚠️ Стратегия/монетизация (2026-06-10): петля денег, целевая функция «выгодности», каскад L0-L3, roadmap →platform/specs/SPEC-grantum-tender-engine-strategy-2026-06-10.md(см. memory/grantum-engine-strategy-2026-06-10.md). ⭐ READ FIRST (новая сессия):reference/MASTER-SPEC-grantum-full-buildout-2026-06-03.md— ретро + мировой best-practice (Stotles/Tussell/Keelvar/Fairmarkit/AutogenAI) + спека ВСЕХ эпиков остатка (A pipeline/workspace, B renewal+алерты, C bid/no-bid отчёт+price-to-win, D doc-QA, E черновик заявки, F RFQ-автоматизация, G коммерция, H профиль, I инфра, J buyer-intel) + handoff-промпт под ключ. ⚠️ EPIC I срочно: gov-прокси триал истекает 06.06.2026. Затемreference/SESSION-2026-06-03-v2-retro-and-handoff.md— что уже LIVE. Затемreference/HANDOFF-SPEC-2026-06-03.md— детали реализации gov_gateway/РНП/финансы/профиль/RFQ/референс. Это движок Grantum (grantum.ai = ЖИВОЕ приложение, сервер 72.56.236.63, НЕ 217). Цель — топовая международная supplier-side платформа, профильно под друга (полиграфия/сувенирка). Связанные доки:reference/{data-architecture,strategy-and-enrichment,friend-profile-poligraf-suvenirka}-*.md. Креды:memory/credentials.md.
Когда использовать
Любая задача про тендеры друга Алекса: поставка сувенирной/печатной/брендированной продукции по госзакупкам 44-ФЗ. Цель — софт, которым он пользуется как сторонний заказчик, + обучить его строить агентов самому (вайбкодинг).
Канон-факты (не переоткрывать)
- Целимся в 44-ФЗ (государственные закупки). Подтверждено Алексом 2026-06-02. НЕ коммерция, НЕ Росэлторг.Бизнес.
- 44-ФЗ полностью публикуется в ЕИС (zakupki.gov.ru) → данные открытые: извещения, протоколы (победители), реестр контрактов, цены. Всё, что нужно для шагов 1-2, — открыто и бесплатно.
- Росэлторг — это площадка (1 из 8 федеральных ЭТП), не заказчик. Его коммерческая секция Росэлторг.Бизнес (номера
B/COM, способ «выбор победителя», com.roseltorg.ru) — НЕ наш кейс, в ЕИС не попадает. Если всплывёт такой тендер — это исключение, не цель. - Детали/история решения:
memory/tender-data-sourcing-2026-06-02.md. Проект-код: Grantum/Users/alex/Projects/tender-ai/.
Архитектура: 4 шага друга → как закрываем
- Фильтр-мониторинг (ОКПД, ключи, заказчик, НМЦ, регион, тип процедуры). → Открытые данные 44-ФЗ. ✅ закрыто данными.
- Анализ заказчика (история закупок, кто побеждал, % снижения, один победитель или ротация). → Протоколы + реестр контрактов 44-ФЗ, всё открыто. % снижения = (НМЦ − итоговая цена)/НМЦ. ✅ строим на открытых данных.
- Запрос цен поставщикам (позиции ТЗ → рассылка по базе через мессенджер/почту → сбор и сведение ответов). → Своя разработка (RFQ-бот), данные площадок НЕ нужны. Самое сложное. Ключ — структурированный шаблон ответа поставщика.
- Срез себес/НМЦ → маржа (НМЦ 2 млн, себес 1.1 млн, маржа 45% → участвуем за секунды). → Калькулятор поверх Шага 3. Маржу исторически НЕ калибруем (уникалка непредсказуема) — только факт по живым ценам Шага 3, либо прайс-каталог на стандартные SKU (бумага, типовые ручки/кружки по артикулу). ФСНБ-движок Grantum (стройка) — НЕ использовать.
Источники данных 44-ФЗ
- gosplan.info зеркало —
https://v2.gosplan.info/fz44/{contracts,...}— БЕСПЛАТНО, без ключа, работает с любого IP. Уже интегрирован в Grantum (outreach/providers.pyGosplanClient,base_url=.../fz44). Параметры:customer(ИНН заказчика — фильтр РАБОТАЕТ на fz44, проверено),supplier,limit,published_forpast,sort. 160K тендеров уже в БД Grantum. - ЕИС официальный (
zakupki.gov.ru) — первоисточник, полные протоколы/контракты. ⚠️ Режет IP стартап-сервера (000), но доступен с prod-217 (200). Для прямого ЕИС — через 217 или официальный integration API (СОИ, регистрация free). - TenderGuru API — удобный REST, покрывает 44-ФЗ. Ключ в
credentials.md. Free: keyword-поиск + поля заказчик/НМЦ/цена/победитель(имя). Платно (тариф «Стандарт» 12900₽/6мес): снимает маску ИНН победителя + фильтрcustomerInn(camelCase). MCP: tenderguru.ru/api/mcp. ⚠️ Покупать только если открытых данных gosplan/ЕИС не хватит — сначала выжать бесплатное.
Инфраструктура
- ⛔ НЕ трогать prod-217 (
109.73.194.217) — основной прод VEDA. - ✅ Стартап-сервер
72.56.236.63(Timeweb, Москва, Ubuntu 24.04) — выделен под стартапы (grantum + nalogai). PM2:grantum-backend(:8011),grantum-frontend(:3007),nalogai-*. БДpostgresql://grantum@localhost/grantum. SSHroot@, ключ~/.ssh/id_ed25519. Вся работа по тендерам — здесь. - Деплой Grantum (проверено 2026-06-02): rsync →
72.56.236.63(НЕ 217 — CLAUDE.md проекта устарел). Backend:/var/www/grantum-backend/(venv uvicorn, pm2grantum-backend:8011, БДgrantum, реестр API под/api/v1/...). Frontend:/var/www/grantum-frontend/frontend/(Next standalone + npm, pm2grantum-frontend:3007; NEXT_PUBLIC_* печётся при build → ключ AG Grid в.env.productionДОnpm run build; после build докопировать.next/static+publicв.next/standalone/frontend/). БД:tender(307K строк, 44-ФЗ),tender_match_score. Users: alex@grantum.tech, codex-collect@tender.ai. - ⚠️ App-фронт (:3007) НЕ проброшен наружу! nginx
grantum(grantum.ai/grantum.tech):/→статика/var/www/grantum-ai-site(лендинг Genesis),/api/→:8011. grantum.ai=200(лендинг), grantum.tech=502(мёртв). Чтобы UI приложения был доступен — нужно завести домен/сабдомен (напр. app.grantum.ai) сlocation / → proxy_pass :3007. CORS бэка под этот origin тоже добавить. - ⚠️ Деплой rsync ОБЯЗАН исключать
.env.production(--exclude='.env.production') — иначе локальная версия безNEXT_PUBLIC_AG_GRID_LICENSE_KEYзатирает серверную → AG Grid рисует watermark «License Key Not Found» и Enterprise-фичи в trial. Ключ NEXT_PUBLIC печётся приnpm run build, поэтому после правки env — пересобрать. - SSRM-грабли (warnings в консоли):
groupDefaultExpandedНЕ работает сrowModelType="serverSide"(только clientSide) — убрать.agTotalAndFilteredRowCountComponentв statusBar — только client-side; для SSRM использоватьagTotalRowCountComponentили убрать. WebSocketwss://grantum.ai/api/v1/wsдаёт 404 (nginx не проксирует ws upgrade на /api — отдельная задача, на грид не влияет). - Грид-эндпоинты:
GET /api/v1/tenders/grid(плоский, старый) +POST /api/v1/tenders/grid/query(SSRM: rowGroupCols/groupKeys/valueCols/filterModel/sortModel → group-rows{key,cnt,max_price sum} или leaf-rows). Группировка по customer_name проверена: топ-заказчик 1719 закупок, Σ НМЦ 9.6 млрд. - ⭐ TODO обогащение данных (для оживления Шага 2): в модели
TenderНЕТ final_price/contract_price/winner/supplier →% сниженияиПобедителейсейчасnull. Источник для обогащения —data_json['eis_enrichment'](EIS-enrichment уже есть). После добавления полей: reduction_pct=(max_price-final_price)/max_price*100, winners_count=COUNT(DISTINCT winner) в группировке. - Старый эндпоинт:
GET /api/v1/tenders/grid(start_row,end_row,sort_field,sort_dir,region,min/max_price,law,okpd,customer,q) →{rows,last_row}. Колонки модели Tender: title, customer_name, customer_inn, max_price, okpd2_codes(JSONB), publish_date, deadline, law, source, status, match_score, margin_percent.
AG Grid лицензия (для UI тендеров)
- Наша лицензия (
memory/ag-grid-enterprise-license.md): Enterprise Multiple Applications, 1 dev, до 06.05.2027. Покрывает НЕОГРАНИЧЕННОЕ число ВНУТРЕННИХ приложений. AG Grid НЕ берёт плату за серверы — «разные сервера» не проблема. - РЕШЕНИЕ (Алекс 2026-06-02): инструмент тендеров = ВНУТРЕННИЙ, друг = наш сотрудник. → используем Enterprise с нашим ключом (env
NEXT_PUBLIC_AG_GRID_LICENSE_KEY, ключ вmemory/ag-grid-enterprise-license.md), все фичи доступны (SSRM, Row Grouping для досье, Excel и т.д.). Регистрация как в veda-presentation:AllEnterpriseModule+LicenseManager.setLicenseKey(app/lib/agGridSetup.ts). - ⚠️ ЕСЛИ позже пойдём в customer-facing/продажу внешним → тогда докупить Deployment License Add-on (~$750/прод-окружение). Сейчас не усложнять.
Обучение друга вайбкодингу
Первый учебный агент: «по ИНН заказчика верни — кто побеждал и средний % снижения». Открытые данные gosplan/44-ФЗ, простой GET, измеримый результат. Дальше: RFQ-бот (Шаг 3), маржа-калькулятор (Шаг 4). Он сам сторонний заказчик софта + хочет учиться строить агентов/ИИ.
Entity-graph обогащение (сделано 2026-06-03)
- DaData резолвит ИНН→компанию —
backend/app/services/company_resolver.py, suggestions findById/party (Authorization: Token <DADATA_API_KEY>, ключи в env сервера). Кэш in-memory 24ч. Вшито вcustomer_dossier_service→ досье показывает названия победителей/заказчика (ООО «ФК Балтимор» вместо 7701071789) + статус + ОКВЭД. Деградация: нет ключа → name=None, дос не падает. - ⚠️ РНП пока не подключён: ФАС opendata (
fas.gov.ru/opendata/7703516539-rnp) и zakupki.gov.ru/dishonestsupplier геоблокнуты с сервера 72.56.236.63 (000), gosplan РНП-эндпоинта не имеет. Нужен прокси / 217 / зеркало / периодическая загрузка датасета. DaData РНП не отдаёт. - Стратегия/мировой best-practice/обогащение/универсальный движок →
reference/strategy-and-enrichment-2026-06-03.md.
Gotchas
- «Закупка с выбором победителя» + номер
B/COM= коммерция Росэлторг.Бизнес, НЕ 44-ФЗ, в ЕИС нет → не наш кейс. - gosplan fz223 customer-фильтр НЕ отработал в тестах (контроль РЖД=0) — не доверять fz223-фильтру без перепроверки. Для 44-ФЗ фильтр
customerработает. - ЕИС геоблокит датацентр-IP (стартап-сервер режется, 217 проходит) — для прямого ЕИС использовать 217 или official API, иначе gosplan-зеркало.
- Не строить маржу на ФСНБ (Grantum заточен под стройку — для сувенирки бесполезно).