feat(moderation): add manual content review system with three-tier AI moderation
Add admin comment moderation endpoints (single and batch) and introduce a three-tier moderation system (pass/review/block) for content flagged by AI. Content with unclear violations is now held for manual review instead of being auto-rejected. Deleted the legacy audit_service.go in favor of the unified hook-based moderation system.
This commit is contained in:
@@ -13,7 +13,7 @@ type CommentRepository interface {
|
||||
Create(comment *model.Comment) error
|
||||
GetByID(id string) (*model.Comment, error)
|
||||
Update(comment *model.Comment) error
|
||||
UpdateModerationStatus(commentID string, status model.CommentStatus) error
|
||||
UpdateModerationStatus(commentID string, status model.CommentStatus, rejectReason string, reviewedBy string) error
|
||||
Delete(id string) error
|
||||
ApplyPublishedStats(comment *model.Comment) error
|
||||
GetByPostID(postID string, page, pageSize int) ([]*model.Comment, int64, error)
|
||||
@@ -63,11 +63,17 @@ func (r *commentRepository) Update(comment *model.Comment) error {
|
||||
}
|
||||
|
||||
// UpdateModerationStatus 更新评论审核状态
|
||||
func (r *commentRepository) UpdateModerationStatus(commentID string, status model.CommentStatus) error {
|
||||
// 审核状态更新属于管理操作,不应影响评论内容更新时间(updated_at)
|
||||
func (r *commentRepository) UpdateModerationStatus(commentID string, status model.CommentStatus, rejectReason string, reviewedBy string) error {
|
||||
updates := map[string]any{
|
||||
"status": status,
|
||||
"reviewed_at": gorm.Expr("CURRENT_TIMESTAMP"),
|
||||
"reviewed_by": reviewedBy,
|
||||
"reject_reason": rejectReason,
|
||||
"updated_at": gorm.Expr("updated_at"),
|
||||
}
|
||||
return r.db.Model(&model.Comment{}).
|
||||
Where("id = ?", commentID).
|
||||
UpdateColumn("status", status).Error
|
||||
UpdateColumns(updates).Error
|
||||
}
|
||||
|
||||
// Delete 删除评论(软删除,同时清理关联数据)
|
||||
|
||||
Reference in New Issue
Block a user