Смета Ассистент
Веб-приложение для автоматизации создания смет на изыскательские работы с ИИ-ассистентом.
Возможности
- Чат с ИИ: Извлечение данных из текста ТЗ или PDF файлов
- Конструктор смет: Визуальный редактор позиций сметы
- Справочники базовых цен: СБЦ геодезия, геология, экология
- Автоматический расчёт: Коэффициенты, перевод в текущие цены, НДС
- Экспорт в PDF: Генерация готовой сметы (при наличии Python — через модуль на ReportLab с корректной кириллицей)
Структура проекта
├── backend/ # Node.js + Express + Prisma
│ ├── prisma/
│ │ ├── schema.prisma # Схема БД
│ │ └── seed.ts # Начальные данные
│ └── src/
│ ├── routes/ # API роуты
│ └── services/ # Бизнес-логика
├── frontend/ # React + Vite + Tailwind
│ └── src/
│ ├── components/ # React компоненты
│ └── api/ # API клиент
└── data/
└── price-books/ # JSON справочники цен
Требования
- Node.js 18+
- PostgreSQL 14+
- npm или yarn
Установка
1. База данных
Создайте базу данных PostgreSQL:
CREATE DATABASE estimate_assistant;
2. Backend
Для корректной кириллицы в PDF рекомендуется использовать Python-модуль (ReportLab): установите Python 3.8+, в папке backend/pdf_generator выполните pip install -r requirements.txt. На Windows скрипт использует системный Arial; иначе положите TTF в backend/pdf_generator/fonts/ (см. backend/pdf_generator/README.md). Если Python недоступен, backend использует генерацию на Node (нужен npm install в backend для шрифтов). После изменений перезапустите backend (npm run dev).
cd backend
# Установка зависимостей
npm install
# Скопируйте .env.example в .env и настройте
cp .env.example .env
# Создание таблиц в БД
npm run prisma:push
# Загрузка начальных данных
npm run prisma:seed
# Запуск сервера (порт 5000)
npm run dev
3. Frontend
cd frontend
# Установка зависимостей
npm install
# Запуск (порт 3000)
npm run dev
Конфигурация (.env)
# База данных
DATABASE_URL="postgresql://it:iiEasy348ax@@localhost:5432/estimate_assistant?schema=public"
# Сервер
PORT=5000
# AI провайдер: iieasy или lmstudio
AI_PROVIDER=iieasy
# ai.iieasy.ru
IIEASY_API_URL=https://ai.iieasy.ru/v1
IIEASY_API_KEY=your-api-key
IIEASY_MODEL=google/gemma-3n-e4b
# LM Studio (локальный)
LMSTUDIO_API_URL=http://localhost:1234/v1
LMSTUDIO_MODEL=local-model
# Настройки по умолчанию
DEFAULT_EXECUTOR=ООО "ГеоВектор"
DEFAULT_VAT_RATE=20
DEFAULT_COMPANY_COEF=0.2092
API
Сметы
GET /api/estimates- Список сметPOST /api/estimates- Создать сметуGET /api/estimates/:id- Получить сметуPUT /api/estimates/:id- Обновить сметуPOST /api/estimates/:id/items- Добавить позициюPOST /api/estimates/:id/recalculate- ПересчитатьGET /api/estimates/:id/pdf- Скачать PDF
Справочники
GET /api/price-books- Список справочниковGET /api/price-books/items/search?query=...- Поиск позицийGET /api/price-books/coefficients/all- КоэффициентыGET /api/price-books/directions/all- Направления изысканий
Чат
POST /api/chat/sessions- Создать сессиюPOST /api/chat/sessions/:id/messages- Отправить сообщениеPOST /api/chat/sessions/:id/upload- Загрузить файл
Настройки
GET /api/settings- Получить настройкиPUT /api/settings/:key- Обновить настройку
Администрирование
GET /api/admin/stats- Статистика БДPOST /api/admin/price-books/import-json- Импорт справочника
Справочники базовых цен
Данные извлечены из официальных СБЦ:
- СБЦ "Инженерно-геодезические изыскания" (2004)
- СБЦ "Инженерно-геологические и инженерно-экологические изыскания" (1999)
JSON файлы находятся в data/price-books/.
Формула расчёта сметы
Базовая_стоимость = Цена_СБЦ × Объём × К1 × К2 × К3
Итого_изыскания = Сумма_работ + Транспорт + Орг_ликв
С_районным_коэф = Итого × Районный_коэф
Текущие_цены = С_районным_коэф × Инфляционный_индекс
Итого_без_НДС = Текущие_цены × Коэф_компании × Коэф_исполнителя
НДС = Итого_без_НДС × Ставка_НДС
Всего = Итого_без_НДС + НДС
Лицензия
MIT
Description