package model import ( "time" "github.com/google/uuid" "gorm.io/gorm" ) // AuditTargetType 审核对象类型 type AuditTargetType string const ( AuditTargetTypePost AuditTargetType = "post" // 帖子 AuditTargetTypeComment AuditTargetType = "comment" // 评论 AuditTargetTypeMessage AuditTargetType = "message" // 私信 AuditTargetTypeUser AuditTargetType = "user" // 用户资料 AuditTargetTypeImage AuditTargetType = "image" // 图片 ) // AuditResult 审核结果 type AuditResult string const ( AuditResultPass AuditResult = "pass" // 通过 AuditResultReview AuditResult = "review" // 需人工复审 AuditResultBlock AuditResult = "block" // 违规拦截 AuditResultUnknown AuditResult = "unknown" // 未知 ) // AuditRiskLevel 风险等级 type AuditRiskLevel string const ( AuditRiskLevelLow AuditRiskLevel = "low" // 低风险 AuditRiskLevelMedium AuditRiskLevel = "medium" // 中风险 AuditRiskLevelHigh AuditRiskLevel = "high" // 高风险 ) // AuditSource 审核来源 type AuditSource string const ( AuditSourceAuto AuditSource = "auto" // 自动审核 AuditSourceManual AuditSource = "manual" // 人工审核 AuditSourceCallback AuditSource = "callback" // 回调审核 ) // AuditLog 审核日志实体 type AuditLog struct { ID string `json:"id" gorm:"type:varchar(36);primaryKey"` TargetType AuditTargetType `json:"target_type" gorm:"type:varchar(50);index"` TargetID string `json:"target_id" gorm:"type:varchar(255);index"` Content string `json:"content" gorm:"type:text"` // 待审核内容 ContentType string `json:"content_type" gorm:"type:varchar(50)"` // 内容类型: text, image ContentURL string `json:"content_url" gorm:"type:text"` // 图片/文件URL AuditType string `json:"audit_type" gorm:"type:varchar(50)"` // 审核类型: porn, violence, ad, political, fraud, gamble Result AuditResult `json:"result" gorm:"type:varchar(50);index"` RiskLevel AuditRiskLevel `json:"risk_level" gorm:"type:varchar(20)"` Labels string `json:"labels" gorm:"type:text"` // JSON数组,标签列表 Suggestion string `json:"suggestion" gorm:"type:varchar(50)"` // pass, review, block Detail string `json:"detail" gorm:"type:text"` // 详细说明 ThirdPartyID string `json:"third_party_id" gorm:"type:varchar(255)"` // 第三方审核服务返回的ID Source AuditSource `json:"source" gorm:"type:varchar(20);default:auto"` ReviewerID string `json:"reviewer_id" gorm:"type:varchar(255)"` // 审核人ID(人工审核时使用) ReviewerName string `json:"reviewer_name" gorm:"type:varchar(100)"` // 审核人名称 ReviewTime *time.Time `json:"review_time" gorm:"index"` // 审核时间 UserID string `json:"user_id" gorm:"type:varchar(255);index"` // 内容发布者ID UserIP string `json:"user_ip" gorm:"type:varchar(45)"` // 用户IP Status string `json:"status" gorm:"type:varchar(20);default:pending"` // pending, completed, failed RejectReason string `json:"reject_reason" gorm:"type:text"` // 拒绝原因(人工审核时使用) ExtraData string `json:"extra_data" gorm:"type:text"` // 额外数据,JSON格式 CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"` UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"` DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` } // BeforeCreate 创建前生成UUID func (al *AuditLog) BeforeCreate(tx *gorm.DB) error { if al.ID == "" { al.ID = uuid.New().String() } return nil } func (AuditLog) TableName() string { return "audit_logs" } // AuditLogRequest 创建审核日志请求 type AuditLogRequest struct { TargetType AuditTargetType `json:"target_type" validate:"required"` TargetID string `json:"target_id" validate:"required"` Content string `json:"content"` ContentType string `json:"content_type"` ContentURL string `json:"content_url"` AuditType string `json:"audit_type"` UserID string `json:"user_id"` UserIP string `json:"user_ip"` } // AuditLogListItem 审核日志列表项 type AuditLogListItem struct { ID string `json:"id"` TargetType AuditTargetType `json:"target_type"` TargetID string `json:"target_id"` Content string `json:"content"` ContentType string `json:"content_type"` Result AuditResult `json:"result"` RiskLevel AuditRiskLevel `json:"risk_level"` Suggestion string `json:"suggestion"` Source AuditSource `json:"source"` ReviewerID string `json:"reviewer_id"` ReviewTime *time.Time `json:"review_time"` UserID string `json:"user_id"` Status string `json:"status"` CreatedAt time.Time `json:"created_at"` }