QuoteForge

Server Configuration & Quotation Tool

QuoteForge — корпоративный инструмент для конфигурирования серверов и формирования коммерческих предложений. Позволяет быстро собрать спецификацию сервера из каталога компонентов с автоматическим расчётом цен.

Go Version License Status

Возможности

Для пользователей

  • 📱 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. Клонирование репозитория

git clone https://github.com/your-company/quoteforge.git
cd quoteforge

2. Настройка конфигурации

cp config.example.yaml config.yaml

Отредактируйте config.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. Миграции базы данных

make migrate

4. Импорт метаданных компонентов

make seed

5. Запуск

# Development
make run

# Production
make build
./bin/quoteforge

Приложение будет доступно по адресу: http://localhost:8080

Docker

# Сборка образа
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:

# Обновление цен — каждую ночь в 2:00
0 2 * * * /opt/quoteforge/bin/priceupdater

# Генерация алертов — каждый час
0 * * * * /opt/quoteforge/bin/priceupdater --alerts-only

Разработка

# Запуск в режиме разработки (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 — алерты для администраторов

Поддержка

По вопросам работы приложения обращайтесь:

Лицензия

Данное программное обеспечение является собственностью компании и предназначено исключительно для внутреннего использования. Распространение, копирование или модификация без письменного разрешения запрещены.

См. файл LICENSE для подробностей.

Description
No description provided
Readme 158 MiB
2026-03-16 08:33:53 +03:00
Languages
Go 65.6%
HTML 33.6%
Shell 0.5%
Makefile 0.3%