gongxiangp2/yedir/server/utils/setup-cron.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

71 lines
2.0 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 设置定时任务
*
* 这个模块用于设置系统的定时任务,包括:
* 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
};