新功能: - 创建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助手体验!
71 lines
2.0 KiB
JavaScript
Executable File
71 lines
2.0 KiB
JavaScript
Executable File
/**
|
||
* 设置定时任务
|
||
*
|
||
* 这个模块用于设置系统的定时任务,包括:
|
||
* 1. 图片库自动扫描 - 每10分钟运行一次,将新生成的图片保存到用户的图片库中
|
||
*/
|
||
|
||
const cron = require('node-cron');
|
||
const path = require('path');
|
||
const { spawn } = require('child_process');
|
||
const logger = require('./logger');
|
||
|
||
// 设置图片扫描任务 - 每10分钟执行一次
|
||
function setupImageScanTask() {
|
||
// 检查环境变量是否禁用了自动扫描
|
||
if (process.env.DISABLE_AUTO_IMAGE_SCAN === 'true') {
|
||
logger.info('自动图片扫描功能已禁用');
|
||
return;
|
||
}
|
||
|
||
logger.info('设置图片扫描定时任务 - 每10分钟执行一次');
|
||
|
||
// 使用node-cron设置定时任务,每10分钟执行一次
|
||
cron.schedule('*/10 * * * *', () => {
|
||
const scriptPath = path.join(__dirname, '../scripts/save-images-to-gallery.js');
|
||
logger.info(`开始执行图片扫描脚本: ${scriptPath}`);
|
||
|
||
// 使用子进程执行脚本
|
||
const child = spawn('node', [scriptPath], {
|
||
// 分离进程,避免子进程阻塞主进程
|
||
detached: true,
|
||
// 不继承父进程的stdio
|
||
stdio: ['ignore', 'pipe', 'pipe']
|
||
});
|
||
|
||
// 记录输出
|
||
child.stdout.on('data', (data) => {
|
||
logger.info(`[图片扫描] ${data.toString().trim()}`);
|
||
});
|
||
|
||
child.stderr.on('data', (data) => {
|
||
logger.error(`[图片扫描错误] ${data.toString().trim()}`);
|
||
});
|
||
|
||
// 当进程结束时
|
||
child.on('close', (code) => {
|
||
if (code === 0) {
|
||
logger.info('图片扫描任务完成');
|
||
} else {
|
||
logger.error(`图片扫描任务失败,退出码: ${code}`);
|
||
}
|
||
});
|
||
|
||
// 解除对子进程的引用,允许进程独立运行
|
||
child.unref();
|
||
});
|
||
|
||
logger.info('图片扫描定时任务已设置');
|
||
}
|
||
|
||
// 设置所有定时任务
|
||
function setupAllCronTasks() {
|
||
setupImageScanTask();
|
||
// 可以在这里添加更多定时任务
|
||
|
||
logger.info('所有定时任务已设置完成');
|
||
}
|
||
|
||
module.exports = {
|
||
setupAllCronTasks
|
||
};
|