added web service
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# 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`). Правки не применяются автоматически.
|
||||
Reference in New Issue
Block a user