/** * 查重 API 模块 * 提供视频查重相关接口 */ import apiClient from "./client" /** 查重记录状态 */ export type DuplicationStatus = "pending" | "processing" | "completed" | "failed" /** 查重记录 */ export interface DuplicationRecord { id: string /** 原始文件名 */ filename: string /** 文件大小(字节) */ file_size: number /** 时长(秒) */ duration_seconds?: number /** 状态 */ status: DuplicationStatus /** 查重率(0-100) */ duplicate_rate?: number /** 重复片段数 */ duplicate_count?: number /** 创建时间 */ created_at: string /** 更新时间 */ updated_at: string } /** 重复片段详情 */ export interface DuplicateSegment { id: string /** 在原始视频中的起始时间(秒) */ source_start: number /** 在原始视频中的结束时间(秒) */ source_end: number /** 匹配到的已有视频 ID */ matched_video_id: string /** 匹配到的已有视频名称 */ matched_video_name: string /** 匹配片段在已有视频中的起始时间 */ matched_start: number /** 匹配片段在已有视频中的结束时间 */ matched_end: number /** 相似度(0-100) */ similarity: number } /** 查重详情 */ export interface DuplicationDetail extends DuplicationRecord { /** 重复片段列表 */ segments: DuplicateSegment[] } /** 上传查重响应 */ export interface DuplicationUploadResponse { /** 查重记录 ID */ id: string /** 状态 */ status: DuplicationStatus /** 消息 */ message: string } // ============ API 函数 ============ /** 上传视频进行查重 */ export const uploadForDuplication = async (file: File): Promise => { const formData = new FormData() formData.append("file", file) const response = await apiClient.post("/duplication/upload", formData, { headers: { "Content-Type": "multipart/form-data" }, }) return response.data } /** 获取查重记录列表 */ export const getDuplicationRecords = async (): Promise => { const response = await apiClient.get("/duplication/records") return response.data } /** 获取查重详情 */ export const getDuplicationDetail = async (recordId: string): Promise => { const response = await apiClient.get(`/duplication/records/${recordId}`) return response.data } /** 删除查重记录 */ export const deleteDuplicationRecord = async (recordId: string): Promise => { await apiClient.delete(`/duplication/records/${recordId}`) } /** 重新查重 */ export const retryDuplication = async (recordId: string): Promise => { const response = await apiClient.post(`/duplication/records/${recordId}/retry`) return response.data }