018_create_asr_task_table.sql 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. -- 迁移文件: 018_create_asr_task_table.sql
  2. -- 描述: 创建语音识别任务表
  3. -- 需求: 5.3, 5.5, 5.6
  4. -- ============================================
  5. -- 正向迁移: 创建表和索引
  6. -- ============================================
  7. -- 创建asr_task表
  8. CREATE TABLE IF NOT EXISTS asr_task (
  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. file_url VARCHAR(500) NOT NULL,
  14. status VARCHAR(20) DEFAULT 'PENDING',
  15. result_text TEXT,
  16. result_url VARCHAR(500),
  17. duration INTEGER,
  18. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  19. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  20. CONSTRAINT fk_asr_task_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
  21. );
  22. -- 添加表注释
  23. COMMENT ON TABLE asr_task IS '语音识别任务表';
  24. COMMENT ON COLUMN asr_task.id IS '主键ID';
  25. COMMENT ON COLUMN asr_task.user_id IS '用户ID(外键关联users表)';
  26. COMMENT ON COLUMN asr_task.task_id IS 'DashScope返回的任务ID';
  27. COMMENT ON COLUMN asr_task.model IS 'ASR模型名称';
  28. COMMENT ON COLUMN asr_task.file_url IS '音频文件URL';
  29. COMMENT ON COLUMN asr_task.status IS '任务状态(PENDING/RUNNING/SUCCEEDED/FAILED)';
  30. COMMENT ON COLUMN asr_task.result_text IS '识别结果文本';
  31. COMMENT ON COLUMN asr_task.result_url IS '识别结果文件URL';
  32. COMMENT ON COLUMN asr_task.duration IS '音频时长(秒)';
  33. COMMENT ON COLUMN asr_task.created_at IS '创建时间';
  34. COMMENT ON COLUMN asr_task.updated_at IS '更新时间';
  35. -- 创建索引(优化查询性能)
  36. CREATE INDEX IF NOT EXISTS idx_asr_task_user_id ON asr_task(user_id);
  37. CREATE INDEX IF NOT EXISTS idx_asr_task_task_id ON asr_task(task_id);
  38. CREATE INDEX IF NOT EXISTS idx_asr_task_status ON asr_task(status);
  39. CREATE INDEX IF NOT EXISTS idx_asr_task_created_at ON asr_task(created_at DESC);
  40. -- ============================================
  41. -- 回滚迁移: 删除表和索引
  42. -- ============================================
  43. -- DROP INDEX IF EXISTS idx_asr_task_created_at;
  44. -- DROP INDEX IF EXISTS idx_asr_task_status;
  45. -- DROP INDEX IF EXISTS idx_asr_task_task_id;
  46. -- DROP INDEX IF EXISTS idx_asr_task_user_id;
  47. -- DROP TABLE IF EXISTS asr_task;