046_create_api_call_log_table.sql 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. -- 创建API调用日志表
  2. -- 需求: 10.3 - 记录API调用的详细信息用于计费和审计
  3. CREATE TABLE aigcspace.api_call_log (
  4. id BIGSERIAL PRIMARY KEY,
  5. user_id VARCHAR(50) NOT NULL REFERENCES aigcspace.users(id) ON DELETE CASCADE,
  6. api_key_id INTEGER REFERENCES aigcspace.platform_api_key(id) ON DELETE SET NULL,
  7. model_id INTEGER REFERENCES aigcspace.models(id) ON DELETE SET NULL,
  8. model_name VARCHAR(255) NOT NULL,
  9. is_local BOOLEAN NOT NULL DEFAULT FALSE,
  10. input_tokens INTEGER NOT NULL DEFAULT 0,
  11. output_tokens INTEGER NOT NULL DEFAULT 0,
  12. bill DECIMAL(12,4) NOT NULL DEFAULT 0,
  13. status VARCHAR(20) NOT NULL DEFAULT 'success',
  14. error_message TEXT,
  15. request_ip VARCHAR(50),
  16. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
  17. );
  18. -- 创建索引
  19. CREATE INDEX idx_api_call_log_user_id ON aigcspace.api_call_log(user_id);
  20. CREATE INDEX idx_api_call_log_api_key_id ON aigcspace.api_call_log(api_key_id);
  21. CREATE INDEX idx_api_call_log_model_id ON aigcspace.api_call_log(model_id);
  22. CREATE INDEX idx_api_call_log_created_at ON aigcspace.api_call_log(created_at);
  23. CREATE INDEX idx_api_call_log_is_local ON aigcspace.api_call_log(is_local);
  24. COMMENT ON TABLE aigcspace.api_call_log IS 'API调用日志表';
  25. COMMENT ON COLUMN aigcspace.api_call_log.id IS '主键ID';
  26. COMMENT ON COLUMN aigcspace.api_call_log.user_id IS '用户ID';
  27. COMMENT ON COLUMN aigcspace.api_call_log.api_key_id IS '使用的API Key ID';
  28. COMMENT ON COLUMN aigcspace.api_call_log.model_id IS '调用的模型ID';
  29. COMMENT ON COLUMN aigcspace.api_call_log.model_name IS '模型名称';
  30. COMMENT ON COLUMN aigcspace.api_call_log.is_local IS '是否为本地模型';
  31. COMMENT ON COLUMN aigcspace.api_call_log.input_tokens IS '输入Token数量';
  32. COMMENT ON COLUMN aigcspace.api_call_log.output_tokens IS '输出Token数量';
  33. COMMENT ON COLUMN aigcspace.api_call_log.bill IS '费用金额';
  34. COMMENT ON COLUMN aigcspace.api_call_log.status IS '调用状态:success/failed';
  35. COMMENT ON COLUMN aigcspace.api_call_log.error_message IS '错误信息';
  36. COMMENT ON COLUMN aigcspace.api_call_log.request_ip IS '请求IP地址';
  37. COMMENT ON COLUMN aigcspace.api_call_log.created_at IS '创建时间';