package model // BrandRunway 走秀档案(对外称"文章")。 type BrandRunway struct { ID uint32 `gorm:"primaryKey;column:id" json:"id"` // i18n 列(方案 A):*_en 为规范英文(当前数据全英文),*_cn 为中文; // 服务端按 locale 选列,缺翻译回落另一语言。 // (原通用 title / description 列已删除,统一由 *_en/*_cn 取代。) TitleEn string `gorm:"column:title_en" json:"title_en"` TitleCn string `gorm:"column:title_cn" json:"title_cn"` DescriptionEn string `gorm:"column:description_en" json:"description_en"` DescriptionCn string `gorm:"column:description_cn" json:"description_cn"` 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"` ImageCount uint16 `gorm:"column:image_count" json:"image_count"` BrandID uint32 `gorm:"column:brand_id" json:"brand_id"` Year uint16 `gorm:"column:year" json:"year"` Cover string `gorm:"column:cover" json:"cover"` // 分类字段:由 title 解析回填(历史数据迁移一次性写入,现已由外部 SQL 迁移维护) CollectionType string `gorm:"column:collection_type;size:16;not null;default:''" json:"collection_type"` // rtw/menswear/couture/resort/pre_fall Season string `gorm:"column:season;size:8" json:"season"` // spring/fall/null SeasonCode string `gorm:"column:season_code;size:8;not null;default:''" json:"season_code"` // SS26/FW25/RES26/PF25 // 审核态与溯源(单表发布模型;列由 db/migrations/2026-09-22-01-single-table-publish.sql 添加)。 Status string `gorm:"column:status;size:16;not null;default:'pending'" json:"status"` JobID uint32 `gorm:"column:job_id;not null;default:0" json:"job_id"` // 关联 ingest_jobs.id(重跑溯源) Reviewer string `gorm:"column:reviewer;size:64;not null;default:''" json:"reviewer"` // 审核人(admin 账号) RejectReason string `gorm:"column:reject_reason;size:255;not null;default:''" json:"reject_reason"` } // TableName 指定表名。 func (BrandRunway) TableName() string { return "brand_runways" } // RunwayRow 走秀档案的查询投影行。 // // 独立于 BrandRunway 定义,是为了承载 JOIN brands 得到的品牌名(en/cn 两列)。 type RunwayRow struct { ID uint32 `gorm:"column:id"` BrandID uint32 `gorm:"column:brand_id"` TitleEn string `gorm:"column:title_en"` TitleCn string `gorm:"column:title_cn"` DescriptionEn string `gorm:"column:description_en"` DescriptionCn string `gorm:"column:description_cn"` Cover string `gorm:"column:cover"` Year uint16 `gorm:"column:year"` ImageCount uint16 `gorm:"column:image_count"` CollectionType string `gorm:"column:collection_type"` Season string `gorm:"column:season"` SeasonCode string `gorm:"column:season_code"` Status string `gorm:"column:status"` CreatedAt uint32 `gorm:"column:created_at"` BrandNameEn string `gorm:"column:brand_name_en"` BrandNameCn string `gorm:"column:brand_name_cn"` }