Files
zhuiguang-ai/.trae/specs/modules/07-lib-and-scripts.md
T

4.3 KiB
Raw Blame History

工具库与脚本模块

工具库 (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表