Files
geo/README.md
2026-02-04 00:11:19 +05:00

162 lines
6.0 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Смета Ассистент
Веб-приложение для автоматизации создания смет на изыскательские работы с ИИ-ассистентом.
## Возможности
- **Чат с ИИ**: Извлечение данных из текста ТЗ или 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