031_create_audio_synthesis_v2_table.sql 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. -- 迁移文件: 031_create_audio_synthesis_v2_table.sql
  2. -- 描述: 创建语音合成任务表V2(异步模式)
  3. -- 策略: 创建新表,不影响现有 audio_synthesis 表
  4. -- ============================================
  5. -- 正向迁移: 创建表和索引
  6. -- ============================================
  7. -- 创建 audio_synthesis_v2 表
  8. CREATE TABLE IF NOT EXISTS audio_synthesis_v2 (
  9. id SERIAL PRIMARY KEY,
  10. user_id VARCHAR(50) NOT NULL,
  11. task_id VARCHAR(100) NOT NULL UNIQUE,
  12. model VARCHAR(100) NOT NULL,
  13. voice VARCHAR(100) NOT NULL,
  14. text TEXT NOT NULL,
  15. audio_url VARCHAR(500),
  16. status VARCHAR(20) DEFAULT 'PENDING',
  17. duration NUMERIC(10, 2),
  18. format VARCHAR(20) DEFAULT 'mp3',
  19. characters INTEGER,
  20. bill NUMERIC(10, 4) DEFAULT 0,
  21. custom_name VARCHAR(200),
  22. error_message TEXT,
  23. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  24. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  25. completed_at TIMESTAMP,
  26. CONSTRAINT fk_audio_synthesis_v2_user
  27. FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
  28. );
  29. -- 添加表注释
  30. COMMENT ON TABLE audio_synthesis_v2 IS '语音合成任务表V2(异步模式,统一架构)';
  31. COMMENT ON COLUMN audio_synthesis_v2.id IS '主键ID';
  32. COMMENT ON COLUMN audio_synthesis_v2.user_id IS '用户ID(外键关联users表)';
  33. COMMENT ON COLUMN audio_synthesis_v2.task_id IS 'DashScope任务ID(唯一)';
  34. COMMENT ON COLUMN audio_synthesis_v2.model IS 'TTS模型名称';
  35. COMMENT ON COLUMN audio_synthesis_v2.voice IS '音色ID';
  36. COMMENT ON COLUMN audio_synthesis_v2.text IS '合成文本内容';
  37. COMMENT ON COLUMN audio_synthesis_v2.audio_url IS '音频文件OSS地址';
  38. COMMENT ON COLUMN audio_synthesis_v2.status IS '任务状态(PENDING/PROCESSING/SUCCEEDED/FAILED)';
  39. COMMENT ON COLUMN audio_synthesis_v2.duration IS '音频时长(秒)';
  40. COMMENT ON COLUMN audio_synthesis_v2.format IS '音频格式(mp3/wav/pcm)';
  41. COMMENT ON COLUMN audio_synthesis_v2.characters IS '文本字符数';
  42. COMMENT ON COLUMN audio_synthesis_v2.bill IS '费用(元)';
  43. COMMENT ON COLUMN audio_synthesis_v2.custom_name IS '用户自定义名称';
  44. COMMENT ON COLUMN audio_synthesis_v2.error_message IS '错误信息(失败时)';
  45. COMMENT ON COLUMN audio_synthesis_v2.created_at IS '创建时间';
  46. COMMENT ON COLUMN audio_synthesis_v2.updated_at IS '更新时间';
  47. COMMENT ON COLUMN audio_synthesis_v2.completed_at IS '完成时间';
  48. -- 创建索引(优化查询性能)
  49. CREATE INDEX idx_audio_synthesis_v2_user_id ON audio_synthesis_v2(user_id);
  50. CREATE INDEX idx_audio_synthesis_v2_task_id ON audio_synthesis_v2(task_id);
  51. CREATE INDEX idx_audio_synthesis_v2_status ON audio_synthesis_v2(status);
  52. CREATE INDEX idx_audio_synthesis_v2_created_at ON audio_synthesis_v2(created_at DESC);
  53. -- ============================================
  54. -- 回滚迁移: 删除表和索引
  55. -- ============================================
  56. -- DROP INDEX IF EXISTS idx_audio_synthesis_v2_created_at;
  57. -- DROP INDEX IF EXISTS idx_audio_synthesis_v2_status;
  58. -- DROP INDEX IF EXISTS idx_audio_synthesis_v2_task_id;
  59. -- DROP INDEX IF EXISTS idx_audio_synthesis_v2_user_id;
  60. -- DROP TABLE IF EXISTS audio_synthesis_v2;