3.2 KiB
GostGenerator Web
Веб-сервис для генерации ГОСТ-документов из архива Altium-проекта: парсинг в БД, редактирование таблиц и рамки, экспорт PDF/Excel, помощь LLM через OpenRouter (прокси).
Состав
backend/— FastAPI + PostgreSQL + парсер Altium + генераторы таблицfrontend/— React (Vite) SPAdocker-compose.yml— api + db + web (nginx)
Быстрый старт на сервере
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).
Типовой сценарий
- Создать проект
- Загрузить ZIP с Altium-проектом (внутри должен быть
.PrjPcb+.SchDoc/.PcbDoc) - Заполнить децимальный номер / название платы и поля рамки
- Выбрать документ → Сгенерировать → править ячейки → Сохранить
- Скачать Excel или PDF
- При необходимости: чат LLM → просмотреть proposed edits → Применить
- Обновление базы элементов: Обновить 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:
# поднять только БД
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:
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). Правки не применяются автоматически.