package model import "database/sql" // StreetSnapDraft 街拍草稿(爬虫入库待审核)。 // // 与 brand_runway_draft 同构的审核流程:爬虫 worker 处理完 ingest_jobs 后写入本表并置 // pending;后台审核通过(Approve)后再晋升(SaveStreetSnapFromDraft)到 street_snap 正式表。 // // 字段对齐 street_snap 正式表(单 Title、有 City、无 brand_id、无 season 系列列), // 外加审核专用字段,便于审核页直接预览/微调。 type StreetSnapDraft struct { ID uint32 `gorm:"primaryKey;column:id" json:"id"` JobID uint32 `gorm:"column:job_id" json:"job_id"` // 关联 ingest_jobs.id(重跑溯源) Title string `gorm:"column:title" json:"title"` // 单标题(街拍无双语) Year uint16 `gorm:"column:year" json:"year"` City string `gorm:"column:city" json:"city"` // 地区/城市,'' 表示未归类 Cover string `gorm:"column:cover" json:"cover"` ImageCount uint16 `gorm:"column:image_count" json:"image_count"` Status string `gorm:"column:status" json:"status"` // pending | approved | rejected Reviewer string `gorm:"column:reviewer" json:"reviewer"` // 审核人(admin 账号) RejectReason string `gorm:"column:reject_reason" json:"reject_reason"` IsDeleted uint8 `gorm:"column:is_deleted" json:"is_deleted"` CreatedAt uint32 `gorm:"column:created_at" json:"created_at"` UpdatedAt uint32 `gorm:"column:updated_at" json:"updated_at"` } // TableName 指定草稿主表名。 func (StreetSnapDraft) TableName() string { return "street_snap_draft" } // StreetSnapDraftImage 街拍草稿图片(对应 street_snap_draft_images)。 type StreetSnapDraftImage struct { ID uint32 `gorm:"primaryKey;column:id" json:"id"` DraftID uint32 `gorm:"column:draft_id" json:"draft_id"` Image string `gorm:"column:image" json:"image"` Name string `gorm:"column:name" json:"name"` SortOrder uint32 `gorm:"column:sort_order" json:"sort_order"` IsDeleted uint8 `gorm:"column:is_deleted" json:"is_deleted"` CreatedAt uint32 `gorm:"column:created_at" json:"created_at"` UpdatedAt uint32 `gorm:"column:updated_at" json:"updated_at"` // 去重字段:见 BrandRunwayImage 注释。phash 为 vector(64) 二进制向量(NULL=无法解码)。 ContentSha1 string `gorm:"column:content_sha1;type:varchar(64);not null;default:''" json:"content_sha1"` 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 (StreetSnapDraftImage) TableName() string { return "street_snap_draft_images" }