162 lines
6.0 KiB
Markdown
Executable File
162 lines
6.0 KiB
Markdown
Executable File
# Смета Ассистент
|
||
|
||
Веб-приложение для автоматизации создания смет на изыскательские работы с ИИ-ассистентом.
|
||
|
||
## Возможности
|
||
|
||
- **Чат с ИИ**: Извлечение данных из текста ТЗ или 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
|