# Смета Ассистент Веб-приложение для автоматизации создания смет на изыскательские работы с ИИ-ассистентом. ## Возможности - **Чат с ИИ**: Извлечение данных из текста ТЗ или 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: ```sql 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`). ```bash 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 ```bash cd frontend # Установка зависимостей npm install # Запуск (порт 3000) npm run dev ``` ## Конфигурация (.env) ```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