-- 000006: PPT 生成任务表 CREATE TABLE ppt_tasks ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID NOT NULL REFERENCES users(id), app_id UUID REFERENCES applications(id), -- 任务输入 title VARCHAR(200) NOT NULL, source_type VARCHAR(20) NOT NULL DEFAULT 'text' CHECK (source_type IN ('text', 'file', 'url')), source_content TEXT, -- 文本内容或 URL source_file TEXT, -- 上传文件路径 -- 生成配置 config JSONB NOT NULL DEFAULT '{}', -- config 结构: -- { -- "format": "ppt169", -- 画布格式 -- "page_count": 10, -- 目标页数 -- "style": "general", -- 风格: general/consultant/consultant-top -- "color_scheme": "", -- 配色方案(可选) -- "language": "zh", -- 语言 -- "with_images": true, -- 是否生成图片 -- "image_backend": "gpt-image-2" -- 图片生成后端 -- } -- 任务状态 status VARCHAR(30) NOT NULL DEFAULT 'pending' CHECK (status IN ( 'pending', -- 等待处理 'processing', -- 处理中 'converting', -- 转换源文件 'designing', -- 策略师阶段 'generating_images', -- 图片生成阶段 'generating_svg', -- SVG 生成阶段 'exporting', -- 导出 PPTX 阶段 'completed', -- 完成 'failed' -- 失败 )), progress INTEGER NOT NULL DEFAULT 0 CHECK (progress BETWEEN 0 AND 100), status_message TEXT, -- 当前状态描述 error_message TEXT, -- 错误信息 -- 输出 output_file TEXT, -- 生成的 PPTX 文件路径 output_preview JSONB DEFAULT '[]', -- SVG 预览图路径列表 page_count INTEGER, -- 实际生成页数 project_path TEXT, -- PPT Master 项目路径 -- 时间戳 started_at TIMESTAMPTZ, completed_at TIMESTAMPTZ, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE INDEX idx_ppt_tasks_user ON ppt_tasks(user_id); CREATE INDEX idx_ppt_tasks_status ON ppt_tasks(status); CREATE INDEX idx_ppt_tasks_created ON ppt_tasks(created_at DESC); CREATE TRIGGER update_ppt_tasks_updated_at BEFORE UPDATE ON ppt_tasks FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();