Files
GostGenerator/web/README.md
T
2026-09-02 12:48:03 +03:00

85 lines
3.2 KiB
Markdown
Raw 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.
# GostGenerator Web
Веб-сервис для генерации ГОСТ-документов из архива Altium-проекта: парсинг в БД, редактирование таблиц и рамки, экспорт PDF/Excel, помощь LLM через OpenRouter (прокси).
## Состав
- `backend/` — FastAPI + PostgreSQL + парсер Altium + генераторы таблиц
- `frontend/` — React (Vite) SPA
- `docker-compose.yml` — api + db + web (nginx)
## Быстрый старт на сервере
```bash
cd web
cp .env.example .env
# отредактируйте .env: API_TOKEN, OPENROUTER_*, POSTGRES_PASSWORD
docker compose up -d --build
```
Откройте `http://<server>:8080`.
В шапке укажите **API token** (значение `API_TOKEN` из `.env`).
### Типовой сценарий
1. Создать проект
2. Загрузить ZIP с Altium-проектом (внутри должен быть `.PrjPcb` + `.SchDoc` / `.PcbDoc`)
3. Заполнить децимальный номер / название платы и поля рамки
4. Выбрать документ → **Сгенерировать** → править ячейки → **Сохранить**
5. Скачать **Excel** или **PDF**
6. При необходимости: чат LLM → просмотреть proposed edits → **Применить**
7. Обновление базы элементов: **Обновить ZIP** (таблицы по умолчанию сохраняются)
## Переменные окружения
| Переменная | Описание |
|---|---|
| `API_TOKEN` | Токен для API / UI |
| `OPENROUTER_BASE_URL` | URL OpenRouter (`…/api/v1`) |
| `OPENROUTER_API_KEY` | Ключ |
| `OPENROUTER_MODEL` | Например `deepseek/deepseek-chat` |
| `OPENROUTER_PROXY` | SOCKS5-прокси, напр. `socks5://user:pass@host:1080` |
| `HTTP_PORT` | Порт nginx (по умолчанию 8080) |
| `DATA_DIR` | В контейнере `/data` (zip и артефакты) |
## Локальная разработка (без Docker UI)
PostgreSQL + API:
```bash
# поднять только БД
docker compose up -d db
cd backend
python -m venv .venv
# Windows: .venv\Scripts\activate
pip install -r requirements.txt
set DATABASE_URL=postgresql+psycopg://gost:gost@localhost:5432/gost
set API_TOKEN=changeme
set DATA_DIR=../data
uvicorn app.main:app --reload --port 8000
```
Frontend:
```bash
cd frontend
npm install
npm run dev
```
Vite проксирует `/api` на `localhost:8000`.
## API
Документация: `http://<host>:8080/docs` (через nginx) или `:8000/docs` напрямую к api.
Основные эндпоинты: `/api/projects`, `…/upload`, `…/tables/{type}/generate`, `…/inscriptions`, `…/export`, `…/llm/chat`, `…/llm/apply`.
Заголовок: `Authorization: Bearer <API_TOKEN>` или `X-API-Token`.
## LLM и стоимость
Вызовы только по явной команде в чате. Автозаполнения всех строк нет. В промпт уходит сжатый снимок таблицы (лимит `LLM_MAX_CONTEXT_ROWS`). Правки не применяются автоматически.