# API模块 ## 前台API(无需认证) ### GET /api/homepage 获取首页数据(含嵌套分类结构,一级分类+二级子分类)。 - 返回: `{ categories: CategoryWithChildren[], skillCategories: SkillCategoryWithChildren[] }` ### GET /api/categories 获取工具分类树形结构(含子分类),按sortOrder排序。 ### GET /api/skill-categories 获取技能分类树形结构(含子分类),按sortOrder排序。 ### GET /api/tools 获取已发布工具列表。 - Query: `categoryId`, `pricingModel`, `search`, `page`(默认1), `pageSize`(默认20) - 返回: `{ tools: Tool[], total, page, pageSize }` ### GET /api/tools/[slug] 获取工具详情(by slug),浏览计数+1。 ### GET /api/skills 获取已发布技能列表。 - Query: `category`, `search`, `page`, `pageSize` - 返回: `{ skills: Skill[], total, page, pageSize }` ### GET /api/skills/[slug] 获取技能详情(by slug),浏览计数+1。 ### GET /api/skills/[slug]/review 获取技能的五维评测数据(仅返回PUBLISHED状态)。 - 返回: `{ capability, devExp, costLicense, community, performance, overall, reviews, longArticle?, videoScript?, socialCards?, reviewedAt }` ### GET/POST /api/auth/[...nextauth] NextAuth认证端点(登录/回调/CSRF等)。 ### POST /api/auth/register 用户注册(邮箱+密码)。 ### GET /api/categories/[slug] 获取分类详情。 ### GET /api/daily-reports 获取AI日报列表。 ### GET /api/recommendations 获取推荐内容。 ### 评测榜单API(公开) | 路由 | 方法 | 功能 | |------|------|------| | /api/skill-reviews | GET | 获取评测列表(分页,仅PUBLISHED) | | /api/skill-reviews/rankings | GET | 获取评测榜单:topByRating(评测分TOP10) + topByStarsChange(Stars涨幅周榜TOP10) | --- ## 用户相关API(需NextAuth用户认证) ### /api/user/profile - GET: 获取当前用户资料 - PUT: 更新用户资料 ### /api/user/favorites | 路由 | 方法 | 功能 | |------|------|------| | /api/user/favorites/status | GET | 获取收藏状态 | | /api/user/favorites | GET | 获取当前用户收藏列表(工具+技能) | | /api/user/favorites | POST | 添加收藏(body: { targetType, targetId }) | | /api/user/favorites | DELETE | 取消收藏(body: { targetType, targetId }) | ### /api/user/history | 路由 | 方法 | 功能 | |------|------|------| | /api/user/history | GET | 获取浏览历史 | | /api/user/history | POST | 记录浏览历史 | ### /api/user/collections | 路由 | 方法 | 功能 | |------|------|------| | /api/user/collections | GET | 获取收藏夹列表 | | /api/user/collections | POST | 创建收藏夹 | | /api/user/collections/[id] | GET | 获取单个收藏夹详情 | | /api/user/collections/[id] | PUT | 更新收藏夹 | | /api/user/collections/[id] | DELETE | 删除收藏夹 | | /api/user/collections/[id]/items | GET | 获取收藏夹项目 | | /api/user/collections/[id]/items | POST | 添加收藏夹项目 | | /api/user/collections/[id]/items/[itemId] | PUT | 更新收藏夹项目 | | /api/user/collections/[id]/items/[itemId] | DELETE | 删除收藏夹项目 | --- ## 后台API(需NextAuth认证) ### 分类管理 | 路由 | 方法 | 功能 | |------|------|------| | /api/admin/categories | GET | 获取所有分类(含工具数/子分类数) | | /api/admin/categories | POST | 创建分类 | | /api/admin/categories/[id] | PUT | 更新分类 | | /api/admin/categories/[id] | DELETE | 删除分类(有工具/子分类时拒绝) | | /api/admin/skill-categories | GET | 获取技能分类列表 | | /api/admin/skill-categories | POST | 创建技能分类 | | /api/admin/skill-categories/[id] | PUT | 更新技能分类 | | /api/admin/skill-categories/[id] | DELETE | 删除技能分类 | ### 工具管理 | 路由 | 方法 | 功能 | |------|------|------| | /api/admin/tools | GET | 获取所有工具(分页) | | /api/admin/tools | POST | 创建工具 | | /api/admin/tools/[id] | PUT | 更新工具 | | /api/admin/tools/[id] | DELETE | 删除工具 | ### 技能管理 | 路由 | 方法 | 功能 | |------|------|------| | /api/admin/skills | GET | 获取所有技能(分页) | | /api/admin/skills/[id] | PUT | 更新技能 | | /api/admin/skills/[id] | DELETE | 删除技能 | ### 待审核工具 | 路由 | 方法 | 功能 | |------|------|------| | /api/admin/pending | GET | 获取待审核工具列表(分页) | | /api/admin/pending | DELETE | 清空所有待审核工具 | | /api/admin/pending/[id] | PUT | 编辑待审核工具(websiteUrl变更时自动抓Logo) | | /api/admin/pending/[id] | DELETE | 删除单个待审核工具 | | /api/admin/pending/[id]/publish | POST | 发布为正式工具 | | /api/admin/pending/batch | POST | 批量导入(去重+自动抓Logo) | | /api/admin/pending/batch-publish | POST | 批量发布(ids数组) | | /api/admin/pending/batch-reject | POST | 批量拒绝(ids数组) | | /api/admin/pending/fetch-logos | POST | 批量抓取Logo(body: {scope, refetch?}) | ### 待审核技能 | 路由 | 方法 | 功能 | |------|------|------| | /api/admin/pending-skills | GET | 获取待审核技能列表(分页) | | /api/admin/pending-skills | DELETE | 清空所有待审核技能 | | /api/admin/pending-skills/[id] | PUT | 编辑待审核技能 | | /api/admin/pending-skills/[id] | DELETE | 删除单个待审核技能 | | /api/admin/pending-skills/[id]/publish | POST | 发布为正式技能 | | /api/admin/pending-skills/batch | POST | 批量导入(去重) | | /api/admin/pending-skills/batch-publish | POST | 批量发布(ids数组) | | /api/admin/pending-skills/batch-reject | POST | 批量拒绝(ids数组) | | /api/admin/pending-skills/publish-all | POST | 一键发布所有待审核技能 | ### AI发现与检测(提示词+JSON粘贴模式,不调用外部AI API) | 路由 | 方法 | 功能 | |------|------|------| | /api/admin/discover-tools | POST | 导入工具JSON数组(body: {tools: [...], categoryId}),自动去重导入待审核列表 | | /api/admin/discover-skills | POST | 导入技能JSON数组(body: {skills: [...], categoryId}),自动去重导入待审核列表 | | /api/admin/discover-skills/run | POST | 一键运行技能探索 | | /api/admin/discover-news | POST | 导入新闻JSON数组(body: {items: [...]}),自动生成今日AI日报 | | /api/admin/discover-news | GET | 获取今日AI日报 | | /api/admin/check-tools | POST | 检测工具网站可访问性+抓取缺失Logo(body: {type: "published"/"pending"}),返回logoFetched/logoMethod/logoUrl | | /api/admin/update-stars | POST | 更新GitHub Star数(body: {type: "published"/"pending"}) | ### 评测管理 | 路由 | 方法 | 功能 | |------|------|------| | /api/admin/reviews | GET | 获取评测列表 | | /api/admin/reviews/[id] | GET | 获取单个评测详情 | | /api/admin/reviews/[id] | PUT | 更新评测状态 | | /api/admin/reviews/[id]/generate | POST | AI生成评测内容(长文+视频脚本+社交卡片) | ### 系统配置 | 路由 | 方法 | 功能 | |------|------|------| | /api/admin/system-config | GET | 获取所有配置 | | /api/admin/system-config | PUT | 批量更新配置(upsert) | ### 角色权限管理 | 路由 | 方法 | 功能 | |------|------|------| | /api/admin/roles | GET | 获取所有角色列表 | | /api/admin/roles | POST | 创建角色 | | /api/admin/roles/[id] | PUT | 更新角色 | | /api/admin/roles/[id] | DELETE | 删除角色 | | /api/admin/permissions | GET | 获取全部权限点列表 | | /api/admin/user-permissions | GET | 获取当前用户权限(roleId/userId/当前用户) | ### 日报管理 | 路由 | 方法 | 功能 | |------|------|------| | /api/admin/daily-reports | GET | 获取日报列表 | | /api/admin/daily-reports/[id] | GET | 获取单个日报详情 | | /api/admin/daily-reports/[id] | PUT | 更新日报 | | /api/admin/daily-reports/[id] | DELETE | 删除日报 | | /api/admin/daily-reports/generate | POST | AI一键生成日报内容 | ### 任务调度API(需NextAuth认证) | 路由 | 方法 | 功能 | |------|------|------| | /api/admin/tasks/configs | GET | 获取全部6个任务配置(合并TaskConfig+默认值) | | /api/admin/tasks/configs | PUT | 更新/创建任务配置(body: { taskKey, enabled?, cronExpr?, config? }) | | /api/admin/tasks/logs | GET | 获取任务执行日志(分页,query: taskKey?, page, pageSize) | | /api/admin/tasks/run | POST | 手动触发任务执行(body: { taskKey }),通过child_process.exec运行对应脚本 | --- ## SystemConfig 配置键 | Key | 类型 | 说明 | |-----|------|------| | discoveryPromptConfig | JSON | AI发现提示词配置(含toolPrompt/skillPrompt/newsPrompt/tagPool等) | | logoFetchConfig | JSON | Logo抓取策略配置 | | discoverSkillsScript | string | 技能探索脚本源码 |