Skip to content

Comments

feat: 为所有 Server Actions 添加对应的 REST API 端点#33

Closed
missish wants to merge 3 commits intoding113:mainfrom
missish:main
Closed

feat: 为所有 Server Actions 添加对应的 REST API 端点#33
missish wants to merge 3 commits intoding113:mainfrom
missish:main

Conversation

@missish
Copy link
Contributor

@missish missish commented Oct 31, 2025

完善 API 层,为所有 src/actions 中的 Server Actions 创建对应的 HTTP REST API 端点, 支持前端通过标准 HTTP 请求调用所有业务功能。

  • 新增 36 个 API 端点文件
  • 覆盖 10 个功能模块
  • 遵循 RESTful 设计规范
  • 管理员和用户端点分离
  • 复用 Actions 鉴权逻辑,避免重复代码

详细变更说明(Detailed Changes)

新增文件(36 个)

1. 用户管理 API (5 files)

src/app/api/admin/users/route.ts
src/app/api/admin/users/[id]/route.ts
src/app/api/admin/users/[id]/limits/route.ts
src/app/api/users/me/route.ts
src/app/api/users/me/limits/route.ts

功能

  • 管理员:CRUD 用户、查看所有用户限额
  • 普通用户:查看自己的信息和限额

2. 供应商管理 API (5 files)

src/app/api/admin/providers/route.ts
src/app/api/admin/providers/[id]/route.ts
src/app/api/admin/providers/health/route.ts
src/app/api/admin/providers/[id]/reset-circuit/route.ts
src/app/api/admin/providers/[id]/limits/route.ts

功能

  • CRUD 供应商
  • 查看熔断器健康状态
  • 重置熔断器
  • 查看供应商限额使用情况

3. 密钥管理 API (6 files)

src/app/api/admin/keys/route.ts
src/app/api/admin/keys/[id]/route.ts
src/app/api/admin/keys/[id]/limits/route.ts
src/app/api/keys/route.ts
src/app/api/keys/[id]/route.ts
src/app/api/keys/[id]/limits/route.ts

功能

  • 管理员:管理所有用户的密钥
  • 普通用户:管理自己的密钥

4. 模型价格管理 API (5 files)

src/app/api/admin/model-prices/route.ts
src/app/api/admin/model-prices/sync/route.ts
src/app/api/admin/model-prices/models/route.ts
src/app/api/admin/model-prices/check/route.ts
src/app/api/model-prices/check/route.ts

功能

  • 上传价格表
  • 同步 LiteLLM 价格
  • 获取可用模型列表
  • 检查价格表存在性

5. 统计数据 API (1 file)

src/app/api/statistics/route.ts

功能

  • 获取用户统计数据(管理员看所有,用户看自己)

6. 使用日志 API (3 files)

src/app/api/usage-logs/route.ts
src/app/api/usage-logs/models/route.ts
src/app/api/usage-logs/status-codes/route.ts

功能

  • 查询使用日志(带过滤器)
  • 获取模型列表和状态码列表

7. 概览数据 API (1 file)

src/app/api/overview/route.ts

功能

  • 获取首页概览数据(并发数、今日统计等)

8. Session 管理 API (5 files)

src/app/api/sessions/route.ts
src/app/api/sessions/concurrent/route.ts
src/app/api/sessions/[id]/route.ts
src/app/api/sessions/[id]/messages/route.ts
src/app/api/sessions/[id]/response/route.ts

功能

  • 获取活跃 session 列表
  • 获取并发数
  • 查看 session 详情、messages 和响应体

9. 敏感词管理 API (5 files)

src/app/api/admin/sensitive-words/route.ts
src/app/api/admin/sensitive-words/[id]/route.ts
src/app/api/admin/sensitive-words/refresh/route.ts
src/app/api/admin/sensitive-words/stats/route.ts

功能

  • CRUD 敏感词
  • 刷新缓存
  • 查看缓存统计

修改的文件(1 个)

修复类型错误

src/app/api/usage-logs/route.ts

变更

  • 修复参数类型不匹配问题
  • 移除 userId 参数(由 action 自动处理)
  • 修正字段名:status → statusCode, limit → pageSize
  • 修正日期类型:string → Date

新增文档(4 个)

docs/api-actions-mapping.md          - Actions 和 API 映射分析
docs/api-implementation-summary.md   - 实现总结文档
docs/api-implementation-checklist.md - 完整核对清单
docs/api-error-fix-report.md         - 错误检查和修复报告

技术细节(Technical Details)

设计原则

  1. RESTful 风格

    • GET - 查询数据
    • POST - 创建资源
    • PATCH - 更新资源
    • DELETE - 删除资源
  2. 路径规范

    • 管理员端点:/api/admin/*
    • 用户端点:/api/*
    • 资源路径:/api/{resource}
    • 子资源路径:/api/{resource}/{id}/{subresource}
  3. 权限分离

    • 管理员端点:可操作所有数据
    • 用户端点:仅操作自己的数据
    • 复用 actions 的鉴权逻辑
  4. 错误处理

    • 统一的错误响应格式
    • 业务错误返回 400 + error 消息
    • 异常错误返回 500 + 通用错误提示

代码质量

  • ✅ TypeScript 类型安全
  • ✅ 通过 ESLint 检查
  • ✅ 统一的代码风格
  • ✅ 完整的注释文档

测试状态

  • ✅ TypeScript 编译通过
  • ✅ ESLint 检查通过
  • ⏳ 单元测试(待补充)
  • ⏳ 集成测试(待补充)

破坏性变更(Breaking Changes)

无破坏性变更

所有新增 API 均为新功能,不影响现有代码。


完善 API 层,为所有 src/actions 中的 Server Actions 创建对应的 HTTP REST API 端点,
支持前端通过标准 HTTP 请求调用所有业务功能。

- 新增 36 个 API 端点文件
- 覆盖 10 个功能模块
- 遵循 RESTful 设计规范
- 管理员和用户端点分离
- 复用 Actions 鉴权逻辑,避免重复代码
@missish
Copy link
Contributor Author

missish commented Oct 31, 2025

该设计为便于api远程调用,望合并

@ding113
Copy link
Owner

ding113 commented Oct 31, 2025

感谢提交~ 很棒的工作
我先评估一下与 #29 的工作是否冲突,再来合并这一PR。请稍等。

@missish
Copy link
Contributor Author

missish commented Oct 31, 2025

感谢提交~ 很棒的工作 我先评估一下与 #29 的工作是否冲突,再来合并这一PR。请稍等。

其实可以考虑把用到actions的地方都替换成api请求,毕竟这是一个管理面板也无需考虑服务端渲染

@ding113
Copy link
Owner

ding113 commented Oct 31, 2025

感谢提交~ 很棒的工作 我先评估一下与 #29 的工作是否冲突,再来合并这一PR。请稍等。

其实可以考虑把用到actions的地方都替换成api请求,毕竟这是一个管理面板也无需考虑服务端渲染

Server Action 是原作者的设计,本分支新增的功能诸如排行榜已经有对外的 API 接口可用
要重构起来改动不小,所以就拖到现在了

@missish
Copy link
Contributor Author

missish commented Oct 31, 2025

感谢提交~ 很棒的工作 我先评估一下与 #29 的工作是否冲突,再来合并这一PR。请稍等。

其实可以考虑把用到actions的地方都替换成api请求,毕竟这是一个管理面板也无需考虑服务端渲染

Server Action 是原作者的设计,本分支新增的功能诸如排行榜已经有对外的 API 接口可用 要重构起来改动不小,所以就拖到现在了

确实重构难度挺高,我也只是提个建议,毕竟使用api搭配@tanstack/react-query这些请求库开发体验也会好不少

missish and others added 2 commits October 31, 2025 23:34
   异步类型错误并清理未使用导入

   - 修复 admin/keys/[id]/limits 路由的 params 类型错误(Next.js 15
   要求异步)
   - 移除 model-prices、sensitive-words、usage-logs、users/me
   等路由中的未使用导入
   - 优化代码格式和参数命名
@ding113 ding113 added the enhancement New feature or request label Oct 31, 2025
@ding113
Copy link
Owner

ding113 commented Oct 31, 2025

hi,我把这个需求放在 #42 里实现了。位于"系统设置"(/settings)内。实现思路稍有不同,但应该会更加便于后期维护。

@ding113 ding113 closed this Nov 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants