032_create_voice_clone_v2_table.sql 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. -- 迁移文件: 032_create_voice_clone_v2_table.sql
  2. -- 描述: 创建声音克隆任务表V2(异步模式)
  3. -- 策略: 创建新表,不影响现有 voice_clone 表
  4. -- ============================================
  5. -- 正向迁移: 创建表和索引
  6. -- ============================================
  7. -- 创建 voice_clone_v2 表
  8. CREATE TABLE IF NOT EXISTS voice_clone_v2 (
  9. id SERIAL PRIMARY KEY,
  10. user_id VARCHAR(50) NOT NULL,
  11. task_id VARCHAR(100) NOT NULL UNIQUE,
  12. voice_id VARCHAR(200),
  13. target_model VARCHAR(100) NOT NULL,
  14. prefix VARCHAR(20) NOT NULL,
  15. voice_name VARCHAR(50),
  16. audio_url VARCHAR(500),
  17. status VARCHAR(20) DEFAULT 'PENDING',
  18. bill NUMERIC(10, 4) DEFAULT 0,
  19. error_message TEXT,
  20. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  21. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  22. completed_at TIMESTAMP,
  23. CONSTRAINT fk_voice_clone_v2_user
  24. FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
  25. );
  26. -- 添加表注释
  27. COMMENT ON TABLE voice_clone_v2 IS '声音克隆任务表V2(异步模式,统一架构)';
  28. COMMENT ON COLUMN voice_clone_v2.id IS '主键ID';
  29. COMMENT ON COLUMN voice_clone_v2.user_id IS '用户ID(外键关联users表)';
  30. COMMENT ON COLUMN voice_clone_v2.task_id IS 'DashScope任务ID(唯一)';
  31. COMMENT ON COLUMN voice_clone_v2.voice_id IS '生成的音色ID(完成后)';
  32. COMMENT ON COLUMN voice_clone_v2.target_model IS '目标TTS模型';
  33. COMMENT ON COLUMN voice_clone_v2.prefix IS '音色前缀名称';
  34. COMMENT ON COLUMN voice_clone_v2.voice_name IS '音色名称(用户输入)';
  35. COMMENT ON COLUMN voice_clone_v2.audio_url IS '原始音频文件OSS地址';
  36. COMMENT ON COLUMN voice_clone_v2.status IS '任务状态(PENDING/PROCESSING/SUCCEEDED/FAILED)';
  37. COMMENT ON COLUMN voice_clone_v2.bill IS '费用(元)';
  38. COMMENT ON COLUMN voice_clone_v2.error_message IS '错误信息(失败时)';
  39. COMMENT ON COLUMN voice_clone_v2.created_at IS '创建时间';
  40. COMMENT ON COLUMN voice_clone_v2.updated_at IS '更新时间';
  41. COMMENT ON COLUMN voice_clone_v2.completed_at IS '完成时间';
  42. -- 创建索引(优化查询性能)
  43. CREATE INDEX idx_voice_clone_v2_user_id ON voice_clone_v2(user_id);
  44. CREATE INDEX idx_voice_clone_v2_task_id ON voice_clone_v2(task_id);
  45. CREATE INDEX idx_voice_clone_v2_voice_id ON voice_clone_v2(voice_id);
  46. CREATE INDEX idx_voice_clone_v2_status ON voice_clone_v2(status);
  47. CREATE INDEX idx_voice_clone_v2_created_at ON voice_clone_v2(created_at DESC);
  48. -- ============================================
  49. -- 回滚迁移: 删除表和索引
  50. -- ============================================
  51. -- DROP INDEX IF EXISTS idx_voice_clone_v2_created_at;
  52. -- DROP INDEX IF EXISTS idx_voice_clone_v2_status;
  53. -- DROP INDEX IF EXISTS idx_voice_clone_v2_voice_id;
  54. -- DROP INDEX IF EXISTS idx_voice_clone_v2_task_id;
  55. -- DROP INDEX IF EXISTS idx_voice_clone_v2_user_id;
  56. -- DROP TABLE IF EXISTS voice_clone_v2;