From af36ee0400a82686370fb6a30ed1960686067b18 Mon Sep 17 00:00:00 2001 From: ila Date: Fri, 7 Aug 2026 16:37:12 +0800 Subject: [PATCH] docs: import wiki at afc651f75a3a --- T-273.-.md | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 T-273.-.md diff --git a/T-273.-.md b/T-273.-.md new file mode 100644 index 0000000..582f645 --- /dev/null +++ b/T-273.-.md @@ -0,0 +1,77 @@ + +> 同步来源:[`docs/tasks/T-273.md`](/chengma/mroubao/src/commit/afc651f75a3abc2676bb13aa8a80f6aa6a25a72e/docs/tasks/T-273.md) · commit `afc651f75a3a` + +--- +id: T-273 +title: 在 Roubao API 设置中测试本地模型配置 +phase: 2 +deps: + - T-207 + - T-272 +status: DONE +created: 2026-08-01 +context_ref: c0011d4 +work_branch: null +write_paths: + - docs/tasks/T-273.md + - docs/current-state.md + - docs/02-requirements.md + - docs/04-architecture.md + - docs/05-coding-rules.md + - android-buyer/app/src/main/** + - android-buyer/app/src/test/** +--- + +## 问题 / 背景 + +Roubao 设置页可以保存本机 provider、Base URL、API Key 和模型,也可以通过 +`GET /models` 获取模型列表,但该请求不能证明所选模型支持实际采购链路使用的 OpenAI +兼容多模态 `chat/completions`。配置错误目前只能在领取任务后暴露,既浪费搜索轮次,也 +容易把模型不可用误判为规格或自动化失败。 + +本任务在“API 配置”分组增加显式测试按钮,只检查当前手机本地配置,不经过 Admin。 + +## 行为契约 + +1. “测试模型”使用当前已保存的 provider、Base URL、API Key 和 model;测试开始前执行 + 与正式 VLM 相同的必填项和端点安全校验,不读取任务、相册、截图或采购数据。 +2. 请求使用内置、固定且不含业务信息的测试图和固定提示词,对 + `POST /chat/completions` 发出一次多模态请求,以证明鉴权、模型名、请求格式和 + 图片输入均可用。不得自动重试或跟随重定向。 +3. 按钮执行期间显示测试中并保持禁用,避免重复付费请求;离开页面或 Activity 销毁时 + 协程取消必须取消 HTTP call。 +4. 成功只显示“模型可用”;失败按本地配置、端点安全、鉴权、模型不存在/不支持、限流、 + 服务端、网络/超时和响应格式分类。UI、日志和崩溃记录不得包含 API Key、完整 endpoint、 + 固定测试图 Base64 或供应商响应正文。 +5. 测试结果只存在当前 UI 状态,不写 SharedPreferences、数据库、outbox 或 Admin;成功 + 也不替代真实任务质量验收。 + +## 方案 + +1. 增加 provider-neutral 的模型连通性测试器和稳定结果枚举,使用有界响应、单次请求、 + 禁止重定向的 OkHttp client。 +2. 在设置页增加带状态的“测试模型”命令项,并由 `MainActivity` 使用当前设置执行测试。 +3. 使用 MockWebServer 覆盖请求契约、Bearer 脱敏边界、成功、鉴权、模型、限流、服务端、 + 超大/非法响应、网络失败和协程取消。 + +## 验收要点 + +- [x] 配置完整时点击一次只产生一个带固定测试图的 `chat/completions` 请求。 +- [x] 测试中不能再次触发;成功和分级失败均在设置页明确显示。 +- [x] 非安全 endpoint、空 model 和要求凭证但 Key 为空时不发网络请求。 +- [x] 响应正文、API Key、完整 endpoint 和图片 Base64 不进入 UI、日志或持久化。 +- [x] Android 单测、lint、Debug/Release APK 构建通过。 + +## 边界 + +- 不新增后端模型代理、Admin 配置、数据库字段或任务 payload 字段。 +- 不使用真实任务图片,不评价模型的商品匹配质量、价格或供应商稳定性。 +- 不把测试成功作为自动下单授权,也不改变 execution 已冻结的模式。 + +## 执行记录 + +- 2026-08-01:根据设置页需要主动验证本机模型配置的需求创建任务,状态 `TODO`。 +- 2026-08-01:完成设置页“测试模型”按钮、执行中防重、当前配置校验和无持久化结果; + 新增单次固定红色测试图请求以及鉴权、模型、限流、服务端、网络、超时和响应异常分类。 + Debug/Release 各 448 项单测、`lintDebug`、`assembleDebug`、`assembleRelease` 全部通过, + 状态改为 `DONE`。真实 provider 未调用,本任务不声明真实供应商质量或稳定性。