FloorVisualizer/internal/model/product.go
dindang 94895cbc22 Initial commit: FloorVisualizer backend
- Go API server with PostgreSQL + Redis
- AI floor replacement (OpenRouter Gemini)
- Product database (10 brands, 3539 products)
- Recommendation engine, calculator, articles
- Redis async queue + worker pool
- Hot product caching, brand view tracking
- JWT auth, favorites, projects
- Docker deployment ready

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-16 09:47:11 +08:00

43 lines
1.7 KiB
Go

package model
type Product struct {
Brand string `json:"brand"`
GroupName string `json:"group_name"`
SKU string `json:"sku"`
SeriesName string `json:"series_name"`
StyleName string `json:"style_name"`
Category string `json:"category"`
Material string `json:"material"`
ColorTone string `json:"color_tone"`
Finish string `json:"finish"`
PricePerSqft float64 `json:"price_per_sqft"`
PriceTier string `json:"price_tier"`
PriceSource string `json:"price_source"`
MainImageURL string `json:"main_image_url"`
RoomImageURL string `json:"room_image_url"`
SourceURL string `json:"source_url"`
Description string `json:"description"`
Status string `json:"status"`
CoverageSqftPerBox float64 `json:"coverage_sqft_per_box"`
WoodSpecies string `json:"wood_species"`
SizeLabel string `json:"size_label"`
WidthIn float64 `json:"width_in"`
LengthIn float64 `json:"length_in"`
Variants []Product `json:"variants,omitempty"`
Specs []ProductSpec `json:"specs,omitempty"`
IsFavorited bool `json:"is_favorited"`
}
// ProductSpec is a single size/price variant of a product style.
type ProductSpec struct {
SKU string `json:"sku"`
SizeLabel string `json:"size_label"`
WidthIn float64 `json:"width_in"`
LengthIn float64 `json:"length_in"`
Finish string `json:"finish"`
PricePerSqft float64 `json:"price_per_sqft"`
PriceTier string `json:"price_tier"`
CoverageSqftPerBox float64 `json:"coverage_sqft_per_box"`
MainImageURL string `json:"main_image_url"`
}