1
This commit is contained in:
144
api/model/ai_call_records.js
Normal file
144
api/model/ai_call_records.js
Normal file
@@ -0,0 +1,144 @@
|
||||
const Sequelize = require('sequelize');
|
||||
const { DataTypes } = Sequelize;
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const AiCallRecords = sequelize.define('ai_call_records', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER(11),
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
comment: '主键ID'
|
||||
},
|
||||
user_id: {
|
||||
type: DataTypes.INTEGER(11),
|
||||
allowNull: true,
|
||||
comment: '用户ID'
|
||||
},
|
||||
sn_code: {
|
||||
type: DataTypes.STRING(100),
|
||||
allowNull: true,
|
||||
comment: '设备SN码'
|
||||
},
|
||||
service_type: {
|
||||
type: DataTypes.STRING(50),
|
||||
allowNull: false,
|
||||
comment: '服务类型:chat/completion/embedding'
|
||||
},
|
||||
model_name: {
|
||||
type: DataTypes.STRING(100),
|
||||
allowNull: false,
|
||||
comment: '模型名称'
|
||||
},
|
||||
prompt_tokens: {
|
||||
type: DataTypes.INTEGER(11),
|
||||
allowNull: false,
|
||||
defaultValue: 0,
|
||||
comment: '输入Token数'
|
||||
},
|
||||
completion_tokens: {
|
||||
type: DataTypes.INTEGER(11),
|
||||
allowNull: false,
|
||||
defaultValue: 0,
|
||||
comment: '输出Token数'
|
||||
},
|
||||
total_tokens: {
|
||||
type: DataTypes.INTEGER(11),
|
||||
allowNull: false,
|
||||
defaultValue: 0,
|
||||
comment: '总Token数'
|
||||
},
|
||||
request_content: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: true,
|
||||
comment: '请求内容'
|
||||
},
|
||||
response_content: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: true,
|
||||
comment: '响应内容'
|
||||
},
|
||||
cost_amount: {
|
||||
type: DataTypes.DECIMAL(10, 4),
|
||||
allowNull: true,
|
||||
comment: '费用(元)'
|
||||
},
|
||||
status: {
|
||||
type: DataTypes.STRING(20),
|
||||
allowNull: false,
|
||||
defaultValue: 'success',
|
||||
comment: '状态:success/failed'
|
||||
},
|
||||
error_message: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: true,
|
||||
comment: '错误信息'
|
||||
},
|
||||
response_time: {
|
||||
type: DataTypes.INTEGER(11),
|
||||
allowNull: true,
|
||||
comment: '响应时间(毫秒)'
|
||||
},
|
||||
api_provider: {
|
||||
type: DataTypes.STRING(50),
|
||||
allowNull: true,
|
||||
defaultValue: 'qwen',
|
||||
comment: 'API提供商'
|
||||
},
|
||||
business_type: {
|
||||
type: DataTypes.STRING(50),
|
||||
allowNull: true,
|
||||
comment: '业务类型'
|
||||
},
|
||||
reference_id: {
|
||||
type: DataTypes.STRING(100),
|
||||
allowNull: true,
|
||||
comment: '关联业务ID'
|
||||
},
|
||||
create_time: {
|
||||
type: DataTypes.DATE,
|
||||
allowNull: false,
|
||||
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
|
||||
comment: '创建时间'
|
||||
},
|
||||
last_modify_time: {
|
||||
type: DataTypes.DATE,
|
||||
allowNull: false,
|
||||
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'),
|
||||
comment: '最后修改时间'
|
||||
},
|
||||
is_delete: {
|
||||
type: DataTypes.TINYINT(1),
|
||||
allowNull: false,
|
||||
defaultValue: 0,
|
||||
comment: '是否删除:0-否,1-是'
|
||||
}
|
||||
}, {
|
||||
tableName: 'ai_call_records',
|
||||
timestamps: false,
|
||||
indexes: [
|
||||
{
|
||||
name: 'idx_user_id',
|
||||
fields: ['user_id']
|
||||
},
|
||||
{
|
||||
name: 'idx_sn_code',
|
||||
fields: ['sn_code']
|
||||
},
|
||||
{
|
||||
name: 'idx_create_time',
|
||||
fields: ['create_time']
|
||||
},
|
||||
{
|
||||
name: 'idx_is_delete',
|
||||
fields: ['is_delete']
|
||||
},
|
||||
{
|
||||
name: 'idx_business_type',
|
||||
fields: ['business_type']
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
return AiCallRecords;
|
||||
};
|
||||
Reference in New Issue
Block a user