gongxiangp2/yedir/init-db.js
chenpei d0dc94e36d feat: 将弹幕功能替换为AI聊天助手
新功能:
- 创建AI聊天助手组件(AIChatWidget)
- 支持文字+图片多模态对话
- 集成Gemini AI API
- 支持图片编辑和内容生成
- 实时对话历史管理
- 优雅的UI设计,支持黑夜模式

技术实现:
- 后端API代理Gemini API(/api/ai-chat)
- 支持最多5张图片上传
- 流式响应处理
- 对话历史管理
- Base64图片处理

配置:
- 在.env中添加Gemini API配置
- GEMINI_API_KEY
- GEMINI_API_BASE_URL
- GEMINI_MODEL

替换原弹幕功能,提供更强大的AI助手体验!
2025-10-27 17:45:37 +08:00

80 lines
2.1 KiB
JavaScript
Executable File

const { connectDB, mongoose } = require('./server/db/mongoose');
const bcrypt = require('bcryptjs');
// 默认管理员信息
const defaultAdmin = {
username: 'admin',
email: 'admin@example.com',
password: 'Admin123!',
role: 'admin',
credits: 100
};
async function initDatabase() {
try {
console.log('开始初始化数据库...');
// 连接数据库
const connection = await connectDB();
// 检查连接状态
if (!connection || mongoose.connection.readyState !== 1) {
throw new Error('数据库连接失败');
}
console.log('数据库连接成功,开始初始化...');
// 检查是否已有用户集合
const collections = await mongoose.connection.db.listCollections().toArray();
const hasUsers = collections.some(col => col.name === 'users');
if (hasUsers) {
// 检查是否已有管理员用户
const User = mongoose.model('User', new mongoose.Schema({
username: String,
email: String,
password: String,
role: String,
credits: Number
}));
const adminCount = await User.countDocuments({ role: 'admin' });
if (adminCount > 0) {
console.log('数据库中已有管理员用户,跳过创建默认管理员');
} else {
console.log('创建默认管理员用户...');
// 加密密码
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(defaultAdmin.password, salt);
// 创建管理员用户
const admin = new User({
...defaultAdmin,
password: hashedPassword
});
await admin.save();
console.log('默认管理员用户创建成功');
}
} else {
console.log('用户集合不存在,将在首次注册时自动创建');
}
console.log('数据库初始化完成');
// 关闭连接
await mongoose.disconnect();
console.log('数据库连接已关闭');
process.exit(0);
} catch (error) {
console.error('初始化数据库时出错:', error);
process.exit(1);
}
}
// 执行初始化
initDatabase();