# 追光AI 变更日志 ## v0.11.1 (2026-05-22) - AI发现管线质量优化 ### 全链路测试 - 跑通全部AI自动化管线:GitHub搜索 → DeepSeek评测 → 入库 → 内容生成 - 2个脚本(automatic-review + daily-discover) + 4个API端点全部验证通过 - 连测创建12条技能+评测记录,DeepSeek生成1篇日报+长文+视频脚本+社交卡片 ### 质量过滤修复 - **非AI项目过滤**: auto-review.mjs + daily-discover.mjs 新增 `isValidAIProject()` 函数 - 关键词过滤: `book/guide/tutorial/awesome/interview/notes/handbook/cheatsheet/roadmap/curated-list` 等 - 语言过滤: 纯Markdown/HTML文档Repo(Stars<5000)自动拒绝 - 主题过滤: 有GitHub Topics的Repo必须包含AI相关Topic(ai/llm/rag/agent/gpt等) - 清理5条误入库非AI数据:AgentGuide、JavaGuide、pathway、StableDiffusionBook、Claude-Code-Everything ### JSON解析健壮性 - 新增 `extractJSON()` 统一工具函数 → `src/lib/utils.ts` - 支持markdown代码块包裹(`\`\`\`json...\`\`\``)、花括号/方括号容错 - 替换 deepseek.ts、auto-review.mjs、daily-discover.mjs、daily-reports/generate 的旧解析逻辑 - 新增 `scripts/test-content-generation.mjs` 全管线测试脚本 ### 新增脚本 - `scripts/cleanup-non-ai.mjs` — 一键清理误入库非AI技能数据 --- ## v0.11.0 (2026-05-22) - 权限体系重构 ### 架构变更 - **新增数据模型**: `Role`(角色), `Permission`(权限点), `RolePermission`(角色-权限关联) 三张表 - **User 模型**: 新增 `roleId` 字段关联 `Role`,与原有 `role` 字符串字段并行(向后兼容) - 默认角色:**超级管理员**(Admin, 全部53权限)、**VIP成员**(Vip, 19个精选权限) ### 权限体系 - **53个精细化权限点**,按页面分组管理: - 工具管理 14项 · 技能库 12项 · 评测管理 8项 - AI发现 7项 · 内容管理 8项 · 系统管理 4项 - 所有后台按钮/操作均已对应权限点,可逐个勾选控制 ### 新增页面 - **`/admin/roles` 角色权限管理**: 左侧角色列表 + 右侧按分组的权限勾选网格 - 新建/删除自定义角色(系统角色受保护) - 分组全选/取消全选 - 保存按钮实时同步到数据库 ### 新增 API - `GET/POST /api/admin/roles` — 角色列表/创建 - `PUT/DELETE /api/admin/roles/[id]` — 角色编辑/删除 - `GET /api/admin/permissions` — 全部权限点列表 - `GET /api/admin/user-permissions` — 用户权限查询(支持roleId/userId/当前用户) ### 鉴权升级 - **middleware.ts**: 从硬编码 `role==="admin"` 改为认证检查 + 路由层委派 - **admin-auth.ts**: `requireAdmin()` 兼容旧 `role` 字符串 + 新 `roleId` 关联角色双重逻辑 - 新增 `requirePermission(key)` — 细粒度权限点校验 - 新增 `getAllUserPermissions()` — 获取当前用户全部权限集合 ### 前端工具 - 新增 `usePermission()` hook — 提供 `can(key)`, `canAny(keys)`, `canAll(keys)` 方法 - 侧边栏新增"角色权限"菜单入口 ### 种子脚本 - `scripts/seed-permissions.mjs` — 一键初始化全部权限点+角色 --- ## v0.10.1 (2026-05-22) - 全面修复与优化 ### 安全修复 - **Admin API 鉴权增强**: 中间件matcher新增`/api/admin/:path*`路由保护,未登录或非管理员角色返回403 - 所有关键admin路由已内置`requireAdmin()`双重校验(中间件+路由层防御深度) ### Bug 修复 - **Category ID 动态化**: `skill-discoverer.ts`、`daily-discover.mjs`、`auto-review.mjs`三个文件的硬编码Category ID(120-127)替换为数据库查询+关键词匹配,消除分类错配风险 - **reviews统计卡片**: 修复评测管理页面统计(已发布/草稿/平均评分)只显示当前页数据的问题,改为从全局groupBy统计获取 - **内容生成日志完善**: `/api/admin/reviews/[id]/generate`成功和失败均写入`ReviewGenerationLog` ### 功能增强 - **待审核技能编辑增强**: 编辑对话框新增"功能特性(JSON)"和"标签(逗号分隔)"输入框,支持直接编辑上传 - **已发布技能编辑增强**: 编辑对话框新增"分类"下拉选择、"功能特性(JSON)"、"标签"字段,功能对齐待审核页面 - **日报AI一键生成**: 新增`/api/admin/daily-reports/generate`端点,前端新增"一键AI生成"按钮,直接调用DeepSeek生成日报并自动填充表单,替代原有的"复制提示词→粘贴JSON"手动流程 ### 内部改进 - `ReviewGenerationLog`确认已在`skill-discoverer.ts`和两个脚本中正常使用,非僵尸表 - 三个脚本文件统一使用数据库查询获取分类ID,消除代码不一致 --- ## v0.10.0 (2026-05-20) - 五维评测系统 ### 新增 - **数据库扩展**: SkillReview模型(五维评测)、ReviewGenerationLog模型(评测日志)、ReviewStatus枚举(DRAFT/PUBLISHED/REJECTED/OUTDATED) - **Skill模型扩展**: 新增lastReviewedAt(最近评测时间)、githubStarsHistory(Star历史)字段,关联skillReview - **GitHub数据采集模块** (`src/lib/github.ts`): octokit封装,支持searchHotRepos搜索热门仓库、getRepoReadme获取README - **DeepSeek评测生成模块** (`src/lib/deepseek.ts`): OpenAI兼容接口,五维评测提示词模板,综合分自动校验 - **自动化评测脚本** (`scripts/auto-review.mjs`): GitHub搜索→README获取→DeepSeek评测→入库全流程,每日限制8个 - **评测API** (`/api/skills/[slug]/review`): 获取PUBLISHED状态的五维评测数据 - **SkillReviewCard组件**: Chart.js雷达图+维度详情卡片,dynamic import(ssr:false),紫色主色调 - **技能详情页集成**: 在标签卡片和评论之间展示五维评测雷达图 - **发布评测脚本** (`scripts/publish-reviews.mjs`): 批量将DRAFT评测改为PUBLISHED - **测试脚本**: test-github.mjs(GitHub API)、test-deepseek.mjs(DeepSeek API) - **新依赖**: octokit, openai, chart.js, react-chartjs-2 ### 修改 - .env新增GITHUB_TOKEN、DEEPSEEK_API_KEY配置 - 开发规则更新: 允许服务端脚本调用外部AI API,前端仍禁止 - 迁移记录: 第10次迁移 add_skill_reviews ### 踩坑 - Prisma 7.8需通过PrismaMariaDb适配器初始化,脚本中不能直接new PrismaClient() - Chart.js组件需dynamic import + ssr:false,不支持服务端渲染 - 服务器环境SSL证书问题: 运行脚本需设置$env:NODE_TLS_REJECT_UNAUTHORIZED="0" - Chart.js font.weight只接受bold/normal/bolder/lighter,不接受数字字符串如"500" --- ## v0.9.0 (2026-05-09) ### 重大变更 - **移除所有外部AI API调用**: discover-tools、discover-skills、discover-news三个API不再调用DeepSeek API,改为接收前端提交的JSON数据 - **端口迁移**: 开发端口从3100-3110迁移至8301-8310,默认端口8301 - **五大操作指令模式重构**: 从"一键调用API"模式改为"提示词+JSON粘贴导入"模式 ### 新增 - AI新闻发现页面 `/admin/discover-news`:3步流程(复制提示词→粘贴JSON→查看日报),6大分类+热度评分 - AI新闻发现API `POST /api/admin/discover-news`:接收新闻JSON数组,自动生成今日AI日报 - AI新闻发现API `GET /api/admin/discover-news`:获取今日AI日报 - `fetchLogoWithMethod()` 函数:返回Logo URL + 成功方法名(如"HTML Link图标"、"OG/Twitter图片"等) - 检测AI工具页面增加Logo抓取功能:检测时同步抓取缺失Logo,记录成功方法名统计 - 检测AI工具页面增加Logo抓取方法统计面板:按成功次数排序展示每种方法的效果 - 检测AI工具页面增加Logo新抓取成功列表:展示Logo预览和使用的抓取方法名 - 导入10天100条真实AI新闻(4月30日-5月9日) ### 修改 - discover-tools API: 从调用DeepSeek API改为接收 `{tools: [...], categoryId}` JSON数组 - discover-skills API: 从调用DeepSeek API改为接收 `{skills: [...], categoryId}` JSON数组 - discover-tools页面: 从一键发现改为4步流程(选分类→复制提示词→粘贴JSON→抓取Logo) - discover-skills页面: 从一键发现改为3步流程(选分类→复制提示词→粘贴JSON) - discover-news页面: 从一键发现改为3步流程(复制提示词→粘贴JSON→查看日报) - check-tools API: 增加Logo抓取功能,返回logoFetched/logoMethod/logoUrl字段,GET请求获取HTML用于Logo抓取 - check-tools页面: 默认选中待审核工具,4步流程卡片,增加Logo抓取方法统计和新抓取成功列表 - update-skills页面: 去掉复制提示词,保留快速更新Star - logo-fetcher.ts: 新增 `fetchLogoWithMethod()` 导出,每种成功方法返回中文名称 - package.json: 端口3100→8301 - .env: NEXTAUTH_URL端口3100→8301 - restart.ps1: 端口扫描范围3100-3110→8301-8310 - project_rules.md: 端口规范8301-8310,新增强制要求;五大操作指令改为提示词+JSON粘贴模式;禁止硬编码API Key;禁止调用外部AI API ### 删除 - 移除3个API文件中的DeepSeek API调用逻辑(硬编码API Key、callDeepSeek函数等) - 移除discover-tools页面的"一键发现"按钮和DeepSeek API调用 - 移除discover-skills页面的"一键发现"按钮和DeepSeek API调用 - 移除discover-news页面的DeepSeek API调用 - 清除旧的虚构AI新闻数据 --- ## v0.8.0 (2026-05-05) ### 新增 - 用户系统:邮箱注册/登录、GitHub OAuth登录、用户中心页面 - 收藏功能:工具/技能收藏、收藏列表页面、乐观更新按钮 - 浏览历史:自动记录浏览过的工具/技能 - 评论评价系统:ReviewSection组件,支持评分和文字评论 - LoginModal组件:登录/注册弹窗,支持模式切换 - FavoriteButton组件:收藏按钮,乐观更新 - CategorySidebar组件:通用分类侧边栏 - 用户API: `/api/user/favorites`, `/api/user/history` - 评论API: `/api/reviews` - 首页API: `/api/homepage`(含嵌套分类结构) ### 改进 - **UI主题重构:暗色→浅色主题** - 全局CSS变量从暗色切换为浅色(background: 210 20% 98%, card: 0 0% 100%等) - 所有页面和组件适配浅色主题(7个前台页面+12个后台页面+5个组件) - 颜色规范:文字-600/-700、背景-50、边框-200/60 - 卡片样式:bg-white/60/80 + shadow-sm,hover时bg-white + shadow-md - 输入框:bg-muted/50 focus:bg-white focus:ring-2 focus:ring-primary/10 - 毛玻璃效果:bg-white/80 backdrop-blur-xl - 渐变文字:蓝→紫→粉渐变保持科技感 - 移除noise纹理,新增dot-grid点阵背景 - **层级分类导航重构** - 首页/技能页:左侧固定一级分类导航 + 右侧二级分类标签切换 - 每个一级类目下有"全部"标签显示该分类下所有内容 - 左侧导航sticky跟随页面滚动 - **安全加固** - 新增admin-auth.ts中间件,requireAdmin函数 - 28个后台API端点全部添加requireAdmin中间件验证 - 移除硬编码API密钥,改用环境变量 - Header组件:滚动时bg-white/80 backdrop-blur-2xl,搜索框bg-muted/50 - Logo位置修复:Header容器宽度统一为max-w-[1440px] ### 修复 - 修复webpack缓存损坏导致的页面加载失败(清除.next目录) - 修复左侧导航栏sticky定位不生效(flex容器添加self-start) - 修复Logo被左侧导航遮挡(统一容器宽度) --- ## v0.5.0 (2026-05-03) ### 新增 - 待审核工具页面批量多选功能:全选/批量通过/批量拒绝 - 待审核技能页面批量多选功能:全选/批量通过/批量拒绝 - 待审核技能一键全部通过功能 - 所有列表页面分页功能(每页20条) - 批量拒绝API: `/api/admin/pending/batch-reject`, `/api/admin/pending-skills/batch-reject` - 一键全部发布API: `/api/admin/pending-skills/publish-all` - AI技能自动探索API: `/api/admin/discover-skills/run` - 探索脚本存入系统配置,discover-skills页面展示脚本和调用说明 - 一键自动探索按钮(服务端调用DeepSeek API) - Logo抓取策略改进:新增manifest.json解析、更多link/img匹配模式、图片URL验证 - 工具库与脚本模块文档: `.trae/specs/modules/07-lib-and-scripts.md` ### 改进 - Logo抓取引擎增强:6种策略按优先级,minFileSize降至50字节,timeout增至10秒 - 待审核工具页面:新增Logo状态列、Logo筛选、抓取缺失Logo/重新抓取全部Logo按钮 - 待审核技能页面:新增Star数展示、GitHub链接、分类标签 - pending API和pending-skills API支持分页参数 - 技术文档全面更新(7个模块文档+索引+开发规则+变更日志) --- ## v0.4.0 (2026-05-02) ### 新增 - 系统配置页面:Logo抓取配置、发现提示词配置 - 四个AI发现菜单:探索AI工具、检测AI工具、探索Skill技能、更新Skill技能 - AI技能发现脚本 `scripts/discover-skills.mjs` - GitHub中文友好判断标准(4步标准) - 技能分类管理页面 - DeepSeek V4 Pro API配置 ### 改进 - 配置驱动模式:提示词和Logo抓取策略存储在SystemConfig表 - 去掉DeepSeek API配置功能,改为配置项驱动 - 技能发现提示词优化 --- ## v0.3.0 (2026-05-01) ### 新增 - 技能库模块:Skill/PendingSkill数据模型、API、管理页面 - API接口配置:ApiProvider数据模型和管理页面 - 发现配置:DiscoveryConfig与分类管理集成 - 公共Logo抓取工具 `src/lib/logo-fetcher.ts` - 服务重启脚本 `restart.ps1` ### 改进 - 去除爬虫功能,改为AI发现模式 - UI全面优化:暗色主题、毛玻璃效果、动画 - 端口从3000改为3100 --- ## v0.2.0 (2026-04-30) ### 新增 - 后台管理页面:工具管理、分类管理、待审核工具 - NextAuth认证系统 - Prisma ORM + MySQL数据库 - AI智能发现新工具功能(DeepSeek API) - 批量导入工具脚本 --- ## v0.1.0 (2026-04-28) ### 新增 - Next.js 14项目初始化 - Tailwind CSS + shadcn/ui配置 - 前台页面:首页、工具列表、工具详情、分类页 - Header/Footer布局组件