85 lines
3.2 KiB
Markdown
85 lines
3.2 KiB
Markdown
# 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`). Правки не применяются автоматически.
|