Files
zhuiguang-ai/.trae/CHANGELOG
T

276 lines
14 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 追光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布局组件