- Add AI moderation to comments (was missing protection) - Enhance post moderation to analyze images, videos, thumbnails - Add FlagComment method for comment flagging - Extract media URLs for comprehensive content analysis - Update moderation config and models - Add OpenAI and Google Vision API integration - Fix database connection to use localhost This ensures all text, image, and video content is protected by AI moderation.
75 lines
2.6 KiB
Go
75 lines
2.6 KiB
Go
package models
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type Report struct {
|
|
ID uuid.UUID `json:"id"`
|
|
ReporterID uuid.UUID `json:"reporter_id"`
|
|
TargetUserID uuid.UUID `json:"target_user_id"`
|
|
PostID *uuid.UUID `json:"post_id,omitempty"`
|
|
CommentID *uuid.UUID `json:"comment_id,omitempty"`
|
|
ViolationType string `json:"violation_type"`
|
|
Description string `json:"description"`
|
|
Status string `json:"status"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
type AbuseLog struct {
|
|
ID uuid.UUID `json:"id"`
|
|
ActorID *uuid.UUID `json:"actor_id,omitempty"`
|
|
BlockedID uuid.UUID `json:"blocked_id"`
|
|
BlockedHandle string `json:"blocked_handle"`
|
|
ActorIP string `json:"actor_ip"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
type ModerationFlag struct {
|
|
ID uuid.UUID `json:"id"`
|
|
PostID *uuid.UUID `json:"post_id,omitempty"`
|
|
CommentID *uuid.UUID `json:"comment_id,omitempty"`
|
|
FlagReason string `json:"flag_reason"`
|
|
Scores map[string]float64 `json:"scores"`
|
|
Status string `json:"status"`
|
|
ReviewedBy *uuid.UUID `json:"reviewed_by,omitempty"`
|
|
ReviewedAt *time.Time `json:"reviewed_at,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type UserStatusHistory struct {
|
|
ID uuid.UUID `json:"id"`
|
|
UserID uuid.UUID `json:"user_id"`
|
|
OldStatus *string `json:"old_status,omitempty"`
|
|
NewStatus string `json:"new_status"`
|
|
Reason string `json:"reason"`
|
|
ChangedBy uuid.UUID `json:"changed_by"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
// ModerationQueueItem represents a simplified view for Directus moderation interface
|
|
type ModerationQueueItem struct {
|
|
ID uuid.UUID `json:"id"`
|
|
PostID *uuid.UUID `json:"post_id,omitempty"`
|
|
CommentID *uuid.UUID `json:"comment_id,omitempty"`
|
|
FlagReason string `json:"flag_reason"`
|
|
Scores map[string]float64 `json:"scores"`
|
|
Status string `json:"status"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
PostContent *string `json:"post_content,omitempty"`
|
|
CommentContent *string `json:"comment_content,omitempty"`
|
|
AuthorHandle *string `json:"author_handle,omitempty"`
|
|
}
|
|
|
|
// UserModeration represents user status for management
|
|
type UserModeration struct {
|
|
ID uuid.UUID `json:"id"`
|
|
Handle string `json:"handle"`
|
|
Email string `json:"email"`
|
|
Status string `json:"status"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|