package model import ( "time" "gorm.io/datatypes" ) // ApprovalInstance 是渠道无关的通用审批实例持久化模型。 type ApprovalInstance struct { ID uint `gorm:"column:id;primaryKey;autoIncrement" json:"id"` BusinessType string `gorm:"column:business_type;type:varchar(64);not null;uniqueIndex:uq_approval_instance_business,priority:1" json:"business_type"` BusinessID uint `gorm:"column:business_id;not null;uniqueIndex:uq_approval_instance_business,priority:2" json:"business_id"` SubmitterAccountID uint `gorm:"column:submitter_account_id;not null;index" json:"submitter_account_id"` SubmitterSnapshot datatypes.JSON `gorm:"column:submitter_snapshot;type:jsonb;not null" json:"submitter_snapshot"` Provider string `gorm:"column:provider;type:varchar(32);not null" json:"provider"` ExternalRef string `gorm:"column:external_ref;type:varchar(128);not null;default:''" json:"external_ref"` Status int `gorm:"column:status;type:int;not null;default:0;index:idx_approval_instance_status_changed,priority:1" json:"status"` RequestSnapshot datatypes.JSON `gorm:"column:request_snapshot;type:jsonb;not null" json:"request_snapshot"` DecisionSnapshot datatypes.JSON `gorm:"column:decision_snapshot;type:jsonb" json:"decision_snapshot,omitempty"` CorrelationID string `gorm:"column:correlation_id;type:varchar(100);not null;index" json:"correlation_id"` Version int `gorm:"column:version;type:int;not null;default:1" json:"version"` StatusChangedAt time.Time `gorm:"column:status_changed_at;type:timestamptz;not null;index:idx_approval_instance_status_changed,priority:2" json:"status_changed_at"` CreatedAt time.Time `gorm:"column:created_at;type:timestamptz;not null;autoCreateTime" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;type:timestamptz;not null;autoUpdateTime" json:"updated_at"` } // TableName 返回通用审批实例表名。 func (ApprovalInstance) TableName() string { return "tb_approval_instance" }