/** * 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;