mailbox/backend/models/GeminiModel.js
2025-12-16 08:18:15 +09:00

77 lines
1.8 KiB
JavaScript

/**
* Gemini 모델 테이블
* 사용 가능한 AI 모델 목록 저장
*/
const { DataTypes } = require("sequelize");
const sequelize = require("../config/database");
const GeminiModel = sequelize.define(
"GeminiModel",
{
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
modelId: {
type: DataTypes.STRING(100),
allowNull: false,
unique: true,
field: "model_id",
comment: "모델 ID (예: gemini-2.5-flash)",
},
name: {
type: DataTypes.STRING(100),
allowNull: false,
comment: "모델 표시명",
},
description: {
type: DataTypes.TEXT,
allowNull: true,
comment: "모델 설명",
},
sortOrder: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0,
field: "sort_order",
comment: "정렬 순서",
},
isActive: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: true,
field: "is_active",
comment: "활성화 여부",
},
},
{
tableName: "gemini_models",
timestamps: true,
createdAt: "created_at",
updatedAt: "updated_at",
}
);
// 기본 모델 데이터 시드
GeminiModel.seedDefaultModels = async () => {
const defaults = [
{ modelId: "gemini-3-pro-preview", name: "Gemini 3 Pro", sortOrder: 1 },
{ modelId: "gemini-2.5-pro", name: "Gemini 2.5 Pro", sortOrder: 2 },
{ modelId: "gemini-2.5-flash", name: "Gemini 2.5 Flash", sortOrder: 3 },
{
modelId: "gemini-2.5-flash-lite",
name: "Gemini 2.5 Flash-Lite",
sortOrder: 4,
},
];
for (const model of defaults) {
await GeminiModel.findOrCreate({
where: { modelId: model.modelId },
defaults: model,
});
}
};
module.exports = GeminiModel;