package model import "database/sql" // BrandRunwayImage 走秀图片。 type BrandRunwayImage struct { ID uint32 `gorm:"primaryKey;column:id" json:"id"` CreatedAt uint32 `gorm:"column:created_at" json:"created_at"` UpdatedAt uint32 `gorm:"column:updated_at" json:"updated_at"` IsDeleted uint8 `gorm:"column:is_deleted" json:"is_deleted"` Image string `gorm:"column:image" json:"image"` RunwayID uint32 `gorm:"column:runway_id" json:"runway_id"` BrandID uint32 `gorm:"column:brand_id" json:"brand_id"` Name string `gorm:"column:name" json:"name"` SortOrder uint32 `gorm:"column:sort_order" json:"sort_order"` // 拖拽排序用,由迁移脚本新增 IsDetail uint8 `gorm:"column:is_detail" json:"is_detail"` // 0=主图 1=细节图 // 主副图分组(列由 db/migrations/2026-09-24-01-runway-parent-image-id.sql 添加): // 与 street_snap_images 同构——is_detail=0 为主图(parent_image_id=0); // =1 为细节图,parent_image_id 指向同 runway 内主图的行 id。Look 序号对产品无意义,已移除。 ParentImageID uint32 `gorm:"column:parent_image_id;not null;default:0" json:"parent_image_id"` // 去重字段(近重复 + 语义 embedding 留痕): // phash 为 dHash 的 pgvector 二进制向量(vector(64)),NULL 表示无法解码(如 webp),不参与检索; // is_duplicate / dup_of 仅在命中近重复时标记,供人工审核留痕,不阻断入库。 Phash sql.NullString `gorm:"column:phash;type:vector(64)" json:"phash"` IsDuplicate uint8 `gorm:"column:is_duplicate;not null;default:0" json:"is_duplicate"` DupOf string `gorm:"column:dup_of;type:varchar(32);not null;default:''" json:"dup_of"` } // TableName 指定表名。 func (BrandRunwayImage) TableName() string { return "brand_runway_images" }