fix: 定时任务修复+管理后台Task7支持 (Task4外键修复, Task7管理员邮箱动态查询, Task5限流防护, Task7加入SCRIPT_MAP)

This commit is contained in:
ZhuiGuangAI Dev
2026-05-30 18:03:48 +08:00
parent 4d5e7266b5
commit 10d1acb305
56 changed files with 2779 additions and 135 deletions
+13
View File
@@ -78,6 +78,8 @@ AI发现模块是追光AI的核心功能,采用"提示词+JSON粘贴导入"模
### Logo本地存储 (`src/lib/logo-storage.ts`)
- `downloadLogo(url, filename): Promise<string>` — 下载Logo到 `/public/logos/` 目录
- 返回本地路径如 `/logos/filename.png`
- **安全限制**: 最大文件大小 5MB,SVG 内容自动消毒 script/iframe/on-event 标签
- **文件名**: 使用 SHA256 哈希生成(不再使用 MD5)
## 自动化评测流程
@@ -117,6 +119,17 @@ Crontab(6个定时) → 脚本执行(Node.js .mjs) → 外部API调用(GitHub/De
后台管理 /admin/tasks → 查看配置/状态/历史/手动触发
```
### 环境要求
- 所有脚本启动时验证 `DEEPSEEK_API_KEY` + `DATABASE_URL` 存在性
- DeepSeek 调用统一使用 `AbortSignal.timeout(120000)` + `withRetry` 重试(指数退避 1s → 2s,最多3次)
- DeepSeek 模型名通过环境变量 `DEEPSEEK_MODEL` 配置(默认 `deepseek-v4-pro`)
- GitHub Octokit 配置 `request.timeout: 30000`,配合 withRetry 重试
- GitHub API 调用需设置 `GITHUB_TOKEN` 环境变量认证(限流从 60→5000次/小时)
### skill-discoverer.ts N+1 优化
- **修复前**: 每个 repo 执行 3 次 DB 查询 + 每次 guessCategoryId 查一次分类 → ~360次/次发现
- **修复后**: 循环前批量预加载 sourceUrl/slug/分类到内存 Set → ~22次/次发现(↓94%)
### 7个任务总览
| # | 任务 | 脚本 | Cron | 依赖外部API | 产量 |