Skip to content

v2.2.0

Choose a tag to compare

@zhuweiyou zhuweiyou released this 25 Sep 02:50
· 24 commits to main since this release
ad5aa42

重构:app.js 按功能域拆分 + Express Router 路由级鉴权

  • server/app.js 960 行 → 36 行:按功能域拆为平级文件——handler.js(端点编排)、zen.js(上游客户端)、openai.js(响应转换)、middleware.js(中间件)、shared.js(共用工具)、config.js(配置)、log.js(日志)
  • 路由改用 express.Router:.get() / .post() 声明,废除 handleRequest 手写 if/else 分发
  • 鉴权改为路由级中间件 requireAuth:只挂受保护路由(models / chat),/、/health、/ip 免鉴权,删除 handleOpenAI 中的重复鉴权
  • 未知路径行为变更:未注册路径统一返回 404(不再先鉴权返回 401),已用新测试固化
  • CORS 改用 cors 库:显式配置 GET, POST, OPTIONS、固定请求头列表、X-Request-Id 暴露、OPTIONS → 204,与原行为一致
  • 移除 Node↔Fetch 适配层:删 isWebRequest / nodeRequestToFetchRequest / sendNodeResponse / handler 导出,处理器直读原始 body、直写 res(SSE 管道带背压处理,无 body 大小限制)
  • 配置集中到顶层 config 对象:version / apiKey / debug / port 启动时从环境初始化,运行期可覆盖(测试直接改 config.apiKey)
  • 修复日志 bug:DEBUG="false" 字符串是真值导致日志误开,改为启动时 === "true" 归一成布尔
  • 入口简化:删除 isMainModule 判断,startServer 收进 app.js,index.js 变纯启动脚本(npm start / Docker CMD 不变)
  • 版本号取自 package.json:import ... with { type: "json" }(Node 24 实测通过),发版只需 npm version,无需改代码
  • 测试:改为直接 import 目标方法(不再经 app 导出 __test),新增 404 语义 / 尾斜杠 / 公开路由免鉴权 3 个测试
  • 文档:README 架构小节更新并移至文末