v0.3.20: 每日汇报系统 — 每天8点自动收集前一日数据并推送汇总报告

新增:
- src/services/daily-report.service.ts (核心服务: 数据收集/报告生成/格式化/调度器)
- API: GET/PUT daily-report/config, GET daily-report/preview, POST daily-report/test, GET daily-report/last-run
- 前端: 侧边栏"📊 每日汇报"菜单 + SystemConfig.vue 配置面板(时间/内容开关/预览/测试发送)
- main.ts: 每60秒检查调度, 08:00-08:04 窗口内运行

报告内容: 搜索统计/转存统计(成功率)/各网盘容量和活跃状态/用户数
This commit is contained in:
2026-05-17 17:10:39 +08:00
parent 95df193e26
commit 0e0cad1271
45 changed files with 622 additions and 64 deletions

View File

@@ -183,6 +183,23 @@ async function start(): Promise<void> {
setInterval(() => { refreshAllStorageInfo().catch(err => console.error('[Storage] Refresh error:', err.message)); }, STORAGE_REFRESH_INTERVAL);
setTimeout(() => { refreshAllStorageInfo().catch(err => console.error('[Storage] Initial refresh error:', err.message)); }, 60000);
// Daily Report scheduler — check every 60 seconds
const DAILY_REPORT_CHECK_INTERVAL = 60 * 1000;
setInterval(() => {
try {
const { runDailyReportIfScheduled } = require('./services/daily-report.service');
runDailyReportIfScheduled().catch(err => console.error('[DailyReport] Scheduler error:', err.message));
} catch {}
}, DAILY_REPORT_CHECK_INTERVAL);
// Also run once 30s after startup (catch case where server starts at 08:00-08:05)
setTimeout(() => {
try {
const { runDailyReportIfScheduled } = require('./services/daily-report.service');
runDailyReportIfScheduled().catch(err => console.error('[DailyReport] Initial check error:', err.message));
} catch {}
}, 30000);
const server = app.listen(config.port, () => {
console.log(`[Server] CloudSearch Backend running on port ${config.port} (${config.nodeEnv})`);
});