/** * 视频审核相关类型定义 * 与后端 schemas/review.py 对齐 */ // 审核任务状态(区别于 task.ts 中的 TaskStatus) export type ReviewTaskStatus = 'pending' | 'processing' | 'completed' | 'failed' | 'approved' | 'rejected' export type RiskLevel = 'high' | 'medium' | 'low' export type ViolationType = | 'forbidden_word' | 'efficacy_claim' | 'competitor_logo' | 'duration_short' | 'mention_missing' | 'brand_safety' export type ViolationSource = 'text' | 'speech' | 'subtitle' | 'visual' export type SoftRiskAction = 'confirm' | 'note' export type Platform = 'douyin' | 'xiaohongshu' | 'bilibili' | 'kuaishou' // 文本位置(脚本审核) export interface Position { start: number end: number } // 违规项(与后端 Violation 对齐) export interface Violation { type: ViolationType content: string severity: RiskLevel suggestion: string // 文本审核字段 position?: Position | null // 视频审核字段 timestamp?: number | null timestamp_end?: number | null source?: ViolationSource | null } // 软性风控提示(与后端 SoftRiskWarning 对齐) export interface SoftRiskWarning { code: string message: string action_required: SoftRiskAction blocking: boolean context?: Record | null } // 前端内部使用的审核任务状态对象 export interface ReviewTask { review_id: string title?: string status: ReviewTaskStatus progress?: number current_step?: string score?: number summary?: string violations?: Violation[] soft_warnings?: SoftRiskWarning[] created_at: string completed_at?: string } // ==================== 请求/响应类型 ==================== export interface VideoReviewRequest { video_url: string platform: Platform brand_id: string creator_id: string competitors?: string[] requirements?: Record } export interface VideoReviewResponse { review_id: string status: ReviewTaskStatus } export interface ReviewProgressResponse { review_id: string status: ReviewTaskStatus progress: number current_step: string } export interface ReviewResultResponse { review_id: string status: ReviewTaskStatus score: number summary: string violations: Violation[] soft_warnings: SoftRiskWarning[] } // ==================== 脚本预审 ==================== export interface SoftRiskContext { violation_rate?: number violation_threshold?: number asr_confidence?: number ocr_confidence?: number has_history_violation?: boolean } export interface ScriptReviewRequest { content: string platform: Platform brand_id: string required_points?: string[] soft_risk_context?: SoftRiskContext } export interface ScriptReviewResponse { score: number summary: string violations: Violation[] missing_points?: string[] soft_warnings: SoftRiskWarning[] }