# QuoteForge **Server Configuration & Quotation Tool** QuoteForge — корпоративный инструмент для конфигурирования серверов и формирования коммерческих предложений. Позволяет быстро собрать спецификацию сервера из каталога компонентов с автоматическим расчётом цен. ![Go Version](https://img.shields.io/badge/Go-1.22+-00ADD8?style=flat&logo=go) ![License](https://img.shields.io/badge/License-Proprietary-red) ![Status](https://img.shields.io/badge/Status-In%20Development-yellow) ## Возможности ### Для пользователей - 📱 **Mobile-first интерфейс** — удобная работа с телефона и планшета - 🖥️ **Конфигуратор серверов** — пошаговый выбор компонентов с проверкой совместимости - 💰 **Автоматический расчёт цен** — актуальные цены на основе истории закупок - 📊 **Экспорт в CSV/XLSX** — готовые спецификации для клиентов - 💾 **Сохранение конфигураций** — история и шаблоны для повторного использования - 📤 **Импорт/экспорт JSON** — обмен конфигурациями между пользователями ### Для ценовых администраторов - 📈 **Умный расчёт цен** — медиана, взвешенная медиана, среднее - 🎯 **Система алертов** — уведомления о популярных компонентах с устаревшими ценами - 📉 **Аналитика использования** — какие компоненты востребованы в КП - ⚙️ **Гибкие настройки** — периоды расчёта, методы, ручные переопределения ### Индикация актуальности цен | Цвет | Статус | Условие | |------|--------|---------| | 🟢 Зелёный | Свежая | < 30 дней, ≥ 3 источника | | 🟡 Жёлтый | Нормальная | 30-60 дней | | 🟠 Оранжевый | Устаревающая | 60-90 дней | | 🔴 Красный | Устаревшая | > 90 дней или нет данных | ## Технологии - **Backend:** Go 1.22+, Gin, GORM - **Frontend:** HTML, Tailwind CSS, htmx - **Database:** MariaDB 11+ - **Export:** excelize (XLSX), encoding/csv ## Требования - Go 1.22 или выше - MariaDB 11.x (или MySQL 8.x) - ~50 MB дискового пространства ## Установка ### 1. Клонирование репозитория ```bash git clone https://github.com/your-company/quoteforge.git cd quoteforge ``` ### 2. Настройка конфигурации ```bash cp config.example.yaml config.yaml ``` Отредактируйте `config.yaml`: ```yaml server: host: "0.0.0.0" port: 8080 mode: "release" database: host: "localhost" port: 3306 name: "RFQ_LOG" user: "quoteforge" password: "your-secure-password" auth: jwt_secret: "your-jwt-secret-min-32-chars" token_expiry: "24h" ``` ### 3. Миграции базы данных ```bash make migrate ``` ### 4. Импорт метаданных компонентов ```bash make seed ``` ### 5. Запуск ```bash # Development make run # Production make build ./bin/quoteforge ``` Приложение будет доступно по адресу: http://localhost:8080 ## Docker ```bash # Сборка образа docker build -t quoteforge . # Запуск с docker-compose docker-compose up -d ``` ## Структура проекта ``` quoteforge/ ├── cmd/ │ ├── server/ # Основной сервер │ ├── priceupdater/ # Cron job обновления цен │ └── importer/ # Импорт данных ├── internal/ │ ├── config/ # Конфигурация │ ├── models/ # GORM модели │ ├── handlers/ # HTTP handlers │ ├── services/ # Бизнес-логика │ ├── middleware/ # Auth, CORS, etc. │ └── repository/ # Работа с БД ├── web/ │ ├── templates/ # HTML шаблоны │ └── static/ # CSS, JS, изображения ├── migrations/ # SQL миграции ├── config.yaml # Конфигурация ├── Dockerfile ├── docker-compose.yml └── Makefile ``` ## Роли пользователей | Роль | Описание | |------|----------| | `viewer` | Просмотр, создание квот, экспорт | | `editor` | + сохранение конфигураций | | `pricing_admin` | + управление ценами и алертами | | `admin` | Полный доступ, управление пользователями | ## API Документация API доступна по адресу `/api/docs` (в разработке). Основные endpoints: ``` POST /api/auth/login # Авторизация GET /api/components # Список компонентов POST /api/quote/calculate # Расчёт цены POST /api/export/xlsx # Экспорт в Excel GET /api/configs # Сохранённые конфигурации ``` ## Cron Jobs Добавьте в crontab: ```bash # Обновление цен — каждую ночь в 2:00 0 2 * * * /opt/quoteforge/bin/priceupdater # Генерация алертов — каждый час 0 * * * * /opt/quoteforge/bin/priceupdater --alerts-only ``` ## Разработка ```bash # Запуск в режиме разработки (hot reload) make dev # Запуск тестов make test # Линтер make lint # Сборка для Linux make build-linux ``` ## Переменные окружения | Переменная | Описание | По умолчанию | |------------|----------|--------------| | `QF_DB_HOST` | Хост базы данных | localhost | | `QF_DB_PORT` | Порт базы данных | 3306 | | `QF_DB_NAME` | Имя базы данных | RFQ_LOG | | `QF_DB_USER` | Пользователь БД | — | | `QF_DB_PASSWORD` | Пароль БД | — | | `QF_JWT_SECRET` | Секрет для JWT | — | | `QF_SERVER_PORT` | Порт сервера | 8080 | ## Интеграция с существующей БД QuoteForge интегрируется с существующей базой RFQ_LOG: - `lot` — справочник компонентов (только чтение) - `lot_log` — история цен от поставщиков (только чтение) - `supplier` — справочник поставщиков (только чтение) Новые таблицы QuoteForge имеют префикс `qt_`: - `qt_users` — пользователи приложения - `qt_lot_metadata` — расширенные данные компонентов - `qt_configurations` — сохранённые конфигурации - `qt_pricing_alerts` — алерты для администраторов ## Поддержка По вопросам работы приложения обращайтесь: - Email: support@your-company.com - Internal: #quoteforge в Slack ## Лицензия Copyright © 2025 Your Company Name. Все права защищены. Данное программное обеспечение является собственностью компании и предназначено исключительно для внутреннего использования. Распространение, копирование или модификация без письменного разрешения запрещены. См. файл [LICENSE](LICENSE) для подробностей.