006_create_price_tier_table.sql 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. -- 迁移文件: 006_create_price_tier_table.sql
  2. -- 描述: 创建价格阶梯表,支持模型阶梯计费
  3. -- ============================================
  4. -- 正向迁移: 添加 pricing_mode 字段,创建阶梯表
  5. -- ============================================
  6. -- 1. 给 model_price 表添加 pricing_mode 字段
  7. ALTER TABLE aigcspace.model_price ADD COLUMN IF NOT EXISTS pricing_mode VARCHAR(20) DEFAULT 'simple' NOT NULL;
  8. -- 添加字段注释
  9. COMMENT ON COLUMN aigcspace.model_price.pricing_mode IS '计价模式:simple=简单计费, tier=阶梯计费';
  10. -- 2. 创建价格阶梯表
  11. CREATE TABLE IF NOT EXISTS aigcspace.model_price_tier (
  12. id SERIAL PRIMARY KEY,
  13. price_id INTEGER NOT NULL,
  14. tier_min INTEGER DEFAULT 0 NOT NULL,
  15. tier_max INTEGER,
  16. input_price NUMERIC(10, 4) NOT NULL,
  17. output_price NUMERIC(10, 4) NOT NULL,
  18. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
  19. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
  20. CONSTRAINT fk_price_tier_price_id FOREIGN KEY (price_id)
  21. REFERENCES aigcspace.model_price(id) ON DELETE CASCADE
  22. );
  23. -- 添加表注释
  24. COMMENT ON TABLE aigcspace.model_price_tier IS '模型价格阶梯表,用于阶梯计费';
  25. COMMENT ON COLUMN aigcspace.model_price_tier.id IS '主键ID';
  26. COMMENT ON COLUMN aigcspace.model_price_tier.price_id IS '关联的价格ID';
  27. COMMENT ON COLUMN aigcspace.model_price_tier.tier_min IS '阶梯起始token数';
  28. COMMENT ON COLUMN aigcspace.model_price_tier.tier_max IS '阶梯结束token数,NULL表示无上限';
  29. COMMENT ON COLUMN aigcspace.model_price_tier.input_price IS '该阶梯输入单价';
  30. COMMENT ON COLUMN aigcspace.model_price_tier.output_price IS '该阶梯输出单价';
  31. COMMENT ON COLUMN aigcspace.model_price_tier.created_at IS '创建时间';
  32. COMMENT ON COLUMN aigcspace.model_price_tier.updated_at IS '更新时间';
  33. -- 创建索引优化查询
  34. CREATE INDEX IF NOT EXISTS idx_price_tier_price_id ON aigcspace.model_price_tier(price_id);
  35. -- ============================================
  36. -- 回滚迁移
  37. -- ============================================
  38. -- DROP TABLE IF EXISTS aigcspace.model_price_tier CASCADE;
  39. -- ALTER TABLE aigcspace.model_price DROP COLUMN IF EXISTS pricing_mode;