# 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://: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://:8080/docs` (через nginx) или `:8000/docs` напрямую к api. Основные эндпоинты: `/api/projects`, `…/upload`, `…/tables/{type}/generate`, `…/inscriptions`, `…/export`, `…/llm/chat`, `…/llm/apply`. Заголовок: `Authorization: Bearer ` или `X-API-Token`. ## LLM и стоимость Вызовы только по явной команде в чате. Автозаполнения всех строк нет. В промпт уходит сжатый снимок таблицы (лимит `LLM_MAX_CONTEXT_ROWS`). Правки не применяются автоматически.