Files
GostGenerator/web
2026-09-02 13:45:27 +03:00
..
2026-09-02 13:45:27 +03:00
2026-09-02 13:20:29 +03:00
2026-09-02 12:48:03 +03:00
2026-09-02 12:48:03 +03:00
2026-09-02 12:48:03 +03:00
2026-09-02 12:48:03 +03:00

GostGenerator Web

Веб-сервис для генерации ГОСТ-документов из архива Altium-проекта: парсинг в БД, редактирование таблиц и рамки, экспорт PDF/Excel, помощь LLM через OpenRouter (прокси).

Состав

  • backend/ — FastAPI + PostgreSQL + парсер Altium + генераторы таблиц
  • frontend/ — React (Vite) SPA
  • docker-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).

Типовой сценарий

  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:

# поднять только БД
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). Правки не применяются автоматически.