- Kimi k2.5 强制传参拦截: 当 provider=kimi 且 model 包含 k2.5 时, 从请求体中 delete temperature/top_p/presence_penalty/frequency_penalty, 彻底解决 HTTP 400 报错 - 完善导出AI日志: 新增 lastExchangeLog 状态, 记录每次调用的 完整请求体(requestPayload)、原始响应(responsePayload)、 错误详情(errorDetail含status/statusText/responseText)、模型配置 - 更新导出按钮 JSON 结构, 包含 lastExchange 字段
2.4 KiB
2.4 KiB
功能变更测试文档(20260419_2249)
测试项 1:Kimi k2.5 参数拦截
测试场景 A:Kimi + k2.5 模型
- 进入系统设置 → AI 接口集成
- 供应商选择「Kimi (Moonshot)」,模型名填写
kimi-k2.5 - 填写有效 API Key,点击「测试连接」确认配置有效
- 进入报告编辑器,打开 AI 面板,发送任意消息
- 预期结果:
- 网络请求成功(HTTP 200),无 400 报错
- 浏览器 DevTools → Network → 请求体中不包含
temperature、top_p、presence_penalty、frequency_penalty
测试场景 B:Kimi + 非 k2.5 模型
- 系统设置中模型名改为
moonshot-v1-32k - 发送 AI 消息
- 预期结果:
- 请求体中包含
temperature: 0.3 - 调用正常
- 请求体中包含
测试场景 C:DeepSeek / OpenAI / Custom
- 切换供应商为 DeepSeek,模型
deepseek-chat - 发送 AI 消息
- 预期结果:
- 请求体中包含
temperature: 0.3 - 调用正常
- 请求体中包含
测试项 2:AI 日志导出完善
测试场景 A:成功调用后的导出
- 发送一条 AI 消息并等待成功返回
- 点击「导出 AI 日志」
- 预期结果:
- 下载的 JSON 中
lastExchange字段非空 lastExchange.requestPayload包含完整的model、messages(system + user)lastExchange.requestPayload.messages[0].content包含系统提示词全文lastExchange.responsePayload包含 AI 返回的原始 JSON(含reply和updatedHtml)lastExchange.modelConfig包含 provider、endpoint、modelNamelastExchange.errorDetail为null
- 下载的 JSON 中
测试场景 B:失败调用后的导出
- 故意填写错误的 API Key 或断开网络
- 发送 AI 消息,等待报错
- 点击「导出 AI 日志」
- 预期结果:
lastExchange.errorDetail非空- 包含
status(如 401/400/403)、statusText、responseText(服务端返回的原始错误 JSON)、message lastExchange.responsePayload为null
测试场景 C:未进行任何 AI 调用时的导出
- 刷新页面后直接点击「导出 AI 日志」
- 预期结果:
lastExchange为null- 其他字段(messages、metadata)正常导出
回归测试
tsc --noEmit零错误npm run build构建成功- 预览服务器正常启动并可访问
- 现有 AI 对话功能不受影响的供应商(deepseek/openai)调用正常