2026-01-22 17:29:47 +03:00

QuoteForge

Server Configuration & Quotation Tool

QuoteForge — корпоративный инструмент для конфигурирования серверов и формирования коммерческих предложений (КП). Приложение интегрируется с существующей базой данных RFQ_LOG.

Go Version License Status

Возможности

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

  • 📱 Mobile-first интерфейс — удобная работа с телефона и планшета
  • 🖥️ Конфигуратор серверов — пошаговый выбор компонентов с проверкой совместимости
  • 💰 Автоматический расчёт цен — актуальные цены на основе истории закупок
  • 📊 Экспорт в CSV/XLSX — готовые спецификации для клиентов
  • 💾 Сохранение конфигураций — история и шаблоны для повторного использования

Для ценовых администраторов

  • 📈 Умный расчёт цен — медиана, взвешенная медиана, среднее
  • 🎯 Система алертов — уведомления о популярных компонентах с устаревшими ценами
  • 📉 Аналитика использования — какие компоненты востребованы в КП
  • ⚙️ Гибкие настройки — периоды расчёта, методы, ручные переопределения

Индикация актуальности цен

Цвет Статус Условие
🟢 Зелёный Свежая < 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. Миграции базы данных

go run ./cmd/server -migrate

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

go run ./cmd/importer

5. Запуск

# Development
go run ./cmd/server

# Production
CGO_ENABLED=0 go build -ldflags="-s -w" -o bin/quoteforge ./cmd/server
./bin/quoteforge

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

Docker

# Сборка образа
docker build -t quoteforge .

# Запуск с docker-compose
docker-compose up -d

Структура проекта

quoteforge/
├── cmd/
│   ├── server/main.go           # Main HTTP server
│   └── importer/main.go         # Import metadata from lot table
├── 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
└── go.mod

Роли пользователей

Роль Описание
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

QuoteForge now includes automated cron jobs for maintenance tasks. These can be run using the built-in cron functionality in the Docker container.

Docker Compose Setup

The Docker setup includes a dedicated cron service that runs the following jobs:

  • Alerts check: Every hour (0 * * * *)
  • Price updates: Daily at 2 AM (0 2 * * *)
  • Usage counter reset: Weekly on Sunday at 1 AM (0 1 * * 0)
  • Popularity score updates: Daily at 3 AM (0 3 * * *)

To enable cron jobs in Docker, run:

docker-compose up -d

Manual Cron Job Execution

You can also run cron jobs manually using the quoteforge-cron binary:

# Check and generate alerts
go run ./cmd/cron -job=alerts

# Recalculate all prices
go run ./cmd/cron -job=update-prices

# Reset usage counters
go run ./cmd/cron -job=reset-counters

# Update popularity scores
go run ./cmd/cron -job=update-popularity

Cron Job Details

  • Alerts check: Generates alerts for components with high demand and stale prices, trending components without prices, and components with no recent quotes
  • Price updates: Recalculates prices for all components using configured methods (median, weighted median, average)
  • Usage counter reset: Resets weekly and monthly usage counters for components
  • Popularity score updates: Recalculates popularity scores based on supplier quote activity

Разработка

# Запуск в режиме разработки (hot reload)
go run ./cmd/server

# Запуск тестов
go test ./...

# Сборка для Linux
CGO_ENABLED=0 go build -ldflags="-s -w" -o bin/quoteforge ./cmd/server

Переменные окружения

Переменная Описание По умолчанию
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%