Update documentation to reflect actual implementation
This commit is contained in:
30
CLAUDE.md
30
CLAUDE.md
@@ -20,7 +20,6 @@ QuoteForge — корпоративный инструмент для конфи
|
|||||||
quoteforge/
|
quoteforge/
|
||||||
├── cmd/
|
├── cmd/
|
||||||
│ ├── server/main.go # Main HTTP server
|
│ ├── server/main.go # Main HTTP server
|
||||||
│ ├── priceupdater/main.go # Cron job for price updates & alerts
|
|
||||||
│ └── importer/main.go # Import metadata from lot table
|
│ └── importer/main.go # Import metadata from lot table
|
||||||
├── internal/
|
├── internal/
|
||||||
│ ├── config/config.go # YAML config loading
|
│ ├── config/config.go # YAML config loading
|
||||||
@@ -89,7 +88,6 @@ CREATE TABLE qt_users (
|
|||||||
CREATE TABLE qt_lot_metadata (
|
CREATE TABLE qt_lot_metadata (
|
||||||
lot_name CHAR(255) PRIMARY KEY,
|
lot_name CHAR(255) PRIMARY KEY,
|
||||||
category_id INT,
|
category_id INT,
|
||||||
vendor VARCHAR(50), -- Parsed from lot_name: CPU_AMD_9654 → "AMD"
|
|
||||||
model VARCHAR(100), -- Parsed: CPU_AMD_9654 → "9654"
|
model VARCHAR(100), -- Parsed: CPU_AMD_9654 → "9654"
|
||||||
specs JSON,
|
specs JSON,
|
||||||
current_price DECIMAL(12,2),
|
current_price DECIMAL(12,2),
|
||||||
@@ -168,18 +166,21 @@ CREATE TABLE qt_component_usage_stats (
|
|||||||
|
|
||||||
### 1. Part Number Parsing
|
### 1. Part Number Parsing
|
||||||
|
|
||||||
Extract category, vendor, model from lot_name:
|
Extract category and model from lot_name:
|
||||||
```go
|
```go
|
||||||
// "CPU_AMD_9654" → category="CPU", vendor="AMD", model="9654"
|
// "CPU_AMD_9654" → category="CPU", model="AMD_9654"
|
||||||
// "MB_INTEL_4.Sapphire_2S_32xDDR5" → category="MB", vendor="INTEL", model="4.Sapphire_2S_32xDDR5"
|
// "MB_INTEL_4.Sapphire_2S" → category="MB", model="INTEL_4.Sapphire_2S"
|
||||||
// "MEM_DDR5_64G_5600" → category="MEM", vendor="DDR5", model="64G_5600"
|
// "MEM_DDR5_64G_5600" → category="MEM", model="DDR5_64G_5600"
|
||||||
// "GPU_NV_RTX_4090_PCIe" → category="GPU", vendor="NV", model="RTX_4090_PCIe"
|
// "GPU_NV_RTX_4090_PCIe" → category="GPU", model="NV_RTX_4090_PCIe"
|
||||||
|
|
||||||
func ParsePartNumber(lotName string) (category, vendor, model string) {
|
func ParsePartNumber(lotName string) (category, model string) {
|
||||||
parts := strings.SplitN(lotName, "_", 3)
|
parts := strings.SplitN(lotName, "_", 2)
|
||||||
if len(parts) >= 1 { category = parts[0] }
|
if len(parts) >= 1 {
|
||||||
if len(parts) >= 2 { vendor = parts[1] }
|
category = parts[0]
|
||||||
if len(parts) >= 3 { model = parts[2] }
|
}
|
||||||
|
if len(parts) >= 2 {
|
||||||
|
model = parts[1]
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -233,7 +234,6 @@ Sort by: popularity + price freshness. Components without prices go to the botto
|
|||||||
Generate alerts when:
|
Generate alerts when:
|
||||||
- **high_demand_stale_price** (CRITICAL): >= 5 quotes/month AND price > 60 days old
|
- **high_demand_stale_price** (CRITICAL): >= 5 quotes/month AND price > 60 days old
|
||||||
- **trending_no_price** (HIGH): trend_percent > 50% AND no price set
|
- **trending_no_price** (HIGH): trend_percent > 50% AND no price set
|
||||||
- **price_spike** (MEDIUM): price increased > 20% from previous period
|
|
||||||
- **no_recent_quotes** (MEDIUM): popular component, no supplier quotes > 90 days
|
- **no_recent_quotes** (MEDIUM): popular component, no supplier quotes > 90 days
|
||||||
|
|
||||||
## API Endpoints
|
## API Endpoints
|
||||||
@@ -274,7 +274,6 @@ GET /api/configs/:uuid → get by UUID
|
|||||||
PUT /api/configs/:uuid → update
|
PUT /api/configs/:uuid → update
|
||||||
DELETE /api/configs/:uuid → delete
|
DELETE /api/configs/:uuid → delete
|
||||||
GET /api/configs/:uuid/export → export as JSON
|
GET /api/configs/:uuid/export → export as JSON
|
||||||
POST /api/configs/import → import from JSON
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Pricing Admin (requires role: pricing_admin or admin)
|
### Pricing Admin (requires role: pricing_admin or admin)
|
||||||
@@ -325,9 +324,6 @@ GET /partials/summary → price summary HTML
|
|||||||
# Run development server
|
# Run development server
|
||||||
go run ./cmd/server
|
go run ./cmd/server
|
||||||
|
|
||||||
# Run price updater (cron job)
|
|
||||||
go run ./cmd/priceupdater
|
|
||||||
|
|
||||||
# Run importer (one-time setup)
|
# Run importer (one-time setup)
|
||||||
go run ./cmd/importer
|
go run ./cmd/importer
|
||||||
|
|
||||||
|
|||||||
35
README.md
35
README.md
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
**Server Configuration & Quotation Tool**
|
**Server Configuration & Quotation Tool**
|
||||||
|
|
||||||
QuoteForge — корпоративный инструмент для конфигурирования серверов и формирования коммерческих предложений. Позволяет быстро собрать спецификацию сервера из каталога компонентов с автоматическим расчётом цен.
|
QuoteForge — корпоративный инструмент для конфигурирования серверов и формирования коммерческих предложений (КП). Приложение интегрируется с существующей базой данных RFQ_LOG.
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
@@ -16,7 +16,6 @@ QuoteForge — корпоративный инструмент для конфи
|
|||||||
- 💰 **Автоматический расчёт цен** — актуальные цены на основе истории закупок
|
- 💰 **Автоматический расчёт цен** — актуальные цены на основе истории закупок
|
||||||
- 📊 **Экспорт в CSV/XLSX** — готовые спецификации для клиентов
|
- 📊 **Экспорт в CSV/XLSX** — готовые спецификации для клиентов
|
||||||
- 💾 **Сохранение конфигураций** — история и шаблоны для повторного использования
|
- 💾 **Сохранение конфигураций** — история и шаблоны для повторного использования
|
||||||
- 📤 **Импорт/экспорт JSON** — обмен конфигурациями между пользователями
|
|
||||||
|
|
||||||
### Для ценовых администраторов
|
### Для ценовых администраторов
|
||||||
- 📈 **Умный расчёт цен** — медиана, взвешенная медиана, среднее
|
- 📈 **Умный расчёт цен** — медиана, взвешенная медиана, среднее
|
||||||
@@ -83,23 +82,23 @@ auth:
|
|||||||
### 3. Миграции базы данных
|
### 3. Миграции базы данных
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make migrate
|
go run ./cmd/server -migrate
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. Импорт метаданных компонентов
|
### 4. Импорт метаданных компонентов
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make seed
|
go run ./cmd/importer
|
||||||
```
|
```
|
||||||
|
|
||||||
### 5. Запуск
|
### 5. Запуск
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Development
|
# Development
|
||||||
make run
|
go run ./cmd/server
|
||||||
|
|
||||||
# Production
|
# Production
|
||||||
make build
|
CGO_ENABLED=0 go build -ldflags="-s -w" -o bin/quoteforge ./cmd/server
|
||||||
./bin/quoteforge
|
./bin/quoteforge
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -120,9 +119,8 @@ docker-compose up -d
|
|||||||
```
|
```
|
||||||
quoteforge/
|
quoteforge/
|
||||||
├── cmd/
|
├── cmd/
|
||||||
│ ├── server/ # Основной сервер
|
│ ├── server/main.go # Main HTTP server
|
||||||
│ ├── priceupdater/ # Cron job обновления цен
|
│ └── importer/main.go # Import metadata from lot table
|
||||||
│ └── importer/ # Импорт данных
|
|
||||||
├── internal/
|
├── internal/
|
||||||
│ ├── config/ # Конфигурация
|
│ ├── config/ # Конфигурация
|
||||||
│ ├── models/ # GORM модели
|
│ ├── models/ # GORM модели
|
||||||
@@ -137,7 +135,7 @@ quoteforge/
|
|||||||
├── config.yaml # Конфигурация
|
├── config.yaml # Конфигурация
|
||||||
├── Dockerfile
|
├── Dockerfile
|
||||||
├── docker-compose.yml
|
├── docker-compose.yml
|
||||||
└── Makefile
|
└── go.mod
|
||||||
```
|
```
|
||||||
|
|
||||||
## Роли пользователей
|
## Роли пользователей
|
||||||
@@ -165,30 +163,23 @@ GET /api/configs # Сохранённые конфигурации
|
|||||||
|
|
||||||
## Cron Jobs
|
## Cron Jobs
|
||||||
|
|
||||||
Добавьте в crontab:
|
Система автоматического обновления цен не реализована в текущей версии. Для обновления цен можно использовать команду:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Обновление цен — каждую ночь в 2:00
|
go run ./cmd/server -migrate
|
||||||
0 2 * * * /opt/quoteforge/bin/priceupdater
|
|
||||||
|
|
||||||
# Генерация алертов — каждый час
|
|
||||||
0 * * * * /opt/quoteforge/bin/priceupdater --alerts-only
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Разработка
|
## Разработка
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Запуск в режиме разработки (hot reload)
|
# Запуск в режиме разработки (hot reload)
|
||||||
make dev
|
go run ./cmd/server
|
||||||
|
|
||||||
# Запуск тестов
|
# Запуск тестов
|
||||||
make test
|
go test ./...
|
||||||
|
|
||||||
# Линтер
|
|
||||||
make lint
|
|
||||||
|
|
||||||
# Сборка для Linux
|
# Сборка для Linux
|
||||||
make build-linux
|
CGO_ENABLED=0 go build -ldflags="-s -w" -o bin/quoteforge ./cmd/server
|
||||||
```
|
```
|
||||||
|
|
||||||
## Переменные окружения
|
## Переменные окружения
|
||||||
|
|||||||
Reference in New Issue
Block a user