4.3 KiB
4.3 KiB
工具库与脚本模块
工具库 (src/lib/)
src/lib/github.ts (GitHub数据采集)
- 依赖: octokit
- 认证: process.env.GITHUB_TOKEN (可选,提升限流60→5000次/小时)
searchHotRepos(query, minStars, maxResults): 搜索热门仓库,按Star降序getRepoReadme(owner, repo): 获取仓库README内容(base64解码)GitHubRepo接口: id, full_name, html_url, description, stargazers_count, forks_count, language, license, topics, updated_at, readme
src/lib/deepseek.ts (DeepSeek评测生成)
- 依赖: openai (兼容OpenAI接口)
- 认证: process.env.DEEPSEEK_API_KEY
- baseURL: https://api.deepseek.com/v1
- 模型: deepseek-v4-pro
generateReview(repoName, description, stars, license, readme): 调用DeepSeek生成五维评测ReviewDimension接口: { score, summary, detail }ReviewResult接口: capability, devExp, costLicense, community, performance, overall, tags- 综合分校验: 自动计算五维均分,偏差>0.3时修正
- JSON提取: 兼容markdown代码块包裹的响应
prisma.ts - 数据库客户端
- Prisma单例模式,防止开发环境热重载创建多实例
- 使用PrismaMariaDb adapter
- 连接池配置
auth.ts - 认证配置
- NextAuth配置导出
- Credentials Provider(管理员+用户)
- JWT策略
- GitHub OAuth Provider
- 导出GET/POST handler
admin-auth.ts - 管理员API认证
- 导出
requireAdmin()中间件函数 - 验证session中邮箱是否为admin@zhuiguang.ai
- 所有
/api/admin/路由必须使用此中间件 - 返回401/403错误响应
utils.ts - 工具函数
cn(): 合并clsx + tailwind-merge的className工具
logo-fetcher.ts - Logo抓取引擎
- 导出
fetchLogo(websiteUrl, html?): Promise<string>— 返回Logo URL - 导出
fetchLogoWithMethod(websiteUrl, html?): Promise<LogoFetchResult>— 返回{url, method} - 10种抓取策略按优先级执行
- 支持从SystemConfig读取配置
- 每种成功方法返回中文名称(如"HTML Link图标"、"OG/Twitter图片"等)
- 详见 05-ai-discovery.md
logo-storage.ts - Logo本地存储
- 导出
downloadLogo(url, filename): Promise<string> - 下载远程Logo到
/public/logos/目录 - 返回本地路径如
/logos/filename.png
脚本 (scripts/)
discover-skills.mjs - AI技能发现
- 独立运行的Node.js脚本
- 遍历20个技能分类,每类调用DeepSeek API推荐10个GitHub开源项目
- 通过
/api/admin/pending-skills/batch批量导入 - 自动排除已收录技能
- 每分类间隔3秒
- 运行:
node scripts/discover-skills.mjs
import-tools-batch1.mjs - 第一批工具导入
- 硬编码约80个国产AI工具
- 分类: 文本生成(165)/图像生成(174)/视频生成(183)/音频与语音(191)
import-tools-batch2.mjs - 第二批工具导入
- 硬编码约200个国产AI工具
- 分类: 代码开发/AI Agent/办公效率/设计创意/营销SEO/数据分析/教育学习/搜索信息/安全合规/医疗健康/金融法律/电商零售/3D游戏/科学研究/模型框架/聊天机器人
运维脚本
scripts/auto-review.mjs (自动化评测脚本)
- 依赖: @prisma/client, @prisma/adapter-mariadb, octokit, openai
- 流程: GitHub搜索→README获取→DeepSeek评测→Skill入库→SkillReview入库→日志记录
- 配置: SEARCH_QUERIES(4个关键词), MIN_STARS(500), MAX_PER_QUERY(5), DAILY_LIMIT(8)
- 去重: 通过sourceUrl检查
- slug生成: repo full_name转小写+连字符
- 默认分类ID: 120 (AI/ML工程)
- 运行:
$env:NODE_TLS_REJECT_UNAUTHORIZED="0"; node scripts/auto-review.mjs
scripts/publish-reviews.mjs (发布评测脚本)
- 将DRAFT状态SkillReview改为PUBLISHED
- 将对应draft状态Skill改为published
scripts/test-github.mjs (GitHub API测试)
- 测试searchHotRepos和getRepoReadme功能
- 运行:
$env:NODE_TLS_REJECT_UNAUTHORIZED="0"; node -r dotenv/config scripts/test-github.mjs
scripts/test-deepseek.mjs (DeepSeek API测试)
- 测试generateReview功能,使用langflow作为测试用例
- 运行:
$env:NODE_TLS_REJECT_UNAUTHORIZED="0"; node scripts/test-deepseek.mjs
restart.ps1 - 服务重启
- PowerShell脚本
- 扫描8301-8310端口
- 杀死占用进程
- 执行
npm run dev启动服务(端口8301) - 运行:
pwsh -ExecutionPolicy Bypass -File restart.ps1
temp_clear.mjs - 临时清理
- 清空pending_tools表