Files
geo/README.md

162 lines
6.0 KiB
Markdown
Raw Permalink Normal View History

2026-02-04 00:11:19 +05:00
# Смета Ассистент
Веб-приложение для автоматизации создания смет на изыскательские работы с ИИ-ассистентом.
## Возможности
- **Чат с ИИ**: Извлечение данных из текста ТЗ или 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