Skip to content

Repository files navigation

ТендерБот v2

SaaS-ускоритель для опытного тендерного специалиста МСБ в РФ. Загружаешь PDF тендерной документации (44-ФЗ / 223-ФЗ) — через 30–60 сек получаешь структурированный отчёт с цитатами, сверку с профилем компании (светофор), календарь дедлайнов и Telegram-уведомления.

Статус: Day 0 завершён — каркас инфраструктуры готов, код MVP ещё не написан. План: см. C:\Users\REDMI\.claude\plans\silly-orbiting-puddle.md. PRD / spec: см. .claude/TenderBot_PRD_v2.md и .claude/spec.md в родительской папке.

Стек

  • Web: Next.js 16 App Router + TypeScript + Tailwind 4
  • БД: PostgreSQL 16 + Prisma 7 (через @prisma/adapter-pg)
  • Очередь: BullMQ (Redis) — Node продюсер, минималистичный Python consumer
  • LLM: Anthropic Claude Sonnet 4.6 (primary, подтверждается spike W0); OpenAI / YandexGPT — fallback
  • PDF: pdfplumber (MIT) + vision-fallback для сканов
  • Storage: Yandex Object Storage (S3-совместимое, 152-ФЗ)
  • Auth: magic link через Resend
  • Биллинг: ЮKassa (РФ)
  • Telegram: grammY
  • Мониторинг: Sentry + PostHog

Структура

app/                Next.js App Router (UI + API routes + Server Actions)
components/         UI: pdf-viewer/, report/, ui/
lib/                Server-side TS: db, storage, llm, queue, matching, telegram, yookassa
worker/             Python 3.12+ воркер (PDF → LLM → JSON)
prisma/             schema.prisma + migrations
datasets/golden/    Эталонные ТД для eval (PDF не коммитятся, truth.json — да)
scripts/            compare-providers.py, eval-llm.py, seed-profile.ts
docs/               spike-report.md, runbook.md

Запуск разработки

Предварительные требования (Day 0)

  • Node.js 20+ (проверено на 24.13), pnpm 10+ (поставлен глобально)
  • Python 3.12+ ← не установлен на текущей машине, нужен к неделе 0 для spike. Ставь отсюда: https://www.python.org/downloads/
  • Docker Desktop ← не установлен, нужен к неделе 1 для Postgres + Redis. https://www.docker.com/products/docker-desktop

Шаги

# 1. Зависимости Node
pnpm install

# 2. Секреты
cp .env.example .env
# Заполни ANTHROPIC_API_KEY, DATABASE_URL, REDIS_URL как минимум

# 3. Postgres + Redis локально (после установки Docker Desktop)
docker compose up -d postgres redis

# 4. Prisma
pnpm prisma migrate dev
pnpm prisma generate

# 5. Python-воркер (после установки Python)
python -m venv worker/.venv
worker/.venv/Scripts/activate   # Windows
pip install -r worker/requirements.txt

# 6. Dev-сервер
pnpm dev

# 7. Воркер (в другом терминале)
python worker/main.py

Неделя 0 — LLM spike

# Собери 5-10 ТД с zakupki.gov.ru вручную в datasets/golden/tender_XX.pdf
# Заполни ground truth: datasets/golden/tender_XX.truth.json (структура — worker/schema.py)

python scripts/compare-providers.py --providers anthropic
# → datasets/spike-results.json
# → docs/spike-report.md

# Gate-критерии (план §2.3):
# accuracy ≥ 85%, quote validity ≥ 95%, cost ≤ $0.30/tender, p95 latency ≤ 40s

python scripts/eval-llm.py --fail-under 85

Команды

Команда Что делает
pnpm dev Next.js dev-сервер
pnpm build / pnpm start Production-сборка
pnpm lint ESLint
pnpm prisma validate Проверить schema.prisma
pnpm prisma generate Сгенерировать PrismaClient
pnpm prisma migrate dev Создать/применить миграцию
python worker/main.py Запустить Python воркер
python scripts/compare-providers.py Spike — сравнение LLM провайдеров
python scripts/eval-llm.py Quality gate на golden-датасете

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages