021_create_asr_recognition_table.sql 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. -- 迁移文件: 021_create_asr_recognition_table.sql
  2. -- 描述: 创建同步语音识别记录表
  3. -- 需求: 存储同步语音识别的历史记录
  4. -- ============================================
  5. -- 正向迁移: 创建表和索引
  6. -- ============================================
  7. -- 创建asr_recognition表
  8. CREATE TABLE IF NOT EXISTS asr_recognition (
  9. id SERIAL PRIMARY KEY,
  10. user_id VARCHAR(50) NOT NULL,
  11. model VARCHAR(100) NOT NULL,
  12. audio_url VARCHAR(500),
  13. audio_base64 TEXT,
  14. language VARCHAR(20),
  15. enable_itn BOOLEAN DEFAULT FALSE,
  16. context TEXT,
  17. result_text TEXT NOT NULL,
  18. detected_language VARCHAR(20),
  19. emotion VARCHAR(20),
  20. duration INTEGER,
  21. input_tokens INTEGER DEFAULT 0,
  22. output_tokens INTEGER DEFAULT 0,
  23. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  24. CONSTRAINT fk_asr_recognition_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
  25. );
  26. -- 添加表注释
  27. COMMENT ON TABLE asr_recognition IS '同步语音识别记录表';
  28. COMMENT ON COLUMN asr_recognition.id IS '主键ID';
  29. COMMENT ON COLUMN asr_recognition.user_id IS '用户ID(外键关联users表)';
  30. COMMENT ON COLUMN asr_recognition.model IS 'ASR模型名称';
  31. COMMENT ON COLUMN asr_recognition.audio_url IS '音频文件URL(如果有)';
  32. COMMENT ON COLUMN asr_recognition.audio_base64 IS 'Base64编码的音频数据(如果有)';
  33. COMMENT ON COLUMN asr_recognition.language IS '指定语种(zh/en/ja/ko等)';
  34. COMMENT ON COLUMN asr_recognition.enable_itn IS '是否启用逆文本标准化';
  35. COMMENT ON COLUMN asr_recognition.context IS '上下文提示';
  36. COMMENT ON COLUMN asr_recognition.result_text IS '识别结果文本';
  37. COMMENT ON COLUMN asr_recognition.detected_language IS '检测到的语言';
  38. COMMENT ON COLUMN asr_recognition.emotion IS '情感类型';
  39. COMMENT ON COLUMN asr_recognition.duration IS '音频时长(秒)';
  40. COMMENT ON COLUMN asr_recognition.input_tokens IS '输入Token数';
  41. COMMENT ON COLUMN asr_recognition.output_tokens IS '输出Token数';
  42. COMMENT ON COLUMN asr_recognition.created_at IS '创建时间';
  43. -- 创建索引(优化查询性能)
  44. CREATE INDEX IF NOT EXISTS idx_asr_recognition_user_id ON asr_recognition(user_id);
  45. CREATE INDEX IF NOT EXISTS idx_asr_recognition_created_at ON asr_recognition(created_at DESC);
  46. CREATE INDEX IF NOT EXISTS idx_asr_recognition_model ON asr_recognition(model);
  47. -- ============================================
  48. -- 回滚迁移: 删除表和索引
  49. -- ============================================
  50. -- DROP INDEX IF EXISTS idx_asr_recognition_model;
  51. -- DROP INDEX IF EXISTS idx_asr_recognition_created_at;
  52. -- DROP INDEX IF EXISTS idx_asr_recognition_user_id;
  53. -- DROP TABLE IF EXISTS asr_recognition;