-- video_caption_task 字幕叠加任务表 -- 使用 HyperFrames (HTML+CSS+Chrome Headless) 渲染带字幕的营销视频 CREATE TABLE IF NOT EXISTS video_caption_task ( id BIGSERIAL PRIMARY KEY, tenant_id INT8 NOT NULL DEFAULT 0, task_id VARCHAR(64) NOT NULL UNIQUE, -- 任务唯一标识,前缀 cap_ video_urls TEXT NOT NULL, -- 视频URL列表,JSON数组 audio_url VARCHAR(1024) DEFAULT '', -- 背景音乐URL(可选) elements TEXT NOT NULL, -- 字幕元素列表,JSON数组 width INT NOT NULL DEFAULT 1080, -- 视频宽度 height INT NOT NULL DEFAULT 1920, -- 视频高度 status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending/running/success/failed file_url VARCHAR(1024) DEFAULT '', -- 输出文件URL file_size INT8 DEFAULT 0, -- 输出文件大小(字节) file_name VARCHAR(255) DEFAULT '', -- 输出文件名 duration_str VARCHAR(20) DEFAULT '', -- 视频时长 error_message TEXT, -- 错误信息 callback_url VARCHAR(1024) DEFAULT '', -- 回调地址 created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), deleted_at TIMESTAMP WITH TIME ZONE DEFAULT NULL ); COMMENT ON TABLE video_caption_task IS '字幕叠加任务'; COMMENT ON COLUMN video_caption_task.task_id IS '任务唯一标识'; COMMENT ON COLUMN video_caption_task.video_urls IS '背景视频URL列表'; COMMENT ON COLUMN video_caption_task.audio_url IS '背景音乐URL'; COMMENT ON COLUMN video_caption_task.elements IS '字幕/图片元素列表JSON'; COMMENT ON COLUMN video_caption_task.status IS '任务状态:pending/running/success/failed'; COMMENT ON COLUMN video_caption_task.file_url IS '输出文件URL'; COMMENT ON COLUMN video_caption_task.file_size IS '输出文件大小'; COMMENT ON COLUMN video_caption_task.file_name IS '输出文件名'; COMMENT ON COLUMN video_caption_task.duration_str IS '视频时长'; COMMENT ON COLUMN video_caption_task.error_message IS '错误信息'; COMMENT ON COLUMN video_caption_task.callback_url IS '任务完成后回调地址'; CREATE INDEX idx_caption_task_id ON video_caption_task(task_id); CREATE INDEX idx_caption_status ON video_caption_task(status);